:root{--bg: #0f1419;--panel: #171d25;--panel-2: #1e2630;--border: #2a3441;--text: #e6edf3;--muted: #8b98a8;--accent: #3b82f6;--danger: #ef4444;--danger-bg: #3b1417;--warn: #f59e0b;--warn-bg: #3a2a0d;--ok: #22c55e;--ok-bg: #0f2c1a;--info: #38bdf8;--info-bg: #0d2a3a;--radius: 10px;--code-bg: #0b0f14;--row-hover: rgba(255,255,255,.02);--backdrop: rgba(0,0,0,.6);--danger-fg: #fca5a5;--danger-border: #7f1d1d;--warn-fg: #fcd34d;--warn-border: #78350f;--ok-fg: #86efac;--ok-border: #14532d;--info-fg: #7dd3fc;--info-border: #0c4a6e;--lane-action: #4c1d1d;--lane-attention: #4a3208;--lane-monitor: #0d2f45;--lane-device: #2c2c3a;--card-action-border: #b91c1c;--bubble-po-bg: #1e3a5f;--bubble-po-border: #1d4ed8;--on-accent: #fff;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color-scheme:dark}:root[data-theme=light]{--bg: #f3f5f8;--panel: #ffffff;--panel-2: #f6f8fb;--border: #d9dfe7;--text: #16202b;--muted: #5b6b7c;--accent: #2563eb;--danger: #dc2626;--danger-bg: #fee2e2;--warn: #d97706;--warn-bg: #fef3c7;--ok: #16a34a;--ok-bg: #dcfce7;--info: #0284c7;--info-bg: #e0f2fe;--code-bg: #eef2f7;--row-hover: rgba(0,0,0,.03);--backdrop: rgba(15,20,25,.45);--danger-fg: #991b1b;--danger-border: #fca5a5;--warn-fg: #92400e;--warn-border: #fcd34d;--ok-fg: #166534;--ok-border: #86efac;--info-fg: #075985;--info-border: #7dd3fc;--lane-action: #fecaca;--lane-attention: #fde68a;--lane-monitor: #bae6fd;--lane-device: #e2e8f0;--card-action-border: #ef4444;--bubble-po-bg: #dbeafe;--bubble-po-border: #93c5fd;--on-accent: #fff;color-scheme:light}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);font-size:14px;line-height:1.45}a{color:var(--info);text-decoration:none}a:hover{text-decoration:underline}button{font:inherit}input,select,textarea{font:inherit;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:6px;padding:8px 10px}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}code,pre{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}pre{background:var(--code-bg);border:1px solid var(--border);border-radius:6px;padding:10px;overflow:auto;max-height:420px}h1,h2,h3,h4{margin:0 0 8px;font-weight:600}h1{font-size:20px}h2{font-size:16px}h3{font-size:14px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.app{display:grid;grid-template-rows:56px 1fr;height:100%}.topbar{display:flex;align-items:center;gap:18px;padding:0 18px;background:var(--panel);border-bottom:1px solid var(--border)}.topbar .brand{font-weight:700;letter-spacing:.02em}.topbar nav{display:flex;gap:4px}.topbar nav a{padding:8px 12px;border-radius:6px;color:var(--muted)}.topbar nav a.active,.topbar nav a:hover{background:var(--panel-2);color:var(--text);text-decoration:none}.topbar .spacer{flex:1}.main{overflow:auto;padding:18px;min-width:0}.app,.page,.panel,.lane{min-width:0}.page{max-width:1500px;margin:0 auto}.row{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.grid{display:grid;gap:14px}.grid.cols-2{grid-template-columns:repeat(auto-fit,minmax(min(380px,100%),1fr))}.grid.cols-3{grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr))}.grid.sidebar{grid-template-columns:280px minmax(0,1fr)}.grid.sidebar-narrow{grid-template-columns:220px minmax(0,1fr)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;overflow-x:auto}.panel h2{display:flex;align-items:center;justify-content:space-between}.muted{color:var(--muted)}.small{font-size:12px}.mono{font-family:ui-monospace,Menlo,monospace}.stack>*+*{margin-top:10px}.btn{border:1px solid var(--border);background:var(--panel-2);color:var(--text);padding:7px 12px;border-radius:6px;cursor:pointer;display:inline-flex;align-items:center;gap:6px;white-space:nowrap}.btn:hover{border-color:var(--accent)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.danger{background:var(--danger);border-color:var(--danger);color:var(--on-accent)}.btn.ghost{background:transparent}.btn.sm{padding:4px 8px;font-size:12px}.badge{display:inline-flex;align-items:center;gap:4px;padding:2px 8px;border-radius:999px;font-size:11px;font-weight:600;letter-spacing:.03em;text-transform:uppercase;border:1px solid transparent}.badge.danger{background:var(--danger-bg);color:var(--danger-fg);border-color:var(--danger-border)}.badge.warn{background:var(--warn-bg);color:var(--warn-fg);border-color:var(--warn-border)}.badge.ok{background:var(--ok-bg);color:var(--ok-fg);border-color:var(--ok-border)}.badge.info{background:var(--info-bg);color:var(--info-fg);border-color:var(--info-border)}.badge.neutral{background:var(--panel-2);color:var(--muted);border-color:var(--border)}.lanes{display:grid;grid-template-columns:1fr;gap:16px}.lane{border-radius:var(--radius);border:1px solid var(--border);background:var(--panel)}.lane-head{display:flex;align-items:center;gap:10px;padding:10px 14px;border-bottom:1px solid var(--border);cursor:pointer;-webkit-user-select:none;user-select:none}.lane-head .count{margin-left:auto;font-weight:700}.lane.action_now .lane-head{background:linear-gradient(90deg,var(--lane-action),var(--panel))}.lane.needs_attention .lane-head{background:linear-gradient(90deg,var(--lane-attention),var(--panel))}.lane.monitor .lane-head{background:linear-gradient(90deg,var(--lane-monitor),var(--panel))}.lane.device_issues .lane-head{background:linear-gradient(90deg,var(--lane-device),var(--panel))}.lane-body{display:grid;gap:10px;padding:12px;grid-template-columns:repeat(auto-fill,minmax(min(360px,100%),1fr))}.lane-body.empty{color:var(--muted);padding:14px}.card{background:var(--panel-2);border:1px solid var(--border);border-radius:var(--radius);padding:12px;display:grid;gap:8px;position:relative;min-width:0}.card.manual{border-color:var(--danger);box-shadow:0 0 0 1px var(--danger) inset;animation:pulse 1.6s ease-in-out infinite}.card.action{border-color:var(--card-action-border)}@keyframes pulse{0%,to{box-shadow:0 0 0 1px var(--danger) inset}50%{box-shadow:0 0 0 3px var(--danger) inset}}.card .title{display:flex;align-items:center;gap:8px}.card .title .name{font-weight:700;font-size:15px}.card .title .prio{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700}.card .label{font-size:15px}.card .meta{display:flex;flex-wrap:wrap;gap:6px}.card .actions{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}.card .explain{color:var(--muted);font-size:12px}table{width:100%;border-collapse:collapse}th,td{text-align:left;padding:8px;border-bottom:1px solid var(--border);vertical-align:top}th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.04em}tr:hover td{background:var(--row-hover)}.timeline{list-style:none;margin:0;padding:0;border-left:2px solid var(--border)}.timeline li{padding:6px 0 6px 14px;position:relative}.timeline li:before{content:"";position:absolute;left:-7px;top:12px;width:10px;height:10px;border-radius:50%;background:var(--muted)}.timeline li.event:before{background:var(--danger)}.timeline li.transition:before{background:var(--accent)}.timeline li.check_in:before{background:var(--warn)}.timeline li.message:before{background:var(--ok)}.timeline .t{color:var(--muted);font-size:12px}.thread{display:flex;flex-direction:column;gap:8px;max-height:480px;overflow:auto;padding:4px}.bubble{max-width:80%;padding:8px 10px;border-radius:10px;background:var(--panel-2);border:1px solid var(--border)}.bubble.po{align-self:flex-end;background:var(--bubble-po-bg);border-color:var(--bubble-po-border)}.bubble.device{align-self:flex-start}.bubble.system{align-self:center;background:transparent;color:var(--muted);font-size:12px;border-style:dashed}.bubble .who{font-size:11px;color:var(--muted)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--backdrop);display:flex;align-items:center;justify-content:center;z-index:50}.modal{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:18px;min-width:420px;max-width:720px;width:90vw;max-height:90vh;overflow:auto}.modal h2{margin-bottom:12px}.field{display:grid;gap:4px;margin-bottom:10px}.field label{font-size:12px;color:var(--muted)}.error{color:var(--danger-fg);background:var(--danger-bg);border:1px solid var(--danger-border);padding:8px 10px;border-radius:6px}.notice{color:var(--warn-fg);background:var(--warn-bg);border:1px solid var(--warn-border);padding:8px 10px;border-radius:6px}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--border);margin-bottom:14px;flex-wrap:wrap}.tabs button{background:transparent;border:none;color:var(--muted);padding:8px 12px;cursor:pointer;border-bottom:2px solid transparent}.tabs button.active{color:var(--text);border-bottom-color:var(--accent)}.kv{display:grid;grid-template-columns:max-content 1fr;gap:4px 14px}.kv dt{color:var(--muted)}.kv dd{margin:0}.login{display:grid;place-items:center;min-height:100%;padding:24px 0}.login .panel{width:min(380px,calc(100vw - 32px))}.login-column{display:flex;flex-direction:column;gap:14px;align-items:center}.demo-accounts ul{list-style:none;margin:0;padding:0;display:grid;gap:6px}.demo-account{width:100%;display:grid;gap:2px;text-align:left;background:var(--panel-2);color:var(--text);border:1px solid var(--border);border-radius:8px;padding:9px 11px;cursor:pointer;font:inherit}.demo-account:hover{border-color:var(--accent)}.demo-account.selected{border-color:var(--accent);box-shadow:inset 3px 0 0 var(--accent)}.demo-account .demo-name{font-weight:600}.status-dot{width:8px;height:8px;border-radius:50%;display:inline-block}.status-dot.live{background:var(--ok)}.status-dot.connecting{background:var(--warn)}.status-dot.reconnecting{background:var(--danger)}.filters{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-bottom:14px}.age{font-variant-numeric:tabular-nums}.theme-toggle{display:inline-flex;border:1px solid var(--border);border-radius:6px;overflow:hidden}.theme-toggle button{background:transparent;border:none;color:var(--muted);padding:5px 9px;cursor:pointer;font-size:12px}.theme-toggle button.active{background:var(--panel-2);color:var(--text)}.topbar .account-link{color:var(--text);padding:6px 10px;border-radius:6px}.topbar .account-link:hover{background:var(--panel-2);text-decoration:none}.success{color:var(--ok-fg);background:var(--ok-bg);border:1px solid var(--ok-border);padding:8px 10px;border-radius:6px}.menu-btn{display:none;background:transparent;border:1px solid var(--border);border-radius:6px;color:var(--text);padding:6px 10px;cursor:pointer;font-size:18px;line-height:1}.nav-backdrop{display:none}@media (max-width: 1024px){.topbar nav a{padding:8px 9px}.grid.sidebar,.grid.sidebar-narrow{grid-template-columns:1fr}}@media (max-width: 760px){html{-webkit-text-size-adjust:100%}.app{grid-template-rows:52px 1fr}.topbar{padding:0 12px;gap:10px;position:relative}.topbar .brand{font-size:15px}.menu-btn{display:inline-flex}.topbar nav{display:none}.topbar nav.open{display:flex;flex-direction:column;position:absolute;top:52px;left:0;right:0;background:var(--panel);border-bottom:1px solid var(--border);padding:8px 12px 12px;gap:2px;z-index:40;box-shadow:0 8px 24px #00000040}.topbar nav.open a{padding:12px 10px;font-size:15px}.topbar nav.open .nav-extra{display:flex;flex-wrap:wrap;align-items:center;gap:10px;padding:10px 10px 0;border-top:1px solid var(--border);margin-top:6px}.nav-backdrop.open{display:block;position:fixed;top:52px;right:0;bottom:0;left:0;background:var(--backdrop);z-index:30}.topbar .desktop-only,.topbar .status-label{display:none}.main{padding:12px}h1{font-size:18px}input,select,textarea{font-size:16px}.btn{min-height:38px}.btn.sm{min-height:34px;padding:6px 10px;font-size:13px}.filters{flex-direction:column;align-items:stretch}.filters select,.filters input{width:100%}.filters>span{margin-left:0!important}.filters label.row{flex-direction:row;align-items:center;gap:8px;flex-wrap:nowrap}.filters label.row input[type=checkbox]{width:20px;height:20px;margin:0}.lane-head{flex-wrap:wrap;padding:10px 12px}.lane-head .small{flex-basis:100%;order:3}.lane-body{padding:10px}.card .title{flex-wrap:wrap}.card .title .name{font-size:15px;word-break:break-word}.card .actions .btn,.card .actions a.btn{flex:1 1 auto;justify-content:center}.tabs{flex-wrap:nowrap;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;margin-left:-12px;margin-right:-12px;padding:0 12px}.tabs::-webkit-scrollbar{display:none}.tabs button{white-space:nowrap;padding:10px 12px}.kv{grid-template-columns:1fr;gap:0 0}.kv dt{margin-top:6px;font-size:12px}.row.page-head{flex-direction:column;align-items:stretch}.row.page-head>.row{flex-wrap:wrap}.row.page-head .btn{flex:1 1 auto;justify-content:center}.modal-backdrop{align-items:flex-end}.modal{min-width:0;width:100vw;max-width:none;max-height:92vh;border-radius:14px 14px 0 0;padding:16px 14px calc(16px + env(safe-area-inset-bottom))}.modal .row[style*=flex-end] .btn{flex:1 1 auto;justify-content:center}.thread{max-height:55vh}.bubble{max-width:92%}.panel{padding:12px}.panel h2{flex-wrap:wrap;gap:6px}table{font-size:13px}th,td{padding:6px}.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -12px;padding:0 12px}.timeline li{padding-left:12px}pre{max-height:300px;font-size:11px}}@media (max-width: 400px){.theme-toggle button{padding:5px 7px}}.dash-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));grid-auto-flow:row dense;gap:14px;align-items:start}.tile{background:var(--panel);border:1px solid var(--border);border-radius:var(--radius);padding:14px;display:grid;gap:8px;min-width:0}.tile.span-all{grid-column:1 / -1}.tile-head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}.tile-head h2{margin:0}.tile-link{color:var(--text);text-decoration:none}.tile-link:hover{border-color:var(--accent);text-decoration:none}.dash-head select{max-width:220px}.status-tile{display:flex;gap:14px;align-items:flex-start;border-width:2px}.status-tile.danger{border-color:var(--danger);background:var(--danger-bg)}.status-tile.warn{border-color:var(--warn);background:var(--warn-bg)}.status-tile.info{border-color:var(--info-border);background:var(--info-bg)}.status-tile.ok{border-color:var(--ok-border)}.status-emoji{font-size:44px;line-height:1}.status-body{display:grid;gap:4px;min-width:0;flex:1}.status-title{font-size:20px;font-weight:700}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);font-size:12px;white-space:nowrap}.chip.strong{border-color:var(--warn-border);background:var(--warn-bg)}.chip.subtle{opacity:.85}.gauge{display:grid;gap:6px;position:relative}.gauge-bar{height:12px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);overflow:hidden}.gauge-fill{height:100%;border-radius:999px;transition:width .4s ease}.gauge-marks{position:absolute;left:0;right:0;top:0;height:12px;pointer-events:none}.gauge-marks span{position:absolute;top:0;bottom:0;width:1px;background:var(--border)}.now-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.now-row .big{font-size:26px;font-weight:700;font-variant-numeric:tabular-nums}.sound-bar{display:grid;grid-template-columns:24px minmax(90px,1fr) 2fr auto;align-items:center;gap:8px}.sound-bar.faded{opacity:.6}.sound-emoji{font-size:18px;text-align:center}.sound-track{height:8px;background:var(--panel-2);border-radius:999px;overflow:hidden}.sound-fill{display:block;height:100%;border-radius:999px;background:var(--muted)}.sound-fill.danger{background:var(--danger)}.sound-fill.warn{background:var(--warn)}.sound-fill.info{background:var(--info)}.sound-meta{white-space:nowrap}.wearable{display:grid;grid-template-columns:64px 1fr;gap:10px;align-items:center;padding:8px;border:1px solid var(--border);border-radius:8px;background:var(--panel-2)}.wearable img{width:64px;height:64px;object-fit:contain;border-radius:8px;background:#fff}.wearable-generic{width:64px;height:64px;display:grid;place-items:center;font-size:34px;border-radius:8px;background:var(--panel)}.spark{width:100%;height:44px}.spark polyline{fill:none;stroke:var(--danger);stroke-width:2;vector-effect:non-scaling-stroke}.incident-row{display:flex;align-items:center;gap:10px;padding:6px 0;border-bottom:1px solid var(--border);color:var(--text)}.incident-row:hover{text-decoration:none;background:var(--row-hover)}.incident-row .grow{flex:1;min-width:0}.device-facts{display:flex;flex-wrap:wrap;gap:10px 16px}.tl-controls{gap:4px;flex-wrap:wrap}.tl-wrap{width:100%;overflow:hidden}.tl{display:block;touch-action:pan-y;-webkit-user-select:none;user-select:none;cursor:grab}.tl:active{cursor:grabbing}.tl-lane{font-size:10px;fill:var(--muted)}.tl-lane-emoji{font-size:12px}.tl-lane-bg{fill:var(--panel-2)}.tl-grid{stroke:var(--border);stroke-width:1}.tl-row{stroke:var(--border);stroke-dasharray:2 4}.tl-tick{font-size:10px;fill:var(--muted)}.tl-threshold{stroke-width:1;stroke-dasharray:4 4}.tl-threshold.b4{stroke:var(--info)}.tl-threshold.b6{stroke:var(--warn)}.tl-threshold.b8{stroke:var(--danger)}.tl-score{fill:none;stroke:var(--accent);stroke-width:2}.tl-score-area{fill:var(--accent);opacity:.12}.tl-emoji{font-size:13px}.tl-emoji.context{font-size:11px}.tl-hr{fill:none;stroke:var(--danger);stroke-width:1.8}.tl-hrv{fill:var(--info)}.tl-incident.danger{fill:var(--danger)}.tl-incident.warn{fill:var(--warn)}.tl-incident.ok,.tl-incident.neutral,.tl-incident.info{fill:var(--muted)}.tl-event-dot{fill:var(--panel);stroke-width:2}.tl-event-dot.danger{stroke:var(--danger)}.tl-event-dot.warn{stroke:var(--warn)}.tl-event-dot.ok{stroke:var(--ok)}.tl-event-dot.neutral,.tl-event-dot.info{stroke:var(--muted)}.tl-now{stroke:var(--ok);stroke-width:1.5;stroke-dasharray:3 3}.tl-now-label{font-size:10px;fill:var(--ok)}.tl-selected{stroke:var(--text);stroke-width:1;opacity:.6}.tl-detail{border:1px solid var(--border);border-radius:8px;padding:10px;background:var(--panel-2);display:grid;gap:6px}.tl-legend summary{cursor:pointer}@media (max-width: 760px){.dash-grid{gap:10px}.tile{padding:12px}.status-emoji{font-size:36px}.status-title{font-size:17px}.dash-head .row{flex-wrap:wrap}.dash-head .row>*{flex:1 1 auto;justify-content:center}.sound-bar{grid-template-columns:22px 1fr auto}.sound-bar .sound-track{grid-column:2 / 4;grid-row:2}}
