:root{--bg:#0b1420;--panel:#142233;--panel-2:#1b2d42;--border:#2a4058;--text:#e6edf5;--muted:#8ea3b8;--accent:#3fc1a6;--bad:#ff5d5d;--good:#58d68d;--tap:36px;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}@media (pointer:coarse){:root{--tap:44px}}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--bg);color:var(--text);touch-action:manipulation;overscroll-behavior:none;-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%;font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}h1,h2,h3,h4{margin:0 0 8px}h3{font-size:15px}h4{text-transform:uppercase;letter-spacing:.05em;color:var(--muted);margin-top:6px;font-size:12px}.muted{color:var(--muted)}.small{font-size:12px}.bad{color:var(--bad)!important}button,select,input{font:inherit;color:var(--text);background:var(--panel-2);border:1px solid var(--border);min-height:var(--tap);border-radius:8px;padding:6px 12px}button{cursor:pointer;transition:transform 80ms,border-color .15s,background .15s}button:active:not(:disabled){transform:scale(.97)}@media (hover:hover){button:hover:not(:disabled){border-color:var(--accent)}}button:disabled{opacity:.45;cursor:default}button.primary{background:var(--accent);color:#062019;border-color:var(--accent);font-weight:600}button.good{border-color:var(--good);background:#1d4d33}button.big{width:100%;min-height:52px;padding:12px;font-size:16px}button.selected{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}button.link{color:var(--muted);background:0 0;border:none;min-height:0;padding:0 4px}input,select{width:100%;font-size:16px}label{flex-direction:column;gap:4px;margin-bottom:8px;display:flex}label.row,.row{flex-flow:wrap;align-items:center;gap:8px;display:flex}label.row select{flex:1;width:auto}.tag{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:0 6px;font-size:11px}.tag.warn{color:#ffb84d;border-color:#ffb84d}.idle-timer{color:var(--muted);white-space:nowrap}.lobby.admin{max-width:1000px}.admin-filter{max-width:260px}.admin-rooms{margin:0;padding:0;list-style:none}.admin-rooms>li{border-bottom:1px solid var(--border);flex-direction:column;gap:4px;padding:10px 0;display:flex}.admin-rooms>li.closed{opacity:.7}.admin-actions{gap:6px;margin-left:auto;display:flex}.admin-seat{align-items:center;gap:4px;margin-right:14px;display:inline-flex}.admin-chat{max-height:320px;margin:4px 0;padding:0;font-size:13px;list-style:none;overflow-y:auto}.admin-chat li{overflow-wrap:anywhere;padding:2px 0}.admin-chat .when,.admin-chat .chat-notice{color:var(--muted);font-size:11px}.idle-timer.warn{color:#ffb84d;font-weight:600}.tag.mod{color:var(--accent);border-color:var(--accent);margin-left:4px}.moderator-note{background:var(--panel-2);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:8px;padding:8px 12px}.code{letter-spacing:.15em;color:var(--accent);font-family:ui-monospace,monospace}.lobby{max-width:760px;padding:max(24px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) 32px max(16px, env(safe-area-inset-left));margin:0 auto}.lobby h1{font-size:32px}.lobby .back{margin-bottom:4px;font-size:15px}.home{max-width:980px;min-height:100dvh;padding:max(20px, env(safe-area-inset-top)) max(16px, env(safe-area-inset-right)) max(24px, env(safe-area-inset-bottom)) max(16px, env(safe-area-inset-left));flex-direction:column;justify-content:center;gap:22px;margin:0 auto;display:flex}.hero{text-align:center;background:#051022 url(/terrain/base.webp) 50% 35%/cover no-repeat;border:1px solid #ffffff14;border-radius:22px;padding:clamp(24px,5vw,44px) 12px 14px;position:relative;overflow:hidden;box-shadow:0 20px 60px #00000073}.hero:before{content:"";background:radial-gradient(at 50% 40%,#05102259,#051022e0 75%);position:absolute;inset:0}.hero>*{position:relative}.title{letter-spacing:.02em;background:linear-gradient(#fff 30%,#9fe8d8);color:#0000;filter:drop-shadow(0 4px 18px #3fc1a659);-webkit-background-clip:text;background-clip:text;margin:0;font-size:clamp(36px,8vw,72px);font-weight:800;line-height:1.05;animation:.6s ease-out both rise}.tagline{color:#c9d6e3;letter-spacing:.04em;margin:8px 0 0;font-size:clamp(14px,2.4vw,18px);animation:.6s ease-out .1s both rise}.showcase{margin-top:8px}.showcase-canvas{width:100%;height:clamp(170px,30vw,260px);display:block}.showcase-names{grid-template-columns:repeat(4,1fr);gap:4px;margin:0;padding:0;list-style:none;display:grid}.showcase-names li{color:#dfe7ef;flex-direction:column;align-items:center;gap:2px;font-size:clamp(11px,1.8vw,14px);font-weight:600;display:flex}.showcase-icon{font-size:clamp(18px,3vw,24px)}.home-actions{grid-template-columns:1fr 1fr;gap:12px;width:100%;max-width:560px;margin:0 auto;display:grid}.home-actions button{border-radius:14px;min-height:56px;font-size:17px;font-weight:700}.home-links{flex-wrap:wrap;justify-content:center;gap:6px 18px;display:flex}.home-links .link{color:var(--accent);min-height:var(--tap);align-items:center;padding:0 4px;font-size:15px;text-decoration:none;display:inline-flex}.home-blurb{text-align:center;max-width:560px;margin:0 auto}@media (width<=480px){.home-actions{grid-template-columns:1fr}}.start-dialog{flex-direction:column;gap:12px;display:flex}.start-dialog label{flex-direction:column;gap:6px;display:flex}.start-dialog .row{justify-content:flex-end}.code-input{letter-spacing:.4em;text-transform:uppercase;text-align:center;font-size:26px;font-weight:700}.logo{font-size:36px;animation:6s ease-in-out infinite wobble;display:inline-block}.panel{background:var(--panel);border:1px solid var(--border);border-radius:12px;margin:16px 0;padding:16px;animation:.35s ease-out both rise}.room-list,.seat-list{margin:0 0 12px;padding:0;list-style:none}.room-list li,.seat-list li{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;padding:6px 0;display:flex}.room-main{flex-direction:column;flex:1;min-width:140px;display:flex}.online{color:var(--good)}.danger-btn:hover:not(:disabled){background:#3d1717;border-color:var(--bad)!important}.clear-finished{margin-bottom:12px}.seat-list li{animation:.3s ease-out both rise}.seat-list .muted{margin-left:auto}.pawn-dot{vertical-align:middle;border:1px solid #000;border-radius:50%;width:14px;height:14px;display:inline-block}.role-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:8px;display:grid}.role-grid button{text-align:left;border-left-width:6px;flex-direction:column;gap:4px;padding:10px 12px;display:flex}.role-grid small{color:var(--muted);font-size:12px}.game{height:100dvh;padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right);grid-template-columns:minmax(0,1fr) clamp(300px,30vw,400px);display:grid}.board-wrap{flex-direction:column;min-height:0;display:flex;position:relative;overflow:hidden}.board{flex:1;min-height:0;position:relative}.board>svg{touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;width:100%;height:100%;display:block;position:absolute;inset:0}.sidebar{-webkit-overflow-scrolling:touch;overscroll-behavior:contain;background:var(--panel);border-left:1px solid var(--border);padding:12px;padding-top:max(12px, env(safe-area-inset-top));padding-bottom:max(12px, env(safe-area-inset-bottom));flex-direction:column;gap:12px;display:flex;overflow-y:auto}.sidebar section{background:var(--panel-2);border-radius:10px;padding:10px}@media (orientation:portrait) and (width<=1100px),(width<=760px){.game{grid-template-rows:minmax(0,56fr) minmax(0,44fr);grid-template-columns:minmax(0,1fr)}.sidebar{border-left:none;border-top:1px solid var(--border);padding-top:12px}}@media (orientation:portrait) and (width>=600px) and (width<=1100px){.sidebar{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"pending pending""turn team""log team""log discards""footer footer";align-content:start;align-items:start;display:grid}.sidebar .pending{grid-area:pending}.sidebar .turn{grid-area:turn}.sidebar .team{grid-area:team}.sidebar .discards{grid-area:discards}.sidebar .log-section{grid-area:log}.sidebar .footer{grid-area:footer}.log{max-height:200px}}@media (width<=760px) and (orientation:landscape){.game{grid-template-rows:minmax(0,1fr) auto}.sidebar{max-height:45dvh}}.land{fill:#2b4a3a;stroke:#3c6650;stroke-width:.6px;vector-effect:non-scaling-stroke}.edge{stroke:#ffffff59;stroke-width:1.4px}.board.relief{background:#051022}.terrain{pointer-events:none;position:absolute;inset:0;overflow:hidden}.particles{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.terrain img{-webkit-user-select:none;user-select:none;max-width:none;position:absolute;top:0;left:0}.city{cursor:pointer}.city-dot{stroke:#0b1420;stroke-width:2px}@media (hover:hover){.city:hover .city-dot{stroke:#fff}}.city-label{fill:#f0f4f8;text-anchor:middle;paint-order:stroke;stroke:#06121f;stroke-width:3px;pointer-events:none;font-size:10.5px;font-weight:600}.label-card{stroke:#06121fcc;stroke-width:1px;pointer-events:none}.label-card.mine{stroke:#fff;stroke-width:1.6px}.label-card.discarded{fill:#4a5361}.city-label.on-card{fill:#0b1420;stroke:none}.label-card.discarded+.city-label.on-card{fill:#c9d1dc}.hz-badge{stroke:#f4f7fb;stroke-width:1.1px;filter:drop-shadow(0 1px 1.2px #000000d9)}.hz-glyph path,.hz-glyph circle{fill:none;stroke:#fff;stroke-width:1.15px;stroke-linecap:round;stroke-linejoin:round}.hz-glyph .hz-flame{fill:#fff;stroke:none;transform-box:fill-box;transform-origin:50% 100%;animation:.7s ease-in-out infinite alternate hz-flicker}.hz-glyph .hz-meteor circle{fill:#fff;stroke:none}.hz-yellow .hz-glyph .hz-flame{fill:#c2410c}.hz-trail{animation:1.2s ease-in-out infinite hz-trail}.hz-wave{animation:1.6s ease-in-out infinite hz-wave}.hz-flake{transform-box:fill-box;transform-origin:50%;animation:7s linear infinite hz-spin}@keyframes hz-flicker{0%{transform:scale(1)}to{transform:scale(.86,1.14)}}@keyframes hz-trail{50%{opacity:.35}}@keyframes hz-wave{50%{transform:translate(.8px)}}@keyframes hz-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion:reduce){.hz-flame,.hz-trail,.hz-wave,.hz-flake{animation:none}}.yard{fill:#fff;stroke:#000;stroke-width:1px}.pawn-pos{pointer-events:none;transition:transform .7s cubic-bezier(.5,0,.3,1)}.pawn-shadow{fill:#00000073}.pawn-glow{fill:none;stroke:#fff;stroke-width:1.6px;opacity:.9;transform-box:fill-box;transform-origin:50%;animation:1.4s ease-in-out infinite glow-pulse}.pawn-outline{stroke:#0b1420;stroke-width:1.1px;stroke-linejoin:round}.pawn-mine{fill:#fff;stroke:#0b1420;stroke-width:.8px}.pawn-figure.bob{animation:1.4s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(-2.5px)}}@keyframes glow-pulse{50%{opacity:.3;transform:scale(1.25)}}.reach-ring{fill:none;stroke:#7fffd4;stroke-width:2px;stroke-dasharray:4 3;transform-box:fill-box;transform-origin:50%;animation:6s linear infinite spin}.select-ring{fill:none;stroke:#fff;stroke-width:3px;transform-box:fill-box;transform-origin:50%;animation:.25s ease-out both pop}.danger{fill:#ff3c3c40;transform-box:fill-box;transform-origin:50%;animation:1.6s ease-in-out infinite throb}.pop{transform-box:fill-box;transform-origin:50%;animation:.45s cubic-bezier(.3,1.6,.5,1) both pop}.fx{transform-box:fill-box;transform-origin:50%;pointer-events:none;animation-fill-mode:both}.fx-threat{fill:none;stroke-width:3px;vector-effect:non-scaling-stroke;animation:.7s ease-out both ring-out}.fx-chain{fill:none;stroke-width:4px;vector-effect:non-scaling-stroke;animation:1s ease-out both shockwave}.fx-chain-core{opacity:0;animation:.6s ease-out both core-flash}.fx-spread{stroke-width:4px;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1px;animation:.9s ease-out both spread}.fx-shock{fill:#ff282859;stroke:#ff3b3b;stroke-width:3px;vector-effect:non-scaling-stroke;animation:1.4s ease-out both shock-ring}.fx-clear{fill:none;stroke:var(--good);stroke-width:3px;vector-effect:non-scaling-stroke;animation:.6s ease-out both ring-in}.fx-prevented{fill:#7fffd433;stroke:#7fffd4;stroke-width:2px;vector-effect:non-scaling-stroke;animation:.8s ease-out both ring-out}.fx-yard{fill:none;stroke:#fff;stroke-width:2px;vector-effect:non-scaling-stroke;animation:.8s ease-out both ring-out}.fx-trail{fill:none;stroke-width:3px;stroke-linecap:round;pointer-events:none;stroke-dasharray:1;stroke-dashoffset:1px;opacity:.9;animation:trail-draw var(--dur,.8s) cubic-bezier(.5, 0, .35, 1) both, trail-fade .9s ease-out forwards}.fx-trail.fly{stroke-width:2.5px;filter:drop-shadow(0 0 3px #fffc)}@keyframes trail-draw{0%{stroke-dashoffset:1px}to{stroke-dashoffset:0}}@keyframes trail-fade{0%{opacity:.9}to{opacity:0}}.pawn-figure{transform-box:fill-box;transform-origin:50% 100%}.pawn-shadow{transform-box:fill-box;transform-origin:50%}@keyframes pop{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes throb{50%{opacity:.6;transform:scale(1.25)}}@keyframes ring-out{0%{opacity:0;transform:scale(.6)}15%{opacity:1}to{opacity:0;transform:scale(3)}}@keyframes ring-in{0%{opacity:0;transform:scale(2)}30%{opacity:1}to{opacity:0;transform:scale(.4)}}@keyframes shockwave{0%{opacity:0;transform:scale(.5)}10%{opacity:1}to{opacity:0;transform:scale(6)}}@keyframes core-flash{0%{opacity:0;transform:scale(.5)}20%{opacity:.9;transform:scale(1.6)}to{opacity:0;transform:scale(1)}}@keyframes spread{0%{stroke-dashoffset:1px;opacity:0}10%{opacity:1}60%{stroke-dashoffset:0;opacity:1}to{stroke-dashoffset:0;opacity:0}}@keyframes shock-ring{0%{opacity:0;transform:scale(.3)}15%{opacity:1}to{opacity:0;transform:scale(7)}}@keyframes trail{0%{opacity:0}15%{opacity:.9}to{opacity:0}}.zoom-controls{flex-direction:column;gap:5px;display:flex;position:absolute;bottom:10px;right:10px}.zoom-controls button{font-size:17px}.board.shake-a{animation:.5s ease-out shake-a}.board.shake-b{animation:.5s ease-out shake-b}@keyframes shake-a{10%,50%,90%{transform:translate(-5px,2px)}30%,70%{transform:translate(5px,-2px)}}@keyframes shake-b{10%,50%,90%{transform:translate(5px,-2px)}30%,70%{transform:translate(-5px,2px)}}.city-pop{z-index:3;border:1px solid var(--border);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#142233f5;border-radius:12px;width:min(340px,100% - 70px);padding:10px 12px;animation:.2s ease-out both rise;position:absolute;bottom:10px;left:10px;box-shadow:0 8px 24px #00000080}.city-pop-head{align-items:center;gap:8px;display:flex}.city-pop-head .dot{border:2px solid #0b1420;border-radius:50%;width:14px;height:14px}.city-pop-head .close{min-width:var(--tap);color:var(--muted);background:0 0;border:none;margin-left:auto;padding:0}.city-pop-info{flex-wrap:wrap;align-items:center;gap:10px;margin:4px 0;font-size:13px;display:flex}.hazard-count{letter-spacing:1px;font-size:15px}.who{align-items:center;gap:4px;display:inline-flex}.city-pop-moves{flex-direction:column;gap:6px;margin-top:6px;display:flex}.city-pop-moves button{text-align:left}.hud{padding:8px 12px;padding-bottom:max(8px, env(safe-area-inset-bottom));background:var(--panel);border-top:1px solid var(--border);z-index:2;align-items:flex-start;gap:8px;display:flex;position:relative}.hud-items{flex-wrap:wrap;flex:1;align-items:center;gap:6px clamp(10px,1.4vw,18px);min-width:0;display:flex}.hud-item{flex-direction:column;display:flex}.map-version{left:max(8px, env(safe-area-inset-left));z-index:1;pointer-events:none;color:#ffffff61;text-shadow:0 1px 2px #0009;white-space:nowrap;font-size:10px;position:absolute;bottom:4px}.hud-item .label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;font-size:11px}.hud-item .value{font-size:18px;font-weight:700;display:inline-block}.track{gap:2px;display:flex}.track span{text-align:center;background:var(--panel-2);width:20px;color:var(--muted);border-radius:4px;font-weight:600;display:inline-block}.track span.past{opacity:.4}.track span.on{color:#fff;background:#b33}.solutions,.supply{gap:6px;font-weight:700;display:flex}.supply-item{align-items:center;gap:2px;display:inline-flex}.supply-icon{width:16px;height:16px;overflow:visible}.supply-low{color:var(--bad);text-shadow:0 0 8px #ff5d5db3;animation:1s ease-in-out infinite supply-blink}@keyframes supply-blink{50%{opacity:.35}}.solution{border:2px solid var(--c);color:#fff;border-radius:50%;place-items:center;width:22px;height:22px;font-size:13px;display:grid}.solution.deployed,.solution.neutralized{background:var(--c)}.bump{animation:.6s ease-out bump}@keyframes bump{0%{transform:scale(1)}30%{color:#fff;transform:scale(1.6)}to{transform:scale(1)}}.map-buttons{top:max(10px, env(safe-area-inset-top));z-index:2;gap:5px;display:flex;position:absolute;right:10px}.map-buttons button{font-size:15px}.map-buttons button,.zoom-controls button{-webkit-backdrop-filter:blur(10px)saturate(1.3);backdrop-filter:blur(10px)saturate(1.3);background:#1422336b;border:1px solid #ffffff24;border-radius:9px;width:34px;height:34px;min-height:34px;padding:0;box-shadow:0 2px 10px #00000040}.icon-btn{color:var(--accent);font-weight:800}.map-buttons button[aria-pressed=true],.map-buttons button[aria-expanded=true]{color:var(--accent)}.map-dock{z-index:3;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;bottom:10px;left:10px;right:64px}.map-dock>*{pointer-events:auto;max-width:100%}.dock-row,.dock-events,.map-sheet,.map-dock .suggestion{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#1422334d;border:1px solid #ffffff24;border-radius:12px;animation:.2s ease-out both rise;box-shadow:0 8px 24px #0000004d}.map-dock button:not(.primary):not(.good){background:#1b2d4280;border-color:#ffffff29}.map-dock button.good{background:#1d4d33b3}.map-dock .alert{background:0 0}.dock-row{scrollbar-width:none;flex-wrap:nowrap;gap:6px;padding:5px;display:flex;overflow-x:auto}.dock-row::-webkit-scrollbar{display:none}.dock-row>:first-child{margin-left:auto}.dock-row>:last-child{margin-right:auto}.dock-row button,.dock-events button{white-space:nowrap;flex:none;min-height:36px;padding:0 11px;font-size:12.5px}.dock-events{flex-direction:column;gap:6px;padding:6px;display:flex}.dock-events button{text-align:left;border-left:4px solid #6b4fbf}.dock-event-btn{color:#d9c8ff;font-weight:700;border-color:#6b4fbf!important}.suggest-btn{color:#ffe08a;border-color:#b8952b}.sidebar>.suggest-btn{width:100%}.suggestion{background:var(--panel-2);border:1px solid #b8952b;border-radius:10px;padding:8px 10px}.suggestion-head{color:#ffe08a;align-items:center;gap:6px;display:flex}.suggestion-head .close{min-height:28px;color:var(--muted);background:0 0;border:none;margin-left:auto;padding:0 4px}.suggestion ol{margin:4px 0 8px;padding-left:20px;font-size:13px;line-height:1.45}.suggestion>.primary{width:100%}.map-dock .suggestion{border-color:#b8952bb3;width:min(380px,100%)}.map-dock>.suggestion,.map-dock>.map-sheet{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:#142233e6}.map-sheet{width:min(460px,100%);padding:4px}.map-sheet .alert{margin:0}.map-sheet .hand{padding:4px 8px 8px}.game.panel-hidden{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(0,1fr)}.game.panel-hidden .sidebar{display:none}.hud-turn .value{white-space:nowrap;align-items:center;gap:5px;display:inline-flex}.hud-turn .pips{gap:3px;margin-left:4px;display:inline-flex}.hud-turn .pip{width:9px;height:9px}.hud-turn .phase-short{font-size:12px;font-weight:500}.hud-turn .pawn-dot{flex:none;width:11px;height:11px}.turn-name{text-overflow:ellipsis;white-space:nowrap;max-width:8em;overflow:hidden}@media (width<=600px){.turn-name{max-width:5.5em}}.hud-turn{flex:none}@media (width>=761px) and (width<=1240px){.hud-items{gap:6px 12px}.hud-item .value{font-size:16px}.hud-item .label{font-size:10px}.track span{width:17px}.solution{width:19px;height:19px}.supply{gap:4px}.turn-name{max-width:6em}}@media (width>=761px) and (width<=900px){.hud{padding-left:10px;padding-right:8px}.hud-items{gap:5px 10px}.hud-item .value{font-size:15px}.hud-item .label{display:none}.hud-item .short{color:var(--muted);text-transform:uppercase;letter-spacing:.03em;font-size:10px;display:inline}.track{gap:1px}.track span{width:16px;font-size:12px}.solutions{gap:4px}.solution{width:17px;height:17px}.supply{gap:3px;font-size:14px}.supply-icon{width:14px;height:14px}.turn-name{max-width:5em}}.hud-item .short{display:none}.hud-toggle{flex:none;width:32px;height:32px;min-height:32px;padding:0;font-size:14px}.hud.compact{padding-top:4px;padding-bottom:max(4px, env(safe-area-inset-bottom));align-items:center}.hud.compact .hud-items{scrollbar-width:none;flex-wrap:nowrap;gap:14px;overflow-x:auto}.hud.compact .hud-items::-webkit-scrollbar{display:none}.hud.compact .hud-item{flex-direction:row;flex:none;align-items:center;gap:5px}.hud.compact .label{display:none}.hud.compact .short{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:10.5px;display:inline}.hud.compact .hud-item .value{font-size:14px}.hud.compact .track span{width:16px;font-size:12px}.hud.compact .solution{border-width:1.5px;width:16px;height:16px;font-size:10px}.hud.compact .supply{gap:4px;font-size:13px}.hud.compact .supply-icon{width:13px;height:13px}.hud.compact .hud-toggle{width:28px;height:28px;min-height:28px}@media (width<=760px){.hud{padding:6px 8px}.hud-items{gap:4px 10px}.hud-item .value{font-size:15px}.hud-item .label{font-size:10px}}.banner{z-index:4;pointer-events:none;text-align:center;white-space:nowrap;border:2px solid var(--c,#fff);box-shadow:0 0 40px color-mix(in srgb, var(--c,#fff) 50%, transparent);animation:.35s cubic-bezier(.3,1.5,.5,1) both banner-in,.4s ease-in forwards banner-out;animation-delay:0s, var(--out,1.2s);background:#08121ed9;border-radius:14px;padding:10px 28px;position:absolute;top:18%;left:50%;transform:translate(-50%)}.banner-title{letter-spacing:.04em;color:var(--c,#fff);text-shadow:0 2px 8px #000;font-size:30px;font-weight:800}.banner-sub{color:var(--text);font-size:15px}.banner-shock{--c:#ff3b3b;--out:1.8s;background:#3c0000d9;padding:16px 48px;top:30%}.banner-shock .banner-title{text-transform:uppercase;letter-spacing:.15em;font-size:48px;animation:.5s ease-in-out 3 throb-text}.banner-chain .banner-title{text-transform:uppercase}.banner-solution,.banner-neutralize{--out:1.8s}.banner-turn{--c:var(--accent);--out:1.1s}.banner-info{--out:.8s;padding:6px 18px;top:10%}.banner-info .banner-title{color:var(--text);font-size:18px}.banner-event{--c:#b9a3ff}@keyframes banner-in{0%{opacity:0;transform:translate(-50%)scale(.6)}to{opacity:1;transform:translate(-50%)scale(1)}}@keyframes banner-out{to{opacity:0;transform:translate(-50%)scale(1.1)}}@keyframes throb-text{50%{transform:scale(1.08)}}@media (width<=760px){.banner-title{font-size:22px}.banner-shock .banner-title{font-size:32px}}.shock-flash{z-index:3;pointer-events:none;background:radial-gradient(circle,#ff1e1e26,#a00000a6);animation:2s ease-out both flash;position:absolute;inset:0}@keyframes flash{0%{opacity:0}10%{opacity:1}25%{opacity:.4}40%{opacity:.9}to{opacity:0}}.turn-header{border-left:5px solid;margin-bottom:8px;padding-left:8px}.phase{color:var(--muted);align-items:center;gap:4px;display:flex}.pip{background:var(--border);border-radius:50%;width:12px;height:12px;transition:background .3s,transform .3s;display:inline-block}.pip.on{background:var(--accent)}.hint{margin:4px 0 8px}.action-group{flex-direction:column;gap:6px;margin-bottom:8px;display:flex}.action-group button{text-align:left}.alert{border:1px solid #ffb84d;flex-direction:column;gap:8px;animation:.3s ease-out both rise;display:flex;background:#3a2c12!important}.alert.shock{border-color:var(--bad);animation:.3s ease-out both rise,1.6s ease-in-out infinite glow;background:#3d1717!important}@keyframes glow{50%{box-shadow:0 0 18px #ff3c3c99}}.predictiveScan{margin:0;padding-left:20px}.predictiveScan li{align-items:center;gap:6px;margin:4px 0;display:flex}.predictiveScan .chip{flex:1}.predictiveScan button{width:var(--tap);padding:0}.player{background:var(--panel);border-left:5px solid;border-radius:8px;margin:6px 0;padding:6px 8px;transition:box-shadow .3s}.player.current{box-shadow:0 0 0 2px var(--accent)}.player-head{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.player-head .role{color:var(--muted);cursor:help;min-height:28px;font-size:12px}.loc-chip{border:2px solid var(--c);background:color-mix(in srgb, var(--c) 30%, var(--panel));border-radius:15px;align-items:center;gap:4px;min-height:30px;margin-left:auto;padding:2px 10px 2px 6px;font-size:13px;font-weight:600;display:inline-flex}.loc-chip.dark-text{color:var(--text)}.loc-chip .pin{font-size:12px}.loc-chip:active{box-shadow:0 0 12px var(--c)}.beacon{pointer-events:none}.beacon-core,.beacon-ring{transform-box:fill-box;transform-origin:50%}.beacon-core{opacity:0;filter:drop-shadow(0 0 6px #fff);animation:2.6s ease-out both beacon-core}.beacon-ring{fill:none;stroke-width:4px;vector-effect:non-scaling-stroke;opacity:0;animation:1.3s ease-out 2 both beacon-ring}@keyframes beacon-core{0%{opacity:0;transform:scale(.5)}15%{opacity:.9;transform:scale(1.4)}70%{opacity:.6;transform:scale(1)}to{opacity:0;transform:scale(1)}}@keyframes beacon-ring{0%{opacity:1;transform:scale(.6)}to{opacity:0;transform:scale(5)}}.role-text{color:var(--muted);margin:4px 0;animation:.2s ease-out both rise}.hand{flex-wrap:wrap;gap:5px;margin-top:6px;display:flex}.stored{color:var(--muted);margin-top:6px;font-size:12px}.chip{color:#fff;text-shadow:0 1px 1px #00000080;border-radius:6px;align-items:center;gap:6px;padding:3px 9px;font-size:12.5px;font-weight:600;animation:.4s cubic-bezier(.3,1.4,.5,1) both card-in;display:inline-flex}.chip.dark-text{color:#222;text-shadow:none}.city-tag{color:#fff;text-shadow:0 1px 1px #00000080;border-radius:5px;padding:0 6px;font-weight:700;line-height:1.5;display:inline-block}.city-tag.dark-text{color:#1a1a1a;text-shadow:none}@keyframes card-in{0%{opacity:0;transform:translateY(-12px)scale(.7)}to{opacity:1;transform:none}}.chip-btn{color:#fff;background:#00000059;border-color:#ffffff80;min-height:24px;padding:0 8px;font-size:12px}@media (pointer:coarse){.chip{padding:5px 10px;font-size:13px}.chip-btn{min-height:32px;padding:0 10px}}.check{min-height:var(--tap);flex-direction:row;align-items:center;margin:0 8px 0 0}.check input{width:22px;height:22px;min-height:0}details summary{cursor:pointer;color:var(--muted);min-height:28px;margin:4px 0;display:list-item}.log-section summary h3{display:inline}.log{-webkit-overflow-scrolling:touch;max-height:260px;margin:0;padding:0;font-size:12px;list-style:none;overflow-y:auto}.log li{border-bottom:1px solid #ffffff0a;padding:2px 0}.log li:first-child{animation:.3s ease-out both rise}.log .chain,.log .bad{color:var(--bad);font-weight:600}.log .shock{color:#ff9a5d;font-weight:600}.log .good{color:var(--good)}.log .event{color:#b9a3ff}.log .threat{color:#ffc9c9}.log .action{color:var(--text)}.log .info{color:var(--muted)}.modal-bg{z-index:10;padding:max(16px, env(safe-area-inset-top)) 16px max(16px, env(safe-area-inset-bottom));background:#0009;place-items:center;animation:.2s ease-out both fade;display:grid;position:fixed;inset:0}.modal{background:var(--panel);border:1px solid var(--border);border-radius:14px;width:min(460px,100%);max-height:100%;padding:20px;animation:.25s ease-out both rise;overflow-y:auto}.gameover{text-align:center;animation:.8s cubic-bezier(.3,1.4,.5,1) 1.6s both gameover-in}.modal-bg:has(.gameover){animation:.5s ease-out 1.6s both fade}.gameover .row{justify-content:center}.gameover h2{font-size:32px}.gameover.won h2{color:var(--good)}.gameover.lost h2{color:var(--bad)}@keyframes gameover-in{0%{opacity:0;transform:scale(.5)rotate(-4deg)}to{opacity:1;transform:none}}.toast{left:50%;bottom:max(20px, env(safe-area-inset-bottom));z-index:20;cursor:pointer;border-radius:10px;max-width:calc(100% - 32px);padding:10px 16px;animation:.25s ease-out both toast-in;position:fixed;transform:translate(-50%);box-shadow:0 4px 16px #00000080}.toast.error{background:#7a1f1f}.toast.warn{top:max(12px, env(safe-area-inset-top));background:#6b4a10;bottom:auto}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,20px)}to{opacity:1;transform:translate(-50%)}}@keyframes rise{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes wobble{0%,to{transform:rotate(0)}50%{transform:rotate(20deg)scale(1.1)}}@media (prefers-reduced-motion:reduce){.board.shake-a,.board.shake-b,.reach-ring,.danger,.logo,.pawn-figure.bob,.pawn-glow{animation:none}.shock-flash{animation-duration:.8s}.pawn-pos{transition-duration:.2s}}button.icon{min-width:var(--tap);padding:0 8px}.seat-role{width:auto;margin-left:auto;font-size:14px}.row.spread{justify-content:space-between}.bot-thinking .dots:after{content:"";animation:1.2s steps(4,end) infinite dots}@keyframes dots{0%{content:""}25%{content:"."}50%{content:".."}75%{content:"..."}}.help{flex-direction:column;width:min(760px,100%);max-height:100%;padding:0;display:flex}.help-head{justify-content:space-between;align-items:center;padding:16px 20px 8px;display:flex}.help-head h2{margin:0;font-size:20px}.tabs{border-bottom:1px solid var(--border);flex-wrap:wrap;gap:6px;padding:0 20px 10px;display:flex}.tabs button{white-space:nowrap}@media (width<=600px){.tabs{gap:5px;padding:0 12px 10px}.tabs button{min-height:36px;padding:0 10px;font-size:13px}.help-head{padding:14px 12px 8px}.help-head h2{font-size:18px}.help-body{padding:12px}}.cost{white-space:nowrap;border-radius:999px;margin:1px 4px 1px 0;padding:1px 8px;font-size:12px;font-weight:700;display:inline-block}.cost-action{color:#8fe6d2;background:#3fc1a62e;border:1px solid #3fc1a680}.cost-card{color:#ffd978;white-space:normal;background:#f2c23026;border:1px solid #f2c23080}.cost-free{color:#a6eba6;background:#7fd67f29;border:1px solid #7fd67f80}.price-list td{vertical-align:middle}.price-name{white-space:nowrap}.price-icon{text-align:center;width:26px;font-size:17px;display:inline-block}.price-cost{width:30%}.price-gain b{font-size:14px;display:block}.price-gain .muted{margin-top:2px;font-size:12px;line-height:1.4;display:block}.more-tips{margin-top:12px}.more-tips summary{color:var(--accent);font-weight:600}.more-tips li{margin:6px 0;line-height:1.45}.help-body{padding:14px 20px 20px;overflow-y:auto}.help-body p,.help-body li{line-height:1.5}.help-body h3{margin-top:14px}.steps li{margin-bottom:8px}.tip{border-left:4px solid var(--accent);background:#12352c;border-radius:6px;padding:8px 12px}.help-table{border-collapse:collapse;width:100%;font-size:13px}.help-table th,.help-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--border);padding:8px 6px}.help-table th{color:var(--muted);text-transform:uppercase;font-size:12px;font-weight:600}@media (width<=600px){.help-table thead{display:none}.help-table tr{border-bottom:1px solid var(--border);padding:8px 0;display:block}.help-table td{border:none;padding:2px 0;display:block}.price-list tr{grid-template-columns:auto 1fr;align-items:center;gap:4px 10px;padding:10px 0;display:grid}.price-list .price-gain{grid-column:1/-1}.price-list .price-cost{width:auto}}.help-card{border-left:5px solid var(--border);background:var(--panel-2);border-radius:6px;margin:10px 0;padding:6px 12px}.help-card p{margin:6px 0}.app-help li{margin-bottom:8px}.explain{margin-top:10px}.explain summary{color:var(--accent);font-weight:600}.explain ul{margin:4px 0 0;padding:0;font-size:11.5px;line-height:1.35;list-style:none}.explain li{border-bottom:1px solid #ffffff0d;gap:6px;padding:2px 0;display:flex}.explain-no{margin-top:4px}.explain .explain-no summary{color:var(--muted);font-size:11.5px;font-weight:500}.explain .mark{flex:none;width:16px;font-weight:800}.explain .ok .mark{color:var(--good)}.explain .no{color:var(--muted)}.explain .no .mark{color:#a35b5b}.solution-progress{flex-wrap:wrap;gap:6px;margin-top:6px;font-size:11.5px;display:flex}.solution-progress span{border:1px solid var(--c);color:var(--text);z-index:0;border-radius:10px;padding:1px 8px;font-weight:600;position:relative;overflow:hidden}.solution-progress .bar{background:var(--c);opacity:.35;z-index:-1;transition:width .4s;position:absolute;inset:0 auto 0 0}.solution-progress .ready{box-shadow:0 0 8px var(--c)}.soon h4{color:#ffb84d;cursor:help;margin-top:0}.soon{margin-bottom:8px}.strike,.solutions-under,.solutions-over{pointer-events:none}.strike *{transform-box:fill-box;transform-origin:50%}.flood-ring{fill:none;stroke:#5cc8ff;stroke-width:1.6px;animation:1s ease-out both flood-ring;animation-delay:calc(var(--d) + var(--i) * .18s)}.flood-wave{fill:#2f8fe0;stroke:#bfe6ff;stroke-width:.8px;transform-origin:50% 100%;animation:1.2s ease-in-out both flood-rise;animation-delay:var(--d)}.flood-wave.inner{fill:#6cc4ff;stroke:none;animation-delay:calc(var(--d) + .12s)}@keyframes flood-ring{0%{opacity:0;transform:scale(.4)}20%{opacity:1}to{opacity:0;transform:scale(3.2)}}@keyframes flood-rise{0%{opacity:0;transform:translateY(8px)scaleY(0)}30%{opacity:.95;transform:translateY(0)scaleY(1.15)}55%{transform:translateY(-1px)scaleY(.85)}80%{opacity:.8}to{opacity:0;transform:translateY(2px)scaleY(1)}}.frost-ring{fill:#c8f0ff26;stroke:#d8f4ff;stroke-width:1.2px;stroke-dasharray:2 2;animation:1.1s ease-out both frost;animation-delay:var(--d)}.ice-flake{filter:drop-shadow(0 0 3px #8fdcff);animation:1.2s cubic-bezier(.2,1.4,.4,1) both flake;animation-delay:var(--d)}.ice-flake line{stroke:#e8f9ff;stroke-width:1.6px;stroke-linecap:round}.ice-shard{fill:#bdeeff;animation:.9s ease-out both shard;animation-delay:calc(var(--d) + .15s)}@keyframes frost{0%{opacity:0;transform:scale(.2)}25%{opacity:1}to{opacity:0;transform:scale(2.4)}}@keyframes flake{0%{opacity:0;transform:scale(0)rotate(-90deg)}35%{opacity:1;transform:scale(1.1)rotate(10deg)}75%{opacity:1;transform:scale(1)rotate(0)}to{opacity:0;transform:scale(1.3)rotate(20deg)}}@keyframes shard{0%{opacity:0;transform:translateY(0)}20%{opacity:1}to{opacity:0;transform:translateY(12px)}}.meteor{animation:.5s ease-in both meteor-fall;animation-delay:var(--d)}.meteor-tail{stroke:#ffb347;stroke-width:3px;stroke-linecap:round;opacity:.85;filter:drop-shadow(0 0 3px #ff7b00)}.meteor-head{fill:#fff1c1;filter:drop-shadow(0 0 4px #ffae42)}.impact-flash{fill:#ffcf6b;animation:.6s ease-out both impact;animation-delay:calc(var(--d) + .47s)}.impact-ring{fill:none;stroke:#ff8a3d;stroke-width:2px;animation:.8s ease-out both ring-out;animation-delay:calc(var(--d) + .47s)}.debris{fill:#6b5b4b;stroke:#ffb347;stroke-width:.6px;animation:.7s ease-out both debris;animation-delay:calc(var(--d) + .48s)}@keyframes meteor-fall{0%{opacity:0;transform:translate(34px,-34px)}15%{opacity:1}95%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(0)}}@keyframes impact{0%{opacity:0;transform:scale(.3)}20%{opacity:1;transform:scale(1.4)}to{opacity:0;transform:scale(2)}}@keyframes debris{0%{opacity:0;transform:translateY(0)}15%{opacity:1}to{opacity:0;transform:translateY(-16px)rotate(200deg)}}.fire-glow{fill:#ff781e59;animation:1.3s ease-out both glow-fade;animation-delay:var(--d)}.flame{fill:#ff6a1f;transform-origin:50% 100%;filter:drop-shadow(0 0 3px #f50);animation:1.3s ease-out both flame;animation-delay:calc(var(--d) + var(--i) * 90ms)}.flame.core{fill:#ffd84a;filter:none}.ember{fill:#ffcf4a;animation:1.2s ease-out both ember;animation-delay:calc(var(--d) + .2s + var(--i) * .15s)}@keyframes glow-fade{0%{opacity:0;transform:scale(.5)}25%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(1.3)}}@keyframes flame{0%{opacity:0;transform:scaleY(0)}20%{opacity:1;transform:scale(.95,1.15)}35%{transform:scale(1.05,.9)}50%{transform:scale(.95,1.1)}65%{opacity:1;transform:scale(1.05,.95)}to{opacity:0;transform:scaleY(.3)}}@keyframes ember{0%{opacity:0;transform:translate(0)}20%{opacity:1}to{opacity:0;transform:translate(3px,-20px)}}.sparkle{transform-box:fill-box;transform-origin:50%;animation:.9s ease-out both sparkle;animation-delay:var(--d)}.sparkle path{fill:#fff;filter:drop-shadow(0 0 4px #fff)}@keyframes sparkle{0%{opacity:0;transform:scale(0)rotate(0)}40%{opacity:1;transform:scale(1.2)rotate(45deg)}to{opacity:0;transform:scale(.2)rotate(90deg)}}.fx-solution-wave{fill:none;stroke-width:3px;vector-effect:non-scaling-stroke;animation:1.6s ease-out both solution-wave}@keyframes solution-wave{0%{opacity:0;transform:scale(.3)}15%{opacity:1}to{opacity:0;transform:scale(14)}}.sol-enter{transform-box:fill-box;transform-origin:50%;animation:.7s cubic-bezier(.3,1.5,.5,1) both sol-enter;animation-delay:var(--d)}@keyframes sol-enter{0%{opacity:0;filter:brightness(3);transform:scale(0)}60%{opacity:1}to{opacity:1;filter:none;transform:scale(1)}}.sol-line-enter{animation:.6s ease-out both fade-in;animation-delay:var(--d)}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.net-base{stroke-width:4px;stroke-linecap:round;opacity:.4}.net-flow{stroke-width:2px;stroke-linecap:round;stroke-dasharray:3 7;animation:1.2s linear infinite flow}@keyframes flow{to{stroke-dashoffset:-10px}}.sol-blue .net-base{stroke:#ff8c42}.sol-blue .net-flow{stroke:#ffd08a;filter:drop-shadow(0 0 2px #ff7a1f)}.sol-red .net-base{stroke:#1f8f9a}.sol-red .net-flow{stroke:#7ff0ff}.sol-yellow .net-base{stroke:#3aa6e8}.sol-yellow .net-flow{stroke:#bfeaff;stroke-dasharray:1.5 5}.heat-glow{fill:url(#heat-grad);transform-box:fill-box;transform-origin:50%;animation:2.4s ease-in-out infinite heat}@keyframes heat{50%{opacity:.7;transform:scale(1.18)}}.vortex{transform-box:fill-box;transform-origin:50%;animation:3s linear infinite spin}.vortex circle{fill:#145a6e59;stroke:#3fd0e0;stroke-width:.8px;stroke-dasharray:2 2}.vortex path{fill:none;stroke:#7ff0ff;stroke-width:1.6px;stroke-linecap:round;opacity:.9}.mist-ring{fill:#8cd2ff1f;stroke:#9fdcff;stroke-width:1px;stroke-dasharray:2 3;transform-box:fill-box;transform-origin:50%;animation:8s linear infinite spin}.dome-fill{fill:url(#dome-grad)}.dome-edge{fill:none;stroke:#9fe8ff;stroke-width:1.3px;filter:drop-shadow(0 0 3px #38c8ff)}.dome-lattice{fill:none;stroke:#a0ebff59;stroke-width:.6px}.dome-shine{fill:none;stroke:#fff;stroke-width:2px;stroke-linecap:round;stroke-dasharray:.12 .88;opacity:0;animation:3.2s ease-in-out infinite shine;animation-delay:calc(var(--i) * .5s)}@keyframes shine{0%{stroke-dashoffset:.12px;opacity:0}20%{opacity:.9}80%{opacity:.9}to{stroke-dashoffset:-1px;opacity:0}}.drop{fill:#c4eeff;filter:drop-shadow(0 0 1.5px #5cc8ff);transform-box:fill-box;transform-origin:50%;animation:1.4s ease-out infinite spray;animation-delay:calc(var(--i) * .23s)}@keyframes spray{0%{opacity:0;transform:translateY(0)scale(.6)}20%{opacity:1}to{opacity:0;transform:translateY(-13px)scale(1)}}@media (prefers-reduced-motion:reduce){.net-flow,.heat-glow,.vortex,.mist-ring,.drop{animation:none}.dome-shine{display:none}}.chat{z-index:2;-webkit-backdrop-filter:blur(3px);background:#08121e8c;border:1px solid #ffffff24;border-radius:12px;width:min(270px,100% - 20px);max-width:calc(100% - 20px);font-size:13px;position:absolute;box-shadow:0 6px 18px #00000059}.chat.closed{width:auto}.chat-head{cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;align-items:center;gap:4px;padding:2px 4px 2px 8px;display:flex}.chat-head:active{cursor:grabbing}.chat-head .grip{color:var(--muted);font-size:14px}.chat-head button{min-height:34px;color:var(--text);background:0 0;border:none;padding:0 6px;font-weight:700}.chat-title{text-align:left;cursor:inherit;touch-action:none;flex:1;align-items:center;gap:6px;display:flex}.chat-min{font-size:18px;color:var(--muted)!important}.chat .badge{background:var(--bad);color:#fff;border-radius:9px;padding:0 6px;font-size:11px;line-height:18px}.chat-list{flex-direction:column;gap:5px;max-height:150px;margin:0;padding:4px 10px;list-style:none;display:flex;overflow-y:auto}.chat-list li{line-height:1.3}.chat-list li.mine .chat-text{color:#cfe9ff}.chat-list .when{color:var(--muted);font-size:10.5px}.chat-list .chat-notice{color:var(--muted);font-size:12px;font-style:italic}.chat-del{float:right;min-height:0;color:var(--muted);background:0 0;border:none;padding:0 6px;font-size:11px}.chat-del:hover{color:var(--bad)}.chat-text{overflow-wrap:anywhere;text-shadow:0 1px 2px #000c}.chat-form{gap:6px;padding:6px 8px 8px;display:flex}.chat-form input{background:#00000059;flex:1;min-width:0}.chat-form button{padding:0 10px}
