:root{color-scheme:dark;font-family:Inter,PingFang SC,Microsoft YaHei,Arial,sans-serif;background:#10140c;color:#f5f0df;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}body{margin:0;min-width:1120px;min-height:100vh;background:#10140c}button,input,select{font:inherit}.appShell{display:grid;grid-template-columns:260px 1fr;min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;padding:20px 14px;border-right:1px solid rgba(245,200,119,.2);background:#151808}.brand{display:flex;align-items:center;gap:12px;padding:6px 8px 22px}.brandMark{display:grid;place-items:center;width:42px;height:42px;border-radius:8px;color:#10140c;background:#f5c877}.brand strong,.brand span{display:block}.brand strong{font-size:17px}.brand span{margin-top:4px;color:#a8ab99;font-size:12px}.navList{display:grid;gap:7px}.navItem{display:flex;align-items:center;gap:10px;width:100%;min-height:42px;padding:0 12px;border:1px solid transparent;border-radius:8px;color:#d9d4c4;background:transparent;cursor:pointer;text-align:left}.navItem:hover{border-color:#f5c8774d;background:#f5c87714}.navItem.active{color:#10140c;background:#f5c877}.sourceBadge{position:absolute;right:14px;bottom:18px;left:14px;display:flex;align-items:center;gap:10px;padding:12px;border:1px solid rgba(100,198,189,.35);border-radius:8px;color:#bce6df;background:#64c6bd14;font-size:13px}.workspace{padding:24px;overflow-x:hidden}.topbar{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;padding-bottom:18px}.eyebrow{margin:0 0 7px;color:#f5b343;font-size:12px;font-weight:700}h1,h2{margin:0;letter-spacing:0}h1{font-size:28px}h2{font-size:17px}.filters{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}.filters label{display:grid;gap:5px;color:#a8ab99;font-size:12px}.filters input,.filters select{width:148px;height:38px;border:1px solid rgba(245,200,119,.25);border-radius:8px;padding:0 10px;color:#f5f0df;background:#1f230f}.filters .searchBox input{width:230px}.viewStack{display:grid;gap:18px}.kpiGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.metricCard,.panel{border:1px solid rgba(245,200,119,.2);border-radius:8px;background:#171b0b;box-shadow:0 10px 26px #00000038}.metricCard{display:grid;gap:9px;min-height:92px;padding:16px}.metricCardButton{appearance:none;width:100%;color:inherit;cursor:pointer;text-align:left}.metricCardButton:hover{border-color:#64c6bd80;background:#64c6bd14}.metricCardButton:focus-visible,.iconTextButton:focus-visible{outline:2px solid #64c6bd;outline-offset:2px}.metricCard span{color:#a8ab99;font-size:13px}.metricCard strong{color:#f5c877;font-size:24px;line-height:1.15;word-break:break-word}.metricCard em{color:#bce6df;font-size:12px;font-style:normal}.panel{min-width:0;padding:14px}.drillPanel{border-color:#64c6bd5c;background:linear-gradient(180deg,#64c6bd14,#171b0bfa)}.panelHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding-bottom:12px}.pill{display:inline-flex;align-items:center;max-width:55%;min-height:28px;padding:0 10px;border:1px solid rgba(100,198,189,.3);border-radius:999px;color:#bce6df;background:#64c6bd14;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.iconTextButton{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:0 10px;border:1px solid rgba(245,200,119,.28);border-radius:8px;color:#f5f0df;background:#202511;cursor:pointer}.iconTextButton:hover{border-color:#64c6bd80;color:#bce6df}.uploadGrid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}.uploadSlot{display:grid;gap:8px;min-height:104px;padding:12px;border:1px dashed rgba(245,200,119,.32);border-radius:8px;color:#d9d4c4;background:#f5c8770f;cursor:pointer}.uploadSlot:hover{border-color:#64c6bd80;background:#64c6bd14}.uploadSlot span{color:#a8ab99;font-size:12px}.uploadSlot strong{color:#f5c877;font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.uploadSlot em{color:#bce6df;font-size:12px;font-style:normal}.uploadSlot input{display:none}.uploadActions{display:flex;align-items:center;gap:10px;margin-top:12px}.primaryButton{min-height:36px;padding:0 14px;border:1px solid transparent;border-radius:8px;color:#10140c;background:#f5c877;cursor:pointer;font-weight:700}.primaryButton:disabled,.iconTextButton:disabled{opacity:.48;cursor:not-allowed}.primaryButton:not(:disabled):hover{background:#ffd98e}.uploadNotice{margin-top:10px;color:#bce6df;font-size:13px}.splitGrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(460px,.82fr);gap:18px}.threeGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.chartFrame{position:relative;min-height:260px}.chartSurface{width:100%;height:100%}.chartError{position:absolute;inset:0;display:grid;place-content:center;gap:8px;padding:24px;border:1px dashed rgba(212,79,62,.5);border-radius:8px;color:#ffb1a7;background:#10140ceb;text-align:center}.chartError strong,.chartError span{display:block}.tableWrap{overflow:auto;border:1px solid rgba(245,200,119,.18);border-radius:8px}table{width:100%;min-width:980px;border-collapse:collapse;font-size:13px}th{position:sticky;top:0;z-index:1;color:#10140c;background:#d99443;font-weight:700}th,td{padding:11px 12px;border-bottom:1px solid rgba(245,200,119,.16);border-right:1px solid rgba(245,200,119,.16);vertical-align:middle}td{color:#eee7d2}tbody tr:nth-child(2n) td{background:#d9944324}tbody tr:hover td{background:#64c6bd1f}.pager{display:flex;align-items:center;justify-content:flex-end;gap:10px;padding:10px;color:#a8ab99;background:#121607}.pager button{height:32px;border:1px solid rgba(245,200,119,.28);border-radius:8px;color:#f5f0df;background:#202511;cursor:pointer}.pager button:disabled{opacity:.45;cursor:not-allowed}.matrix{overflow:auto;border:1px solid rgba(245,200,119,.18);border-radius:8px}.matrixHead,.matrixRow{display:grid;grid-template-columns:190px repeat(10,minmax(132px,1fr));min-width:1510px}.matrixHead{position:sticky;top:0;z-index:1;color:#10140c;background:#d99443;font-weight:700}.matrixHead span,.matrixRow>span,.barCell{padding:10px;border-right:1px solid rgba(245,200,119,.16);border-bottom:1px solid rgba(245,200,119,.16)}.weekLabel{color:#d9d4c4;white-space:nowrap}.barCell{position:relative;min-height:42px;color:#f5c877;text-align:right}.miniBar{position:absolute;top:8px;bottom:8px;left:8px;border-radius:4px;opacity:.78}.barCell span{position:relative;z-index:1}.tone0{background:#f5c877}.tone1{background:#f5b343}.tone2{background:#df8040}.tone3{background:#ff8121}.tone4{background:#f2df45}.tone5{background:#9fd1d7}.stateLine{margin-bottom:14px;padding:10px 12px;border:1px solid rgba(245,200,119,.25);border-radius:8px;color:#f5c877;background:#f5c87714}.stateLine.error{border-color:#d44f3e73;color:#ffb1a7;background:#d44f3e1a}@media(max-width:1280px){.splitGrid,.threeGrid,.uploadGrid,.kpiGrid{grid-template-columns:1fr}.topbar{align-items:flex-start;flex-direction:column}}.timeline{margin:8px 0 18px;padding:14px 16px 12px;border-radius:10px;border:1px solid rgba(245,200,119,.18);background:#f5c8770a;display:flex;flex-direction:column;gap:10px}.timeline.timeline-ok{border-color:#78c88252;background:#78c8820f}.timeline.timeline-warn{border-color:#f5c8776b;background:#f5c87712}.timeline.timeline-danger{border-color:#e56e6073;background:#e56e6014}.timeline.timeline-muted,.timeline.timelineEmpty{border-color:#f5f0df2e;background:#f5f0df08}.timelineHeader{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.timelineBadge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:999px;border:1px solid transparent;background:#f5f0df0f;color:#f5f0df;font-size:12px;font-weight:600;cursor:pointer;letter-spacing:.02em}.timelineBadge.ok{color:#c1e8c4;border-color:#78c88299;background:#78c8822e}.timelineBadge.warn{color:#f5d27d;border-color:#f5c877a6;background:#f5c8772e}.timelineBadge.danger{color:#f5b6ad;border-color:#e56e60a6;background:#e56e602e}.timelineBadge.muted{color:#d8d2bd;border-color:#f5f0df52;background:#f5f0df14}.timelineBadgeCount{display:inline-grid;place-items:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#10140c8c;color:inherit;font-size:11px}.timelineHeaderText{color:#f5f0dfc7;font-size:13px}.timelineRows{display:flex;flex-direction:column;gap:6px}.timelineRow{display:grid;grid-template-columns:92px 1fr 180px;align-items:center;gap:12px}.timelineLabel{font-size:12px;color:#f5f0dfc7}.timelineTrack{position:relative;height:12px;border-radius:6px;background:#f5f0df0d;overflow:hidden}.timelineSpan{position:absolute;top:0;bottom:0;background:#f5c87752;border-radius:4px}.timelineSpanEmpty{background:repeating-linear-gradient(45deg,rgba(245,240,223,.06),rgba(245,240,223,.06) 4px,transparent 4px,transparent 8px);left:0;right:0}.timelineIntersect{position:absolute;top:0;bottom:0;background:#78c8828c;border-radius:4px;box-shadow:0 0 0 1px #78c88266 inset}.timelineRange{font-size:11px;color:#f5f0df99;font-variant-numeric:tabular-nums;text-align:right}.timelineAxis{display:flex;justify-content:space-between;margin-left:104px;margin-right:192px;font-size:11px;color:#f5f0df73;font-variant-numeric:tabular-nums}.timelineWarnings{margin:4px 0 0;padding:10px 14px;border-radius:8px;background:#10140c73;list-style:none;display:flex;flex-direction:column;gap:6px;font-size:12px;color:#f5f0dfe0}.timelineWarnings li:before{content:"·";display:inline-block;margin-right:6px;color:#f5c877b3}.timelineWarningsEmpty{color:#f5f0dfa6;font-style:italic}.tableWrap th.expandColumn,.tableWrap td.expandColumn{width:36px;text-align:center;padding-left:4px;padding-right:4px}.expandToggle{background:transparent;border:1px solid rgba(245,200,119,.32);color:#f5c877;width:22px;height:22px;border-radius:6px;cursor:pointer;font-size:12px;line-height:1;display:inline-flex;align-items:center;justify-content:center;transition:transform .16s ease,background-color .16s ease}.expandToggle:hover{background:#f5c87724}.expandToggle.open{transform:rotate(90deg);background:#f5c87738;border-color:#f5c87799}.expandPlaceholder{color:#f5f0df2e;font-size:14px}.tableWrap tr.rowOpen td{background:#f5c8770f}.tableWrap tr.expandRow>td{padding:16px 20px 18px;background:#10140c8c;border-bottom:1px solid rgba(245,200,119,.18)}.expandPanel{display:flex;flex-direction:column;gap:8px}.expandPanelTitle{font-size:13px;color:#f5f0dfbf;display:flex;align-items:center;gap:12px}.expandPanelTitle strong{color:#f5c877;font-size:14px}.expandPanelMeta{font-size:11px;color:#f5f0df80;display:flex;gap:14px;flex-wrap:wrap;font-variant-numeric:tabular-nums}.expandPanelMeta span strong{color:#f5f0df;margin-left:4px}.exportButton{display:inline-flex;align-items:center;gap:6px;padding:6px 14px;border:1px solid rgba(245,200,119,.45);border-radius:8px;background:#f5c87714;color:#f5c877;font-size:13px;text-decoration:none;cursor:pointer;transition:background-color .16s ease,transform .06s ease;white-space:nowrap}.exportButton:before{content:"⬇";font-size:14px;line-height:1}.exportButton:hover{background:#f5c8772e}.exportButton:active{transform:translateY(1px)}.drillChartWrap{display:flex;flex-direction:column;gap:10px}.drillToolbar{display:flex;align-items:center;gap:16px;flex-wrap:wrap;padding:6px 0 2px;border-bottom:1px dashed rgba(245,200,119,.12)}.drillWindowGroup{display:inline-flex;gap:4px;padding:3px;background:#f5f0df0d;border-radius:8px}.drillWindowBtn{background:transparent;border:0;padding:5px 12px;border-radius:6px;color:#f5f0dfb3;font-size:12px;cursor:pointer;transition:background-color .14s,color .14s}.drillWindowBtn:hover{color:#f5f0df}.drillWindowBtn.active{background:#f5c87738;color:#f5c877}.drillCompareToggle{display:inline-flex;align-items:center;gap:6px;color:#f5f0dfc7;font-size:12px;cursor:pointer;user-select:none}.drillCompareToggle.disabled{opacity:.4;cursor:not-allowed}.drillCompareToggle input[type=checkbox]{width:14px;height:14px;accent-color:#f5c877;cursor:pointer}.drillCompareToggle.disabled input[type=checkbox]{cursor:not-allowed}.drillCompareSelector{display:inline-flex;align-items:center;gap:8px;color:#f5f0dfc7;font-size:12px}.drillCompareLabel{font-size:12px;color:#f5f0df99}.drillCompareSelect{background:#f5f0df0d;color:#f5f0df;border:1px solid rgba(245,200,119,.25);border-radius:6px;padding:5px 10px;font-family:inherit;font-size:12px;cursor:pointer;color-scheme:dark}.drillCompareSelect:hover{border-color:#f5c87780}.drillCompareHint{font-size:11px;color:#f5f0df80;font-style:italic}.drillCompareHint.warn{color:#f5d27d}.drillExtrasRow{display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:4px 0 8px}.drillExtrasLabel{font-size:12px;color:#f5f0df99;margin-right:4px}.drillExtrasChip{background:transparent;border:1px solid rgba(245,240,223,.22);color:#f5f0dfb3;padding:3px 10px;border-radius:999px;font-size:11px;cursor:pointer;transition:background-color .14s,border-color .14s,color .14s}.drillExtrasChip:hover{border-color:#f5f0df73;color:#f5f0df}.drillExtrasChip.active{font-weight:600}.historyMeta{display:flex;flex-wrap:wrap;gap:18px;padding:10px 14px;margin-bottom:14px;background:#f5c8770d;border:1px solid rgba(245,200,119,.18);border-radius:8px;font-size:12px;color:#f5f0dfc7;font-variant-numeric:tabular-nums}.historyMeta strong{color:#f5c877;margin-left:4px}.historyExportRow{display:flex;align-items:flex-end;gap:16px;flex-wrap:wrap;padding:6px 0 12px}.historyExportRow label{display:inline-flex;flex-direction:column;gap:4px;font-size:12px;color:#f5f0dfb3}.historyExportRow input[type=date]{background:#f5f0df0d;border:1px solid rgba(245,200,119,.25);color:#f5f0df;padding:6px 10px;border-radius:6px;font-family:inherit;font-size:13px;color-scheme:dark}.historyExportRow input[type=date]:hover{border-color:#f5c87780}.historyHint{font-size:11px;color:#f5f0df80;font-style:italic}@media(max-width:960px){.timelineRow{grid-template-columns:80px 1fr}.timelineRange{grid-column:2 / 3;text-align:left;padding-left:0}.timelineAxis{margin-left:92px;margin-right:0}}.baHint{margin:2px 0 14px;font-size:13px;line-height:1.6;color:#f5f0dfb3}.baHint code{background:#f5c8771f;color:#f5c877;padding:1px 6px;border-radius:4px;font-size:12px}.historyExportRow input[type=text]{background:#f5f0df0d;border:1px solid rgba(245,200,119,.25);color:#f5f0df;padding:6px 10px;border-radius:6px;font-family:inherit;font-size:13px;min-width:200px}.baReport{display:flex;flex-direction:column;gap:12px;margin-top:6px}.baIssue{padding:10px 14px;border-radius:8px;font-size:13px;line-height:1.6;background:#10140c73;border-left:3px solid rgba(245,240,223,.25)}.baIssue ul{margin:6px 0 0;padding-left:18px}.baIssue strong{color:#f5f0df}.baIssueDanger{border-left-color:#e56e60;background:#e56e601a}.baIssueDanger strong{color:#ffb3a8}.baIssueWarn{border-left-color:#f5c877;background:#f5c87714}.baIssueOk{border-left-color:#7ed4a6;background:#7ed4a614;color:#bce6df}.baInline{display:block;margin-top:4px;color:#f5f0dfbf;word-break:break-all}.baDupRow{display:flex;align-items:center;gap:12px;margin-top:8px}.baDupDate{min-width:96px;font-variant-numeric:tabular-nums;color:#f5c877}.baDupRow select{flex:1;background:#f5f0df0d;border:1px solid rgba(245,200,119,.25);color:#f5f0df;padding:5px 8px;border-radius:6px;font-family:inherit;font-size:12px}.baResultRow{padding-top:4px}.uploadSlotFilled{border-style:solid;border-color:#7ed4a680;background:#7ed4a612}.uploadSlotFilled:hover{border-color:#7ed4a6b3;background:#7ed4a61f}.uploadSlotFilled strong{color:#bce6df}.slotBadge{font-style:normal;margin-left:6px;font-size:11px;color:#7ed4a6;border:1px solid rgba(126,212,166,.45);border-radius:4px;padding:0 5px;vertical-align:middle}
