:root{--font-stack: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", system-ui, sans-serif;--chart-palette: #35c3ff, #3e7bff, #37d09e, #f0b545, #a06bff, #ff7d9c;--rise: #ff5d6e;--fall: #37d09e;--radius: 8px}[data-theme=dark]{--bg: #0a1526;--bg-grad: radial-gradient(1200px 600px at 70% -10%, #123055 0%, #0a1526 55%);--panel: linear-gradient(180deg, rgba(20, 43, 76, .75), rgba(12, 28, 51, .75));--panel-border: #1d3b63;--panel-border-strong: #2c5588;--text: #dce8f7;--text-dim: #7f97b8;--text-faint: #51698c;--accent: #35c3ff;--accent-soft: rgba(53, 195, 255, .14);--gold: #f0b545;--hairline: rgba(53, 195, 255, .22)}[data-theme=light]{--bg: #eef2f7;--bg-grad: none;--panel: #ffffff;--panel-border: #dbe5f1;--panel-border-strong: #b9cbe3;--text: #1f3557;--text-dim: #5b7396;--text-faint: #8ba1c0;--accent: #1577d9;--accent-soft: rgba(21, 119, 217, .08);--gold: #c98a1e;--hairline: rgba(21, 119, 217, .18)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-stack);background:var(--bg);background-image:var(--bg-grad);color:var(--text);font-size:14px}.num{font-variant-numeric:tabular-nums;letter-spacing:.2px}.panel{background:var(--panel);border:1px solid var(--panel-border);border-radius:var(--radius);padding:14px 16px;position:relative}[data-theme=dark] .panel:before{content:"";position:absolute;inset:0 12% auto 12%;height:1px;background:var(--hairline)}.panel h3{margin:0 0 10px;font-size:13px;font-weight:600;color:var(--text-dim);letter-spacing:1px}.panel h3 b{color:var(--text);font-weight:600}.statusbar{display:flex;align-items:center;gap:18px;border-bottom:1px solid var(--panel-border);padding:0 20px;height:46px}.statusbar .asof{font-size:15px;font-weight:700;color:var(--text)}.statusbar .asof small{font-weight:400;color:var(--text-dim);margin-right:6px;font-size:12px}.chip{font-size:12px;color:var(--text-dim);border:1px solid var(--panel-border);border-radius:99px;padding:2px 10px;white-space:nowrap}.chip.warn{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 45%,transparent)}.qdot{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:6px}.qdot.partial{background:var(--gold);box-shadow:0 0 color-mix(in srgb,var(--gold) 60%,transparent);animation:pulse 2.4s infinite}.qdot.complete{background:var(--fall)}@keyframes pulse{0%{box-shadow:0 0 color-mix(in srgb,var(--gold) 55%,transparent)}70%{box-shadow:0 0 0 7px transparent}to{box-shadow:0 0 0 0 transparent}}@media (prefers-reduced-motion: reduce){.qdot.partial{animation:none}}.kpi{display:flex;flex-direction:column;gap:6px;min-width:0}.kpi .label{font-size:12px;color:var(--text-dim)}.kpi .value{font-size:26px;font-weight:700;line-height:1.05}.kpi .value small{font-size:13px;font-weight:400;color:var(--text-dim);margin-left:3px}.kpi .sub{font-size:12px;color:var(--text-dim);min-height:15px}.delta{font-weight:600;margin-left:6px}.delta.up{color:var(--rise)}.delta.down{color:var(--fall)}.page{padding:16px 20px 28px;display:flex;flex-direction:column;gap:14px}.row{display:grid;gap:14px}.kpi-row{grid-template-columns:repeat(5,1fr)}.mid-row{grid-template-columns:2.2fr 1fr}.bot-row{grid-template-columns:1fr 1.4fr}.grid12{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.store-card{border:1px solid var(--panel-border);border-radius:var(--radius);padding:10px 12px;background:var(--panel);display:flex;flex-direction:column;gap:6px;min-width:0}.store-card .name{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.store-card .vals{display:flex;gap:14px;font-size:12px;color:var(--text-dim)}.store-card .vals b{color:var(--text);font-size:14px}.bar{height:4px;border-radius:2px;background:color-mix(in srgb,var(--text-faint) 25%,transparent);overflow:hidden}.bar i{display:block;height:100%;background:linear-gradient(90deg,var(--accent),#3e7bff)}.gapflag{color:var(--gold);font-size:11px}table.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:right;color:var(--text-dim);font-weight:500;padding:6px 8px;border-bottom:1px solid var(--panel-border)}.tbl th:first-child,.tbl td:first-child{text-align:left}.tbl td{text-align:right;padding:6px 8px;border-bottom:1px solid color-mix(in srgb,var(--panel-border) 45%,transparent)}.tbl tr:last-child td{border-bottom:none}.nav{display:flex;gap:4px;height:42px;align-items:center;padding:0 20px}.nav a{color:var(--text-dim);text-decoration:none;font-size:14px;padding:8px 14px;border-radius:6px 6px 0 0;border-bottom:2px solid transparent}.nav a.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:600}.nav .spacer{flex:1}.iconbtn{background:none;border:1px solid var(--panel-border);color:var(--text-dim);border-radius:6px;padding:4px 10px;cursor:pointer;font-size:12px}.iconbtn:hover{color:var(--text);border-color:var(--panel-border-strong)}.filters{display:flex;gap:10px;align-items:center;padding:10px 20px 0;flex-wrap:wrap}.filters label{font-size:12px;color:var(--text-dim)}.filters select,.filters input{background:var(--panel);color:var(--text);border:1px solid var(--panel-border);border-radius:6px;padding:4px 8px;font-size:13px;font-family:var(--font-stack)}.empty{color:var(--text-faint);padding:40px;text-align:center}.scroller{overflow:auto}.matrix th,.matrix td{white-space:nowrap}.tag{font-size:12px;border:1px solid var(--panel-border);border-radius:4px;padding:1px 8px}.tag.internal{color:var(--gold);border-color:color-mix(in srgb,var(--gold) 40%,transparent)}.heatrow{display:grid;grid-template-columns:repeat(31,1fr);gap:2px;flex:1}.heatcell{font-size:9px;text-align:center;padding:2px 0;border-radius:2px;color:var(--text-faint);background:color-mix(in srgb,var(--text-faint) 14%,transparent)}.heatcell.hot{color:#0a1526;background:var(--gold);font-weight:700}.login-input{background:var(--panel);color:var(--text);border:1px solid var(--panel-border);border-radius:6px;padding:8px 10px;font-size:14px;font-family:var(--font-stack);box-sizing:border-box}.login-btn{width:100%;padding:9px 0;cursor:pointer;background:linear-gradient(90deg,var(--accent),#3e7bff);color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600}.login-btn:disabled{opacity:.45;cursor:not-allowed}.login-input:focus,.login-btn:focus-visible,.iconbtn:focus-visible,select:focus{outline:2px solid var(--accent);outline-offset:1px}
