:root{--bg:#f3f5f7;--surface:#ffffff;--surface-2:#f6f8fa;--line:#dde3e9;--fg:#1e293b;--muted:#4f5d6f;--faint:#8592a3;--brand:#0093a8;--accent:#0e7490;--accent-fg:#ffffff;--accent-soft:#e1f1f4;--navy:#101e33;--s1:#2a78d6;--s2:#eb6834;--s3:#1baf7a;--dwell:#9aa6b4;--good:#0ca30c;--warn:#fab219;--serious:#ec835a;--crit:#d03b3b;--good-ink:#0a7a0a;--warn-ink:#8a5a00;--crit-ink:#b22f2f;--good-bg:#e5f4e5;--warn-bg:#fdf1d6;--crit-bg:#f9e3e3;--h1:#cde2fb;--h2:#9ec5f4;--h3:#6da7ec;--h4:#3987e5;--h5:#256abf;--h6:#184f95;--h7:#0d366b;--shadow:0 2px 12px rgba(16,30,51,.12);--r:6px;--font-body:Arial,Helvetica,system-ui,-apple-system,sans-serif;--font-mono:ui-monospace,Menlo,Consolas,"Liberation Mono",monospace}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0b1526;--surface:#101e33;--surface-2:#15263f;--line:#26395a;--fg:#e6edf5;--muted:#a3b2c5;--faint:#6f819a;--brand:#19a9bd;--accent:#3cc3d6;--accent-fg:#06121f;--accent-soft:#123049;--navy:#07101d;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--dwell:#5f6b78;--good-ink:#5fd35f;--warn-ink:#fab219;--crit-ink:#f08585;--good-bg:#16301a;--warn-bg:#33290f;--crit-bg:#3a1c1c;--shadow:0 2px 12px rgba(0,0,0,.4);color-scheme:dark}}:root[data-theme=dark]{--bg:#0b1526;--surface:#101e33;--surface-2:#15263f;--line:#26395a;--fg:#e6edf5;--muted:#a3b2c5;--faint:#6f819a;--brand:#19a9bd;--accent:#3cc3d6;--accent-fg:#06121f;--accent-soft:#123049;--navy:#07101d;--s1:#3987e5;--s2:#d95926;--s3:#199e70;--dwell:#5f6b78;--good-ink:#5fd35f;--warn-ink:#fab219;--crit-ink:#f08585;--good-bg:#16301a;--warn-bg:#33290f;--crit-bg:#3a1c1c;--shadow:0 2px 12px rgba(0,0,0,.4);color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:14px;line-height:1.45}button,select,input,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}a{color:var(--accent)}.num,td.n,th.n{font-variant-numeric:tabular-nums}.mono{font-family:var(--font-mono);font-size:12.5px}.muted{color:var(--muted)}.faint{color:var(--faint)}h1,h2,h3{margin:0;text-wrap:balance}.logo{display:inline-flex;align-items:center;gap:10px;color:var(--fg)}.bars-mark{height:26px;width:auto;fill:var(--brand);flex:none}.logo .wm{display:flex;flex-direction:column;line-height:1}.logo .wm b{font-size:21px;font-weight:900;letter-spacing:-.045em}.logo .wm small{font-size:10px;margin-top:3px;color:var(--muted);letter-spacing:.01em}.brandline{display:flex;align-items:center;gap:14px}.product{font-size:13px;font-weight:700;color:var(--brand);padding-left:14px;border-left:1px solid var(--line);line-height:28px;white-space:nowrap}.appbar{background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:30}.appbar-in,.appbar .menu{max-width:1440px;margin:0 auto;padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}.appbar-in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px 20px;padding-top:max(10px,env(safe-area-inset-top,0px));padding-bottom:8px}.controls{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;font-size:13px}.controls .today,.controls .who{color:var(--muted);white-space:nowrap}.controls b{color:var(--fg);font-weight:700}nav.menu{display:flex;gap:2px;overflow-x:auto;scrollbar-width:none}nav.menu a{display:flex;align-items:center;gap:6px;text-decoration:none;padding:10px 12px 9px;color:var(--muted);font-weight:700;font-size:13.5px;white-space:nowrap;border-bottom:3px solid transparent}nav.menu a:hover{color:var(--fg)}nav.menu a[aria-current=page]{color:var(--fg);border-bottom-color:var(--brand)}nav.menu .cnt{font-size:11px;min-width:18px;text-align:center;padding:0 5px;border-radius:9px;background:var(--crit);color:#fff;font-variant-numeric:tabular-nums;line-height:17px}.page{min-width:0;max-width:1440px;margin:0 auto;padding:20px max(16px,env(safe-area-inset-right,0px)) max(20px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}.top{margin-bottom:18px;border-left:4px solid var(--brand);padding:2px 0 2px 12px}.top h1{font-size:24px;font-weight:700;letter-spacing:-.01em;color:var(--fg)}.top .sub{color:var(--muted);font-size:13px;margin-top:2px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:var(--r);background:var(--surface);border:1px solid var(--line);font-size:13px;color:var(--muted);white-space:nowrap}.chip b{color:var(--fg);font-weight:700}.seg{display:inline-flex;border:1px solid var(--line);border-radius:999px;background:var(--surface);padding:2px}.seg button{border:0;background:none;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;cursor:pointer;color:var(--muted)}.seg button[aria-pressed=true]{background:var(--accent);color:var(--accent-fg)}select,textarea,input[type=text],input[type=number],input[type=search],input[type=password],input[type=date],input[type=month]{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:7px 10px;min-width:0}select:hover,input:hover,textarea:hover{border-color:var(--faint)}label.f{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted);font-weight:700}label.f input,label.f select,label.f textarea{font-weight:400;color:var(--fg)}.btn{border:1px solid var(--line);background:var(--surface);border-radius:var(--r);padding:7px 12px;cursor:pointer;white-space:nowrap;color:var(--fg);text-decoration:none;display:inline-block}.btn:hover{border-color:var(--accent);color:var(--accent)}.btn.pri{background:var(--accent);color:var(--accent-fg);border-color:var(--accent);border-radius:999px;padding:7px 18px;font-weight:700}.btn.pri:hover{filter:brightness(1.1);color:var(--accent-fg)}.btn.sm{padding:4px 10px;font-size:12.5px}.btn.ghost{background:none;border-color:transparent;color:var(--muted)}.btn:disabled{opacity:.45;cursor:not-allowed}.grid{display:grid;gap:16px}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g-wide{grid-template-columns:minmax(0,1.6fr) minmax(0,1fr)}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r);padding:16px 18px;min-width:0;display:flex;flex-direction:column;gap:12px}.card h2{font-size:15px;font-weight:700;border-left:3px solid var(--brand);padding-left:9px;line-height:1.25}.card .hd{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap}.card .hd small{color:var(--muted);font-size:12px}.stack{display:flex;flex-direction:column;gap:16px}.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:1px;margin-bottom:16px;background:var(--line);border:1px solid var(--line);border-radius:var(--r);overflow:hidden}.kpi{background:var(--surface);padding:14px 16px;display:flex;flex-direction:column;gap:4px;min-width:0}.kpi .l{font-size:12.5px;font-weight:700;color:var(--muted)}.kpi .v{font-size:28px;font-weight:700;font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1.15;color:var(--brand)}.kpi .v small{font-size:14px;font-weight:500;color:var(--muted)}.kpi .d{font-size:12px;color:var(--muted)}.kpi .d b{font-weight:700}.up{color:var(--good-ink)}.down{color:var(--crit-ink)}.pill{display:inline-flex;align-items:center;gap:5px;padding:1px 7px;border-radius:3px;font-size:12px;white-space:nowrap;background:var(--surface-2);border:1px solid var(--line)}.pill.good{background:var(--good-bg);color:var(--good-ink);border-color:transparent}.pill.warn{background:var(--warn-bg);color:var(--warn-ink);border-color:transparent}.pill.crit{background:var(--crit-bg);color:var(--crit-ink);border-color:transparent}.pill.info{background:var(--accent-soft);color:var(--fg);border-color:transparent}.dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:none}.tbl-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:var(--r)}table{border-collapse:collapse;width:100%;font-size:13px}th{font-size:12px;color:var(--muted);font-weight:700;text-align:left;background:var(--surface-2);position:sticky;top:0}th,td{padding:8px 10px;border-bottom:1px solid var(--line);white-space:nowrap;vertical-align:middle}td.wrap{white-space:normal;min-width:220px}tr:last-child td{border-bottom:0}td.n,th.n{text-align:right}tbody tr.click{cursor:pointer}tbody tr.click:hover td{background:var(--surface-2)}tr.tot td{font-weight:700;background:var(--surface-2)}.scroll-y{max-height:560px;overflow:auto}.bars{display:flex;flex-direction:column;gap:8px}.bar-row{display:grid;grid-template-columns:minmax(0,190px) minmax(0,1fr) 44px;gap:10px;align-items:center;cursor:pointer}.bar-row .lb{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bar-row .tr{height:14px;background:var(--surface-2);border-radius:0 4px 4px 0;position:relative}.bar-row .fl{height:100%;border-radius:0 4px 4px 0}.bar-row .ct{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.legend{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:12px;color:var(--muted)}.legend span{display:inline-flex;align-items:center;gap:6px}.legend i{width:12px;height:12px;border-radius:2px;display:inline-block}.alerts{display:flex;flex-direction:column;gap:2px}.alert{display:grid;grid-template-columns:22px minmax(0,1fr) auto;gap:10px;align-items:center;padding:9px 8px;border-radius:0;border-bottom:1px solid var(--line)!important;cursor:pointer;border:0;background:none;text-align:left;width:100%}.alert:hover{background:var(--surface-2)}.alerts .alert:last-child{border-bottom:0!important}.alert .ic{width:20px;height:20px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:11px;background:none!important;border:1.5px solid currentColor}.alert .ic.crit{background:var(--crit-bg);color:var(--crit-ink)}.alert .ic.warn{background:var(--warn-bg);color:var(--warn-ink)}.alert .ic.info{background:var(--accent-soft);color:var(--accent)}.alert .ic.good{background:var(--good-bg);color:var(--good-ink)}.alert .t{font-size:13px}.alert .t small{display:block;color:var(--muted);font-size:12px}.alert .c{font-weight:700;font-variant-numeric:tabular-nums}.loop-econ{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 12px;font-size:13px}.loop-econ .v{text-align:right;font-variant-numeric:tabular-nums;font-weight:700}.loop-econ .tot{border-top:1px solid var(--line);padding-top:6px;font-weight:700}.note{font-size:12px;color:var(--muted);background:var(--surface-2);border-left:3px solid var(--line);padding:10px 12px}.note b{color:var(--fg)}svg text{fill:var(--muted);font-family:var(--font-body)}svg .lbl-strong{fill:var(--fg);font-weight:700}.map-wrap{overflow-x:auto}.map-wrap svg{width:100%;min-width:640px;height:auto;display:block}.scrim{position:fixed;top:0;right:0;bottom:0;left:0;background:#101e3373;z-index:40}.drawer{white-space:normal;position:fixed;top:0;right:0;bottom:0;width:min(560px,100%);background:var(--bg);border-left:1px solid var(--line);z-index:41;overflow:auto;padding:max(16px,env(safe-area-inset-top,0px)) max(18px,env(safe-area-inset-right,0px)) max(18px,env(safe-area-inset-bottom,0px)) 18px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow);border-top:4px solid var(--brand)}.drawer .dh{display:flex;justify-content:space-between;gap:10px;align-items:flex-start}.drawer .dh h2{font-family:var(--font-mono);font-size:20px;font-weight:700}.kv{display:grid;grid-template-columns:minmax(0,150px) minmax(0,1fr);gap:6px 12px;font-size:13px}.kv dt{color:var(--muted)}.kv dd{margin:0}.events{display:flex;flex-direction:column;gap:0;font-size:13px}.events div{display:grid;grid-template-columns:86px minmax(0,1fr);gap:10px;padding:6px 0;border-bottom:1px dashed var(--line)}.events div:last-child{border-bottom:0}.modal{white-space:normal;position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(520px,calc(100% - 32px));max-height:calc(100% - 32px);overflow:auto;background:var(--surface);border:1px solid var(--line);border-top:4px solid var(--brand);border-radius:var(--r);z-index:51;padding:20px;display:flex;flex-direction:column;gap:14px;box-shadow:var(--shadow)}.modal-scrim{z-index:50}.q-row{display:grid;grid-template-columns:minmax(0,1fr) 120px;gap:8px}.err{color:var(--crit-ink);font-size:12px}.progress{height:8px;background:var(--surface-2);border-radius:2px;overflow:hidden;border:1px solid var(--line)}.progress i{display:block;height:100%}#tip{position:fixed;z-index:70;pointer-events:none;background:var(--navy);color:#fff;font-size:12px;padding:6px 9px;border-radius:4px;max-width:280px;line-height:1.4;white-space:pre-line}#toast{position:fixed;left:50%;bottom:max(20px,env(safe-area-inset-bottom,0px));transform:translate(-50%);z-index:80;background:var(--navy);color:#fff;padding:10px 16px;border-radius:var(--r);border-left:4px solid var(--brand);font-size:13px;max-width:calc(100% - 32px)}.heat td{text-align:center;font-variant-numeric:tabular-nums;font-size:12.5px;border:2px solid var(--surface)}.inputs{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px}.inputs input{width:100%}.inputs fieldset{grid-column:1/-1;border:0;padding:0;margin:4px 0 0;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}@media(max-width:1100px){.g3{grid-template-columns:repeat(2,minmax(0,1fr))}.g-wide{grid-template-columns:minmax(0,1fr)}}@media(max-width:860px){.appbar{position:static}.product,.controls .who,.controls .today{display:none}.g2,.g3{grid-template-columns:minmax(0,1fr)}.bar-row{grid-template-columns:minmax(0,120px) minmax(0,1fr) 36px}}@media(prefers-reduced-motion:no-preference){.drawer{animation:slide .18s ease-out}@keyframes slide{0%{transform:translate(24px);opacity:.6}}}.login{max-width:400px;margin:0 auto;padding:14vh 16px 0;display:flex;flex-direction:column;gap:16px;position:relative;z-index:1}.login h1{font-size:22px;font-weight:700;border-left:4px solid var(--brand);padding-left:10px}.login .card{padding:22px;box-shadow:var(--shadow);border:0}.login .card input{width:100%}.login .btn.pri{padding:9px 18px}.strip{position:fixed;left:0;bottom:0;height:56px;width:auto;fill:var(--brand);z-index:0}#toast.err{background:var(--crit);color:#fff;border-left-color:var(--crit-ink)}.foot{margin-top:28px;padding-top:12px;border-top:1px solid var(--line);font-size:12px;color:var(--faint)}.empty{padding:16px;color:var(--muted)}.loading{padding:24px;color:var(--muted)}.tabs{display:flex;gap:6px;flex-wrap:wrap}
