:root{--ground: #eef2f8;--grid-line: rgba(29, 78, 216, .055);--panel: #ffffff;--panel-2: #f3f6fb;--ink: #0b1a33;--ink-2: #5b6b86;--rule: #dce3ee;--rule-2: #c3cedf;--brand: #1d4ed8;--brand-2: #e7eefc;--on-brand: #ffffff;--nav: #0a1a3a;--nav-ink: #ffffff;--nav-ink-2: #a9b6cc;--nav-line: rgba(255, 255, 255, .14);--scrim: rgba(6, 18, 43, .42);--danger: #dc2626;--danger-ink: #b91c1c;--danger-bg: #fdecec;--watch: #ea580c;--watch-ink: #c2410c;--watch-bg: #fff1e7;--clear: #16a34a;--clear-ink: #15803d;--nodata: #94a3b8;--nodata-ink: #5b6b86;--scene-sky: #f3f6fb;--scene-ground: #e2e9f3;--scene-grid: #cbd6e6;--scene-ink: #0b1a33;--scene-side: #b5c3d8;--scene-slab: #dde6f3;--scene-select: #1d4ed8;--intro-paper: #f7f9fc;--intro-ink: #0b1a33;--intro-ink-2: #5b6b86;--intro-line: rgba(29, 78, 216, .07);--intro-track: rgba(29, 78, 216, .15);--intro-outline: rgba(11, 26, 51, .18);--band-danger: #f09494;--band-danger-2: #e77d7d;--band-watch: #f7bb8c;--band-clear: #a9dcb9;--font-ui: "IBM Plex Sans Thai", "Leelawadee UI", "Noto Sans Thai", "Thonburi", Tahoma, sans-serif;--font-read: "IBM Plex Sans Thai Looped", "IBM Plex Sans Thai", "Leelawadee UI", "Noto Sans Thai", Tahoma, sans-serif;--font-num: "IBM Plex Sans", "IBM Plex Sans Thai", "Leelawadee UI", Tahoma, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, monospace;--t-12: .75rem;--t-13: .8125rem;--t-14: .875rem;--t-16: 1rem;--t-20: 1.25rem;--t-25: 1.5625rem;--t-31: 1.9375rem;--r-panel: 12px;--r-ctl: 8px;--gap: 12px}@media (prefers-color-scheme: dark){:root:not([data-theme=light]){--ground: #06122b;--grid-line: rgba(59, 130, 246, .07);--panel: #0d1f3d;--panel-2: #12284b;--ink: #e8eef8;--ink-2: #a9b6cc;--rule: #1e3459;--rule-2: #2b4673;--brand: #3b82f6;--brand-2: #14305e;--on-brand: #ffffff;--nav: #040d20;--nav-ink: #ffffff;--nav-ink-2: #a9b6cc;--nav-line: rgba(255, 255, 255, .12);--scrim: rgba(2, 6, 16, .62);--danger: #ef4444;--danger-ink: #fca5a5;--danger-bg: #3b1520;--watch: #f97316;--watch-ink: #fdba74;--watch-bg: #3a2113;--clear: #22c55e;--clear-ink: #86efac;--nodata: #8292ad;--nodata-ink: #a9b6cc;--scene-sky: #06122b;--scene-ground: #0b1a36;--scene-grid: #16294b;--scene-ink: #dce6f5;--scene-side: #2b4673;--scene-slab: #1a2e52;--scene-select: #3b82f6;--intro-paper: #081631;--intro-ink: #e8eef8;--intro-ink-2: #a9b6cc;--intro-line: rgba(255, 255, 255, .045);--intro-track: rgba(255, 255, 255, .16);--intro-outline: rgba(255, 255, 255, .26);--band-danger: #b8424f;--band-danger-2: #a33a46;--band-watch: #b06a33;--band-clear: #2f7a52;color-scheme:dark}}:root[data-theme=dark]{--ground: #06122b;--grid-line: rgba(59, 130, 246, .07);--panel: #0d1f3d;--panel-2: #12284b;--ink: #e8eef8;--ink-2: #a9b6cc;--rule: #1e3459;--rule-2: #2b4673;--brand: #3b82f6;--brand-2: #14305e;--on-brand: #ffffff;--nav: #040d20;--nav-ink: #ffffff;--nav-ink-2: #a9b6cc;--nav-line: rgba(255, 255, 255, .12);--scrim: rgba(2, 6, 16, .62);--danger: #ef4444;--danger-ink: #fca5a5;--danger-bg: #3b1520;--watch: #f97316;--watch-ink: #fdba74;--watch-bg: #3a2113;--clear: #22c55e;--clear-ink: #86efac;--nodata: #8292ad;--nodata-ink: #a9b6cc;--scene-sky: #06122b;--scene-ground: #0b1a36;--scene-grid: #16294b;--scene-ink: #dce6f5;--scene-side: #2b4673;--scene-slab: #1a2e52;--scene-select: #3b82f6;--intro-paper: #081631;--intro-ink: #e8eef8;--intro-ink-2: #a9b6cc;--intro-line: rgba(255, 255, 255, .045);--intro-track: rgba(255, 255, 255, .16);--intro-outline: rgba(255, 255, 255, .26);--band-danger: #b8424f;--band-danger-2: #a33a46;--band-watch: #b06a33;--band-clear: #2f7a52;color-scheme:dark}*{box-sizing:border-box}html,body{height:100%}body{margin:0;background-color:var(--ground);background-image:linear-gradient(var(--grid-line) 1px,transparent 1px),linear-gradient(90deg,var(--grid-line) 1px,transparent 1px);background-size:24px 24px;color:var(--ink);font:400 var(--t-14)/1.6 var(--font-ui);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-block:0 12px;-webkit-font-smoothing:antialiased}#root{height:100%}button,input,select{font:inherit;color:inherit}button{cursor:pointer}:focus-visible{outline:3px solid var(--brand);outline-offset:2px;border-radius:4px}h2,h3{margin:0;text-wrap:balance}.muted{color:var(--ink-2)}.small{font-size:var(--t-12)}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.num,.n,.reading-num,.summary-total,.counts dd,.storey-name,.storey-z,.dim-num{font-variant-numeric:tabular-nums}.boot-error{max-width:36rem;margin:15vh auto;padding:24px;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-panel)}.boot-error p{color:var(--ink-2)}.sicon{flex:none;display:inline-block;vertical-align:-2px}.sicon-danger{fill:var(--danger)}.sicon-watch{fill:var(--watch)}.sicon-clear{fill:var(--clear)}.sicon-nodata{stroke:var(--nodata);fill:none}.app{height:100%;display:grid;grid-template-columns:minmax(288px,330px) minmax(0,1fr) 118px;grid-template-rows:68px minmax(0,1fr) auto;grid-template-areas:"top top top" "left stage right" "left table table";gap:0 var(--gap)}.app.table-open{grid-template-rows:68px minmax(0,1fr) minmax(200px,34%)}.topbar{grid-area:top}.stage{grid-area:stage}.side-left{grid-area:left}.side-right{grid-area:right}.table-dock{grid-area:table;min-width:0;margin-top:var(--gap)}.topbar{display:flex;align-items:center;gap:12px;min-width:0;background:var(--nav);color:var(--nav-ink);margin-left:calc(-1*max(16px,env(safe-area-inset-left,0px)));margin-right:calc(-1*max(16px,env(safe-area-inset-right,0px)));padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-top:env(safe-area-inset-top,0px);margin-bottom:var(--gap)}.topbar :focus-visible{outline-color:#8fb4ff}.brand{display:flex;align-items:center;gap:10px;flex:none}.brand-mark{width:32px;height:32px;display:grid;place-items:center;border-radius:8px;background:var(--brand);color:#fff;font:700 1.125rem/1 var(--font-num);box-shadow:inset 0 0 0 1px #ffffff2e}.brand-name{font:600 var(--t-16)/1.1 var(--font-ui);letter-spacing:.005em}.brand-name small{display:block;font:400 var(--t-12)/1.2 var(--font-ui);color:var(--nav-ink-2)}.building-switch{position:relative;display:flex;align-items:center}.building-switch select{appearance:none;background:#ffffff12;color:var(--nav-ink);border:1px solid var(--nav-line);border-radius:var(--r-ctl);padding:7px 34px 7px 12px;font-weight:500;max-width:260px;text-overflow:ellipsis}.building-switch select option{color:#0b1a33;background:#fff}.building-switch .icon{position:absolute;right:8px;pointer-events:none;color:var(--nav-ink-2)}.live{display:flex;align-items:center;gap:8px;min-width:0;color:var(--nav-ink-2);font-size:var(--t-13)}.live-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.live-dot{width:9px;height:9px;border-radius:50%;background:var(--nodata);flex:none}.live-on .live-dot{background:#4ade80;animation:live 2s ease-out infinite}.live-err .live-dot{background:#f87171}.live-err{color:#fecaca}@keyframes live{0%{box-shadow:0 0 #4ade808c}to{box-shadow:0 0 0 8px #4ade8000}}.topbar-spacer{flex:1}.seg{display:flex;background:#ffffff12;border:1px solid var(--nav-line);border-radius:var(--r-ctl);padding:2px;flex:none}.seg button{border:0;background:none;padding:5px 14px;border-radius:6px;font-weight:500;color:var(--nav-ink-2)}.seg button.on{background:var(--brand);color:#fff}.tb-btn{display:flex;align-items:center;gap:6px;border:1px solid transparent;background:none;padding:6px 9px;border-radius:var(--r-ctl);color:var(--nav-ink);flex:none}.tb-btn:hover,.tb-btn[aria-pressed=true]{background:#ffffff14;border-color:var(--nav-line)}.side-left,.side-right,.roster,.stage{background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-panel);min-height:0}.side-left{display:flex;flex-direction:column;overflow:hidden}.icon-btn{display:grid;place-items:center;width:34px;height:34px;border:1px solid transparent;background:none;border-radius:var(--r-ctl);color:var(--ink-2);flex:none}.icon-btn:hover{border-color:var(--rule);color:var(--ink)}.btn-primary{background:var(--ink);color:var(--panel);border:0;border-radius:var(--r-ctl);padding:8px 16px;font-weight:600}.btn-primary:disabled{opacity:.45;cursor:not-allowed}.btn-quiet{display:inline-flex;align-items:center;gap:6px;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-ctl);padding:6px 12px;font-weight:500}.btn-quiet:hover{border-color:var(--rule-2)}.btn-quiet .icon{width:18px;height:18px}.link-btn{border:0;background:none;color:var(--ink-2);text-decoration:underline;text-underline-offset:3px;padding:10px 16px 14px;text-align:left}.link-btn:hover{color:var(--ink)}.summary{padding:16px 16px 14px;border-bottom:1px solid var(--rule)}.summary-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.summary h2{font-size:var(--t-16);font-weight:600}.summary-total{font:600 var(--t-20)/1 var(--font-num)}.stackbar{display:flex;height:8px;border-radius:4px;overflow:hidden;margin:12px 0;background:var(--panel-2);gap:2px}.stackbar span{min-width:4px}.seg-danger{background:var(--danger)}.seg-watch{background:var(--watch)}.seg-clear{background:var(--clear)}.seg-nodata{background:var(--nodata)}.counts{display:grid;grid-template-columns:1fr 1fr;gap:0;margin:0}.count{display:flex;align-items:baseline;justify-content:space-between;padding:6px 2px;border-top:1px solid var(--rule)}.count:nth-child(odd){padding-right:12px}.count:nth-child(2n){padding-left:12px;border-left:1px solid var(--rule)}.count dt{display:flex;align-items:center;gap:7px;color:var(--ink-2)}.count dd{margin:0;font:600 var(--t-25)/1.1 var(--font-num)}.count-danger dd{color:var(--danger-ink)}.count-watch dd{color:var(--watch-ink)}.count.zero dd{color:var(--ink-2);opacity:.55}.queue{display:flex;flex-direction:column;min-height:0;flex:1}.queue-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 8px}.queue h2{font-size:var(--t-16);font-weight:600}.queue-count{font:600 var(--t-14)/1 var(--font-num);background:var(--panel-2);border:1px solid var(--rule);border-radius:999px;padding:3px 9px}.alert-list{list-style:none;margin:0;padding:0 10px;overflow-y:auto;display:flex;flex-direction:column;gap:6px;min-height:0;flex:1}.alert{position:relative;border-radius:8px;background:var(--panel-2);padding:10px 10px 8px 18px}.alert:before{content:"";position:absolute;left:0;top:0;bottom:0;width:7px;border-radius:8px 0 0 8px;background:var(--watch)}.alert-danger{background:var(--danger-bg)}.alert-danger:before{background:repeating-linear-gradient(-45deg,var(--danger) 0 5px,var(--ink) 5px 10px)}.alert-watch{background:var(--watch-bg)}.alert.acked{background:var(--panel-2)}.alert.selected{box-shadow:inset 0 0 0 2px var(--brand)}.alert-main{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:start;gap:9px;width:100%;text-align:left;background:none;border:0;padding:0}.alert-icon{padding-top:3px}.alert-who{min-width:0;display:flex;flex-direction:column}.alert-name{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.alert-meta,.selcard-sub{color:var(--ink-2);font-size:var(--t-12);display:flex;flex-wrap:wrap;align-items:center;gap:0 7px}.alert-meta i,.selcard-sub i{width:1px;height:10px;background:var(--rule-2);display:inline-block}.alert-dist{text-align:right;line-height:1}.alert-dist .num{font:600 var(--t-25)/1 var(--font-num)}.alert-danger .alert-dist .num{color:var(--danger-ink)}.alert-watch .alert-dist .num{color:var(--watch-ink)}.alert-dist .unit{font-size:var(--t-12);color:var(--ink-2);margin-left:3px}.alert-lost{font-size:var(--t-12);color:var(--nodata-ink);font-weight:600}.alert-foot{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-top:6px;padding-left:25px;font-size:var(--t-12);color:var(--ink-2)}.btn-ack{white-space:nowrap;flex:none;border:1px solid var(--ink);background:var(--panel);color:var(--ink);border-radius:6px;padding:3px 12px;font-weight:600;font-size:var(--t-12)}.alert-danger:not(.acked) .btn-ack{background:var(--ink);color:var(--panel)}.alert-ack{color:var(--clear-ink);font-weight:500}.empty{padding:4px 16px 8px}.empty p{margin:0 0 6px}.stage{position:relative;overflow:hidden;min-width:0}.viewer-host{position:absolute;inset:0}.viewer-canvas{display:block;touch-action:none}.viewer-overlay{position:absolute;inset:0;pointer-events:none;overflow:hidden}.stage-loading{position:absolute;left:50%;top:50%;translate:-50% -50%;background:var(--panel);border:1px solid var(--rule);padding:8px 14px;border-radius:999px;color:var(--ink-2)}.stage-bar{position:absolute;left:12px;top:12px;right:12px;display:flex;flex-wrap:wrap;align-items:center;gap:6px;pointer-events:none}.stage-where{font:600 var(--t-14)/1 var(--font-num);background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--rule);padding:8px 12px;border-radius:var(--r-ctl);margin-right:4px}.stage-btn{pointer-events:auto;display:flex;align-items:center;gap:6px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--rule);padding:5px 10px;border-radius:var(--r-ctl);font-size:var(--t-13)}.stage-btn:hover{border-color:var(--rule-2)}.stage-btn .icon{width:18px;height:18px}.try-hint{position:absolute;left:50%;top:62px;translate:-50% 0;background:var(--brand);color:var(--on-brand);font-weight:600;padding:6px 14px;border-radius:999px;font-size:var(--t-13)}.coord-readout{position:absolute;left:50%;bottom:12px;translate:-50% 0;font:500 var(--t-13)/1 var(--font-num);background:color-mix(in srgb,var(--panel) 90%,transparent);padding:6px 10px;border-radius:6px;pointer-events:none;white-space:pre}.coord-readout:empty{display:none}.vlabel{position:absolute;left:0;top:0;white-space:nowrap;will-change:transform}.name-label{translate:-50% calc(-100% - 14px);background:var(--ink);color:var(--panel);padding:3px 9px;border-radius:6px;font-size:var(--t-12);box-shadow:0 0 0 2px var(--brand)}.name-label b{font-family:var(--font-num);margin-right:4px}.viewer-overlay[data-plan="1"] .dim-label{translate:-50% 16px}.dim-label{translate:-50% -50%;display:flex;align-items:baseline;gap:4px;background:var(--panel);border:1.5px solid var(--ink);border-radius:6px;padding:3px 9px 4px;box-shadow:0 1px 0 var(--rule-2)}.dim-num{font:600 var(--t-20)/1 var(--font-num)}.dim-unit{font-size:var(--t-12);color:var(--ink-2)}.dim-kind{font-size:var(--t-12);color:var(--ink-2);margin-left:4px}.dim-label[data-level=danger]{border-color:var(--danger)}.dim-label[data-level=danger] .dim-num{color:var(--danger-ink)}.dim-label[data-level=watch]{border-color:var(--watch)}.dim-label[data-level=watch] .dim-num{color:var(--watch-ink)}.danger-label{translate:-50% calc(-100% - 12px);background:var(--danger);color:#fff;padding:2px 7px;border-radius:5px;font-size:var(--t-12);font-weight:600}.danger-label span{font-family:var(--font-num);margin-left:3px}.legend{margin-left:auto;display:flex;flex-wrap:wrap;align-items:center;gap:4px 12px;background:color-mix(in srgb,var(--panel) 92%,transparent);border:1px solid var(--rule);border-radius:var(--r-ctl);padding:6px 10px;font-size:var(--t-12);font-variant-numeric:tabular-nums}.legend span{display:flex;align-items:center;gap:6px;white-space:nowrap}.legend-title{color:var(--ink-2)}.sw{width:18px;height:10px;border-radius:2px;display:inline-block}.sw-danger{background:repeating-linear-gradient(-45deg,var(--band-danger) 0 4px,var(--band-danger-2) 4px 8px)}.sw-watch{background:var(--band-watch)}.sw-clear{background:var(--band-clear)}.readout{position:absolute;left:12px;right:12px;bottom:12px;display:grid;grid-template-columns:minmax(150px,1.1fr) auto minmax(220px,1.5fr) auto;align-items:center;gap:6px 22px;background:var(--panel);border:1px solid var(--rule-2);border-radius:var(--r-panel);padding:10px 52px 10px 16px}.readout:before{content:"";position:absolute;left:-1px;top:-1px;bottom:-1px;width:6px;border-radius:var(--r-panel) 0 0 var(--r-panel);background:var(--nodata)}.readout-danger:before{background:repeating-linear-gradient(-45deg,var(--danger) 0 5px,var(--ink) 5px 10px)}.readout-watch:before{background:var(--watch)}.readout-clear:before{background:var(--clear)}.ro-who{min-width:0}.ro-name{font-weight:600;font-size:var(--t-16);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reading-level{display:flex;align-items:center;gap:6px;font-weight:600;font-size:var(--t-13)}.lv-danger.reading-level,.reading-num.lv-danger{color:var(--danger-ink)}.lv-watch.reading-level,.reading-num.lv-watch{color:var(--watch-ink)}.lv-clear.reading-level{color:var(--clear-ink)}.lv-nodata.reading-level{color:var(--nodata-ink)}.ro-reading{display:flex;flex-direction:column;align-items:flex-start;border-left:1px solid var(--rule);padding-left:18px}.reading-num{font:600 var(--t-31)/1 var(--font-num);white-space:nowrap}.reading-num small{font:400 var(--t-13) var(--font-ui);color:var(--ink-2);margin-left:4px}.reading-kind{color:var(--ink-2);font-size:var(--t-12);white-space:nowrap}.ro-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:2px 14px;margin:0}.ro-grid div{display:flex;flex-direction:column;min-width:0}.ro-grid dt{color:var(--ink-2);font-size:var(--t-12);line-height:1.3}.ro-grid dd{margin:0;font:500 var(--t-14)/1.25 var(--font-num);font-variant-numeric:tabular-nums}.ro-actions{display:flex;flex-direction:column;align-items:stretch;gap:6px}.ro-actions .btn-quiet{justify-content:center}.ro-age{font-size:var(--t-12);white-space:nowrap}.ro-close{position:absolute;right:8px;top:8px}.btn-quiet.on{background:var(--brand);color:var(--on-brand);border-color:var(--brand);font-weight:600}@media (max-width: 1240px) and (min-width: 861px){.readout{grid-template-columns:minmax(140px,1fr) auto minmax(200px,1.4fr)}.ro-actions{grid-column:1 / -1;flex-direction:row;align-items:center}}.toasts{position:absolute;top:60px;right:12px;display:flex;flex-direction:column;gap:8px;width:min(340px,calc(100% - 24px));pointer-events:none}.toast{pointer-events:auto;display:flex;gap:10px;align-items:flex-start;text-align:left;background:var(--panel);border:1px solid var(--rule-2);border-left:6px solid var(--watch);border-radius:8px;padding:10px 12px}.toast-danger{border-left-color:var(--danger);background:var(--danger-bg)}.toast b{display:block}.toast span span{color:var(--ink-2);font-size:var(--t-12)}@media (prefers-reduced-motion: no-preference){.toast{animation:toast-in .22s ease-out}@keyframes toast-in{0%{transform:translateY(-6px);opacity:.4}}}.side-right{display:flex;flex-direction:column;padding:10px 8px;overflow:hidden}.stack{display:flex;flex-direction:column;gap:8px;min-height:0;flex:1}.stack ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;overflow-y:auto;min-height:0}.stack-all{border:1px solid var(--rule);background:var(--panel-2);border-radius:var(--r-ctl);padding:6px 4px;font-weight:600;font-size:var(--t-13)}.stack-all.on{background:var(--ink);color:var(--panel);border-color:var(--ink)}.storey{position:relative;width:100%;height:100%;display:grid;grid-template-columns:1fr;align-content:end;gap:2px;border:0;background:none;text-align:left;padding:6px 6px 9px;border-radius:6px 6px 0 0}.storey:hover{background:var(--panel-2)}.storey.on{background:var(--brand-2)}.storey.on:after{content:"";position:absolute;left:0;top:6px;bottom:9px;width:3px;background:var(--brand);border-radius:2px}.storey-label{display:flex;align-items:baseline;justify-content:space-between;gap:4px;flex-wrap:wrap}.storey-name{font:600 var(--t-14)/1.1 var(--font-num);white-space:nowrap}.storey-z{font:400 var(--t-12)/1 var(--font-num);color:var(--ink-2)}.storey-dots{display:flex;flex-wrap:wrap;gap:3px;min-height:9px}.storey-dots i{width:8px;height:8px;border-radius:50%;display:block}.storey-dots em{font-style:normal;font-size:10px;color:var(--ink-2);line-height:8px}.dot-danger{background:var(--danger);box-shadow:0 0 0 1.5px var(--danger-bg)}.dot-watch{background:var(--watch)}.dot-clear{background:var(--clear)}.dot-nodata{background:none;box-shadow:inset 0 0 0 1.5px var(--nodata)}.storey-slab{position:absolute;left:0;bottom:0;height:5px;background:var(--ink);border-radius:1px}.storey.has-danger .storey-slab{background:repeating-linear-gradient(-45deg,var(--danger) 0 4px,var(--ink) 4px 8px)}.roster{display:flex;flex-direction:column;height:100%;overflow:hidden}.roster-bar{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;padding:8px 10px 8px 12px;border-bottom:1px solid var(--rule)}.table-closed .roster-bar{border-bottom:0}.roster-bar h2{font-size:var(--t-16);font-weight:600;margin-right:6px}.roster-bar h2 .muted{font-weight:400;font-size:var(--t-13);margin-left:4px}.chips{display:flex;flex-wrap:wrap;gap:4px}.chips button{display:flex;align-items:center;gap:5px;border:1px solid var(--rule);background:var(--panel);border-radius:999px;padding:2px 10px;font-size:var(--t-12);font-variant-numeric:tabular-nums}.chips button.on{background:var(--ink);color:var(--panel);border-color:var(--ink)}.search{display:flex;align-items:center;gap:6px;border:1px solid var(--rule);background:var(--panel);border-radius:var(--r-ctl);padding:3px 8px;margin-left:auto;min-width:0}.search .icon{width:17px;height:17px;color:var(--ink-2)}.search input{border:0;background:none;outline:none;width:8rem;min-width:0}.roster-toggle{margin-left:-6px}.chev{display:inline-flex;transition:transform .15s}.chev.up{transform:rotate(180deg)}.table-wrap{overflow:auto;min-height:0;flex:1}table{border-collapse:collapse;width:100%;font-size:var(--t-13)}th{position:sticky;top:0;background:var(--panel);text-align:left;font-weight:500;color:var(--ink-2);border-bottom:1px solid var(--rule);white-space:nowrap;padding:0;z-index:1}th button{border:0;background:none;padding:7px 10px;width:100%;text-align:inherit;color:inherit;font-weight:500}th.n,td.n{text-align:right}.sort{margin-left:3px}td{padding:6px 10px;border-bottom:1px solid var(--rule);white-space:nowrap}td.n{font:500 var(--t-13)/1.3 var(--font-num);font-variant-numeric:tabular-nums}tbody tr{cursor:pointer}tbody tr:hover td{background:var(--panel-2)}tbody tr.selected td{background:var(--brand-2)}tbody tr.selected td:first-child{box-shadow:inset 4px 0 0 var(--brand)}.c-level{font-weight:600}.lvl{display:inline-flex;align-items:center;gap:6px}.history th,.mini th{padding:7px 10px}tr.lv-danger .c-level,tr.lv-danger .c-d{color:var(--danger-ink)}tr.lv-watch .c-level,tr.lv-watch .c-d{color:var(--watch-ink)}tr.lv-clear .c-level{color:var(--clear-ink)}tr.lv-nodata .c-level,tr.lv-nodata td{color:var(--nodata-ink)}.c-code{font-family:var(--font-num);color:var(--ink-2)}.c-name span{font-weight:500}.c-name small{color:var(--ink-2);margin-left:8px}.c-d{font-weight:700!important}td.nearest{text-decoration:underline;text-decoration-color:var(--rule-2);text-underline-offset:3px}.export-note{font-size:var(--t-12);color:var(--clear-ink)}.empty-row td{text-align:center;color:var(--ink-2);padding:18px;cursor:default}.sheet-scrim{position:fixed;inset:0;background:var(--scrim);display:flex;justify-content:flex-end;z-index:50}.sheet{width:min(480px,100%);height:100%;background:var(--panel);border-left:1px solid var(--rule);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);padding-right:env(safe-area-inset-right,0px);padding-bottom:env(safe-area-inset-bottom,0px)}.sheet.wide{width:min(820px,100%)}.sheet-head{display:flex;align-items:center;justify-content:space-between;padding:14px 16px 12px 20px;border-bottom:1px solid var(--rule)}.sheet-head h2{font:600 var(--t-20)/1.2 var(--font-num)}.sheet-body{overflow-y:auto;padding:16px 20px 32px;display:flex;flex-direction:column;gap:22px}.form-sec{display:flex;flex-direction:column;gap:10px}.form-sec h3{font-size:var(--t-16);font-weight:600}.form-sec>p{margin:0;max-width:62ch}.fields{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}.fields-1{grid-template-columns:1fr}.field{display:flex;flex-direction:column;gap:3px;min-width:0}.field-label{font-weight:500;font-size:var(--t-13)}.field-input{display:flex;align-items:center;gap:8px}.field-input input:not([type=range]){width:100%;min-width:0;border:1px solid var(--rule-2);background:var(--panel);border-radius:6px;padding:6px 9px;font-family:var(--font-num)}.field-input input[type=range]{flex:1;accent-color:var(--ink)}.field-input .unit{color:var(--ink-2);font-size:var(--t-12);white-space:nowrap}.field-hint{color:var(--ink-2);font-size:var(--t-12);line-height:1.4}.row-btns{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.row-btns.spread{justify-content:space-between}.notice{margin:0;padding:8px 12px;border-radius:6px;font-size:var(--t-13)}.notice-ok{background:color-mix(in srgb,var(--clear) 14%,var(--panel));color:var(--clear-ink)}.notice-err{background:var(--danger-bg);color:var(--danger-ink)}.radio-cards{display:grid;gap:8px}.radio-cards label{display:flex;gap:10px;align-items:flex-start;border:1px solid var(--rule);border-radius:8px;padding:10px 12px;cursor:pointer}.radio-cards label.on{border-color:var(--ink);box-shadow:inset 0 0 0 1px var(--ink)}.radio-cards input{accent-color:var(--ink);margin-top:4px}.radio-cards span{display:flex;flex-direction:column}.radio-cards .muted{font-size:var(--t-12)}.file-drop{position:relative;display:flex;align-items:center;justify-content:center;gap:8px;border:1.5px dashed var(--rule-2);border-radius:8px;padding:18px;color:var(--ink-2);cursor:pointer}.file-drop:hover{border-color:var(--ink);color:var(--ink)}.file-drop input{position:absolute;inset:0;opacity:0;cursor:pointer}.preview{display:flex;flex-direction:column;gap:8px}.mini td,.mini th{padding:4px 8px}.history td{cursor:pointer}@media (max-width: 860px){body{padding-block:0 8px}.app,.app.table-open{grid-template-columns:minmax(0,1fr);grid-template-rows:auto 54vh auto auto minmax(0,1fr);grid-template-areas:"top" "stage" "msel" "tabs" "pane";gap:0}.topbar{flex-wrap:wrap;gap:8px;padding-top:max(8px,env(safe-area-inset-top,0px));padding-bottom:8px;margin-bottom:8px}.brand-name{display:none}.building-switch{flex:1;min-width:0}.building-switch select{max-width:none;width:100%}.topbar-spacer{display:none}.tb-btn{padding:8px}.live{order:10;flex:1 1 55%;min-width:0}.seg{order:11}.tb-label{display:none}.seg button{padding:5px 10px}.stage-where{font-size:var(--t-12)}.stage-btn span,.legend{display:none}.m-sel{grid-area:msel;margin-top:8px}.m-sel .readout{position:relative;left:auto;right:auto;bottom:auto;grid-template-columns:minmax(0,1fr) auto;padding:12px 14px 12px 18px}.m-sel .ro-grid,.m-sel .ro-actions{grid-column:1 / -1}.m-sel .ro-actions{flex-direction:row;flex-wrap:wrap;align-items:center}.m-sel .ro-reading{border-left:0;padding-left:0;align-items:flex-end;margin-right:34px}.m-tabs{grid-area:tabs;display:flex;gap:4px;margin-top:8px;background:var(--panel-2);border:1px solid var(--rule);border-radius:var(--r-ctl);padding:3px}.m-tabs button{flex:1;border:0;background:none;padding:9px 6px;border-radius:5px;font-weight:600;color:var(--ink-2);display:flex;align-items:center;justify-content:center;gap:6px;min-height:44px}.m-tabs button[aria-selected=true]{background:var(--panel);color:var(--ink);box-shadow:0 0 0 1px var(--rule-2)}.badge{background:var(--danger);color:#fff;border-radius:999px;font:600 11px/1 var(--font-num);padding:3px 6px}.m-pane{grid-area:pane;margin-top:8px;background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-panel);overflow:auto;min-height:260px}.m-pane .queue{flex:none}.m-pane .alert-list{overflow:visible}.roster.compact{border:0}.roster.compact .opt{display:none}.roster.compact td,.roster.compact th button{padding-inline:7px}.roster.compact .search{margin-left:0;width:100%}.roster.compact .search input{width:100%}.stack-h{padding:10px}.stack-h ol{flex-direction:column}.stack-h li{height:auto}.stack-h .storey{grid-template-columns:9rem 1fr;align-items:center;padding:10px 8px 12px;min-height:48px}.stack-h .storey-label{justify-content:flex-start;gap:10px}.fields{grid-template-columns:1fr}.toasts{inset:auto 10px 10px;width:auto}.toast{padding:8px 10px}.alert-main,.btn-ack,.chips button{min-height:32px}}@media (max-width: 1180px) and (min-width: 861px){.tb-label{display:none}.app{grid-template-columns:minmax(260px,290px) minmax(0,1fr) 104px}}@media (prefers-reduced-motion: reduce){.live-on .live-dot{animation:none}.chev{transition:none}}.stage-notice{position:absolute;top:56px;left:50%;transform:translate(-50%);z-index:6;display:flex;align-items:center;gap:6px;max-width:min(620px,calc(100% - 24px));padding:6px 6px 6px 14px;border:1px solid var(--rule-2);box-shadow:0 6px 18px #06122b1f}.stage-notice .icon-btn{width:28px;height:28px;color:inherit}fieldset.fields{border:0;padding:0;margin:0;min-width:0}fieldset.fields:disabled input{background:var(--panel-2);color:var(--ink-2)}.field-input select,.member-list select{border:1px solid var(--rule-2);background:var(--panel);color:var(--ink);border-radius:6px;padding:6px 8px;font:inherit}.link-btn{border:0;background:none;padding:0;color:var(--brand);font-weight:500;text-decoration:underline;text-underline-offset:3px;cursor:pointer}.link-btn:disabled{color:var(--ink-2);cursor:default}.btn-primary{display:inline-flex;align-items:center;gap:6px}.btn-primary .icon{width:18px;height:18px}.btn-quiet.sm{padding:4px 10px;font-size:var(--t-13)}.btn-quiet.sm .icon{width:16px;height:16px}.btn-danger{background:var(--danger);color:#fff;border:0;border-radius:var(--r-ctl);padding:8px 16px;font-weight:600}.btn-danger:disabled{opacity:.45;cursor:not-allowed}.btn-danger-quiet{background:var(--panel);color:var(--danger-ink);border:1px solid color-mix(in srgb,var(--danger) 45%,var(--rule));border-radius:var(--r-ctl);padding:6px 12px;font-weight:500}.btn-danger-quiet:hover{border-color:var(--danger)}.back-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:2px;border:0;background:none;color:var(--ink-2);padding:2px 6px 2px 0;margin-bottom:-8px;font-weight:500}.back-btn:hover{color:var(--ink)}.back-btn .icon{width:18px;height:18px}.mono{font-family:var(--font-mono);font-size:var(--t-12)}.step{display:inline-grid;place-items:center;width:22px;height:22px;margin-right:8px;border-radius:50%;background:var(--brand-2);color:var(--brand);font:600 var(--t-12)/1 var(--font-num);vertical-align:2px}.form-sec h3{display:flex;align-items:center;gap:6px}.form-sec h3 .icon{width:18px;height:18px;color:var(--ink-2)}.b-intro{display:flex;gap:16px;align-items:flex-start;justify-content:space-between}.b-intro p{margin:0;max-width:60ch}.b-intro .btn-primary{flex:none}.b-group{border:1px solid var(--rule);border-radius:10px;overflow:hidden}.b-group-head{display:flex;align-items:center;gap:10px;padding:10px 12px;background:var(--panel-2);border-bottom:1px solid var(--rule)}.b-group-icon{display:grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--panel);color:var(--brand);border:1px solid var(--rule);flex:none}.b-group-icon .icon{width:18px;height:18px}.b-group-title{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.3}.b-group-title .muted{font-size:var(--t-12)}.b-group-tools{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.b-list{list-style:none;margin:0;padding:0}.b-row{display:flex;align-items:center;gap:12px;padding:10px 12px;border-top:1px solid var(--rule)}.b-row:first-child{border-top:0}.b-row.is-current{background:var(--brand-2);box-shadow:inset 3px 0 0 var(--brand)}.b-name{display:flex;flex-direction:column;min-width:0;flex:1;line-height:1.35}.b-name b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.b-name .muted{font-size:var(--t-12)}.b-actions{display:flex;align-items:center;gap:4px;flex:none}.b-badge{font-size:var(--t-12);font-weight:600;color:var(--brand);background:var(--panel);border:1px solid color-mix(in srgb,var(--brand) 40%,var(--rule));border-radius:999px;padding:2px 10px;white-space:nowrap}.b-badge.off{color:var(--ink-2);border-color:var(--rule)}.b-empty{padding:12px;font-size:var(--t-13)}.b-cta{display:flex;align-items:center;gap:12px;padding:12px;border:1px dashed var(--rule-2);border-radius:10px}.b-cta>.icon{color:var(--brand);flex:none}.b-cta>span{display:flex;flex-direction:column;flex:1;min-width:0}.b-cta .muted{font-size:var(--t-13)}.b-head{display:flex;flex-wrap:wrap;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--rule);border-radius:10px;background:var(--panel-2)}.b-head .b-name b{font-size:var(--t-16);white-space:normal}.b-head .notice{flex-basis:100%}.field-input.inline{margin-top:8px}.radio-off{display:flex;align-items:center;gap:10px;border:1px dashed var(--rule-2);border-radius:8px;padding:10px 12px;color:var(--ink-2)}.radio-off>span{display:flex;flex-direction:column;flex:1}.radio-off .muted{font-size:var(--t-12)}.sticky-actions{position:sticky;bottom:-32px;margin:0 -20px -32px;padding:12px 20px 16px;background:var(--panel);border-top:1px solid var(--rule)}.inline-form{display:flex;flex-wrap:wrap;align-items:flex-end;gap:10px}.field.grow{flex:1 1 220px}.danger-zone{border-top:1px solid var(--rule);padding-top:18px}.confirm-box{display:flex;flex-direction:column;gap:10px;padding:12px;border-radius:8px;background:var(--danger-bg)}.attention{padding:12px;margin:-12px;border-radius:10px;box-shadow:inset 0 0 0 2px color-mix(in srgb,var(--brand) 55%,transparent)}.token-box{display:flex;flex-direction:column;gap:8px;padding:12px;border-radius:8px;background:var(--brand-2);border:1px solid color-mix(in srgb,var(--brand) 30%,var(--rule))}.token{font:500 var(--t-13)/1.4 var(--font-mono);word-break:break-all;background:var(--panel);padding:8px 10px;border-radius:6px;border:1px solid var(--rule);-webkit-user-select:all;user-select:all}.token-json{margin:0;font:400 var(--t-12)/1.5 var(--font-mono);background:var(--panel);padding:8px 10px;border-radius:6px;border:1px solid var(--rule);overflow-x:auto;white-space:pre;-webkit-user-select:all;user-select:all}.token-list,.member-list{list-style:none;margin:0;padding:0;border:1px solid var(--rule);border-radius:8px}.token-list li,.member-list li{display:flex;align-items:center;gap:10px;padding:8px 12px;border-top:1px solid var(--rule)}.token-list li:first-child,.member-list li:first-child{border-top:0}.token-list li>span:first-child{display:flex;flex-direction:column;flex:1;min-width:0}.token-list .muted{font-size:var(--t-12)}.token-list li.revoked b{color:var(--ink-2);font-weight:500}.member-list .b-name{flex-direction:row;gap:8px;align-items:baseline;flex-wrap:wrap}.role{font-size:var(--t-12);font-weight:600;padding:2px 8px;border-radius:999px;background:var(--panel-2);border:1px solid var(--rule);white-space:nowrap}.role-owner{color:var(--brand);border-color:color-mix(in srgb,var(--brand) 40%,var(--rule))}.paste{width:100%;border:1px solid var(--rule-2);border-radius:6px;padding:8px 10px;font:400 var(--t-13)/1.5 var(--font-mono);background:var(--panel);color:var(--ink);resize:vertical}.mini tr.row-off td{color:var(--ink-2)}.pill{display:inline-block;font-size:var(--t-12);font-weight:600;padding:1px 8px;border-radius:999px;background:var(--panel-2);color:var(--ink-2);border:1px solid var(--rule)}.pill.on{color:var(--clear-ink);background:color-mix(in srgb,var(--clear) 12%,var(--panel));border-color:color-mix(in srgb,var(--clear) 35%,var(--rule))}.field-input input:not([type=range]),.field-input select{height:36px;box-sizing:border-box}.radio-cards .field-input{flex-direction:row;width:min(100%,440px)}.plan-picker{display:flex;flex-direction:column;gap:8px}.plan-picker .table-wrap{max-height:260px;border:1px solid var(--rule);border-radius:6px}.acct-card{display:flex;align-items:center;gap:12px;padding:12px;border:1px solid var(--rule);border-radius:10px;background:var(--panel-2)}.acct-avatar{display:grid;place-items:center;width:40px;height:40px;border-radius:50%;background:var(--brand);color:#fff;flex:none}.acct-who{display:flex;flex-direction:column;min-width:0}.acct-who b{overflow:hidden;text-overflow:ellipsis}.acct-who .muted{font-size:var(--t-12)}.acct-projects{list-style:none;margin:0;padding:0;border:1px solid var(--rule);border-radius:8px}.acct-projects li{display:flex;gap:10px;align-items:center;padding:8px 12px;border-top:1px solid var(--rule)}.acct-projects li:first-child{border-top:0}.acct-projects li>span:first-child{flex:1;font-weight:500}.ep-line{display:flex;align-items:center;gap:8px;padding:8px 12px;border-radius:8px;background:var(--panel-2);border:1px solid var(--rule);font-size:var(--t-13)}.ep-line>span{flex:1}.ep-line .icon{color:var(--brand);width:18px;height:18px}.help{border-top:1px solid var(--rule);padding-top:12px;font-size:var(--t-13)}.help summary{cursor:pointer;font-weight:500}.help ol{margin:8px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:6px;color:var(--ink-2)}.help code{font-family:var(--font-mono);font-size:var(--t-12)}.tb-account.acct-signed-in .icon{color:#93c5fd}@media (max-width: 1440px) and (min-width: 1181px){.tb-btn:not(.tb-account) .tb-label{display:none}}@media (max-width: 860px){.topbar .building-switch{order:9;flex:1 1 100%}.topbar .brand{margin-right:auto}.b-intro{flex-direction:column}.b-group-head{flex-wrap:wrap}.b-group-tools{flex-basis:100%;justify-content:flex-start}.stage-notice{top:46px}.sticky-actions{margin:0 -16px -32px;padding-inline:16px}}.form-sec .sub-h{margin:18px 0 4px;font-size:14px;font-weight:600;color:var(--ink)}.floor-edges select{min-height:36px;max-width:100%}.edge-cell{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.edge-state{font-size:var(--t-13, 13px);color:var(--ink-2);white-space:nowrap}.edge-state.on{color:var(--danger, #c62f43);font-weight:600}.table-wrap{overflow-x:auto}@media (max-width: 600px){.floor-edges .fe-z{display:none}}.draw-hint{position:absolute;left:50%;bottom:46px;translate:-50% 0;z-index:6;display:flex;align-items:center;gap:10px;max-width:calc(100% - 24px);background:var(--brand);color:var(--on-brand);border-radius:999px;padding:6px 6px 6px 14px;font-weight:600;font-size:var(--t-13)}.draw-hint .icon{width:18px;height:18px;flex:none}.draw-hint .btn-quiet{color:var(--ink)}.guard-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.guard-row{border:1px solid var(--rule);border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:6px}.guard-row.expired{background:var(--panel-2)}.guard-head{display:flex;align-items:flex-start;gap:10px;flex-wrap:wrap}.guard-title{display:flex;flex-direction:column;flex:1;min-width:12rem;line-height:1.35}.guard-title .muted{font-size:var(--t-12);font-variant-numeric:tabular-nums}.guard-mode{font-size:var(--t-12);font-weight:600;border-radius:6px;padding:2px 8px;white-space:nowrap}.guard-mode.m-watch{background:var(--brand-2);color:var(--brand)}.guard-mode.m-off{background:var(--panel-2);color:var(--ink-2);border:1px solid var(--rule)}.guard-row.expired .guard-mode{opacity:.6}.guard-note{margin:0;font-size:var(--t-13)}.guard-meta{margin:0;font-size:var(--t-12)}.pill.warn{color:var(--watch-ink);background:var(--watch-bg);border-color:color-mix(in srgb,var(--watch) 40%,var(--rule))}.pill.off{color:var(--danger-ink);background:var(--danger-bg);border-color:color-mix(in srgb,var(--danger) 35%,var(--rule))}.guard-form{display:flex;flex-direction:column;gap:12px;padding-top:4px}.fields-4{grid-template-columns:repeat(4,minmax(0,1fr))}.btn-danger.sm,.btn-danger-quiet.sm{padding:4px 10px;font-size:var(--t-13);display:inline-flex;align-items:center;gap:6px}.btn-danger-quiet .icon{width:16px;height:16px}.form-sec h3 .icon{flex:none}@media (max-width: 860px){.fields-4{grid-template-columns:1fr 1fr}.draw-hint{left:10px;right:10px;bottom:40px;translate:none;border-radius:12px;font-size:var(--t-12)}}fieldset.radio-cards{border:0;padding:0;margin:0;min-width:0}.perf-panel{position:absolute;top:56px;right:12px;z-index:6;width:min(340px,calc(100% - 24px));background:var(--panel);border:1px solid var(--rule);border-radius:var(--r-panel);box-shadow:0 8px 24px #0b1a331f;padding:10px 12px;font-size:12.5px}.perf-panel header{display:flex;align-items:center;gap:8px}.perf-panel header .muted{flex:1;font-size:11.5px}.perf-panel header .icon-btn{width:28px;height:28px}.perf-panel dl{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;margin:8px 0}.perf-panel dt{color:var(--ink-2);white-space:nowrap}.perf-panel dd{margin:0;font-family:var(--font-mono);font-size:11.5px;font-variant-numeric:tabular-nums;border-left:3px solid transparent;padding-left:6px}.perf-panel dd.ok{border-left-color:#16a34a}.perf-panel dd.warn{border-left-color:#f59e0b}.perf-panel dd.bad{border-left-color:#dc2626}.perf-panel footer{display:flex;gap:6px;flex-wrap:wrap}.perf-note{margin:6px 0 0;font-size:11px}.perf-chip{position:absolute;top:56px;right:12px;z-index:6;background:var(--panel);border:1px solid var(--rule);border-radius:999px;padding:5px 12px;font-family:var(--font-mono);font-size:12px}.is-mobile .perf-panel{top:52px;right:8px;width:calc(100% - 16px)}.roster-bar{position:relative}.roster-bar h2 .hold-note{position:absolute;right:12px;bottom:-13px;z-index:3;font-weight:500;box-shadow:0 0 0 2px var(--panel)}.hold-note{font-size:var(--t-12);color:var(--brand);background:var(--brand-2);border-radius:999px;padding:2px 9px;white-space:nowrap}.queue-head .hold-note{margin-left:auto;margin-right:8px}.relax-note{margin:4px 0 0 25px;font-size:var(--t-13);color:var(--ink-2);line-height:1.35}.ro-reading .relax-note{margin:2px 0 0;white-space:nowrap}.link-btn.queue-more{padding:10px 16px 14px;align-self:flex-start;color:var(--ink-2)}.alert-meta,.selcard-sub,.alert-foot,.reading-kind,.ro-grid dt,.legend,.storey-z,.field-hint,.toast span span,.ro-age{font-size:var(--t-13)}.btn-ack{font-size:var(--t-13);padding:5px 14px}.nav-hint{position:absolute;left:50%;bottom:16px;translate:-50% 0;z-index:5;pointer-events:none;max-width:calc(100% - 24px);text-align:center;background:color-mix(in srgb,var(--ink) 86%,transparent);color:var(--panel);border-radius:999px;padding:7px 14px;font-size:var(--t-13);font-weight:500}@media (prefers-reduced-motion: no-preference){.nav-hint{animation:hint-in .4s ease-out both}}@keyframes hint-in{0%{opacity:0;translate:-50% 8px}}@media (min-width: 861px){.toasts{inset:auto auto 12px 12px}.stage:has(.readout) .toasts{bottom:124px}.nav-hint{left:auto;right:12px;translate:0 0;animation:none}.ro-actions{flex-direction:row;flex-wrap:wrap;align-items:center}.ro-actions .ro-age{flex-basis:100%}.readout{padding-block:8px}}@media (max-width: 860px){.seg button{min-height:40px;padding:8px 14px}.tb-btn{min-width:44px;min-height:44px;justify-content:center}.alert-main,.chips button{min-height:44px}.btn-ack{min-height:44px;padding:8px 18px}.stage-where{display:none}.stage-btn{min-height:40px}.stage-btn span{display:inline;font-size:var(--t-12)}.legend{display:flex;margin-left:0;gap:4px 10px;padding:5px 8px;font-size:var(--t-12)}.legend .legend-title{display:none}.toast{padding:7px 10px}.toast b,.alert-meta,.selcard-sub,.alert-foot,.reading-kind,.ro-grid dt,.relax-note{font-size:var(--t-14)}.nav-hint{bottom:auto;top:112px}}.admin-sec>summary{cursor:pointer;color:var(--ink-2)}.admin-sec>summary h3{display:inline;font-size:var(--t-14);font-weight:500}.admin-sec[open]>summary{margin-bottom:8px}.stage:has(.readout) .nav-hint{display:none}.hold-note.off{visibility:hidden}.intro{position:fixed;inset:0;z-index:100;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;background-color:var(--i-bg);color:var(--i-ink);padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px));padding-top:env(safe-area-inset-top,0px);font-family:var(--font-ui);overflow:hidden}.intro:before{content:"";position:absolute;inset:0;pointer-events:none;background-image:linear-gradient(var(--i-line) 1px,transparent 1px),linear-gradient(90deg,var(--i-line) 1px,transparent 1px);background-size:24px 24px;-webkit-mask-image:radial-gradient(ellipse at 60% 45%,#000 35%,transparent 78%);mask-image:radial-gradient(ellipse at 60% 45%,#000 35%,transparent 78%)}.intro.tone-night:after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(640px circle at 72% 38%,rgba(59,130,246,.32),transparent 62%)}.intro>:not(.sr-only){position:relative;z-index:1}.tone-paper{--i-bg: var(--intro-paper);--i-ink: var(--intro-ink);--i-ink2: var(--intro-ink-2);--i-brand: var(--brand);--i-line: var(--intro-line);--i-track: var(--intro-track);--i-btn: var(--brand);--i-btn-ink: #fff;--i-outline: var(--intro-outline)}.tone-night{--i-bg: #06122b;--i-ink: #ffffff;--i-ink2: #a9b6cc;--i-brand: #7aa7ff;--i-line: rgba(255, 255, 255, .045);--i-track: rgba(255, 255, 255, .16);--i-btn: #3b82f6;--i-btn-ink: #fff;--i-outline: rgba(255, 255, 255, .24);color-scheme:dark}.intro .mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.intro :focus-visible{outline:3px solid var(--i-brand);outline-offset:3px;border-radius:6px}.intro-progress{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;padding-top:10px;max-width:1200px;width:100%;margin:0 auto}.intro-progress span{height:3px;border-radius:2px;background:var(--i-track);position:relative;overflow:hidden}.intro-progress span:after{content:"";position:absolute;inset:0;background:var(--i-brand);transform:scaleX(0);transform-origin:left;transition:transform .3s cubic-bezier(.2,0,0,1)}.intro-progress span.done:after{transform:scaleX(1)}.intro-top{display:flex;align-items:center;justify-content:space-between;max-width:1200px;width:100%;margin:0 auto;padding-block:10px 0}.intro-brand{display:flex;align-items:center;gap:10px;font-weight:600;font-size:1rem}.intro-mark{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:var(--i-btn);color:#fff;font:700 1rem/1 var(--font-num)}.intro-skip{min-height:48px;padding:0 16px;border:1px solid transparent;background:none;color:var(--i-ink2);font-weight:500;border-radius:10px}.intro-skip:hover{color:var(--i-ink);border-color:var(--i-outline)}.intro-stage{min-height:0;overflow-y:auto;overflow-x:hidden;display:grid;padding-block:8px}.intro-live{display:grid;place-items:center;min-height:100%}.slide{width:100%;max-width:1200px;display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(32px,5vw,72px);align-items:center;padding-block:12px}.slide-text{display:flex;flex-direction:column;gap:18px;min-width:0}.slide-eyebrow{margin:0;display:flex;align-items:baseline;gap:12px;color:var(--i-brand);font-weight:600;font-size:.9375rem}.slide-eyebrow .mono{font-size:.875rem;padding:2px 8px;border:1px solid currentColor;border-radius:6px;line-height:1.4}.slide-problem .slide-h{font-size:clamp(1.875rem,3vw,3rem)}.slide-h{margin:0;font-weight:600;font-size:clamp(2rem,3.4vw,3.5rem);line-height:1.3;letter-spacing:0;text-wrap:balance;color:var(--i-ink)}.slide-p{margin:0;font-family:var(--font-read);font-size:clamp(1.0625rem,1.3vw,1.3125rem);line-height:1.7;color:var(--i-ink2);max-width:32em}@media (min-width: 640px){.slide-h .nb{white-space:nowrap}}.slide-visual{position:relative;min-width:0;padding:18px}.mark{position:absolute;width:12px;height:12px;opacity:.45}.mark:before,.mark:after{content:"";position:absolute;background:var(--i-brand)}.mark:before{left:5.5px;top:0;width:1px;height:12px}.mark:after{top:5.5px;left:0;height:1px;width:12px}.mark.tl{left:0;top:0}.mark.tr{right:0;top:0}.mark.bl{left:0;bottom:0}.mark.br{right:0;bottom:0}.appwin{background:var(--panel);border:1px solid rgba(11,26,51,.08);border-radius:14px;overflow:hidden;color:var(--ink);box-shadow:0 1px 2px #0b1a330f,0 14px 32px -10px #0b1a3333,0 40px 80px -30px #1d4ed847}.tone-night .appwin{border-color:#ffffff1a}.appwin-bar{height:44px;display:flex;align-items:center;gap:10px;padding:0 14px;background:#0a1a3a;color:#fff;font-size:.875rem}.appwin-mark{width:22px;height:22px;border-radius:6px;display:grid;place-items:center;background:#1d4ed8;font:700 .75rem/1 var(--font-num)}.appwin-title{font-weight:600;white-space:nowrap}.appwin-title em{font-style:normal;font-weight:400;color:#a9b6cc;margin-left:6px}.appwin-right{margin-left:auto;display:flex;align-items:center}.appwin-counts{display:flex;align-items:center;gap:10px;font:600 .8125rem/1 var(--font-num);font-variant-numeric:tabular-nums}.cnt{display:inline-flex;align-items:center;gap:4px}.appwin-live{display:inline-flex;align-items:center;gap:6px;color:#a9b6cc;font:500 .75rem/1 var(--font-ui);margin-left:4px}.appwin-live i{width:7px;height:7px;border-radius:50%;background:#4ade80}.appwin-body{position:relative;aspect-ratio:16 / 10;background:var(--scene-sky);overflow:hidden}.appwin-view{font:500 .75rem/1 var(--font-ui);color:#a9b6cc;border:1px solid rgba(255,255,255,.18);border-radius:6px;padding:5px 8px}.stack3d{position:absolute;inset:0;perspective:1500px;display:grid;place-items:center;container-type:size}.stack3d-rot{position:relative;width:82%;aspect-ratio:1.33;transform:translateY(21%) rotateX(56deg) rotate(-34deg);transform-style:preserve-3d}.stack3d-floor{position:absolute;inset:0;transform:translateZ(calc(var(--z) * 5.2cqw));filter:drop-shadow(0 6px 6px rgba(11,26,51,.16))}.stack3d-floor canvas{width:100%;height:100%;display:block}.falls{display:flex;flex-direction:column;gap:16px;color:var(--i-ink)}.falls-num{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap}.falls-num .big{font:700 clamp(4.5rem,9vw,9rem)/.95 var(--font-num);letter-spacing:-.02em;font-variant-numeric:tabular-nums}.falls-num .of{font-size:clamp(1.125rem,1.6vw,1.5rem);color:var(--i-ink2)}.waffle{width:100%;aspect-ratio:2.12;display:block}.falls-key{display:flex;flex-wrap:wrap;gap:8px 22px;color:var(--i-ink2);font-size:.9375rem}.falls-key span{display:inline-flex;align-items:center;gap:8px}.falls-key i{width:12px;height:12px;border-radius:2px;display:inline-block}.k-fall{background:#fff}.k-other{background:#93b2ff47}.falls-src{margin:0;color:var(--i-ink2);font-size:.875rem}.falls-src a{color:inherit;text-underline-offset:3px}.pipe{--g: 30px}.pipe-row{list-style:none;margin:0 0 var(--g);padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--g)}.pipe-node{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--panel);color:var(--ink);border:1px solid rgba(29,78,216,.18);border-radius:12px;padding:16px 14px 18px}.pipe-icon{position:relative;width:46px;height:46px;display:grid;place-items:center;border-radius:10px;background:var(--brand-2);color:var(--brand);margin-bottom:6px;flex:none}.pipe-badge{position:absolute;top:-7px;right:-12px;display:inline-flex;align-items:center;gap:3px;background:#dc2626;color:#fff;font:700 .6875rem/1 var(--font-num);padding:3px 6px;border-radius:999px}.pipe-badge .sicon-danger{fill:#fff}.pipe-t{font-weight:600;font-size:1rem;display:block}.pipe-d{font-family:var(--font-read);font-size:.8125rem;line-height:1.55;color:var(--ink-2);display:block}.pipe-link{position:absolute;left:100%;top:38px;width:var(--g);height:2px;background:var(--i-brand);transform-origin:left}.pipe-link:after{content:"";position:absolute;right:-1px;top:-4px;border:5px solid transparent;border-left:7px solid var(--i-brand);border-right:0}.pipe-lane{position:relative;width:calc(50% - var(--g) / 2);margin-left:calc(25% - var(--g) / 4);display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px dashed rgba(29,78,216,.45);border-radius:12px;background:color-mix(in srgb,var(--panel) 70%,transparent);color:var(--ink)}.pipe-up{position:absolute;bottom:100%;right:calc(25% - var(--g) / 4 - 1px);width:2px;height:var(--g);background:var(--i-brand)}.pipe-up:after{content:"";position:absolute;top:-1px;left:-4px;border:5px solid transparent;border-bottom:7px solid var(--i-brand);border-top:0}@media (prefers-reduced-motion: no-preference){.pipe.run .pipe-link{animation:pipe-draw .42s cubic-bezier(.2,1,.2,1) both;animation-delay:calc(var(--i) * .26s + .45s)}.pipe.run .pipe-up{animation:pipe-rise .42s cubic-bezier(.2,1,.2,1) 1.3s both;transform-origin:bottom}}@keyframes pipe-draw{0%{transform:scaleX(0)}}@keyframes pipe-rise{0%{transform:scaleY(0)}}.edge{display:flex;flex-direction:column;gap:14px}.edge-canvas{position:absolute;inset:0;transition:transform .5s cubic-bezier(.2,1,.2,1)}.edge-canvas.tilt{transform:perspective(900px) rotateX(46deg) scale(.9)}.edge-canvas canvas{width:100%;height:100%;display:block}.edge-toast{position:absolute;top:12px;right:12px;max-width:70%;display:flex;gap:10px;align-items:flex-start;background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);color:#0b1a33;border-left:4px solid #dc2626;border-radius:10px;padding:10px 12px;box-shadow:0 10px 24px -10px #0b1a3359;font-size:.875rem}.edge-toast b{display:block}.edge-toast span span{color:#5b6b86;font-size:.8125rem}@media (prefers-reduced-motion: no-preference){.edge-toast{animation:toast-in .3s cubic-bezier(.05,.7,.1,1) both}}@keyframes toast-in{0%{transform:translateY(-8px);opacity:0}}.edge-under{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px 20px}.edge-legend{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.875rem;color:var(--i-ink2)}.edge-legend li{display:inline-flex;align-items:center;gap:8px}.edge-legend b{color:var(--i-ink);font-weight:600}.edge-legend i{width:18px;height:10px;border-radius:2px;display:inline-block}.sw-d{background:repeating-linear-gradient(-45deg,var(--band-danger) 0 4px,var(--band-danger-2) 4px 8px)}.sw-w{background:var(--band-watch)}.sw-c{background:var(--band-clear)}.edge-ctl{display:flex;gap:8px}.seg-mini{display:inline-flex;border:1px solid var(--i-outline);border-radius:10px;padding:3px}.seg-mini button{min-height:40px;min-width:52px;border:0;background:none;border-radius:7px;color:var(--i-ink2);font-weight:600}.seg-mini button[aria-pressed=true]{background:var(--i-btn);color:var(--i-btn-ink)}.btn-line{min-height:48px;padding:0 16px;border-radius:10px;border:1px solid var(--i-outline);background:none;color:var(--i-ink);font-weight:500}.startlist{list-style:none;margin:0;padding:0;display:grid;gap:2px}.startlist li{display:grid;grid-template-columns:minmax(0,12em) minmax(0,1fr);gap:4px 24px;padding:16px 4px 16px 18px;border-top:1px solid rgba(255,255,255,.1);position:relative}.startlist li:last-child{border-bottom:1px solid rgba(255,255,255,.1)}.startlist li:before{content:"";position:absolute;left:0;top:22px;width:6px;height:6px;border-radius:2px;background:#7aa7ff}.startlist b{font-weight:600;font-size:1.0625rem;color:#fff}.startlist span{font-family:var(--font-read);color:#a9b6cc;line-height:1.6}.slide-cta{display:flex;flex-direction:column;align-items:flex-start;gap:12px;margin-top:8px}.cta-primary{min-height:56px;padding:0 32px;border:0;border-radius:12px;background:var(--i-btn);color:var(--i-btn-ink);font-weight:600;font-size:1.0625rem}.cta-primary:hover{filter:brightness(1.08)}.cta-note{margin:0;color:var(--i-ink2);font-size:.875rem}.intro-nav{display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1200px;width:100%;margin:0 auto;padding-block:14px max(18px,env(safe-area-inset-bottom,0px));border-top:1px solid var(--i-track)}.intro-where{display:flex;align-items:center;gap:20px;min-width:0}.intro-count{font-size:1rem;color:var(--i-ink);white-space:nowrap}.intro-chapters{display:flex;gap:4px}.intro-chapters button{min-height:40px;padding:0 10px;border:0;background:none;color:var(--i-ink2);font-size:.875rem;border-radius:8px;position:relative}.intro-chapters button:hover{color:var(--i-ink)}.intro-chapters button.on{color:var(--i-ink);font-weight:600}.intro-chapters button.on:after{content:"";position:absolute;left:10px;right:10px;bottom:4px;height:2px;background:var(--i-brand);border-radius:1px}.intro-btns{display:flex;gap:8px;flex:none}.nav-back,.nav-next{min-height:56px;min-width:56px;padding:0 26px;border-radius:12px;font-weight:600;font-size:1rem}.nav-back{border:1px solid var(--i-outline);background:none;color:var(--i-ink)}.nav-next{border:0;background:var(--i-btn);color:var(--i-btn-ink)}.nav-next:hover{filter:brightness(1.08)}@media (prefers-reduced-motion: no-preference){.slide.enter.fwd{animation:in-fwd .4s cubic-bezier(.05,.7,.1,1) both}.slide.enter.back{animation:in-back .4s cubic-bezier(.05,.7,.1,1) both}.slide.leave.fwd{animation:out-fwd .2s cubic-bezier(.3,0,.8,.15) both}.slide.leave.back{animation:out-back .2s cubic-bezier(.3,0,.8,.15) both}.slide.enter .slide-text>*{animation:rise .5s cubic-bezier(.2,1,.2,1) both}.slide.enter .slide-text>:nth-child(2){animation-delay:60ms}.slide.enter .slide-text>:nth-child(3){animation-delay:.12s}.slide.enter .slide-text>:nth-child(4){animation-delay:.16s}.slide.enter .slide-visual{animation:rise .5s cubic-bezier(.2,1,.2,1) .18s both}}@media (prefers-reduced-motion: reduce){.slide.enter{animation:fade .15s linear both}.intro-progress span:after,.edge-canvas{transition:none}}@keyframes in-fwd{0%{transform:translate(30px);opacity:0}}@keyframes in-back{0%{transform:translate(-30px);opacity:0}}@keyframes out-fwd{to{transform:translate(-30px);opacity:0}}@keyframes out-back{to{transform:translate(30px);opacity:0}}@keyframes rise{0%{transform:translateY(16px);opacity:0}}@keyframes fade{0%{opacity:0}}@media (max-width: 900px){.slide{grid-template-columns:minmax(0,1fr);gap:18px;align-items:start}.slide-visual{order:-1;padding:12px}.slide-h{font-size:clamp(1.625rem,6.4vw,2.25rem)}.slide-p{font-size:1.0625rem}.intro-chapters{display:none}.nav-back,.nav-next{padding:0 20px}.pipe{--g: 14px}.pipe-row{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.pipe-link,.pipe-up{display:none}.pipe-lane{width:100%;margin-left:0}.startlist li{grid-template-columns:minmax(0,1fr)}.falls-num .big{font-size:clamp(4rem,20vw,6rem)}.edge-toast{max-width:86%;padding:8px 10px}.appwin-title em,.appwin-live{display:none}}@media (max-width: 420px){.pipe-row{grid-template-columns:minmax(0,1fr)}.intro-skip{padding:0 10px}}
