:root{--bg: #f4f6f9;--panel: #ffffff;--ink: #0f172a;--ink-2: #475569;--ink-3: #94a3b8;--line: #e2e8f0;--sea: #e8eef5;--grid: rgba(15, 23, 42, .07);--ok: #16a34a;--warn: #d97706;--bad: #dc2626;--auth: #2563eb;--muted: #94a3b8;--ok-bg: #dcfce7;--warn-bg: #fef3c7;--bad-bg: #fee2e2;--info-bg: #e0f2fe;--accent: #0f172a;--accent-ink: #ffffff;--soft: #f1f5f9;color-scheme:light}@media(prefers-color-scheme:dark){:root:not([data-theme=light]){--bg: #0b1220;--panel: #111a2e;--ink: #e2e8f0;--ink-2: #94a3b8;--ink-3: #64748b;--line: #1e293b;--sea: #0a1a2f;--grid: rgba(148, 163, 184, .08);--ok: #22c55e;--warn: #f59e0b;--bad: #ef4444;--auth: #60a5fa;--muted: #64748b;--ok-bg: rgba(34, 197, 94, .15);--warn-bg: rgba(245, 158, 11, .16);--bad-bg: rgba(239, 68, 68, .18);--info-bg: rgba(56, 189, 248, .14);--accent: #e2e8f0;--accent-ink: #0b1220;--soft: #0f1a2d;color-scheme:dark}}:root[data-theme=dark]{--bg: #0b1220;--panel: #111a2e;--ink: #e2e8f0;--ink-2: #94a3b8;--ink-3: #64748b;--line: #1e293b;--sea: #0a1a2f;--grid: rgba(148, 163, 184, .08);--ok: #22c55e;--warn: #f59e0b;--bad: #ef4444;--auth: #60a5fa;--muted: #64748b;--ok-bg: rgba(34, 197, 94, .15);--warn-bg: rgba(245, 158, 11, .16);--bad-bg: rgba(239, 68, 68, .18);--info-bg: rgba(56, 189, 248, .14);--accent: #e2e8f0;--accent-ink: #0b1220;--soft: #0f1a2d;color-scheme:dark}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--ink);font:13px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}a{color:var(--auth)}h1{font-size:18px;margin:0 0 12px;font-weight:650;letter-spacing:-.01em}h2{font-size:14px;margin:22px 0 8px}h3{font-size:11px;text-transform:uppercase;letter-spacing:.07em;color:var(--ink-3);margin:0 0 8px}.muted{color:var(--ink-2);font-weight:400}.small{font-size:12px;margin:2px 0}.num{font-variant-numeric:tabular-nums}.spacer{flex:1}button,select,input,.button{font:inherit;color:var(--ink);background:var(--panel);border:1px solid var(--line);border-radius:6px;padding:5px 9px}button,.button{cursor:pointer;text-decoration:none;display:inline-block}button:hover:not(:disabled),.button:hover{border-color:var(--ink-3)}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);font-weight:600}button.ghost{border-color:transparent;background:transparent}button.on{background:var(--accent);color:var(--accent-ink);border-color:var(--accent)}:focus-visible{outline:2px solid var(--auth);outline-offset:2px}.shell-bar{display:flex;align-items:center;gap:12px;padding:10px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.brand{font-weight:700;color:var(--ink);text-decoration:none}.brand span{color:var(--ink-2);font-weight:500}.shell-main{height:calc(100vh - 47px);overflow:auto}.page{max-width:1280px;margin:0 auto;padding:18px 16px 40px}.crumbs{margin:0 0 4px;color:var(--ink-3)}.tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:14px}.tabs a{padding:8px 12px;color:var(--ink-2);text-decoration:none;border-bottom:2px solid transparent}.tabs a.on{color:var(--ink);border-bottom-color:var(--accent);font-weight:600}.grid{width:100%;border-collapse:collapse;background:var(--panel);border:1px solid var(--line);border-radius:8px;overflow:hidden}.grid th,.grid td{text-align:left;padding:7px 10px;border-bottom:1px solid var(--line);vertical-align:top}.grid th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--ink-3);background:var(--soft)}.grid tr.current td{background:var(--info-bg)}.grid tr.clickable{cursor:pointer}.grid td.actions{white-space:nowrap}.grid td.actions>*{margin:0 2px 2px 0}.form-row{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:10px 0}.form-row label,.stack label{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--ink-2)}.form-row label:has(input[type=checkbox]){flex-direction:row;align-items:center}.stack{display:flex;flex-direction:column;gap:8px;max-width:460px;margin-bottom:12px}.pill{display:inline-block;font-size:11px;font-weight:600;padding:1px 7px;border-radius:999px;background:var(--soft);margin-right:4px}.pill.ok{background:var(--ok-bg);color:var(--ok)}.pill.warn{background:var(--warn-bg);color:var(--warn)}.pill.bad{background:var(--bad-bg);color:var(--bad)}.pill.info{background:var(--info-bg);color:var(--auth)}.bad-text{color:var(--bad);font-weight:700}.alert{padding:8px 12px;border-radius:6px}.alert.bad{background:var(--bad-bg);color:var(--bad)}.alert.ok{background:var(--ok-bg);color:var(--ok)}.sw{display:inline-block;width:10px;height:10px;border-radius:3px;margin-right:6px;vertical-align:-1px}.update-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:14px;align-items:start;margin-bottom:18px}.update-card{display:flex;flex-direction:column;gap:8px;align-items:flex-start;background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px;min-width:0}.update-card header{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}.update-card h2{margin:0;font-size:15px}.update-card p{margin:0}.update-card .grid{margin-top:4px;font-size:12px}.update-card td.file{overflow-wrap:anywhere}.small{font-size:12px}.two-col{display:grid;grid-template-columns:minmax(300px,420px) 1fr;gap:18px;align-items:start}.map-panel{position:sticky;top:8px;height:calc(100vh - 190px);min-height:520px;border:1px solid var(--line);border-radius:8px;overflow:hidden}.map-host{position:absolute;inset:0;display:block}.fill{width:100%;height:100%;display:block;cursor:grab;touch-action:none}.player{display:grid;grid-template-rows:auto minmax(0,1fr) auto;height:100%}.map-error{position:absolute;left:12px;bottom:12px;right:12px;margin:0;z-index:2}.player-bar{display:flex;align-items:center;gap:14px;padding:8px 16px;background:var(--panel);border-bottom:1px solid var(--line)}.player-bar h1{margin:0;font-size:15px}.clock{text-align:right;line-height:1.15}.clock b{font-size:20px;display:block}.clock small{color:var(--ink-2)}.chip{font-weight:700;font-size:12px;letter-spacing:.04em;padding:6px 12px;border-radius:999px;min-width:96px;text-align:center}.chip.clear{background:var(--ok-bg);color:var(--ok)}.chip.warning{background:var(--warn-bg);color:var(--warn)}.chip.breach{background:var(--bad-bg);color:var(--bad);animation:blink .8s steps(2) infinite}.chip.nodata{background:var(--soft);color:var(--muted)}@keyframes blink{50%{opacity:.35}}.player:fullscreen{height:100vh;background:var(--bg)}.player.maximized{position:fixed;inset:0;z-index:100;height:100vh;background:var(--bg)}.player-main{display:grid;grid-template-columns:1fr 300px;min-height:0}.player-main.panel-hidden{grid-template-columns:1fr}.mini-readout{position:absolute;left:12px;top:12px;display:flex;align-items:center;gap:8px;padding:6px 10px;background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:0 2px 8px #0000001f}.mini-readout b{font-size:16px}.map-wrap{position:relative;min-height:0;background:var(--sea)}.banner{position:absolute;top:12px;left:50%;transform:translate(-50%);background:var(--bad);color:#fff;font-weight:650;padding:8px 16px;border-radius:6px;box-shadow:0 6px 20px #00000040;animation:blink 1s steps(2) infinite;white-space:nowrap}.map-tools{position:absolute;top:12px;right:12px;display:flex;flex-direction:column;gap:6px}.side{background:var(--panel);border-left:1px solid var(--line);overflow-y:auto;padding:14px;display:flex;flex-direction:column;gap:16px}.sep .v{font-size:34px;font-weight:700}.sep .v.breach{color:var(--bad)}.sep .v.warning{color:var(--warn)}.gauge{position:relative;height:10px;border-radius:5px;margin:8px 0 4px;background:linear-gradient(90deg,var(--bad) 0 33.3%,color-mix(in srgb,var(--bad) 50%,transparent) 33.3% 43.3%,var(--warn) 43.3% 52%,color-mix(in srgb,var(--ok) 55%,transparent) 52%)}.needle{position:absolute;top:-3px;width:3px;height:16px;background:var(--ink);border-radius:2px;transform:translate(-1px)}.vessel-card{border:1px solid var(--line);border-radius:8px;padding:8px 10px;margin-bottom:8px}.vessel-card p{margin:4px 0 0}.ev{display:block;width:100%;text-align:left;border:0;border-left:3px solid var(--ink-3);border-radius:0 6px 6px 0;background:var(--soft);margin-bottom:6px;font-size:12px}.ev.BREACH{border-left-color:var(--bad)}.ev.OVERLAP{border-left-color:var(--warn)}.ev.CLEARED{border-left-color:var(--ok);color:var(--ink-2)}.ev .scope{display:block;margin-top:4px;padding-top:4px;border-top:1px dashed var(--line);color:var(--ink-2);font-size:11px}.ev .scope b{color:var(--ink);font-weight:600;margin-right:4px}.controls{background:var(--panel);border-top:1px solid var(--line);padding:8px 16px 10px}.ctrl{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:6px}.ctrl label{display:flex;align-items:center;gap:6px;color:var(--ink-2);font-size:12px}.group{display:flex;align-items:center;gap:4px;padding:3px;border:1px solid var(--line);border-radius:8px}.group .cap{color:var(--ink-3);font-size:11px;font-weight:650;text-transform:uppercase;letter-spacing:.06em;padding:0 6px 0 4px}.group select{min-width:190px}button.play{background:var(--ok);color:#fff;border-color:var(--ok);font-weight:650;min-width:80px}button.pause{background:var(--warn);color:#fff;border-color:var(--warn);font-weight:650;min-width:80px}.timeline{width:100%;height:124px;display:block;cursor:pointer;touch-action:none}@media(max-width:900px){.two-col,.player-main{grid-template-columns:1fr}.player{grid-template-rows:auto auto auto;height:auto}.player-main{min-height:auto}.player.maximized{height:auto;overflow-y:auto}.map-wrap{height:72vh}.map-panel{position:relative;height:70vh}.group select{min-width:0}}.shell-user{color:var(--ink-2);font-size:.9em;max-width:30ch;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.boot-message{max-width:560px;margin:15vh auto 0;padding:0 16px;font-family:system-ui,sans-serif;color:#333}.boot-message h1{font-size:1.3rem}
