:root{--brand:#1747c9;--brand-ink:#fff;--accent:#ff7a1a;--bg:#f4f6fb;--surface:#fff;--surface-2:#f8f9fc;--text:#111827;--text-2:#4b5563;--muted:#6b7280;--border:#e3e7f0;--grid:#eef1f6;--ok:#12a150;--ok-bg:#e7f7ee;--warn:#b54708;--warn-bg:#fff1e6;--bad:#d92d20;--bad-bg:#fdecea;--idle-bg:#eef0f4;--bar:#1747c9;--pending:#ff9a4d;--shadow:0 1px 2px #1018280f, 0 4px 16px #1018280f;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--brand:#5b7ff0;--accent:#ff8c3a;--bg:#0d1220;--surface:#141a2b;--surface-2:#1a2236;--text:#e8ecf5;--text-2:#b4bccd;--muted:#8b94a8;--border:#273049;--grid:#1f2740;--ok:#3ccf7f;--ok-bg:#12301f;--warn:#ffb27a;--warn-bg:#3a2414;--bad:#ff7b70;--bad-bg:#3a1716;--idle-bg:#232b40;--bar:#5b7ff0;--pending:#c46a28;--shadow:none;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*{box-sizing:border-box}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;margin:0;font:14px/1.45 Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif}button,input,select{font:inherit;color:inherit}h1,h2,h3{letter-spacing:-.01em;margin:0}.layout{grid-template-columns:232px 1fr;min-height:100vh;display:grid}.sidebar{background:var(--surface);border-right:1px solid var(--border);flex-direction:column;gap:4px;height:100vh;padding:20px 14px;display:flex;position:sticky;top:0}.logo{letter-spacing:-.03em;padding:0 10px 16px;font-size:20px;font-weight:800}.logo span{color:var(--accent)}.nav-item{text-align:left;cursor:pointer;color:var(--text-2);background:0 0;border:0;border-radius:10px;align-items:center;gap:10px;padding:9px 10px;font-weight:500;display:flex}.nav-item:hover{background:var(--surface-2)}.nav-item.active{background:var(--brand);color:var(--brand-ink)}.sidebar-foot{color:var(--muted);margin-top:auto;padding:0 10px;font-size:13px}.main{min-width:0;padding:24px 28px 48px}.topbar{flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:20px;display:flex}.topbar h1{margin-right:auto;font-size:22px}@media (width<=820px){.layout{grid-template-columns:1fr}.sidebar{flex-flow:wrap;height:auto;padding:12px 16px;position:static}.logo{width:100%;padding-bottom:8px}.sidebar-foot{display:none}.main{padding:16px}}.card{background:var(--surface);border:1px solid var(--border);box-shadow:var(--shadow);border-radius:14px;padding:18px}.card+.card{margin-top:16px}.card h2{margin-bottom:12px;font-size:16px}.btn{border:1px solid var(--border);background:var(--surface);cursor:pointer;white-space:nowrap;border-radius:10px;height:36px;padding:0 14px;font-weight:600}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}.btn.accent{background:var(--accent);border-color:var(--accent);color:#fff}.btn.danger{color:var(--bad)}.btn.sm{height:30px;padding:0 10px;font-size:13px}.input,.select{border:1px solid var(--border);background:var(--surface);border-radius:10px;min-width:0;height:36px;padding:0 10px}.input:focus,.select:focus,.btn:focus-visible,.nav-item:focus-visible{outline:2px solid var(--brand);outline-offset:1px}.badge{white-space:nowrap;border-radius:999px;align-items:center;gap:5px;padding:2px 9px;font-size:12px;font-weight:600;display:inline-flex}.badge.ok{background:var(--ok-bg);color:var(--ok)}.badge.warn{background:var(--warn-bg);color:var(--warn)}.badge.bad{background:var(--bad-bg);color:var(--bad)}.badge.idle{background:var(--idle-bg);color:var(--muted)}.muted{color:var(--muted)}.error{color:var(--bad);margin:8px 0}.row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.split{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:16px;display:grid}@media (width<=1100px){.split{grid-template-columns:1fr}}.grid-2{grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:16px;display:grid}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%}th{text-align:left;color:var(--muted);text-transform:uppercase;letter-spacing:.03em;border-bottom:1px solid var(--border);white-space:nowrap;padding:8px 10px;font-size:12px;font-weight:600}td{white-space:nowrap;border-bottom:1px solid var(--grid);vertical-align:middle;padding:10px}tr:last-child td{border-bottom:0}td.num,th.num{text-align:right;font-variant-numeric:tabular-nums}.login{place-items:center;min-height:100vh;padding:16px;display:grid}.login .card{width:100%;max-width:380px}.login .logo{padding:0 0 4px;font-size:28px}.login form{flex-direction:column;gap:10px;margin-top:18px;display:flex}.login .input,.login .btn{height:44px}.timeline{border:1px solid var(--border);background:var(--surface);border-radius:12px;overflow-x:auto}.tl-inner{min-width:1100px;position:relative}.tl-head,.tl-row{grid-template-columns:110px 1fr;display:grid}.tl-head{border-bottom:1px solid var(--border);color:var(--muted);font-size:12px}.tl-row+.tl-row{border-top:1px solid var(--grid)}.tl-label{border-right:1px solid var(--border);background:var(--surface);z-index:2;padding:12px;font-weight:600;position:sticky;left:0}.tl-track{height:56px;position:relative}.tl-hours{height:32px;position:relative}.tl-hour{font-variant-numeric:tabular-nums;position:absolute;top:8px;transform:translate(-50%)}.tl-hour.first{margin-left:4px;transform:none}.tl-hour.last{margin-left:-4px;transform:translate(-100%)}.tl-gridline{background:var(--grid);width:1px;position:absolute;top:0;bottom:0}.tl-block{cursor:pointer;border:2px solid var(--surface);color:#fff;background:var(--brand);text-align:left;border-radius:8px;padding:4px 8px;font-size:12px;line-height:1.25;position:absolute;top:8px;bottom:8px;overflow:hidden}.tl-block.pending{background:var(--pending)}.tl-block.cancelled{background:var(--idle-bg);color:var(--muted);text-decoration:line-through}.tl-block.selected{outline:2px solid var(--accent)}.tl-now{background:var(--accent);z-index:1;pointer-events:none;width:2px;position:absolute;top:0;bottom:0}.legend{color:var(--text-2);gap:16px;margin:10px 0 0;font-size:13px;display:flex}.legend i{vertical-align:-2px;border-radius:4px;width:12px;height:12px;margin-right:6px;display:inline-block}.kpis{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px;display:grid}.kpi .label{color:var(--muted);font-size:13px}.kpi .value{letter-spacing:-.02em;font-variant-numeric:tabular-nums;margin-top:4px;font-size:28px;font-weight:800}.chart{position:relative}.chart svg{width:100%;height:240px;display:block;overflow:visible}.chart .axis{fill:var(--muted);font-size:11px}.chart .gridline{stroke:var(--grid)}.chart .bar{fill:var(--bar)}.chart .bar.dim{opacity:.45}.tooltip{pointer-events:none;background:var(--text);color:var(--surface);white-space:nowrap;z-index:3;border-radius:8px;padding:6px 10px;font-size:12px;position:absolute;transform:translate(-50%,calc(-100% - 8px))}.form{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px;display:grid}.field label{color:var(--text-2);margin-bottom:5px;font-size:13px;font-weight:500;display:block}.field .input,.field .select{width:100%}.field .hint{color:var(--muted);margin-top:4px;font-size:12px}.token-box{background:var(--surface-2);border:1px dashed var(--accent);word-break:break-all;border-radius:10px;margin-top:10px;padding:12px;font-family:ui-monospace,Consolas,monospace}.devices{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;display:grid}.device{flex-direction:column;gap:8px;display:flex}.device .kind{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:12px}.device .name{font-weight:700}.score{font-variant-numeric:tabular-nums;font-size:30px;font-weight:800}.side-panel{position:sticky;top:16px}.kv{grid-template-columns:110px 1fr;gap:6px 10px;margin:10px 0 16px;display:grid}.kv dt{color:var(--muted)}.kv dd{margin:0}
