:root{--bg:#f4f5f2;--surface:#fff;--border:#eceeea;--text:#1c2321;--muted:#7b847f;--mint:#d6f3e6;--mint-strong:#5cbf98;--lime:#e4f47e;--lime-soft:#f3fac9;--lime-strong:#8ea318;--danger-soft:#fde4e2;--danger:#c9423a;--radius:14px;--sidebar:232px;color:var(--text);background:var(--bg);-webkit-font-smoothing:antialiased;font-family:Plus Jakarta Sans,system-ui,sans-serif;font-size:15px;line-height:1.5}*{box-sizing:border-box}body{background:var(--bg);margin:0}h1,h2,p{margin:0}button,input{font:inherit;color:inherit}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}.layout{grid-template-columns:var(--sidebar) minmax(0, 1fr);min-height:100vh;display:grid}.main{flex-direction:column;gap:20px;min-width:0;padding:28px 32px 40px;display:flex}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:28px;height:100vh;padding:24px 16px;display:flex;position:sticky;top:0}.brand{align-items:center;gap:10px;padding:0 8px;font-size:19px;font-weight:700;display:flex}.brand-mark{background:var(--lime);border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.nav{flex-direction:column;gap:4px;display:flex}.nav-item{color:var(--muted);border-radius:10px;align-items:center;gap:12px;padding:10px 12px;font-weight:500;text-decoration:none;display:flex}.nav-item.is-active{background:var(--lime);color:var(--text);font-weight:600}.nav-item.is-disabled{cursor:default;opacity:.7}.soon{background:var(--bg);border-radius:999px;margin-left:auto;padding:1px 8px;font-size:11px;font-weight:600}.page-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:16px;display:flex}h1{letter-spacing:-.01em;font-size:28px;font-weight:700}.subtitle,.card-sub{color:var(--muted);font-size:13.5px}.filters{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.pill{background:var(--lime);border-radius:10px;align-items:center;gap:8px;padding:7px 14px;font-size:13.5px;font-weight:600;display:flex}.pill input{background:0 0;border:0;padding:0;font-weight:600}.pill input::-webkit-calendar-picker-indicator{display:none}.pill input{cursor:pointer}.pill input:focus-visible{outline:2px solid var(--lime-strong);outline-offset:2px;border-radius:4px}.pill-note{color:#55611b;font-weight:500}.ghost-button{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:10px;align-items:center;gap:6px;padding:7px 12px;font-size:13px;font-weight:600;display:inline-flex}.ghost-button:hover{background:var(--bg)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:20px}.notice{justify-content:space-between;align-items:center;gap:16px;display:flex}.notice.is-error{background:var(--danger-soft);color:var(--danger);border-color:#0000}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;display:grid}.stat-grid[aria-busy=true]{opacity:.6;transition:opacity .2s}.stat-card{flex-direction:column;gap:6px;display:flex}.stat-card.is-highlight{background:var(--mint);border-color:#0000}.stat-head{justify-content:space-between;align-items:center;display:flex}.stat-label{color:var(--muted);font-size:13.5px;font-weight:500}.is-highlight .stat-label{color:#3f5b50}.icon-chip{border:1px solid var(--border);background:var(--surface);border-radius:9px;place-items:center;width:32px;height:32px;display:grid}.stat-value{letter-spacing:-.01em;font-size:26px;font-weight:700}.stat-detail{color:var(--muted);font-size:12.5px}.is-highlight .stat-detail{color:#3f5b50}.chart-card{flex-direction:column;gap:12px;display:flex}.card-head{flex-wrap:wrap;justify-content:space-between;gap:12px;display:flex}h2{font-size:18px;font-weight:600}.legend{color:var(--muted);gap:16px;margin:0;padding:0;font-size:13px;list-style:none;display:flex}.legend li{align-items:center;gap:6px;display:flex}.swatch{border-radius:3px;width:10px;height:10px}.swatch.is-actual{background:var(--mint-strong)}.swatch.is-forecast{background:var(--lime-strong)}.chart{width:100%;height:420px}.skeleton{background:linear-gradient(90deg, var(--bg), #fbfbfa, var(--bg));background-size:200% 100%;border-radius:10px;animation:1.4s linear infinite shimmer}@keyframes shimmer{to{background-position:-200% 0}}.tt-time{margin-bottom:6px;font-weight:700}.tt-row{grid-template-columns:10px 1fr auto;align-items:center;gap:8px;min-width:220px;display:grid}.tt-row i{border-radius:2px;width:8px;height:8px}.tt-meta{color:#55611b;margin-top:6px;font-size:11.5px}@media (width<=1100px){.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=820px){.layout{grid-template-columns:minmax(0,1fr)}.sidebar{border-right:0;border-bottom:1px solid var(--border);flex-flow:wrap;align-items:center;gap:12px;height:auto;padding:12px 16px;position:static}.nav{flex-direction:row;width:100%;min-width:0;overflow-x:auto}.nav-item{flex-shrink:0}.main{padding:20px 16px 32px}.chart{height:320px}}@media (width<=520px){.stat-grid{grid-template-columns:1fr}}button.nav-item{font:inherit;text-align:left;cursor:pointer;background:0 0;border:0}button.nav-item:hover:not(.is-active){background:var(--bg);color:var(--text)}.insight{background:var(--lime-soft);border-color:#0000;flex-direction:column;gap:8px;display:flex}.insight p{max-width:80ch}.insight-note{color:#55611b;font-size:13.5px}.chart-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.chart.is-compact{height:300px}.swatch.is-actual-soft{background:#7ccfaee6}.table-wrap{margin-top:12px;position:relative;overflow-x:auto}.table{border-collapse:collapse;width:100%;font-size:14px}.table th{background:var(--mint);color:#3f5b50;text-align:left;white-space:nowrap;padding:10px 14px;font-weight:600}.table th:first-child{border-radius:10px 0 0 10px}.table th:last-child{border-radius:0 10px 10px 0}.table td{border-bottom:1px solid var(--border);white-space:nowrap;padding:12px 14px}.cell-action{text-align:right}.badge{border-radius:999px;padding:2px 10px;font-size:12.5px;font-weight:600;display:inline-block}.badge.is-over{background:var(--lime);color:#3d4a0c}.badge.is-under{background:var(--mint);color:#2f5a49}@media (width<=1100px){.chart-grid{grid-template-columns:minmax(0,1fr)}}.sidebar-footer{flex-direction:column;gap:8px;margin-top:auto;display:flex}.source-status{background:var(--mint);border-radius:12px;align-items:flex-start;gap:10px;padding:12px;display:flex}.source-status.is-live{background:var(--lime-soft)}.source-dot{background:var(--mint-strong);border-radius:50%;flex-shrink:0;width:8px;height:8px;margin-top:6px;box-shadow:0 0 0 3px #5cbf9840}.is-live .source-dot{background:#d9a514;box-shadow:0 0 0 3px #d9a51440}.source-status-title{font-size:13px;font-weight:700}.source-status-meta{color:var(--muted);font-size:12px}.serve-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:12px;display:grid}.serve-item{border:1px solid var(--border);color:var(--muted);border-radius:12px;flex-direction:column;gap:8px;padding:16px;display:flex}.serve-item.is-active{border-color:var(--mint-strong);color:var(--text);background:#d6f3e666}.serve-item.is-active.is-live{border-color:var(--lime-strong);background:var(--lime-soft)}.serve-head{color:var(--text);flex-wrap:wrap;align-items:center;gap:8px;display:flex}.serve-head h3{margin:0;font-size:15px;font-weight:600}.serve-role{background:var(--bg);color:var(--muted);border-radius:999px;padding:1px 8px;font-size:11.5px;font-weight:600}.source-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:12px;display:grid}.source-item{border:1px solid var(--border);border-radius:12px;flex-direction:column;gap:6px;padding:16px;display:flex}.source-item h3{margin:0;font-size:15px;font-weight:600}.source-code{background:var(--mint);letter-spacing:.02em;border-radius:6px;align-self:flex-start;padding:1px 8px;font-size:12px;font-weight:700}.source-item a{color:#4d6a12;font-size:13.5px;font-weight:600}@media (width<=820px){.source-grid,.serve-grid{grid-template-columns:minmax(0,1fr)}.sidebar-footer{flex-flow:wrap;align-items:center;width:100%;margin-top:0}.source-status{flex:200px;padding:8px 12px}}.segmented{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:3px;display:inline-flex}.segmented button{color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:8px;padding:5px 12px;font-size:13.5px;font-weight:600}.segmented button.is-on{background:var(--lime);color:var(--text)}.day-stepper{gap:4px;padding:4px 6px}.step{cursor:pointer;background:#ffffff8c;border:0;border-radius:8px;place-items:center;width:28px;height:28px;display:grid}.step:hover:not(:disabled){background:#fff}.step:disabled{opacity:.35;cursor:default}.day-label{cursor:pointer;white-space:nowrap;align-items:center;gap:8px;padding:0 6px;display:flex;position:relative}.day-input{opacity:0;width:100%;position:absolute;inset:0}.chips{gap:6px;display:flex}.chip{border:1px solid var(--border);background:var(--surface);cursor:pointer;border-radius:999px;padding:6px 12px;font-size:13px;font-weight:600}.chip:hover{background:var(--bg)}.chip.is-on{border-color:var(--lime-strong);background:var(--lime-soft)}.step:focus-visible,.chip:focus-visible,.segmented button:focus-visible{outline:2px solid var(--lime-strong);outline-offset:2px}.day-label:focus-within{outline:2px solid var(--lime-strong);outline-offset:2px;border-radius:6px}
