:root{--bg: #f4f6f9;--surface: #ffffff;--surface-2: #eef1f5;--text: #17202c;--muted: #566274;--border: #d5dbe3;--accent: #23579f;--accent-contrast: #ffffff;--ok: #17673b;--ok-bg: #def3e6;--warn: #7a5000;--warn-bg: #fdf0c9;--bad: #a8221a;--bad-bg: #fbe3e0;--info: #1d5391;--info-bg: #e3edf9;--pos: #17673b;--neg: #a8221a;--env-dev: #566274;--env-paper: #23579f;--env-live: #a8221a;--focus: #1a73e8;--shadow: 0 1px 2px rgb(16 24 40 / 6%), 0 1px 3px rgb(16 24 40 / 8%);--radius: 10px;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:15px;line-height:1.45;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0f141b;--surface: #171e28;--surface-2: #1f2834;--text: #e6ebf2;--muted: #9aa7b8;--border: #2c3a4b;--accent: #6ea8ff;--accent-contrast: #0b1320;--ok: #67d391;--ok-bg: #12301f;--warn: #f1c75b;--warn-bg: #352a0b;--bad: #ff8f86;--bad-bg: #3a1613;--info: #8dbcff;--info-bg: #14263d;--pos: #67d391;--neg: #ff8f86;--env-dev: #9aa7b8;--env-paper: #6ea8ff;--env-live: #ff8f86;--focus: #8ab4ff;--shadow: none;color-scheme:dark}}:root[data-theme=dark]{--bg: #0f141b;--surface: #171e28;--surface-2: #1f2834;--text: #e6ebf2;--muted: #9aa7b8;--border: #2c3a4b;--accent: #6ea8ff;--accent-contrast: #0b1320;--ok: #67d391;--ok-bg: #12301f;--warn: #f1c75b;--warn-bg: #352a0b;--bad: #ff8f86;--bad-bg: #3a1613;--info: #8dbcff;--info-bg: #14263d;--pos: #67d391;--neg: #ff8f86;--env-dev: #9aa7b8;--env-paper: #6ea8ff;--env-live: #ff8f86;--focus: #8ab4ff;--shadow: none;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text)}h1{font-size:1.45rem;margin:0;letter-spacing:-.01em}h2{font-size:1.02rem;margin:0}h3{font-size:.95rem;margin:0 0 .4rem}a{color:var(--accent)}.muted{color:var(--muted)}.small{font-size:.85rem}.num{font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.pos{color:var(--pos)}.neg{color:var(--neg)}.nowrap{white-space:nowrap}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}:focus-visible{outline:3px solid var(--focus);outline-offset:2px;border-radius:4px}code,.mono{font-family:ui-monospace,SF Mono,Menlo,Consolas,monospace;font-size:.88em}.skip{position:absolute;left:-999px;top:0;background:var(--accent);color:var(--accent-contrast);padding:.5rem .8rem;z-index:100}.skip:focus{left:.5rem;top:.5rem}.shell{min-height:100%;display:grid;grid-template-columns:190px 1fr;grid-template-rows:auto auto 1fr;grid-template-areas:"top top" "banners banners" "nav main"}.live-border{border-top:4px solid var(--env-live)}.topbar{grid-area:top;position:sticky;top:0;z-index:20;background:var(--surface);border-bottom:1px solid var(--border);padding:.55rem 1rem;display:flex;flex-wrap:wrap;gap:.5rem 1.1rem;align-items:center}.topbar .group{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap}.brand{font-weight:700;letter-spacing:-.01em}.env-badge{font-weight:700;letter-spacing:.06em;font-size:.8rem;padding:.2rem .55rem;border-radius:6px;color:#fff}.env-dev{background:var(--env-dev)}.env-paper{background:var(--env-paper);color:var(--accent-contrast)}.env-live{background:var(--env-live)}.readonly{font-size:.75rem;font-weight:700;letter-spacing:.08em;padding:.18rem .5rem;border:1px solid var(--border);border-radius:6px;color:var(--muted)}.clock{font-variant-numeric:tabular-nums;font-size:.95rem}.zone-toggle button{border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:.15rem .5rem;cursor:pointer}.zone-toggle button:first-child{border-radius:6px 0 0 6px}.zone-toggle button:last-child{border-radius:0 6px 6px 0;border-left:0}.zone-toggle button[aria-pressed=true]{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.topbar .spacer{flex:1}.statusline{width:100%;font-size:.82rem;color:var(--muted);display:flex;flex-wrap:wrap;gap:.2rem 1rem}.banners{grid-area:banners;display:grid;gap:0}.banner{padding:.5rem 1rem;font-size:.92rem;border-bottom:1px solid var(--border);display:flex;gap:.6rem;align-items:baseline}.banner-bad{background:var(--bad-bg);color:var(--bad);font-weight:600}.banner-warn{background:var(--warn-bg);color:var(--warn)}.banner-info{background:var(--info-bg);color:var(--info)}.nav{grid-area:nav;background:var(--surface);border-right:1px solid var(--border);padding:.6rem .5rem;display:flex;flex-direction:column;gap:2px}.nav a{display:flex;justify-content:space-between;align-items:center;padding:.5rem .7rem;border-radius:8px;color:var(--text);text-decoration:none}.nav a:hover{background:var(--surface-2)}.nav a[aria-current=page]{background:var(--accent);color:var(--accent-contrast);font-weight:600}.nav .count{font-size:.75rem;background:var(--bad);color:#fff;border-radius:999px;padding:0 .45rem}main{grid-area:main;padding:1rem 1.2rem 3rem;min-width:0}.page-head{display:flex;justify-content:space-between;gap:1rem;align-items:flex-end;margin-bottom:.9rem;flex-wrap:wrap}.page-head p{margin:.15rem 0 0}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:.85rem 1rem 1rem;margin-bottom:1rem;min-width:0}.card-head{display:flex;justify-content:space-between;align-items:baseline;gap:.6rem;margin-bottom:.6rem;flex-wrap:wrap}.grid{display:grid;gap:1rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(340px,1fr));align-items:start}.grid-charts{grid-template-columns:repeat(auto-fit,minmax(460px,1fr));align-items:start}.grid-2>.span-all,.grid-charts>.span-all{grid-column:1 / -1}.grid-tiles{display:grid;gap:.7rem;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));margin-bottom:1rem}.tile{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:.65rem .8rem;box-shadow:var(--shadow)}.tile-label{font-size:.78rem;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.tile-value{font-size:1.35rem;font-weight:650;text-align:left;margin-top:.15rem}.tile-sub{font-size:.82rem}.tile-bad{border-color:var(--bad)}.tile-warn{border-color:var(--warn)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:.9rem}th,td{padding:.42rem .6rem;border-bottom:1px solid var(--border);text-align:left;vertical-align:top}th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);background:var(--surface);position:sticky;top:0;font-weight:600;white-space:nowrap}th.num{text-align:right}tbody tr:hover{background:var(--surface-2)}tr.row-bad td{background:var(--bad-bg)}tr.row-warn td{background:var(--warn-bg)}td.wrap{white-space:normal}.chip{display:inline-flex;gap:.25rem;align-items:center;font-size:.78rem;font-weight:600;padding:.1rem .5rem;border-radius:999px;white-space:nowrap}.chip-ok{background:var(--ok-bg);color:var(--ok)}.chip-warn{background:var(--warn-bg);color:var(--warn)}.chip-bad{background:var(--bad-bg);color:var(--bad)}.chip-info{background:var(--info-bg);color:var(--info)}.chip-muted{background:var(--surface-2);color:var(--muted)}.pill{display:inline-block;font-size:.74rem;padding:.05rem .45rem;border-radius:5px;border:1px solid var(--border);color:var(--muted);white-space:nowrap}.pill-warn{border-color:var(--warn);color:var(--warn)}.pill-bad{border-color:var(--bad);color:var(--bad);font-weight:700}.pill-info{border-color:var(--info);color:var(--info)}.state{padding:.9rem;border:1px dashed var(--border);border-radius:8px;display:flex;gap:.6rem;align-items:center;flex-wrap:wrap}.state-bad{border-style:solid;border-color:var(--bad);background:var(--bad-bg);color:var(--bad)}.state-warn{border-style:solid;border-color:var(--warn);background:var(--warn-bg);color:var(--warn);margin-bottom:.7rem}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;display:inline-block;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation:none}}.age{font-size:.78rem;color:var(--muted);font-variant-numeric:tabular-nums}.age-amber{color:var(--warn);font-weight:600}.age-red{color:var(--bad);font-weight:700}.btn{border:1px solid var(--border);background:var(--surface-2);color:var(--text);padding:.35rem .8rem;border-radius:8px;cursor:pointer;font:inherit}.btn:hover{background:var(--border)}.btn-primary{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent)}.btn-primary:hover{filter:brightness(1.08);background:var(--accent)}.btn[disabled]{opacity:.55;cursor:not-allowed}.btn-link{background:none;border:0;color:var(--accent);cursor:pointer;text-decoration:underline;padding:0;font:inherit}label{display:grid;gap:.2rem;font-size:.82rem;color:var(--muted)}input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:.38rem .55rem;min-width:0}.filters{display:flex;flex-wrap:wrap;gap:.7rem;align-items:end;margin-bottom:.8rem}.tabs{display:flex;gap:.3rem;margin-bottom:.8rem;flex-wrap:wrap}.tabs button{border:1px solid var(--border);background:var(--surface);color:var(--text);padding:.35rem .9rem;border-radius:8px;cursor:pointer;font:inherit}.tabs button[aria-selected=true]{background:var(--accent);color:var(--accent-contrast);border-color:var(--accent);font-weight:600}.overlay{position:fixed;inset:0;background:#00000073;z-index:40;display:flex;justify-content:flex-end}.drawer{width:min(720px,100%);background:var(--surface);height:100%;overflow:auto;padding:1rem 1.2rem 3rem;border-left:1px solid var(--border)}.drawer header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.8rem}.modal{align-self:center;margin:auto;width:min(520px,94%);background:var(--surface);border-radius:var(--radius);padding:1.1rem 1.2rem;border:1px solid var(--border)}.chart{margin:0}.chart-svg{width:100%;height:auto;display:block}.chart .grid{stroke:var(--border);stroke-width:1}.chart .axis{fill:var(--muted);font-size:12px}.chart .baseline{stroke:var(--muted);stroke-dasharray:4 3;stroke-width:1}.chart .line{stroke:var(--ok);stroke-width:2}.chart .line-neg{stroke:var(--bad)}.chart .dot{fill:var(--ok)}.chart .dot-neg{fill:var(--bad)}.bar-pos{fill:var(--ok)}.bar-neg{fill:var(--bad)}.limitbar{width:100%;height:12px;display:block}.lb-track{fill:var(--surface-2)}.lb-ok{fill:var(--ok)}.lb-warn{fill:#d19a00}.lb-breach{fill:var(--bad)}.lb-limit{stroke:var(--text);stroke-width:2}.kv{display:grid;grid-template-columns:max-content 1fr;gap:.25rem 1rem;font-size:.9rem}.kv dt{color:var(--muted)}.kv dd{margin:0}.timeline{list-style:none;margin:0;padding:0}.timeline li{display:grid;grid-template-columns:4.2rem 1fr auto;gap:.5rem;padding:.32rem 0;border-bottom:1px solid var(--border);align-items:baseline}.limit-row{display:grid;grid-template-columns:minmax(150px,1.2fr) 2fr minmax(130px,1fr);gap:.8rem;align-items:center;padding:.5rem 0;border-bottom:1px solid var(--border)}.finding{padding:.5rem 0;border-bottom:1px solid var(--border);display:grid;gap:.2rem}.sidebyside{display:grid;grid-template-columns:1fr 1fr;gap:.6rem}.login{max-width:400px;margin:8vh auto}.login form{display:grid;gap:.8rem}.stage{display:inline-block;min-width:4.3rem;text-align:center;font-size:.74rem;border-radius:5px;padding:.05rem .4rem;border:1px solid var(--border);text-transform:uppercase;letter-spacing:.03em}.stage-order,.stage-fill{border-color:var(--info);color:var(--info)}.stage-exit{border-color:var(--ok);color:var(--ok)}.stage-error,.stage-kill_switch{border-color:var(--bad);color:var(--bad);font-weight:700}.stage-size{border-color:var(--warn);color:var(--warn)}.log-row{display:grid;grid-template-columns:4.6rem 5rem 4.5rem 1fr;gap:.5rem;padding:.28rem 0;border-bottom:1px solid var(--border);align-items:baseline;font-size:.88rem}@media(max-width:860px){.shell{grid-template-columns:1fr;grid-template-areas:"top" "banners" "nav" "main"}.nav{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--border);padding:.3rem}.nav a{white-space:nowrap;padding:.4rem .7rem}main{padding:.8rem .7rem 3rem}.limit-row,.sidebyside{grid-template-columns:1fr}.log-row{grid-template-columns:4.4rem 1fr}.log-row>:nth-child(n+3){grid-column:2}}.prov{font-size:.76rem;color:var(--muted);margin-top:.7rem;padding-top:.45rem;border-top:1px dashed var(--border);display:flex;flex-wrap:wrap;gap:.15rem .9rem;align-items:baseline}.prov-label{font-weight:700;text-transform:uppercase;letter-spacing:.04em}.prov-method{flex-basis:100%}.prov-method summary{cursor:pointer;color:var(--accent, inherit)}.prov-method p{margin:.3rem 0 0;max-width:70ch;line-height:1.4}.tile-src{font-size:.72rem;margin-top:.2rem}tr.clickable{cursor:pointer}tr.clickable:hover,tr.clickable:focus{background:var(--hover, rgba(0, 0, 0, .04));outline:none}
