@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:400;src:url(./barlow-latin-400-normal-qiz4-Cze.woff2)format("woff2"),url(./barlow-latin-400-normal-fsAxiSwU.woff)format("woff")}@font-face{font-family:Barlow;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-latin-600-normal-DILqtrty.woff2)format("woff2"),url(./barlow-latin-600-normal-CNwfPWQD.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:600;src:url(./barlow-condensed-latin-600-normal-DepVgxBB.woff2)format("woff2"),url(./barlow-condensed-latin-600-normal-BFJEwTuo.woff)format("woff")}@font-face{font-family:Barlow Condensed;font-style:normal;font-display:swap;font-weight:700;src:url(./barlow-condensed-latin-700-normal-v1xN8_Wq.woff2)format("woff2"),url(./barlow-condensed-latin-700-normal-Dmwat-ge.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:500;src:url(./ibm-plex-mono-latin-500-normal-DSY6xOcd.woff2)format("woff2"),url(./ibm-plex-mono-latin-500-normal-CB9ihrfo.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:600;src:url(./ibm-plex-mono-latin-600-normal-BgSNZQsw.woff2)format("woff2"),url(./ibm-plex-mono-latin-600-normal-DWFSQ4vo.woff)format("woff")}:root{--ink:#0e1420;--land:#16202f;--water:#0b1626;--ripple:#24405e;--contour:#46587a;--highland:#1d2a3e;--grid-line:#1e2a3c;--steel:#5a6b85;--steel-lit:#7e92b0;--amber:#ffc94d;--amber-hot:#ffe8a3;--text:#e8edf5;--text-dim:#8fa0b8;--alert:#e4572e;--font-ui:"Barlow", system-ui, -apple-system, "Segoe UI", sans-serif;--font-display:"Barlow Condensed", var(--font-ui);--font-mono:"IBM Plex Mono", ui-monospace, "SF Mono", Menlo, monospace;--radius:4px;--text-scale:1}:root[data-large-text]{--text-scale:1.2}@property --frame{syntax:"<color>";inherits:true;initial-value:#5a6b85}@property --dot{syntax:"<color>";inherits:true;initial-value:#5a6b85}:root[data-contrast]{--ripple:#3a5f8c;--contour:#6d87b0;--highland:#24344c;--grid-line:#2e405a;--steel:#8ba0bf;--steel-lit:#adc0dc;--text-dim:#b3c2d8}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{background:var(--ink);height:100%}body{font-family:var(--font-ui);background:var(--ink);color:var(--text);min-height:100vh;min-height:100dvh;padding:12px 12px 36px;padding-top:max(12px, env(safe-area-inset-top));padding-left:max(12px, env(safe-area-inset-left));padding-right:max(12px, env(safe-area-inset-right));padding-bottom:max(36px, env(safe-area-inset-bottom));flex-direction:column;align-items:center;font-weight:400;display:flex}.app{flex-direction:column;gap:12px;width:100%;max-width:540px;display:flex}header{justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 0;display:flex}.header-side{align-items:center;gap:10px;display:flex}.wordmark{font-family:var(--font-display);letter-spacing:.06em;align-items:center;gap:8px;font-size:clamp(26px,6.5vw,32px);font-weight:700;display:flex}.daytag{color:var(--text-dim);font-size:calc(12px * var(--text-scale));letter-spacing:.04em;text-align:right;font-weight:600;line-height:1.5}.daytag strong{color:var(--text);font-family:var(--font-mono);font-weight:500}.dedication{text-align:center;color:var(--text-dim);opacity:.5;font-size:calc(12px * var(--text-scale));letter-spacing:.2em;margin-top:2px}.sr-only{white-space:nowrap;clip-path:inset(50%);border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.glyph{vertical-align:-.3em;width:1.3em;height:1.3em;color:var(--steel-lit)}.glyph-lg{vertical-align:-.4em;width:1.6em;height:1.6em}.glyph-mark{vertical-align:baseline;flex:none;width:1.05em;height:1.05em}.icon-glyph{width:1.3em;height:1.3em;color:var(--steel-lit)}.dedication .icon-glyph{vertical-align:-.2em;width:1em;height:1em;color:var(--amber)}.confetti{pointer-events:none;z-index:60;width:100%;height:100%;position:fixed;inset:0}button.icon-btn{padding:9px 11px;line-height:1}button.icon-btn .icon-glyph{width:18px;height:18px;color:var(--text-dim);display:block}[data-reduce-motion] *,[data-reduce-motion] :before,[data-reduce-motion] :after{transition:none!important;animation:none!important}.board-wrap{border-radius:var(--radius);border:1px solid var(--grid-line);position:relative;overflow:hidden}svg#board{touch-action:manipulation;width:100%;height:auto;display:block}.hud{pointer-events:none;z-index:2;justify-content:space-between;align-items:center;gap:12px;height:5.46219%;display:flex;position:absolute;top:0;left:12px;right:12px}.hud span{font-size:calc(clamp(10px, 2.5vw, 12px) * var(--text-scale));white-space:nowrap;line-height:1}.hud .lbl{text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);font-size:.92em;font-weight:600}.hud b{font-family:var(--font-mono);color:var(--text);font-weight:500}.hud .unit{color:var(--text-dim);font-size:.85em}.hud #mwChip.live b{color:var(--amber)}.hud #mwChip b{transition:color var(--cell-ms,.15s) ease-out}.hud #mwChip.best-flash b{animation:best-flash var(--best-flash,.32s) ease-out}@keyframes best-flash{0%{color:var(--amber-hot);text-shadow:0 0 8px #ffc94d73}to{color:var(--amber);text-shadow:none}}.hud span.shake{animation:.35s shake}@keyframes shake{0%,to{transform:translate(0)}25%{transform:translate(-4px)}75%{transform:translate(4px)}}.range-pulse{fill:none;stroke:var(--steel);stroke-width:1.6px;stroke-dasharray:7 7;pointer-events:none;animation:pulsefade var(--range-pulse,.9s) ease-out forwards}@keyframes pulsefade{0%{opacity:.9}55%{opacity:.75}to{opacity:0}}.deny-pulse{fill:none;stroke:var(--steel);stroke-width:2px;pointer-events:none;animation:denyfade var(--deny-pulse,.2s) ease-out forwards}@keyframes denyfade{0%{opacity:.9}to{opacity:0}}.survey-marker{fill:none;stroke:var(--steel);stroke-width:1.6px;stroke-dasharray:6 6;opacity:.7;pointer-events:none}.span-preview{fill:none;stroke:var(--steel);stroke-width:1.2px;stroke-dasharray:4 8;opacity:.45;pointer-events:none}.plan-cost{font-family:var(--font-mono);fill:var(--steel-lit);text-anchor:middle;pointer-events:none;font-size:30px;font-weight:500}.ref-wire{fill:none;stroke:var(--steel);stroke-width:1.6px;stroke-dasharray:7 7;opacity:.75;pointer-events:none}.ref-node{fill:none;stroke:var(--steel-lit);stroke-width:1.6px;opacity:.85;pointer-events:none}.key-cursor{fill:none;stroke:var(--amber);stroke-width:2px;pointer-events:none}#board:focus{outline:none}.cell-hit{fill:#0000;cursor:pointer}.cell-hit.blocked{cursor:not-allowed}.tower{--frame:var(--steel);--dot:var(--steel);transition:--frame var(--cell-ms,.15s) ease-out, --dot var(--cell-ms,.15s) ease-out}.tower.energized{--frame:var(--steel-lit);--dot:var(--amber)}.tower.just-built{animation:settle var(--cell-ms,.15s) ease-out}@keyframes settle{0%{transform:translateY(-8px)}to{transform:none}}.tower-out{animation:tower-out var(--cell-ms,.15s) ease-in forwards;pointer-events:none}@keyframes tower-out{to{opacity:0;transform:translateY(-8px)}}.plant-sprite{--frame:var(--steel-lit);--dot:var(--amber)}.house-sprite{--body:#1c2637;--roof:#232f44;--frame:var(--steel);--win:#0b111c}.house-sprite.lit{--body:#243149;--roof:#2c3a55;--frame:var(--steel-lit);--win:var(--amber-hot)}.house-glow{--win:transparent}.house-glow.lit{--win:var(--amber-hot);filter:drop-shadow(0 0 3px #ffc94d33)drop-shadow(0 0 9px #ffc94d24)}.house-glow.just-lit{animation:.5s steps(2,jump-none) flick}@keyframes flick{0%{opacity:0}50%{opacity:1}75%{opacity:.4}to{opacity:1}}.ghost{opacity:.4;pointer-events:none}.wire-dead{stroke:var(--steel);stroke-width:2px;stroke-dasharray:7 8;fill:none;opacity:.75;stroke-linecap:round}[data-contrast] .wire-dead{stroke-width:2.5px;opacity:1}[data-contrast] .survey-marker{opacity:1}[data-contrast] .span-preview{opacity:.75}.wire-live{stroke:var(--amber);stroke-width:3px;fill:none;stroke-linecap:round;filter:drop-shadow(0 0 3px #ffc94d33)drop-shadow(0 0 8px #ffc94d21);animation:5s ease-in-out infinite shimmer}@keyframes shimmer{0%,to{opacity:1}50%{opacity:.96}}.spark{fill:var(--amber-hot);filter:drop-shadow(0 0 6px #ffe8a3d9)}.controls{grid-auto-columns:1fr;grid-auto-flow:column;gap:8px;width:-moz-fit-content;width:fit-content;margin-inline:auto;display:grid}@media (max-width:374px){.controls button{padding-inline:10px}}button{font-family:var(--font-ui);font-weight:600;font-size:calc(14px * var(--text-scale));letter-spacing:.02em;color:var(--text);border:1px solid var(--steel);border-radius:var(--radius);cursor:pointer;touch-action:manipulation;background:0 0;padding:10px 16px;transition:border-color .15s,transform .1s}button:hover{border-color:var(--steel-lit)}button:active{transform:scale(.97)}button.setting:active,button.arch-row:active{transform:scale(.99)}button:focus-visible{outline:2px solid var(--amber);outline-offset:2px}button.primary{background:var(--amber);color:var(--ink);border-color:#0000}button.primary:hover{background:var(--amber-hot)}.win-panel{background:var(--ink);border:1px solid var(--grid-line);border-radius:var(--radius);padding:16px 20px;animation:.45s rise;display:none}.win-panel.show{display:block}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.win-panel h2{font-family:var(--font-display);font-weight:700;font-size:calc(21px * var(--text-scale));letter-spacing:.06em;margin-bottom:10px}.win-panel h2 #winTitle{border-bottom:2px solid var(--amber);padding-bottom:3px;box-shadow:0 3px 6px -3px #ffc94d59}.win-panel p{color:var(--text-dim);font-size:calc(14px * var(--text-scale));margin-bottom:12px;line-height:1.55}.win-panel p b{color:var(--text)}.win-panel .win-stats{font-size:calc(14px * var(--text-scale));flex-wrap:wrap;gap:4px 16px;display:flex}.win-panel .win-stats .stat{white-space:nowrap}.win-panel .win-stats i{font-style:normal;font-weight:600;font-size:calc(11px * var(--text-scale));text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim)}.win-panel .win-stats b{font-family:var(--font-mono);color:var(--text);font-weight:500}.win-panel .win-stats b.mw{color:var(--amber)}.win-panel .win-topology{font-family:var(--font-display);font-weight:600;font-size:calc(15px * var(--text-scale));letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);margin:-6px 0 10px}.win-panel .win-note{opacity:.85;font-size:calc(13px * var(--text-scale));margin-top:8px;display:block}.win-panel .win-raw{font-family:var(--font-mono);font-weight:500;font-size:calc(12px * var(--text-scale));color:var(--text-dim);margin-top:4px;display:block}.win-panel .win-legend{font-size:calc(12px * var(--text-scale));color:var(--text-dim);margin-top:4px;display:block}.win-panel .win-legend:first-of-type{margin-top:10px}.win-panel .win-note.engineers{opacity:1;color:var(--amber);text-transform:uppercase;letter-spacing:.08em;font-weight:600;font-size:calc(12px * var(--text-scale))}.win-panel .win-next{font-size:calc(13px * var(--text-scale));margin:10px 0 0}.win-panel .win-next b{font-family:var(--font-mono);color:var(--text-dim);font-weight:500}.win-panel p.tick{animation:.5s ease-out panel-tick}.win-panel p.staged .stat,.win-panel p.staged .win-note,.win-panel p.staged .win-raw,.win-panel p.staged .win-legend{animation:.3s ease-out both chip-in;animation-delay:calc(var(--beat,0) * var(--beat-gap))}.win-panel p.staged .win-note.engineers{animation:.4s ease-out both stamp;animation-delay:calc(var(--beat,0) * var(--beat-gap))}@keyframes chip-in{0%{opacity:0;transform:translateY(5px)}to{opacity:1;transform:none}}.win-panel h2 #winTitle.stamp{animation:.4s ease-out stamp;display:inline-block}@keyframes stamp{0%{opacity:0;transform:scale(1.12)}to{opacity:1;transform:none}}.win-panel.celebrate{animation:.9s ease-out celebrate}@keyframes celebrate{0%{border-color:#ffc94dcc}to{border-color:var(--grid-line)}}@keyframes panel-tick{0%{border-radius:var(--radius);background:#ffc94d1f}to{background:0 0}}.win-panel .row{flex-wrap:wrap;gap:8px;display:flex}.modal .row{gap:8px;display:flex}.modal .row button{flex:1}.under-par{color:var(--amber)!important}.win-panel .win-stats .retired{opacity:.65}.arch-list{flex-direction:column;gap:6px;max-height:52vh;margin-bottom:14px;display:flex;overflow:auto}.arch-row{border:1px solid var(--grid-line);border-radius:var(--radius);width:100%;font-size:calc(14px * var(--text-scale));color:var(--text-dim);letter-spacing:.02em;text-align:left;background:0 0;justify-content:space-between;align-items:center;gap:10px;padding:9px 12px;font-weight:400;display:flex}.arch-row .num,.arch-row .score b{font-family:var(--font-mono);color:var(--text);font-weight:500}.arch-row .unplayed{opacity:.65}.arch-row .studied{font-size:calc(11px * var(--text-scale));text-transform:uppercase;letter-spacing:.08em;color:var(--text-dim);margin-right:8px}.arch-row .drill-name{flex-direction:column;gap:2px;display:flex}.arch-row .drill-name b{color:var(--text);font-weight:600}.arch-row .drill-name small{font-size:calc(12px * var(--text-scale));color:var(--text-dim);line-height:1.35}.arch-row.current{border-color:var(--steel)}.settings-list{flex-direction:column;gap:8px;margin-bottom:14px;display:flex}button.setting{border:1px solid var(--grid-line);text-align:left;justify-content:space-between;align-items:center;gap:14px;width:100%;padding:10px 12px;font-weight:400;display:flex}.setting .setting-text b{font-weight:600;font-size:calc(14px * var(--text-scale));color:var(--text);display:block}.setting .setting-text small{font-size:calc(12px * var(--text-scale));color:var(--text-dim);line-height:1.45;display:block}.setting .breaker{border:1px solid var(--steel);border-radius:var(--radius);flex:none;width:36px;height:20px;position:relative}.setting .breaker:after{content:"";background:var(--steel);border-radius:2px;width:14px;height:14px;transition:left .15s,background .15s;position:absolute;top:2px;left:2px}.setting[aria-checked=true] .breaker:after{background:var(--amber);left:18px}.toast{background:var(--ink);border:1px solid var(--steel);color:var(--text);border-radius:var(--radius);font-size:calc(14px * var(--text-scale));opacity:0;pointer-events:none;z-index:50;text-align:center;max-width:min(420px,90vw);padding:10px 18px;font-weight:400;transition:opacity .25s,transform .25s;position:fixed;bottom:26px;left:50%;transform:translate(-50%)translateY(20px)}.toast.show{opacity:1;transform:translate(-50%)translateY(0)}.overlay{z-index:40;background:#05080eb8;justify-content:center;align-items:center;padding:20px;display:none;position:fixed;inset:0}.overlay.show{display:flex}.overlay.show .modal{animation:.18s ease-out modal-in}@keyframes modal-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.modal{background:var(--ink);border:1px solid var(--grid-line);border-radius:var(--radius);width:100%;max-width:420px;max-height:85vh;max-height:85dvh;padding:20px;overflow:auto}.modal .intro{font-size:calc(15px * var(--text-scale));color:var(--text);margin-bottom:14px;line-height:1.6}.modal h2{font-family:var(--font-display);letter-spacing:.06em;font-weight:700;font-size:calc(20px * var(--text-scale));margin-bottom:12px}.modal ul{flex-direction:column;gap:12px;margin-bottom:16px;list-style:none;display:flex}.modal li{font-size:calc(15px * var(--text-scale));color:var(--text-dim);align-items:flex-start;gap:12px;line-height:1.6;display:flex}.modal li b{color:var(--text)}.modal li .icon{border:1px solid var(--grid-line);border-radius:var(--radius);flex:none;justify-content:center;align-items:center;width:34px;height:34px;display:flex}@media (max-width:430px){.modal{padding:18px 15px}.modal li{gap:10px}.modal li .icon{width:30px;height:30px}}
