/* Cost console visual identity: navy workspace navigation, cobalt actions. */
:root{--ink:#25334b;--muted:#738198;--line:#e4e9f2;--bg:#f3f5fa;--white:#fff;--accent:#4c6ee0;--accent-bg:#edf1fe;--blue:#4c6ee0;--danger:#b53842;--amber:#9b651c;--shadow:0 14px 52px #182b4a21}
body{background:#e9edf4;color:var(--ink)}
/* Center navigation and content together, so wide screens keep the two adjacent. */
.app-shell{width:100%;max-width:1992px;margin:0 auto;background:var(--bg);box-shadow:0 0 0 1px #dfe5ef,0 0 36px #1e32520a}
.workspace{background:var(--bg)}
.sidebar{width:232px;background:#19253b;border-right:0;padding:29px 16px 20px;color:#c4cee0}
.brand{color:#f3f6ff;font-size:15px;padding:0 9px 38px;gap:11px;font-weight:600}
.brand-mark{width:36px;height:36px;background:#5477e9;color:#fff;border-radius:8px;font-size:14px;font-weight:700;letter-spacing:-.5px;box-shadow:0 4px 12px #08142b20}
.brand small{color:#91a2c3;letter-spacing:1.4px;font-size:9px;margin-top:4px}
.nav-caption{color:#7e90b0;font-size:11px;padding-left:15px;letter-spacing:.5px}
.nav-item{padding:13px 14px;margin:5px 0;color:#a9b7ce;border-radius:6px;font-size:13px;gap:12px;border:1px solid transparent;position:relative}
.nav-item:hover{color:#f2f5ff;background:#23324c}
.nav-item.active{background:#2c3e66;color:#f5f7ff;border-color:#3b5285;font-weight:550}
.nav-item.active:after{background:#82a0ff;width:4px;height:16px;border-radius:2px;position:absolute;right:10px;margin:0}
.nav-icon{color:#91a3c5}.nav-item.active .nav-icon{color:#b6c8ff}
.sidebar-note{color:#b1bfd5;padding:24px 14px 20px;font-size:11px}
.sidebar-note p{color:#7e91af;font-size:10px}
.sidebar-bottom{border-top-color:#2d3b53;color:#8599b9}
.sidebar-bottom button{color:#c1cde2;font-size:12px}.sidebar-bottom button:hover{color:#fff}
.sidebar-bottom>span{color:#7185a5;font-size:10px}
.sidebar .local-dot{background:#83a2ff}
.topbar{height:66px;padding:0 32px;background:#fff;border-bottom:1px solid #e4e9f3}
.breadcrumb{color:#8f9bb0}.breadcrumb span:last-child{color:#5a6c87}
.avatar{background:#edf1fe;color:#506ac5;border-color:#dce4fc}
.save-status{color:#7c899c}.save-status .local-dot{background:#7896e8}
main{width:100%;max-width:1760px;min-width:0;margin:0 auto;padding:30px 32px 24px}
.page-footer{width:100%;max-width:1760px;min-width:0;margin:0 auto;padding:0 32px 22px;color:#8d9ab0}
.page-heading{margin-bottom:25px;align-items:center}
.page-heading h1{font-size:25px;letter-spacing:.2px;color:#25344e;margin-bottom:7px}
.eyebrow{font-size:11px;color:#7790bd;letter-spacing:1.2px;margin-bottom:7px}
.page-heading p{color:#77869c;font-size:12px;line-height:1.6}
.heading-actions{padding-top:0;gap:9px}
.button{border-color:#d9e1ef;border-radius:5px;color:#5a6c88;padding:8px 13px;font-size:12px;min-height:36px}
.button:hover{background:#f1f4fd;border-color:#c6d2ee;color:#3e5fc7}
.button.primary{background:#4c6ee0;border-color:#4c6ee0;color:#fff;box-shadow:0 2px 4px #3a5bc615}
.button.primary:hover{background:#3f5fc9;border-color:#3f5fc9;color:#fff}
.button.small{min-height:30px;font-size:11px;padding:5px 10px}
.subject-switch{background:#e9edf6;border-radius:5px;padding:3px;gap:3px}
.subject-switch button{color:#77849b;padding:6px 13px;font-size:12px;border-radius:3px}
.subject-switch button.selected{color:#3d5fc5;box-shadow:0 1px 3px #29477f15}
.month-input{border-color:#dce3ef;border-radius:5px;color:#7788a3;padding:7px 10px}
.month-input input{color:#415575}
.panel{border-color:#e2e8f2;border-radius:7px;box-shadow:0 2px 6px #243e6c03}
.panel-head{padding:18px 22px 16px;min-height:65px}
.panel-title{font-size:14px;color:#334661;font-weight:600}
.panel-subtitle{color:#8391a7;font-size:11px;margin-top:4px}
.panel-tools{gap:10px}
.panel-body{padding-left:22px;padding-right:22px}
.stats{gap:16px}
.stat{border-color:#e0e7f3;border-radius:7px;padding:21px 22px;min-height:142px;box-shadow:0 2px 5px #263e6503}
.stat:first-child{border-top:2px solid #5272df;padding-top:20px}
.stat-label{color:#6a7c97;font-size:12px}.stat-label svg{color:#a5b3ce}
.stat-value{color:#283e66;font-size:29px;margin:9px 0 6px;font-weight:600;letter-spacing:-.7px}
.stat-value .unit{color:#8b9ab2}
.stat-note{color:#8d9bb0;font-size:11px;line-height:1.6}
.formula-button{color:#8da0cc}.formula-button:hover{color:#4c6ee0}
.formula-tooltip{border-color:#d6e0f4;box-shadow:0 8px 30px #2944761c}
.formula-tooltip strong,.formula-equation{color:#3c59b1}
.formula-tooltip p{color:#697c99}
.overview-trend .trend-label{fill:#8191ad}.trend-rule{stroke:#edf0f7}
.trend-hit:hover{fill:#4c6ee009}.trend-hit:focus-visible{stroke:#6b86db}
.trend-tooltip{border-color:#dbe3f4;box-shadow:0 8px 28px #243f751c}
.trend-tooltip .trend-tip-total{color:#3c5fc8;border-bottom-color:#e5ebf9}
.subject-summary-table .subject-tag{color:#526581}
.summary-share{background:#edf1f8}.subject-game-count,.summary-share-label{color:#8494ac}
.annual-summary strong{color:#3c5cc1}
.range-apply{color:#4967bd}
.annual-year-control{color:#6c7e99}
.search{border-color:#dfe6f1;border-radius:5px;padding:7px 10px;color:#92a1ba}
.search input{font-size:12px;width:170px;color:#455b7c}
.search input::placeholder{color:#9ba8bc}
select.filter-select{border-color:#dce3ef;border-radius:5px;color:#5a6e8f;font-size:12px;padding:7px 11px;min-height:35px}
.game-summary{gap:0;padding:15px 18px;border:1px solid #e0e7f4;border-radius:6px;background:#edf1fa;color:#6c7f9e;margin-bottom:20px;font-size:12px;flex-wrap:wrap}
.game-summary>span{padding:0 24px;border-right:1px solid #d7dfef;white-space:nowrap}
.game-summary>span:first-child{padding-left:0}.game-summary>span:last-child{border-right:0}
.game-summary strong{font-size:18px;font-weight:600;color:#3d5fae;margin-right:6px}
table{font-size:13px;color:#536888}
th{background:#f4f6fc;border-color:#e4eaf5;color:#7183a1;font-size:12px;font-weight:500;padding:13px 16px;height:46px}
td{padding:15px 16px;border-bottom-color:#edf0f7;font-size:13px;color:#566c8d;height:60px}
tbody tr:hover{background:#f7f9ff}
th:first-child,td:first-child{padding-left:22px}th:last-child,td:last-child{padding-right:22px}
td.number{color:#526887;font-variant-numeric:tabular-nums}
td.number.amount-strong{color:#304b82;font-weight:600}
td.number.negative,.server-amount.negative{color:#23836c}
.total-row td{background:#f0f4fd;color:#3f5c94;border-top:1px solid #dae3f7;font-weight:600}
.table-footer{background:#fff;border-color:#e6ebf5;color:#8a9ab2;font-size:11px;padding:14px 22px}
.game-name{font-size:13px;font-weight:550;color:#344b6a;line-height:1.5}
.original-name{font-size:11px;color:#8797b1;line-height:1.5;margin-top:3px}
.subject-tag{font-size:12px;color:#667d9f}.subject-tag i{background:#5f7dd3}
.subject-tag.jinyou i{background:#9698c3}.subject-tag.unknown{color:#a06a28}
.text-link{font-size:12px;color:#4b6ccd;padding:5px 0}
.text-link:hover{color:#2e4fae;text-decoration:underline;text-underline-offset:3px}
.games-table{table-layout:fixed;width:100%;min-width:1120px}
.games-table .game-col-name{width:200px}.games-table .game-col-subject{width:140px}.games-table .game-col-provider,.games-table .game-col-resources,.games-table .game-col-status,.games-table .game-col-created{width:auto}.games-table .game-col-actions{width:112px}
.games-table th:not(:first-child),.games-table td:not(:first-child){text-align:center}.games-table .resource-mini{justify-content:center}
.games-table th,.games-table td{padding-left:16px;padding-right:16px;font-size:13px}
.games-table th{font-size:12px;color:#7183a1}
.games-table th:first-child,.games-table td:first-child{padding-left:22px}
.games-table .game-provider{color:#637a9b;font-size:12px;white-space:normal;line-height:1.7}
.games-table .subject-tag{font-size:12px;color:#61799d}
.games-table .created-date{color:#8494ac;font-size:12px}
.games-table .resource-mini{color:#657b9e;gap:5px 8px;line-height:1.6;font-size:12px}
.resource-mini>span{padding:2px 6px;border-radius:3px;background:#f0f3fa}
.games-table td:last-child{white-space:nowrap}
.games-table .original-name{color:#8b9ab0}
.monthly-table{table-layout:fixed;width:100%;min-width:1080px}
.monthly-table .monthly-col-game{width:220px}.monthly-table .monthly-col-subject{width:140px}.monthly-table .monthly-col-server,.monthly-table .monthly-col-cdn,.monthly-table .monthly-col-usage,.monthly-table .monthly-col-total{width:auto}.monthly-table .monthly-col-action{width:80px}
.monthly-table th:not(:first-child),.monthly-table td:not(:first-child){text-align:center}
.monthly-table .number-value,.subject-summary-table .number-value{display:inline-block;width:112px;max-width:100%;text-align:right;font-variant-numeric:tabular-nums}
.monthly-table .server-cost-stack{width:112px;max-width:100%;margin:0 auto;text-align:right}
.monthly-table .sort-button{justify-content:center;padding-left:0}
.subject-summary-table{table-layout:fixed;width:100%;min-width:1000px}.subject-summary-table .summary-col-subject{width:180px}.subject-summary-table .summary-col-share{width:140px}
.subject-summary-table th:not(:first-child),.subject-summary-table td:not(:first-child){text-align:center}
.subject-summary-table .share-cell{min-width:0}
.monthly-table th,.monthly-table td{padding-left:16px;padding-right:16px}
.monthly-table th:first-child,.monthly-table td:first-child{padding-left:22px}
.monthly-table th:last-child,.monthly-table td:last-child{padding-right:22px}
.monthly-table th{font-size:12px;color:#7183a1}
.monthly-table td{padding-top:15px;padding-bottom:15px}
.monthly-table .server-cost-cell{min-width:0}
.server-amount{color:#496386;font-size:13px;font-weight:500}
.row-actions{text-align:right}
.sortable-column{padding-top:10px;padding-bottom:10px}
.sort-button{border:0;background:transparent;border-radius:4px;padding:4px 0 4px 4px;display:inline-flex;align-items:center;justify-content:flex-end;gap:7px;max-width:100%;white-space:nowrap;color:#7183a1;font-size:12px;line-height:1.5;min-height:26px}
.sort-button:hover{color:#4668d3}.sort-button.is-sorted{color:#4668d3;font-weight:550}
.sort-arrows{display:inline-flex;flex-direction:column;gap:3px;flex-shrink:0}
.sort-arrows i{width:0;height:0;border-left:3px solid transparent;border-right:3px solid transparent}
.sort-up{border-bottom:4px solid #b7c3d8}.sort-down{border-top:4px solid #b7c3d8}
.sort-up.active{border-bottom-color:#476bdd}.sort-down.active{border-top-color:#476bdd}
.region-tag{font-size:10px;background:#edf2ff;color:#5976c6;border-radius:3px;padding:2px 5px;margin-top:5px}
.region-tag:hover{color:#3c5eb8;background:#e3ebfe}
.region-tag.mixed{color:#7972ba;background:#f0edfb}
.region-tag.pending{color:#a37326;background:#fff3dc}
.region-tag.pending:hover{background:#ffebc8}
.region-empty{color:#9aa6bb;font-size:10px}
.annual{table-layout:fixed;min-width:1690px;width:100%}
.annual .annual-col-game{width:190px}.annual .annual-col-month{width:112px}.annual .annual-col-total{width:144px}
.annual th,.annual td{padding:13px 13px;font-size:12px;white-space:nowrap}
.annual .sort-button{font-size:12px;gap:6px}
.annual th:first-child,.annual td:first-child{background:#fff;box-shadow:1px 0 0 #e3e9f4;z-index:2;padding-left:20px}
.annual th:first-child{background:#f4f6fc}
.annual .total-row td:first-child{background:#f0f4fd}
.annual th:last-child,.annual td:last-child{position:sticky;right:0;background:#f7f9ff;box-shadow:-1px 0 0 #e0e6f3;z-index:2;padding-right:18px;font-weight:600}
.annual th:last-child{background:#edf2fd}.annual .total-row td:last-child{background:#e9effc}
.annual .missing-value{color:#a1adc0}
.status{font-size:11px;padding:4px 8px;border-radius:3px;font-weight:550}
.status.running{color:#33785e;background:#edf6f0}.status.stopped{color:#ae3a45;background:#fceef0}.status.partial{color:#9b681c;background:#fff2de}.status.empty{color:#8f7c60;background:#f4f0e8}
.notice{border-color:#f2e5c5;background:#fff9ec;color:#9e7a36;border-radius:5px}
.notice.info{background:#edf2fd;border-color:#dae4fa;color:#637fbc}
.modal{border-radius:9px;box-shadow:0 20px 70px #1221423b}
.drawer{border-radius:0}.modal-head,.modal-foot{border-color:#e3e9f4}
.modal-title{font-size:18px;color:#2e456b}.modal-head p{color:#8698b5}
.field label{color:#657b9e}.field input,.field select,.field textarea{border-color:#dce4f2;border-radius:5px;color:#405a80}
.field input:disabled,.field-readonly{background:#f3f6fc;border-color:#e0e7f5;color:#7a8da9}
.form-section{color:#4a648b;border-top-color:#e1e8f5}
.preview-total,.server-breakdown-total{background:#eef3ff;color:#6b82b8;border-radius:5px}
.preview-total strong,.server-breakdown-total strong{color:#4263c7}
.detail-meta label{color:#7e90ad}.detail-meta span{color:#435c80}
.detail-note{background:#f3f6fc;color:#5d769a}
.resource-card{border-color:#dfe6f3;border-radius:6px}
.resource-label{color:#425f86}.resource-region{color:#8396b4}
.resource-id{background:#f3f6fc;border-radius:4px}.resource-value{color:#365277}
.resource-facts dt,.resource-field-label{color:#7a8eaf}.resource-facts dd{color:#425f85}
.resource-facts .date-missing{color:#a27326}.resource-note{color:#7086a5}
.detail-meta .status.stopped{color:#ae3a45}.detail-meta .status.partial{color:#9b681c}
.icon-button{color:#8a9dbf}.icon-button:hover{background:#edf2fe;color:#4b6ddd}
.breakdown-lines>div{border-color:#e6ecf6;color:#6b7f9d}
.mini-note{background:#f3f6fc;color:#8496b3}
#toast{background:#2d457c;box-shadow:0 6px 24px #172c5826}#toast.error{background:#9c4850}
@media(min-width:1800px){main{padding-top:34px}}
@media(max-width:1200px){.sidebar{width:208px;padding-left:12px;padding-right:12px}.brand{font-size:14px;gap:9px}.brand-mark{width:32px;height:34px}.topbar{padding:0 24px}main{padding:26px 24px}.page-footer{padding-left:24px;padding-right:24px}.stat{padding:19px 17px}.stat-value{font-size:26px}}
@media(max-width:950px){.sidebar{width:184px}.brand{font-size:12px;gap:8px;padding-left:5px}.brand small{font-size:8px;letter-spacing:1px}.brand-mark{width:28px;height:30px;font-size:12px}.nav-item{font-size:12px;gap:8px;padding:12px 10px}.nav-item.active:after{right:7px;width:3px}.stats{gap:12px}.heading-actions{padding-top:0}}
@media(max-width:680px){.sidebar{width:100%;height:auto;padding:15px 16px 11px;border-bottom:1px solid #2b3d60}.brand{font-size:15px;padding:0 0 14px;gap:9px}.brand-mark{width:29px;height:30px;font-size:12px}.brand small{display:none}.sidebar nav{gap:4px}.nav-item{padding:10px 6px;font-size:11px;gap:6px;margin:0;border-radius:4px}.nav-item.active:after{display:none}.sidebar-bottom{border:0;right:14px;top:19px}.sidebar-bottom button{font-size:10px;padding:3px;color:#bac8e2}.sidebar-note{display:none}.topbar{height:48px;padding:0 17px}.breadcrumb{font-size:10px}.save-status{font-size:9px}main{padding:24px 16px}.page-footer{padding:0 16px 20px;font-size:9px}.page-heading h1{font-size:23px}.eyebrow{font-size:10px;margin-bottom:6px}.page-heading p{font-size:11px}.page-heading{align-items:stretch;gap:10px}.heading-actions{align-self:flex-end}.filters{margin-bottom:19px}.subject-switch button{font-size:11px;padding:6px 10px}.stats{gap:10px}.stat{padding:16px 13px;min-height:131px}.stat:first-child{padding-top:15px}.stat-label{font-size:11px}.stat-value{font-size:25px}.stat-note{font-size:10px}.panel-head{padding:16px;min-height:61px}.panel-title{font-size:13px}.panel-body{padding-left:16px;padding-right:16px}.search input{width:142px;font-size:11px}.search{padding:7px 9px}.game-summary{padding:12px 13px;row-gap:10px}.game-summary>span{padding:0 11px;font-size:10px}.game-summary>span:first-child{padding-left:0}.game-summary strong{font-size:16px;margin-right:4px}.annual th:last-child,.annual td:last-child{position:static;box-shadow:none}.table-footer{padding:13px 16px;font-size:10px}.modal-body{padding:18px}.field input,.field select,.field textarea{font-size:16px}.range-form .month-input{padding:7px 8px}}
