:root{--r-sm:6px;--r-md:8px;--r-lg:12px;--r-pill:999px;--sp-2:2px;--sp-4:4px;--sp-8:8px;--sp-12:12px;--sp-16:16px;--sp-20:20px;--sp-24:24px;--sp-32:32px;--sp-40:40px;--sp-48:48px;--sp-64:64px}[data-theme=light]{--bg:#f6f7f9;--surface:#ffffff;--surface-sunken:#f1f3f5;--surface-raised:#ffffff;--ink:#14171c;--ink-muted:#5b6472;--ink-subtle:#98a1ae;--border:#e6e9ed;--border-strong:#d3d8de;--accent:#4f46e5;--accent-hover:#4338ca;--accent-ink:#ffffff;--accent-wash:#eef0fe;--focus:rgba(79,70,229,0.35);--success:#158a54;--success-wash:#e5f4ec;--warning:#b26a00;--warning-wash:#fbefd8;--danger:#c4362f;--danger-wash:#fbe9e7;--info:#2563eb;--info-wash:#e4ecfd;--pos:#158a54;--neg:#c4362f;--shadow-sm:0 1px 2px rgba(16,24,40,0.06);--shadow-soft:0 1px 3px rgba(16,24,40,0.08),0 1px 2px rgba(16,24,40,0.04);--shadow-md:0 6px 16px rgba(16,24,40,0.12)}[data-theme=dark]{--bg:#0d1015;--surface:#161a21;--surface-sunken:#0f1318;--surface-raised:#1c212b;--ink:#e7eaee;--ink-muted:#98a2b2;--ink-subtle:#646e7d;--border:#242a33;--border-strong:#333b46;--accent:#6366f1;--accent-hover:#7c7df3;--accent-ink:#ffffff;--accent-wash:#1e2140;--focus:rgba(99,102,241,0.45);--success:#35b37e;--success-wash:#12241c;--warning:#d99524;--warning-wash:#2a2114;--danger:#e5645c;--danger-wash:#2a1614;--info:#5b8def;--info-wash:#14203a;--pos:#35b37e;--neg:#e5645c;--shadow-sm:none;--shadow-soft:none;--shadow-md:0 8px 24px rgba(0,0,0,0.5)}*{box-sizing:border-box}body,html{margin:0}body{background:var(--bg);color:var(--ink);font-family:var(--font-inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;font-size:14px;line-height:20px;-webkit-font-smoothing:antialiased;transition:background .2s,color .2s}@media (prefers-reduced-motion:reduce){*,:after,:before{animation:none!important;transition:none!important}}a{color:inherit;text-decoration:none}.num{font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.eyebrow{font-size:12px;line-height:16px;font-weight:500;letter-spacing:.04em;text-transform:uppercase}.eyebrow,.muted{color:var(--ink-muted)}.subtle{color:var(--ink-subtle)}.pos{color:var(--pos)}.neg{color:var(--neg)}.shell{display:flex;min-height:100vh}.sidebar{flex:0 0 216px;display:flex;flex-direction:column;gap:var(--sp-24);padding:var(--sp-16) var(--sp-12);background:var(--surface);border-right:1px solid var(--border);position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:var(--sp-12);font-weight:600;padding:var(--sp-8) var(--sp-12)}.brand .dot{width:22px;height:22px;border-radius:var(--r-sm);background:var(--accent);display:inline-block;flex:0 0 22px}.nav{flex-direction:column;gap:var(--sp-2)}.nav,.nav a{display:flex}.nav a{align-items:center;min-height:32px;padding:6px var(--sp-12);border-radius:var(--r-md);color:var(--ink-muted);font-weight:500}.nav a:hover{background:var(--surface-sunken);color:var(--ink)}.nav a:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}.nav a[aria-current=page]{background:var(--accent-wash);color:var(--accent)}.sidebar .foot{margin-top:auto;padding:0 var(--sp-12)}.user-chip{display:flex;flex-direction:column;line-height:1.2;margin-bottom:var(--sp-8)}.user-chip .user-name{font-weight:600;font-size:13px}.user-chip .user-role{font-size:11px;color:var(--muted,#888)}.main{flex:1 1;min-width:0;padding:var(--sp-32)}@media (max-width:720px){.shell{flex-direction:column}.sidebar{position:static;height:auto;align-items:center;border-right:0;border-bottom:1px solid var(--border)}.nav,.sidebar{flex-direction:row;flex-wrap:wrap}.sidebar .foot{margin-top:0;margin-left:auto}.main{padding:var(--sp-16)}}.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-16);margin-bottom:var(--sp-24);flex-wrap:wrap}h1{font-size:24px;line-height:30px;font-weight:600;margin:0 0 var(--sp-4)}h2{font-size:20px;line-height:26px}.subhead,h2{font-weight:600;margin:0 0 var(--sp-16)}.subhead{font-size:16px;line-height:22px}.lead{color:var(--ink-muted);margin:0;max-width:64ch}.stack-24>*+*{margin-top:var(--sp-24)}.toggle{display:inline-flex;background:var(--surface-sunken);border:1px solid var(--border);border-radius:var(--r-pill);padding:3px;gap:2px}.toggle button{border:0;background:transparent;color:var(--ink-muted);font:inherit;font-size:13px;font-weight:500;padding:5px 14px;border-radius:var(--r-pill);cursor:pointer;min-height:26px}.toggle button:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}.toggle button[aria-pressed=true]{background:var(--surface);color:var(--ink);box-shadow:var(--shadow-sm)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--r-md);box-shadow:var(--shadow-soft)}.card.pad{padding:var(--sp-20)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 16px;border-radius:var(--r-md);font:inherit;font-size:14px;font-weight:500;cursor:pointer;border:1px solid transparent;transition:background .12s,border-color .12s,box-shadow .12s;white-space:nowrap}.btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}.btn-primary{background:var(--accent);color:var(--accent-ink)}.btn-primary:hover{background:var(--accent-hover)}.btn-secondary{background:var(--surface);color:var(--ink);border-color:var(--border-strong)}.btn-secondary:hover{background:var(--surface-sunken)}.btn-ghost{background:transparent;color:var(--ink-muted)}.btn-ghost:hover{background:var(--surface-sunken);color:var(--ink)}.btn-danger{background:var(--danger);color:var(--accent-ink)}.btn-danger:hover{filter:brightness(.94)}.btn[aria-disabled=true],.btn[disabled]{opacity:.5;cursor:not-allowed;pointer-events:none}.btn.sm{height:32px;padding:0 12px;font-size:13px}.spinner{width:14px;height:14px;border:2px solid;border-right:2px solid transparent;border-radius:50%;animation:spin .6s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.form{flex-direction:column;max-width:480px}.form,.form-row{display:flex;gap:var(--sp-16)}.form-row{flex-wrap:wrap}.form-row>.field{flex:1 1;min-width:160px}.field label{display:block;font-size:13px;line-height:18px;color:var(--ink-muted);margin-bottom:var(--sp-8)}.input,.select{width:100%;height:36px;padding:0 12px;border-radius:var(--r-md);background:var(--surface-sunken);border:1px solid var(--border-strong);color:var(--ink);font:inherit;font-size:14px;transition:border-color .12s,box-shadow .12s}.select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--ink-muted) 50%),linear-gradient(135deg,var(--ink-muted) 50%,transparent 50%);background-position:calc(100% - 18px) 50%,calc(100% - 13px) 50%;background-size:5px 5px;background-repeat:no-repeat;padding-right:32px}.input::placeholder{color:var(--ink-subtle)}.input:focus,.select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--focus);background:var(--surface)}.input[disabled],.select[disabled]{opacity:.5;cursor:not-allowed}.input[readonly]{background:var(--surface-sunken);color:var(--ink-muted)}.input[aria-invalid=true],.select[aria-invalid=true]{border-color:var(--danger)}.errmsg{color:var(--danger);font-size:12px;line-height:16px;margin-top:6px}.form-error{background:var(--danger-wash);color:var(--danger);border-radius:var(--r-md);padding:var(--sp-12) var(--sp-16);font-size:13px;line-height:18px}.checkbox{display:flex;align-items:center;gap:var(--sp-8);font-size:13px;color:var(--ink-muted);cursor:pointer}.checkbox input{width:16px;height:16px;accent-color:var(--accent)}.checkbox input:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus);border-radius:3px}.form-actions{display:flex;gap:var(--sp-8);align-items:center}.hint{font-size:13px;color:var(--ink-muted)}.tablewrap{overflow:auto;border:1px solid var(--border);border-radius:var(--r-md);background:var(--surface);box-shadow:var(--shadow-soft)}table{width:100%;border-collapse:collapse;font-size:13px}thead th{position:-webkit-sticky;position:sticky;top:0;z-index:1;background:var(--surface-sunken);color:var(--ink-muted);font-size:12px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;text-align:left;padding:10px 16px;border-bottom:1px solid var(--border);white-space:nowrap}tbody td.r,thead th.r{text-align:right}tbody td{padding:12px 16px;border-bottom:1px solid var(--border);color:var(--ink)}tbody tr:last-child td{border-bottom:0}tbody tr:hover td{background:var(--surface-sunken)}tbody tr.sel td{background:var(--accent-wash)}.rowlink{font-weight:500}.rowlink:hover{color:var(--accent)}.rowlink:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus);border-radius:4px}.badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:16px;font-weight:500;padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill);white-space:nowrap}.badge:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.badge.ok{color:var(--success);background:var(--success-wash)}.badge.warn{color:var(--warning);background:var(--warning-wash)}.badge.err{color:var(--danger);background:var(--danger-wash)}.badge.info{color:var(--info);background:var(--info-wash)}.badge.mut{color:var(--ink-muted);background:var(--surface-sunken)}.badge.mut:before{background:var(--ink-subtle)}.chip{display:inline-flex;align-items:center;gap:6px;font-size:12px;line-height:16px;font-weight:500;padding:var(--sp-2) var(--sp-8);border-radius:var(--r-pill);background:var(--surface-sunken);border:1px solid var(--border);color:var(--ink);white-space:nowrap}.chip .sep{color:var(--ink-subtle)}.chip .from,.platform{color:var(--ink-muted)}.platform{display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.platform svg{width:14px;height:14px;flex:0 0 14px}.kpis{display:grid;grid-gap:var(--sp-16);gap:var(--sp-16);grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}.kpi{padding:var(--sp-20)}.kpi .label{font-size:12px;line-height:16px;font-weight:500;letter-spacing:.02em;color:var(--ink-muted);margin-bottom:var(--sp-12)}.kpi .val{font-size:32px;line-height:36px;font-weight:600;letter-spacing:-.02em}.kpi .unit{font-size:16px;color:var(--ink-muted);font-weight:500;margin-left:4px}.kpi .delta{margin-top:var(--sp-8);font-size:13px;display:flex;align-items:center;gap:6px}.empty{text-align:center;padding:var(--sp-48) var(--sp-24)}.empty .ic{width:40px;height:40px;border-radius:var(--r-md);background:var(--surface-sunken);margin:0 auto var(--sp-16);display:flex;align-items:center;justify-content:center;color:var(--ink-subtle);font-size:20px}.empty h4{margin:0 0 var(--sp-4);font-size:16px;line-height:22px;font-weight:600}.empty p{margin:0 0 var(--sp-16);color:var(--ink-muted)}.tabs{display:flex;gap:var(--sp-4);border-bottom:1px solid var(--border);margin-bottom:var(--sp-24)}.tabs a{padding:var(--sp-8) var(--sp-12);margin-bottom:-1px;color:var(--ink-muted);font-weight:500;border-bottom:2px solid transparent;min-height:32px;display:inline-flex;align-items:center}.tabs a:hover{color:var(--ink)}.tabs a:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus);border-radius:var(--r-sm)}.tabs a[aria-current=page]{color:var(--accent);border-bottom-color:var(--accent)}.skeleton{background:var(--surface-sunken);border-radius:var(--r-sm);animation:pulse 1.2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.55}}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:var(--sp-24);background:var(--surface-sunken)}.login-card{width:100%;max-width:360px}.login-card .form{margin-top:0}.login-card .btn-primary{width:100%;margin-top:var(--sp-8)}.healthbanner{display:flex;align-items:center;gap:var(--sp-8);padding:10px var(--sp-16);margin-bottom:var(--sp-16);border-radius:var(--r-sm);font-size:13px;text-decoration:none;border:1px solid transparent}.banner-danger{background:var(--danger-wash);color:var(--danger);border-color:var(--danger)}.banner-warning{background:var(--warning-wash);color:var(--warning);border-color:var(--warning)}.hb-dot{width:8px;height:8px;border-radius:50%;background:currentColor;flex:none}.hb-cta{margin-left:auto;white-space:nowrap;font-weight:500;text-decoration:underline}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/ba9851c3c22cd980-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/21350d82a1f187e9-s.p.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/c5fe6dc8356a8c31-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/19cfc7226ec3afaa-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/8e9860b6e62d6359-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/_next/static/media/e4af272ccee01ff0-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_fcbcbf{font-family:Inter,Inter Fallback;font-style:normal}.__variable_fcbcbf{--font-inter:"Inter","Inter Fallback"}