:root{color-scheme:light;--surface-1: #fcfcfb;--page: #f9f9f7;--text-primary: #0b0b0b;--text-secondary: #52514e;--text-muted: #898781;--grid: #e1e0d9;--axis: #c3c2b7;--border: rgba(11, 11, 11, .1);--land: #f1efe8;--coast: #dad7cd;--series-1: #2a78d6;--series-2: #eb6834;--seq-100: #cde2fb;--seq-250: #86b6ef;--seq-400: #3987e5;--seq-550: #1c5cab;--seq-700: #0d366b;--good: #0ca30c;--good-text: #006300;--warning: #fab219;--critical: #d03b3b;--radius: 10px;--gap: 16px;--font: system-ui, -apple-system, "Segoe UI", sans-serif}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){color-scheme:dark;--surface-1: #1a1a19;--page: #0d0d0d;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--grid: #2c2c2a;--axis: #383835;--border: rgba(255, 255, 255, .1);--land: #232322;--coast: #35352f;--series-1: #3987e5;--series-2: #d95926;--good-text: #0ca30c}}:root[data-theme=dark]{color-scheme:dark;--surface-1: #1a1a19;--page: #0d0d0d;--text-primary: #ffffff;--text-secondary: #c3c2b7;--text-muted: #898781;--grid: #2c2c2a;--axis: #383835;--border: rgba(255, 255, 255, .1);--land: #232322;--coast: #35352f;--series-1: #3987e5;--series-2: #d95926;--good-text: #0ca30c}*{box-sizing:border-box}body{margin:0;background:var(--page);color:var(--text-primary);font-family:var(--font);font-size:15px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{max-width:1180px;margin:0 auto;padding:28px 20px 80px}.masthead{display:flex;align-items:baseline;justify-content:space-between;gap:16px;flex-wrap:wrap;margin-bottom:4px}.masthead h1{font-size:22px;font-weight:650;letter-spacing:-.01em;margin:0}.masthead .sub{color:var(--text-secondary);font-size:13px;margin:2px 0 0}.theme-toggle{background:var(--surface-1);color:var(--text-secondary);border:1px solid var(--border);border-radius:999px;padding:5px 12px;font:inherit;font-size:13px;cursor:pointer}.theme-toggle:hover{color:var(--text-primary)}.card{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:18px;margin-top:var(--gap)}.card>h2{font-size:13px;font-weight:620;text-transform:uppercase;letter-spacing:.05em;color:var(--text-secondary);margin:0 0 2px}.card>.card-note{font-size:13px;color:var(--text-muted);margin:0 0 14px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:var(--gap)}@media (max-width: 820px){.grid-2{grid-template-columns:1fr}}.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}.field{display:flex;flex-direction:column;gap:4px}.field label{font-size:12px;color:var(--text-secondary)}input[type=date],input[type=number],input[type=text]{font:inherit;font-size:14px;background:var(--page);color:var(--text-primary);border:1px solid var(--border);border-radius:7px;padding:6px 9px;min-width:0}input:focus-visible{outline:2px solid var(--series-1);outline-offset:1px}button{font:inherit;font-size:14px;cursor:pointer;background:var(--series-1);color:#fff;border:1px solid transparent;border-radius:7px;padding:7px 13px}button:hover{filter:brightness(1.08)}button.ghost{background:transparent;color:var(--text-secondary);border-color:var(--border)}button.ghost:hover{color:var(--text-primary);filter:none}button.danger{background:transparent;color:var(--critical);border-color:var(--border)}button:disabled{opacity:.5;cursor:not-allowed}.preset-row{display:flex;gap:6px;flex-wrap:wrap}.preset{font-size:13px;padding:5px 10px;background:transparent;color:var(--text-secondary);border:1px solid var(--border);border-radius:999px}.preset[aria-pressed=true]{color:var(--text-primary);border-color:var(--series-1);font-weight:600}.dropzone{border:1.5px dashed var(--axis);border-radius:var(--radius);padding:26px 18px;text-align:center;color:var(--text-secondary);transition:border-color .12s,background .12s}.dropzone.over{border-color:var(--series-1);background:color-mix(in oklab,var(--series-1) 6%,transparent)}.dropzone strong{color:var(--text-primary)}.coverage{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--text-secondary);padding:8px 12px;border-radius:7px;background:color-mix(in oklab,var(--warning) 14%,var(--surface-1));border:1px solid color-mix(in oklab,var(--warning) 40%,transparent)}.coverage.complete{background:transparent;border-color:transparent;padding:0;color:var(--text-muted)}.coverage button{background:none;border:none;color:var(--series-1);padding:0;text-decoration:underline;font-size:13px}.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:var(--gap)}.tile{background:var(--surface-1);border:1px solid var(--border);border-radius:var(--radius);padding:15px 16px}.tile .label{font-size:12px;color:var(--text-secondary);display:block}.tile .value{font-size:25px;font-weight:650;letter-spacing:-.02em;display:block;margin-top:3px}.tile .foot{font-size:12px;color:var(--text-muted);display:block;margin-top:2px}.tile.hero{grid-column:span 2}.tile.hero .value{font-size:42px}@media (max-width: 560px){.tile.hero{grid-column:span 1}}.value.good{color:var(--good-text)}.value.bad{color:var(--critical)}table{width:100%;border-collapse:collapse;font-size:14px}th,td{text-align:left;padding:7px 10px 7px 0;border-bottom:1px solid var(--grid)}th{font-size:12px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.04em}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}tbody tr:last-child td{border-bottom:none}.scroll-x{overflow-x:auto}.legend{display:flex;gap:16px;flex-wrap:wrap;font-size:13px;color:var(--text-secondary);margin-bottom:8px}.legend span{display:inline-flex;align-items:center;gap:6px}.swatch{width:10px;height:10px;border-radius:3px;display:inline-block}.heatmap{display:grid;grid-template-columns:34px repeat(24,1fr);gap:2px;align-items:center}.heatmap .rowlabel,.heatmap .collabel{font-size:10px;color:var(--text-muted);font-variant-numeric:tabular-nums}.heatmap .collabel{text-align:center}.heatmap .cell{aspect-ratio:1;border-radius:2px}.weekgrid{display:grid;gap:3px;align-items:center}.weekgrid .rowlabel,.weekgrid .collabel{font-size:10px;color:var(--text-muted);font-variant-numeric:tabular-nums}.weekgrid .collabel{text-align:center}.weekgrid .cell{height:22px;border-radius:3px}.weekgrid .cell.pad{background:transparent!important}.weekday-totals{display:grid;gap:3px;align-items:start;margin-top:10px}.weekday-totals .rowlabel{font-size:10px;color:var(--text-muted)}.weekday-total-cell{display:flex;flex-direction:column;gap:3px}.weekday-total-cell .bar{height:4px;border-radius:4px;background:var(--series-1);display:block;min-width:2px}.weekday-total-cell .figure{font-size:12.5px;color:var(--text-primary);font-weight:600;font-variant-numeric:tabular-nums}.weekday-total-cell .sub{font-size:10.5px;color:var(--text-muted);font-variant-numeric:tabular-nums}.map-wrap{position:relative}.map-wrap svg{width:100%;height:auto;display:block;cursor:grab;margin-top:10px}.map-wrap svg:active{cursor:grabbing}.map-wrap .preset-row{margin-bottom:2px}.map-tooltip,.chart-tooltip{position:absolute;pointer-events:none;z-index:5;background:var(--surface-1);color:var(--text-primary);border:1px solid var(--border);border-radius:7px;padding:7px 10px;font-size:13px;line-height:1.35;box-shadow:0 4px 14px #00000024}.map-tooltip .muted,.chart-tooltip .muted{color:var(--text-secondary)}.map-hint{position:absolute;left:50%;top:10px;transform:translate(-50%);z-index:5;background:var(--surface-1);color:var(--text-secondary);border:1px solid var(--border);border-radius:999px;padding:5px 12px;font-size:12px;box-shadow:0 4px 14px #00000024;pointer-events:none}.period-row{display:flex;gap:8px;align-items:flex-end;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--grid)}.period-row:last-of-type{border-bottom:none}.period-verdict{font-size:13px;color:var(--text-secondary);margin-left:auto;text-align:right}.flag{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;white-space:nowrap;background:color-mix(in oklab,var(--warning) 20%,var(--surface-1));border:1px solid color-mix(in oklab,var(--warning) 45%,transparent);color:var(--text-primary)}.verdict-card{display:flex;flex-direction:column;gap:14px}.verdict-panel{border:1px solid var(--border);border-radius:var(--radius);padding:14px 16px}.verdict-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--text-secondary);margin-bottom:8px}.verdict-head strong{color:var(--text-primary);font-weight:620}.badge{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.04em;padding:2px 7px;border-radius:999px;white-space:nowrap;border:1px solid var(--border);color:var(--text-secondary)}.badge.status{background:color-mix(in oklab,var(--series-1) 12%,var(--surface-1));border-color:color-mix(in oklab,var(--series-1) 40%,transparent);color:var(--text-primary)}.badge.best{background:color-mix(in oklab,var(--good) 16%,var(--surface-1));border-color:color-mix(in oklab,var(--good) 45%,transparent);color:var(--good-text)}.badge.worst{background:color-mix(in oklab,var(--critical) 14%,var(--surface-1));border-color:color-mix(in oklab,var(--critical) 45%,transparent);color:var(--critical)}.verdict-net{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}.verdict-net .value{font-size:30px;font-weight:650;letter-spacing:-.02em}.verdict-net .multiple{font-size:14px;color:var(--text-muted)}.verdict-bar{position:relative;height:8px;border-radius:999px;background:var(--grid);overflow:hidden;margin-bottom:10px}.verdict-bar .fill{position:absolute;inset:0 auto 0 0;border-radius:999px;background:var(--critical)}.verdict-bar .fill.over{background:var(--good)}.verdict-bar .mark{position:absolute;top:-2px;bottom:-2px;width:2px;background:var(--axis);left:100%}.verdict-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:6px 16px;font-size:13px;color:var(--text-secondary)}.verdict-grid strong{color:var(--text-primary);font-weight:600}.verdict-warning{font-size:12px;color:var(--text-muted);margin:8px 0 0}.empty{color:var(--text-secondary);font-size:14px}.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:12.5px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
