/* Static · Minimal. Luke Steuber. */
@font-face{font-family:"Plex Mono";src:url("./fonts/IBMPlexMono-500.woff2") format("woff2");font-weight:500;font-display:swap}@font-face{font-family:"Plex Sans";src:url("./fonts/IBMPlexSans-400.woff2") format("woff2");font-weight:400;font-display:swap}
:root{color-scheme:light;--bg:#fff;--ink:#000;--text:#111;--sub:#555;--line:#8a8a8a;--faint:#d1d1d1;--cleared:#f7f7f7;--scrim:rgba(255,255,255,.9);--mono:"Plex Mono",monospace;--sans:"Plex Sans",sans-serif}
@media(prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--bg:#000;--ink:#fff;--text:#eee;--sub:#aaa;--line:#888;--faint:#444;--cleared:#0b0b0b;--scrim:rgba(0,0,0,.9)}}:root[data-theme=dark]{color-scheme:dark;--bg:#000;--ink:#fff;--text:#eee;--sub:#aaa;--line:#888;--faint:#444;--cleared:#0b0b0b;--scrim:rgba(0,0,0,.9)}
*{box-sizing:border-box;border-radius:0}body{margin:0;height:100dvh;overflow:hidden;background:var(--bg);color:var(--text);font:1rem/1.45 var(--sans);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}button,select{font:inherit;color:inherit}button{cursor:pointer}button:disabled{opacity:.35;cursor:default}button:focus-visible,select:focus-visible{outline:2px solid var(--ink);outline-offset:3px}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
header{position:fixed;inset:max(14px,env(safe-area-inset-top)) 12px auto;pointer-events:none;z-index:2;text-align:center;font:500 .8125rem/1.4 var(--mono);color:var(--sub)}.readout{letter-spacing:.02em}#objective{display:flex;justify-content:center;gap:16px;align-items:center;margin-top:8px;height:22px}#objective span{display:flex;gap:6px;align-items:center}svg.mark{width:20px;height:20px;stroke:currentColor;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round;flex:none}
#board{position:absolute;inset:68px 12px 206px;overflow:auto;overscroll-behavior:contain;touch-action:manipulation;scrollbar-width:thin}#scene{position:relative;min-width:100%;min-height:100%;margin:auto}#lines,#rooms,#people{position:absolute;inset:0}#lines{width:100%;height:100%;overflow:visible;pointer-events:none}.link{stroke:var(--faint);stroke-width:1.2}.planned{fill:none;stroke:var(--ink);stroke-width:1.6;stroke-dasharray:4 4}.route-end{fill:var(--bg);stroke:var(--ink);stroke-width:1.6}
.room{position:absolute;background:var(--bg);border:1px solid var(--line);color:var(--sub);padding:0;transform:translate(-50%,-50%);text-align:left}.room.cleared{background:var(--cleared);border-color:var(--faint)}.room.reachable{border-color:var(--ink);color:var(--ink)}.room.origin{border-style:dashed}.room.queued{border:2px dashed var(--ink)}.room.ready{outline:2px solid var(--ink);outline-offset:4px}.room.refused{outline:2px dashed var(--ink);outline-offset:4px}.room:disabled{opacity:1;cursor:default}.room-name{position:absolute;bottom:calc(100% + 5px);left:0;white-space:nowrap;max-width:100%;overflow:hidden;text-overflow:ellipsis;font:500 .6875rem/1.2 var(--mono);color:var(--sub)}.room-state{position:absolute;right:7px;bottom:7px;display:flex;gap:5px;align-items:center}.room-data{position:absolute;right:7px;top:7px;display:flex;gap:5px;align-items:center}.candidate{font:500 19px/1 var(--mono);color:var(--ink)}.odds{position:absolute;right:6px;bottom:36px;font:500 .75rem/1 var(--mono);color:var(--ink)}.security{display:flex;gap:3px;position:absolute;left:8px;bottom:6px}.security i{height:5px;width:2px;background:var(--sub)}
.person{position:absolute;display:grid;place-items:center;transform:translate(-50%,-50%);background:var(--bg);color:var(--ink);border:1px solid var(--ink);padding:6px;min-width:44px;min-height:44px;z-index:3;touch-action:manipulation;transition:left .3s cubic-bezier(.3,.7,.2,1),top .3s cubic-bezier(.3,.7,.2,1)}.person>svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.person .crew-tile{display:none}.person.picked{background:var(--ink);color:var(--bg);outline:2px solid var(--ink);outline-offset:3px}.person.pending:after{content:"";position:absolute;right:-4px;top:-4px;width:6px;height:6px;border:1px solid var(--ink);background:var(--bg)}.person.down{opacity:.6;background:repeating-linear-gradient(45deg,var(--bg),var(--bg) 3px,var(--faint) 3px,var(--faint) 4px)}.person:disabled:not(.down){opacity:1}.hp{position:absolute;bottom:3px;left:50%;transform:translateX(-50%);display:flex;gap:3px}.hp i{width:3px;height:3px;border:1px solid currentColor}.hp i.on{background:currentColor}.failure{position:absolute;inset:-7px;border:2px dashed var(--ink);pointer-events:none}.failure:after{content:"×";position:absolute;right:-12px;top:-14px;font:500 18px/1 var(--mono);background:var(--bg);color:var(--ink);padding:1px}.person.wounded .failure{border-style:solid}.person.wounded .failure:after{content:"−1";font-size:12px}.person .collected{position:absolute;right:-10px;top:-10px;background:var(--bg);padding:1px;stroke:var(--ink)}
#turn{position:fixed;bottom:max(64px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);width:min(480px,calc(100vw - 24px));display:flex;flex-direction:column;align-items:center;gap:8px}#heat-wrap{width:min(320px,100%);font:500 .6875rem/1.3 var(--mono);color:var(--sub)}#heat-label{display:block;margin-bottom:5px;text-align:center}#heat{height:4px;position:relative;background:var(--faint)}#heat i{position:absolute;left:0;top:0;height:100%}#heat-maybe{background:repeating-linear-gradient(90deg,var(--ink),var(--ink) 1px,transparent 1px,transparent 4px)}#heat-sure{background:var(--line)}#heat-now{background:var(--ink)}#result{font:500 .75rem/1.4 var(--mono);min-height:34px;max-height:52px;overflow:auto;text-align:center;white-space:pre-line;color:var(--sub);width:100%}#result.terminal{color:var(--ink);min-height:45px}#actions{display:flex;gap:12px;align-items:center}#approaches{display:flex}#approaches button{min-width:56px;min-height:48px;padding:8px;background:none;border:0;font:500 .8125rem/1 var(--mono);color:var(--sub)}#approaches [aria-checked=true]{color:var(--ink);text-decoration:underline;text-underline-offset:8px;text-decoration-thickness:1px}#go-btn{border:1px solid transparent}#go-btn:not(:disabled){border-color:var(--ink)}#go-btn.next{width:auto;padding:12px;display:flex;gap:8px;font:500 .8125rem/1.2 var(--mono)}
.toolbar{position:fixed;bottom:max(6px,env(safe-area-inset-bottom));left:8px;right:8px;display:flex;justify-content:space-between}.toolbar>div{display:flex}.ib{display:inline-grid;place-items:center;width:48px;height:48px;min-width:48px;min-height:48px;background:none;color:var(--ink);border:0;padding:12px}.ib svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}.ib[hidden]{display:none}.ib:active{transform:scale(.95)}
.sheet{width:min(38rem,calc(100vw - 16px));max-height:calc(100dvh - 16px);padding:0;border:1px solid var(--ink);background:var(--bg);color:var(--text)}.sheet[open]{display:flex;flex-direction:column}.sheet::backdrop{background:var(--scrim)}.sheet-head{display:flex;justify-content:space-between;align-items:center;padding:8px 16px;border-bottom:1px solid var(--faint);flex:none}.sheet-head h2{font:500 1rem/1.4 var(--mono);margin:0}.sheet-head form{margin:0}.sheet-body{padding:20px 24px;overflow:auto;overscroll-behavior:contain;touch-action:auto;min-height:0}.sheet-body p{margin:0 0 16px}.sheet footer{padding:12px 24px;border-top:1px solid var(--faint);color:var(--sub);font-size:14px}.row{display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:52px;border-bottom:1px solid var(--faint)}.row select,.row button,#recover-btn{min-height:44px;background:none;border:0;padding:8px;color:var(--ink)}.row button,#recover-btn{text-decoration:underline;text-underline-offset:4px}.note{font-size:13px;color:var(--sub);margin-top:12px!important}#legend{display:grid;grid-template-columns:1fr 1fr;gap:12px;font-size:13px;margin-bottom:24px}#legend span{display:flex;align-items:center;gap:10px}#practice{border-top:1px solid var(--faint);padding-top:16px}#lesson-title{font:500 .875rem/1.4 var(--mono);margin:0 0 12px}#lesson-map{position:relative;width:100%;height:250px;overflow:auto}#lesson-map .room{transform:none}.lesson-person{position:absolute;z-index:2;min-width:44px;min-height:44px;padding:8px;background:var(--bg);border:1px solid var(--ink);color:var(--ink)}.lesson-person svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.5}.lesson-person .crew-tile{display:none}.lesson-person[aria-pressed=true]{background:var(--ink);color:var(--bg)}#lesson-actions{display:flex;justify-content:center;gap:4px}#lesson-actions button{min-height:44px;min-width:48px;background:none;border:0;padding:8px}#lesson-actions .chosen{text-decoration:underline}#lesson-result{min-height:40px;font-size:13px;margin:8px 0!important}#lesson-text{min-height:46px;font-size:14px}#lesson-count{font:500 .75rem/1 var(--mono)}
@media(orientation:landscape) and (max-height:500px){header{left:auto;right:12px;width:232px;top:12px}#board{inset:8px 260px 8px 8px}#turn{left:auto;right:12px;transform:none;bottom:64px;width:232px}#heat-wrap{width:220px}#result{max-height:56px}#actions{gap:8px}#approaches button{min-width:52px}.toolbar{left:auto;right:8px;width:240px}.sheet-body{padding:16px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}}:root[data-motion=reduce] *{animation:none!important;transition:none!important}
@media(forced-colors:active){:root{--bg:Canvas;--ink:CanvasText;--text:CanvasText;--sub:CanvasText;--line:GrayText;--faint:GrayText;--cleared:Canvas}.person.picked{color:HighlightText;background:Highlight;forced-color-adjust:none}#heat i{forced-color-adjust:none}}

#people{pointer-events:none}.person{pointer-events:auto}.room-state{display:grid;grid-template-columns:repeat(2,18px);gap:2px;right:5px;bottom:5px}.room-state svg.mark{width:18px;height:18px}.room-data{top:auto;bottom:calc(100% + 3px);right:0}.room:has(.room-data:not(:empty)) .room-name{max-width:calc(100% - 44px)}.odds{right:auto;bottom:auto;left:50%;top:50%;transform:translate(-50%,-50%);font-size:14px}

#heat:after{content:"";position:absolute;left:60%;top:-2px;width:1px;height:8px;background:var(--ink)}

.room .odds{top:36%}
