:root{--bg:#0e1116;--panel:#171c24;--panel2:#1f2630;--ink:#e6edf3;--muted:#8b97a7;--line:#2c3542;--p0:#4fc3f7;--p1:#ff8a65;--p2:#aed581;--p3:#ba68c8;--accent:#ffd54f;--good:#66bb6a;--bad:#ef5350;--safe-top:env(safe-area-inset-top,0px);--safe-bottom:env(safe-area-inset-bottom,0px)}*{box-sizing:border-box}body{background:var(--bg);color:var(--ink);-webkit-tap-highlight-color:transparent;margin:0;font:14px/1.4 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}#app{flex-direction:column;height:100dvh;display:flex}header{padding:calc(10px + var(--safe-top)) 16px 10px;border-bottom:1px solid var(--line);background:var(--panel);align-items:center;gap:16px;display:flex}header h1{letter-spacing:2px;margin:0;font-size:16px}header .status{color:var(--muted);flex-wrap:wrap;gap:14px;display:flex}header .status b{color:var(--ink)}header .turn-pill{background:var(--panel2);border:1px solid var(--line);white-space:nowrap;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-weight:600;display:inline-flex}header .turn-pill.mine{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}header .turn-pill .muted{color:var(--muted);font-weight:500}.phases{flex:1;justify-content:center;align-items:center;gap:8px;display:flex}.step{letter-spacing:.3px;color:var(--muted);border:1px solid var(--line);background:#11161d;border-radius:999px;padding:4px 14px;font-size:12px}.step.cur{background:var(--accent);color:#1a1a1a;border-color:var(--accent);font-weight:700}.step.done{color:var(--ink);opacity:.55}.step.todo{color:var(--muted)}.sep{color:var(--muted);font-size:12px}main{flex:1;min-height:0;display:flex}.side{background:var(--panel);flex-direction:column;flex-shrink:0;gap:10px;width:288px;padding:12px;display:flex;overflow-y:auto}.side-l{border-right:1px solid var(--line)}.side-r{border-left:1px solid var(--line)}.player{border-top:3px solid var(--line);padding-top:8px}.player.eliminated{opacity:.5}.board-col{flex-direction:column;flex:1;min-width:0;display:flex}.board{flex:1;justify-content:center;align-items:center;min-height:0;padding:12px;display:flex}.board svg{width:100%;height:100%}.planet{pointer-events:none}.planet-goal-hex{fill:#ffd54f14;stroke:#ffd54f;stroke-width:3px;filter:drop-shadow(0 0 5px #ffd54f61)}.planet-aura{fill:#ffffff0d;stroke:#ffffff2e;stroke-width:1.2px}.planet-body{stroke-width:2.2px;filter:drop-shadow(0 2px 3px #000000b8)}.planet-rocky .planet-body{fill:#8d6235;stroke:#d19a57}.planet-ice .planet-body{fill:#5b9fc2;stroke:#b8e7f5}.planet-goal .planet-body{fill:#3d7a46;stroke:#9bdc77}.planet-shadow{fill:#03070c47}.planet-crater{fill:#21150f59;stroke:#ffebbc33;stroke-width:.8px}.planet-ice-facet{fill:none;stroke:#ebfcffb3;stroke-width:1.15px;stroke-linecap:round;stroke-linejoin:round}.planet-continent{fill:#93cd67d1}.planet-goal-star{fill:#ffe082;stroke:#0f1116c2;stroke-width:.9px;filter:drop-shadow(0 0 2px #ffe082ad)}.planet-spinner{fill:none;stroke:#e6f4ffcc;stroke-width:1.7px;stroke-linecap:round;filter:drop-shadow(0 0 2px #e6f4ff6b)}.planet-spinner-head{fill:#e6f4ffdb}.ship{transform-box:view-box;transform-origin:0 0;pointer-events:none}.ship.targetable{pointer-events:auto;cursor:crosshair}.ship-hull-outer{stroke:#ffffffb8;stroke-width:3.2px;stroke-linejoin:round;filter:drop-shadow(0 1px 2px #000000bf)}.ship-hull{stroke:#070a10;stroke-width:1.15px;stroke-linejoin:round}.ship-cockpit{fill:#eaf7ff;stroke:#070a10;stroke-width:.8px;filter:drop-shadow(0 0 2px #ffffff59)}.ship-exhaust{stroke:#cfefff;stroke-width:2px;stroke-linecap:round;opacity:.82;filter:drop-shadow(0 0 2px #4fc3f78c)}.landing-pad{pointer-events:none;opacity:.94;filter:drop-shadow(0 0 4px)}.landing-pad-outer{fill:#070a1094;stroke-width:2px;stroke-dasharray:4 3}.landing-pad-inner{fill:#ffffff14;stroke-width:1.4px;opacity:.78}.landing-pad-mark{stroke:#eaf7ff80;stroke-width:1.3px;stroke-linecap:round}.ship.landed .ship-hull-outer{stroke:#ffffff8c}.ship.landed .ship-hull{fill-opacity:.86}.ship.landed .ship-exhaust{opacity:.24;stroke-dasharray:2 3;filter:none}.ship-active-ring{fill:none;stroke-width:2.4px;opacity:.48;filter:drop-shadow(0 0 5px);animation:1.15s ease-in-out infinite shipPulse}@keyframes shipPulse{0%,to{opacity:.26}50%{opacity:.72}}.laser{stroke-width:3.5px;stroke-linecap:round;pointer-events:none;filter:drop-shadow(0 0 4px);animation:.42s ease-out forwards laserShot}@keyframes laserShot{0%{opacity:0;stroke-width:6px}18%{opacity:1}to{opacity:0;stroke-width:1px}}@media (prefers-reduced-motion:reduce){.laser{animation:.42s ease-out forwards laserFade}@keyframes laserFade{0%{opacity:0}20%{opacity:.9}to{opacity:0}}}.target-link{pointer-events:none}.target-link-line{stroke:currentColor;stroke-width:1.8px;stroke-dasharray:7 5;opacity:.5;stroke-linecap:round;filter:drop-shadow(0 0 3px)}.target-link-dot{fill:#ffffff2e;stroke:currentColor;stroke-width:1.6px;opacity:.84}.target-link.locked .target-link-line{stroke:#ffeb3b;stroke-width:2.7px;stroke-dasharray:none;opacity:.88;filter:drop-shadow(0 0 5px #ffeb3b8f)}.target-link.locked .target-link-dot{stroke:#ffeb3b;fill:#ffeb3b40;opacity:1}.target-halo{fill:none;stroke:var(--accent);stroke-width:2.5px;animation:1s ease-in-out infinite targetPulse}.target-lock-ring{fill:none;stroke:#ffeb3b;stroke-width:2.8px;opacity:.9;filter:drop-shadow(0 0 5px #ffeb3b80)}.target-lock-bracket{fill:none;stroke:#fff59d;stroke-width:2.2px;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 0 4px #ffeb3b73)}.ship.locked-target .target-halo{stroke:#ffeb3b;opacity:.95}@keyframes targetPulse{0%,to{opacity:.3}50%{opacity:1}}@media (prefers-reduced-motion:reduce){.target-halo{opacity:.9;animation:none}.target-link-line{opacity:.65}.ship-active-ring{opacity:.62;animation:none}}.ship-id{fill:#0a0d12;paint-order:stroke;stroke:#ffffff8c;stroke-width:.6px;font-size:15px;font-weight:700}.move-target:focus-visible,.rotate-btn:focus-visible,.ship.targetable:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.move-target{cursor:pointer}.move-target polygon{fill:#7cc35a2e;stroke:var(--good);stroke-width:2.5px}.move-target:hover polygon{fill:#7cc35a57}.move-preview-line{stroke:var(--good);stroke-width:2.2px;stroke-dasharray:4 4;opacity:.78;pointer-events:none;filter:drop-shadow(0 0 3px #aed58173)}.launch-preview-line{stroke:var(--accent);stroke-width:1.5px;stroke-dasharray:3 4;opacity:.42;pointer-events:none;filter:drop-shadow(0 0 3px #4fc3f752)}.inertia-preview{pointer-events:none}.inertia-line{stroke:currentColor;stroke-width:1.8px;stroke-dasharray:2 5;opacity:.46;stroke-linecap:round;filter:drop-shadow(0 0 3px)}.inertia-preview .inertia-ship{opacity:.5}.inertia-preview .ship-hull-outer{stroke:#ffffff6b;stroke-width:2.2px}.inertia-preview .ship-hull{fill-opacity:.3;stroke-width:.9px}.inertia-preview .ship-cockpit{opacity:.58}.inertia-preview .ship-exhaust{opacity:.26}.inertia-preview.landing .inertia-line{opacity:.7;stroke-dasharray:5 4}.inertia-preview.offmap .inertia-line{stroke:#ff8a65;opacity:.75}.inertia-out line{stroke:#ffab91;stroke-width:2.4px;stroke-linecap:round;filter:drop-shadow(0 0 3px #ff8a658c)}.inertia-label{fill:#f5fbff;letter-spacing:0;pointer-events:none;paint-order:stroke;stroke:#05080ce6;stroke-width:2.4px;font-size:8px;font-weight:900}.rotate-btn{cursor:pointer}.rotate-btn circle{fill:#11161d;stroke:var(--accent);stroke-width:2px}.rotate-btn:hover circle{fill:#2b3644}.launch-btn circle{fill:#4fc3f71f}.launch-btn:hover circle{fill:#4fc3f742}.ship-preview{pointer-events:none;opacity:.74}.ship-preview .ship-hull-outer{stroke:#ffffff94;stroke-width:2.5px;filter:drop-shadow(0 0 3px #0000008c)}.ship-preview .ship-hull{stroke-width:1px;fill-opacity:.48}.ship-preview .ship-cockpit{opacity:.85}.ship-preview .ship-exhaust{opacity:.5}.move-target .thrust-preview{opacity:.86}.move-target text:not(.move-cost),.rotate-btn text:not(.move-cost){display:none}.move-cost{fill:#e6f4ff;pointer-events:none;paint-order:stroke;stroke:#05080cd9;stroke-width:2.5px;font-size:9px;font-weight:800}.move-target,.rotate-btn{animation:.95s ease-in-out 2 boardHint}@keyframes boardHint{0%,to{opacity:1}50%{opacity:.4}}@media (prefers-reduced-motion:reduce){.move-target,.rotate-btn{animation:none}}#app.mode-game{overflow:hidden}.game-map{flex:auto;width:100%;min-height:0;position:relative;overflow:hidden}.board-backdrop{background:var(--bg);touch-action:none;cursor:grab;position:absolute;inset:0}.board-backdrop.panning{cursor:grabbing}.board-backdrop svg{width:100%;height:100%;display:block}.overlay{pointer-events:none;z-index:10;position:absolute}.overlay>*{pointer-events:auto}.title-btn{cursor:pointer;color:var(--ink);letter-spacing:2px;background:0 0;border:none;padding:0;font-family:inherit;font-size:16px;font-weight:700}.title-btn:hover{color:var(--accent)}.newgame-prompt{z-index:40;pointer-events:auto;background:#00000080;justify-content:center;align-items:center;display:flex;position:absolute;inset:0}.ng-card{background:var(--panel);border:1px solid var(--line);text-align:center;border-radius:12px;max-width:320px;padding:20px 22px;box-shadow:0 10px 40px #0009}.ng-card h2{margin:0 0 8px;font-size:18px}.ng-card p{color:var(--muted);margin:0 0 16px;font-size:13px}.ng-card .row{justify-content:center;gap:10px;display:flex}.hud-top{z-index:20;pointer-events:auto;padding:calc(8px + var(--safe-top)) 14px 8px;-webkit-backdrop-filter:blur(8px);border-bottom:1px solid var(--line);background:#171c24d1;flex-wrap:wrap;align-items:center;gap:14px;display:flex;top:0;left:0;right:0}.overlay-l{top:calc(var(--hud-h,56px) + 8px);left:34px;bottom:calc(var(--confirm-h,0px) + 22px);width:280px;max-width:74vw}.overlay-r{top:calc(var(--hud-h,56px) + 8px);right:60px;bottom:calc(var(--confirm-h,0px) + 22px);width:280px;max-width:74vw}.overlay-l>.drawer-scroll,.overlay-r>.drawer-scroll{touch-action:pan-y;flex-direction:column;gap:10px;min-height:0;max-height:100%;display:flex;overflow:hidden auto}.overlay-r .guide-feed,.overlay-r .logfeed{-webkit-backdrop-filter:blur(8px);border:1px solid var(--line);background:#171c24e6;border-radius:8px;margin-top:0;padding:8px 10px;box-shadow:0 4px 16px #00000073}.guide-feed .loghead{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;font-size:10px;display:flex}.guide-feed .label,.guide-feed .legend{margin:5px 0}.rules-btn{pointer-events:auto;cursor:pointer;border:1px solid var(--line);color:var(--ink);font:inherit;text-transform:none;letter-spacing:0;background:#4fc3f71f;border-radius:6px;flex:none;padding:2px 7px;font-size:10px}.rules-btn:hover{border-color:var(--accent);color:var(--accent)}.turn-checklist{border-top:1px solid #ffffff0f;border-bottom:1px solid #ffffff0f;margin:6px 0 8px;padding:6px 0;list-style:none}.turn-checklist li{color:var(--muted);grid-template-columns:14px 1fr;align-items:start;gap:7px;padding:4px 0;font-size:11px;display:grid}.turn-checklist b{color:var(--ink);font-size:12px;line-height:1.2;display:block}.turn-checklist small{color:var(--muted);margin-top:1px;line-height:1.25;display:block}.turn-checklist .check-dot{border:1px solid var(--line);background:#ffffff14;border-radius:50%;width:8px;height:8px;margin-top:3px}.turn-checklist li.done .check-dot{background:var(--good);border-color:var(--good);box-shadow:0 0 8px #aed58152}.turn-checklist li.current .check-dot{background:var(--accent);border-color:var(--accent);box-shadow:0 0 8px #4fc3f773}.turn-checklist li.blocked .check-dot{background:var(--bad);border-color:var(--bad);box-shadow:0 0 8px #ef535066}.turn-checklist li.todo b{color:var(--muted)}.turn-checklist li.blocked b,.turn-checklist li.blocked small{color:var(--bad)}.turn-summary{border:1px solid #ffffff14;border-left:3px solid var(--seat);background:#ffffff0a;border-radius:8px;margin:6px 0 8px;padding:8px 9px;font-size:12px;line-height:1.35}.turn-summary-head{align-items:center;gap:7px;margin-bottom:3px;display:flex}.turn-summary strong{color:var(--accent);margin-right:4px}.turn-summary.blocked{border-color:#ef53506b;border-left-color:var(--bad);background:#ef535014}.turn-summary.blocked strong{color:var(--bad)}.turn-summary.waiting{opacity:.86}.rules-body{font-size:12px;line-height:1.5}.rules-body h4{text-transform:uppercase;letter-spacing:.06em;color:var(--accent);margin:12px 0 3px;font-size:11px}.rules-body h4:first-child{margin-top:2px}.rules-body p{color:var(--ink);margin:0 0 4px}.rules-body ul{margin:2px 0 4px;padding-left:16px}.rules-body li{color:var(--ink);margin:1px 0}.rail-left{left:0;top:calc(var(--hud-h,56px) + 8px);bottom:calc(var(--confirm-h,0px) + 14px);z-index:16;flex-direction:column;gap:6px;display:flex}.player-tab{pointer-events:auto;cursor:pointer;-webkit-backdrop-filter:blur(6px);border:1px solid var(--line);width:30px;min-height:46px;color:var(--ink);background:#1f2630eb;border-left:none;border-radius:0 10px 10px 0;flex-direction:column;justify-content:center;align-items:center;gap:4px;padding:6px 0;display:flex}.player-tab .dot{width:12px;height:12px}.player-tab .pt-num{font-size:12px;font-weight:700}.player-tab .pt-rdy{color:var(--good);font-size:10px}.player-tab.open{border-color:var(--accent);background:#2b3644f2}.rail-right{right:0;top:calc(var(--hud-h,56px) + 8px);z-index:16;flex-direction:column;gap:6px;display:flex}.right-tab{border-left:1px solid var(--line);border-right:none;border-radius:10px 0 0 10px;min-height:64px}.right-tab .rt-cap{writing-mode:vertical-rl;text-orientation:mixed;letter-spacing:.05em;font-size:11px}.commit-bar{z-index:14;pointer-events:auto;border-radius:12px;align-items:stretch;display:flex;position:absolute;bottom:12px;left:50%;transform:translate(-50%);box-shadow:0 4px 16px #00000080}.commit-bar.command-tray{bottom:calc(12px + var(--safe-bottom));z-index:18;border:1px solid var(--line);border-top:2px solid var(--seat);-webkit-backdrop-filter:blur(10px);background:#171c24eb;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"main commit""prompt prompt";align-items:center;gap:8px 12px;width:min(860px,100vw - 112px);max-height:min(42dvh,360px);padding:10px;display:grid}.command-main{flex-direction:column;grid-area:main;gap:7px;min-width:0;display:flex}.command-status{min-width:0;color:var(--muted);white-space:nowrap;align-items:center;gap:7px;font-size:12px;display:flex}.command-status b{color:var(--ink)}.command-next{min-width:0;color:var(--muted);background:#ffffff0a;border:1px solid #ffffff14;border-radius:8px;align-items:baseline;gap:7px;padding:7px 9px;font-size:12px;line-height:1.25;display:flex}.command-next b{color:var(--accent);flex:none}.command-next span{white-space:normal;min-width:0}.command-next.blocked{color:#ffb4b4;background:#ef53501a;border-color:#ef535073}.command-next.blocked b{color:var(--bad)}.command-next.done b{color:var(--good)}.command-actions{flex-wrap:wrap;align-items:center;gap:7px;min-width:0;display:flex}.cmd-action{min-height:38px;color:var(--ink);background:#4fc3f729;border-color:#4fc3f78c;border-radius:8px;padding:8px 11px;font-weight:700}.cmd-action.ghost{border-color:var(--line);background:#ffffff0f}.cmd-action.undo{color:#ffe082;background:#ffd54f1a;border-color:#ffd54f73}.cmd-hint{min-height:34px;color:var(--muted);background:#ffffff0a;border:1px solid #ffffff14;border-radius:8px;align-items:center;padding:6px 9px;font-size:12px;font-weight:650;display:inline-flex}.cmd-hint.target{color:#ffe082;background:#ffe08214;border-color:#ffe08259}.command-prompt{border-top:1px solid #ffffff14;grid-area:prompt;min-width:0;padding-top:8px}.command-prompt .label{margin:0 0 6px;font-size:12px}.command-prompt .row{flex-wrap:wrap;align-items:center;gap:7px;display:flex}.command-prompt button{min-height:38px}.command-commit{grid-area:commit;justify-content:flex-end;min-width:max-content;display:flex}.commit-btn{font:inherit;cursor:pointer;border:1px solid var(--accent);background:var(--accent);color:#1a1a1a;border-radius:12px;padding:12px 22px;font-size:14px;font-weight:700}.commit-btn:hover{background:var(--accent);filter:brightness(1.05)}.commit-btn.warn{background:var(--panel2);color:var(--bad);cursor:not-allowed;border-color:#7a2e2e}.commit-btn.warn:hover{background:var(--panel2);filter:none}.commit-bar.armed .commit-btn{border-radius:12px 0 0 12px}.commit-confirm{align-items:stretch;display:flex}.commit-confirm .commit-btn{border-radius:12px 0 0 12px}.commit-x{font:inherit;cursor:pointer;color:#ffb4b4;background:#3a1d1d;border:1px solid #7a2e2e;border-left:none;border-radius:0 12px 12px 0;padding:12px 15px;font-size:14px;font-weight:700}.commit-x:hover{background:#4a2424}.player-tab.actionable{border-color:var(--accent);background:#2b2613f0;box-shadow:0 0 10px #ffd54f99}.overlay .player,.overlay .controls{-webkit-backdrop-filter:blur(6px);background:#1f2630e0;box-shadow:0 4px 16px #00000073}.drawer-controls{border:1px solid var(--accent);box-shadow:0 0 10px #ffd54f66}.overlay-board{top:calc(var(--hud-h,56px) + 12px);max-width:92vw;left:50%;transform:translate(-50%)}.overlay-board .phasebar{border:1px solid var(--line);border-top:1px solid var(--line);-webkit-backdrop-filter:blur(8px);background:#171c24e6;border-radius:10px}.mapctl{right:12px;bottom:calc(var(--confirm-h,0px) + var(--safe-bottom) + 42px);flex-direction:column;gap:8px;display:flex}.mapbtn{-webkit-backdrop-filter:blur(6px);border:1px solid var(--line);background:#1f2630e6;border-radius:10px;justify-content:center;align-items:center;width:42px;height:42px;padding:0;font-size:22px;line-height:1;display:flex}@media (width<=760px){.overlay-l{width:82vw;max-width:340px}.overlay-r{width:auto;max-width:none;left:40px}.hud-top{padding:calc(6px + var(--safe-top)) 10px 6px;gap:8px 10px}.commit-bar.command-tray{left:8px;right:8px;bottom:calc(8px + var(--safe-bottom));touch-action:pan-y;grid-template-columns:1fr;grid-template-areas:"main""prompt""commit";align-items:stretch;gap:8px;width:auto;max-height:min(48dvh,330px);padding:9px;overflow-y:auto;transform:none}.command-main{gap:6px}.command-actions{flex-wrap:nowrap;gap:6px;padding-bottom:1px;overflow-x:auto}.cmd-action{flex:none;min-height:44px;padding:9px 13px}.cmd-hint{flex:none;min-height:40px}.command-commit{justify-content:stretch;min-width:0}.command-commit .commit-btn{width:100%;min-height:46px}.commit-confirm{width:100%}.commit-confirm .commit-btn{flex:1}.commit-x{min-width:48px}.mapctl{right:8px}}.phasebar{border-top:1px solid var(--line);background:var(--panel);align-items:center;gap:16px;padding:10px 16px;display:flex}.phasebar .message{flex:1}.message{min-height:20px;color:var(--accent);font-size:13px}.message.error{color:var(--bad)}.player{border:1px solid var(--line);background:var(--panel2);border-radius:8px;padding:10px}.player.active{box-shadow:0 0 0 2px var(--accent), 0 0 18px #ffd54f38}.player.ready{opacity:.72}.player.waiting:not(.active){opacity:.88}.player .phead{width:100%;color:inherit;text-align:left;cursor:pointer;background:0 0;border:none;align-items:center;gap:8px;margin:0 0 6px;padding:0;font-family:inherit;font-size:14px;font-weight:700;display:flex}.player.compact{padding:6px 10px}.player.compact .phead{margin:0}.player.compact .pstat{gap:9px;font-size:11px}.player .phead-fixed{cursor:default}.player .phead:hover{background:0 0}.player .phead .chev{color:var(--muted);margin-left:auto;font-size:11px}.pstat{color:var(--muted);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.pstat b{color:var(--ink)}.pstat .malf-mini{color:var(--bad)}.dot{border-radius:50%;width:10px;height:10px;display:inline-block}.res{color:var(--muted);gap:14px;margin:4px 0;display:flex}.res b{color:var(--ink)}[data-res]{border-radius:4px;padding:0 3px}[data-res].flash-up{animation:.7s ease-out resFlashUp}[data-res].flash-down{animation:.7s ease-out resFlashDown}@keyframes resFlashUp{0%{background:0 0}18%{background:#66bb6a80}to{background:0 0}}@keyframes resFlashDown{0%{background:0 0}18%{background:#ef535080}to{background:0 0}}.warn{color:var(--bad);font-size:12px}.delta{font-size:12px;font-weight:700}.delta.pos{color:var(--good)}.delta.neg{color:var(--bad)}.delta.zero{color:var(--muted)}.crew{flex-wrap:wrap;gap:4px;margin:6px 0;display:flex}.chip{border:1px solid var(--line);background:#11161d;border-radius:5px;align-items:center;gap:4px;padding:3px 6px;font-size:11px;display:flex}.chip.stasis{opacity:.55}.chip.stage1{border-color:#6d4c8c}.chip.stage2{border-color:#4a6db0}.chip.active{border-color:var(--good);color:#d7f3d8}.chip .inj{color:var(--bad);font-weight:700}.chip .sel-mark{color:var(--accent);font-weight:700}.chip.sel{box-shadow:0 0 0 2px var(--accent);opacity:1;background:#2c2913}.chip.actionable{cursor:pointer;border-color:var(--accent);box-shadow:0 0 6px #ffd54f8c}.chip.actionable:hover{background:#2b3644}.chip.open{box-shadow:0 0 0 2px var(--accent)}.malf{color:var(--bad);min-height:14px;margin:2px 0;font-size:12px}.hand{flex-wrap:wrap;gap:4px;margin-top:6px;display:flex}.card{border:1px solid var(--line);cursor:default;background:#11161d;border-radius:5px;padding:4px 6px;font-size:11px}.card.back{color:var(--muted);background:#11161d;border-style:dashed}.hand-card{border-radius:5px;align-items:stretch;display:inline-flex;box-shadow:0 0 6px #ffd54f66}.play-card{font:inherit;cursor:pointer;touch-action:manipulation;color:#ffe9a8;border:1px solid var(--accent);background:#1a1c14;border-right:none;border-radius:5px 0 0 5px;padding:4px 6px;font-size:11px}.play-card:hover{background:#20303f}.play-card.picked{box-shadow:inset 0 0 0 2px var(--accent);background:#20303f}.card-discard{font:inherit;cursor:pointer;touch-action:manipulation;color:var(--muted);border:1px solid var(--accent);background:#1a1c14;border-radius:0 5px 5px 0;padding:4px 5px;font-size:10px}.card-discard.on{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}.hand-note{margin-top:4px}.controls{border:1px solid var(--line);background:var(--panel2);border-radius:8px;padding:10px}.controls h3{color:var(--muted);text-transform:uppercase;letter-spacing:1px;margin:0 0 8px;font-size:13px}.waiting-note{color:var(--muted);padding:4px 2px 2px;font-size:12px;font-style:italic}.controls .row{flex-wrap:wrap;gap:6px;margin-bottom:6px;display:flex}.controls .label{width:100%;color:var(--muted);margin-top:4px;font-size:12px}.controls .board-hint{color:var(--good)}.dirgrid{grid-template-rows:repeat(2,30px);grid-template-columns:repeat(3,34px);grid-template-areas:"nw n ne""sw s se";gap:4px;margin:4px 0;display:grid}.dirgrid button{width:34px;padding:0;font-size:15px}button{font:inherit;border:1px solid var(--line);color:var(--ink);cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none;background:#222b36;border-radius:6px;padding:5px 10px;font-size:12px}button:hover{background:#2b3644}button.primary{background:var(--accent);color:#1a1a1a;border-color:var(--accent);font-weight:600}button.primary:hover{background:var(--accent);filter:brightness(1.05)}button.ghost{background:0 0}button.danger{color:#ffb4b4;background:#3a1d1d;border-color:#7a2e2e}button.danger:hover{background:#4a2424}button:disabled{opacity:.4;cursor:not-allowed}.banner{text-align:center;background:var(--accent);color:#1a1a1a;border-radius:8px;padding:14px;font-size:18px;font-weight:700}.legend{color:var(--muted);font-size:11px}button.mini{margin-left:4px;padding:2px 8px;font-size:14px}#toast-layer{z-index:50;pointer-events:none;flex-direction:column;align-items:center;gap:6px;display:flex;position:fixed;top:60px;left:50%;transform:translate(-50%)}.turn-toast{background:var(--panel2);color:var(--ink);border:1px solid var(--line);border-radius:999px;align-items:center;gap:8px;padding:8px 18px;font-size:15px;font-weight:700;animation:1.6s forwards turnToast;display:inline-flex;box-shadow:0 6px 20px #00000080}.turn-toast.mine{background:var(--accent);color:#1a1a1a;border-color:var(--accent)}@keyframes turnToast{0%{opacity:0;transform:translateY(-10px)scale(.96)}12%{opacity:1;transform:translateY(0)scale(1)}80%{opacity:1;transform:translateY(0)scale(1)}to{opacity:0;transform:translateY(-6px)scale(.98)}}@media (prefers-reduced-motion:reduce){.turn-toast{animation:1.6s forwards turnToastFade}@keyframes turnToastFade{0%{opacity:0}10%{opacity:1}80%{opacity:1}to{opacity:0}}}main.setup{align-items:stretch;gap:0}.setup-panel{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;flex-shrink:0;gap:14px;width:360px;padding:24px;display:flex}.setup-panel h2{margin:0 0 4px;font-size:18px}.cfg-row{align-items:center;gap:10px;display:flex}.cfg-label{width:90px;color:var(--muted)}.cfg-val{text-align:center;min-width:28px;font-size:16px}.cfg-val.seed{font-variant-numeric:tabular-nums;min-width:96px;font-size:14px}.cfg-row button{width:30px}.cfg-row button[data-act=reseed]{width:auto}.cfg-row button[data-act=controller]{width:auto;min-width:110px}.cfg-row.online-row{gap:8px;margin-top:2px}.cfg-row.online-row button{flex:1;width:auto}.cfg-row.join-row{gap:8px}.join-input{min-width:0;font:inherit;letter-spacing:.18em;text-transform:uppercase;text-align:center;border:1px solid var(--line);color:var(--ink);background:#11161d;border-radius:6px;flex:1;padding:7px 10px;font-size:16px}.join-input::placeholder{letter-spacing:normal;text-transform:none;color:var(--muted)}.join-input:focus{border-color:var(--accent);outline:none;box-shadow:0 0 0 2px #ffd54f4d}.cfg-row.join-row button{width:auto}.roomcode{letter-spacing:.15em;background:var(--line);border-radius:6px;padding:2px 8px;font-family:monospace;font-size:20px}.online-badge{color:var(--muted);border:1px solid var(--line);white-space:nowrap;border-radius:10px;padding:2px 8px;font-size:12px}.notify-btn{white-space:nowrap;min-width:108px}.hud-top .notify-btn{padding:3px 8px;font-size:11px}.notify-row .notify-btn{width:auto}.seats{flex-direction:column;gap:6px;display:flex}.seats .cfg-label{align-items:center;gap:6px;display:flex}.ctrl-badge{border:1px solid var(--line);color:var(--muted);border-radius:8px;padding:1px 6px;font-size:11px}.ctrl-badge.bot{color:#ffd54f;border-color:#6b5a1f}.logfeed{border:1px solid var(--line);border-radius:8px;margin-top:10px;padding:8px 10px;font-size:12px}.loghead{color:var(--muted);text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;align-items:center;gap:8px;margin-bottom:4px;font-size:10px;display:flex}.logmore{opacity:.7;margin-left:6px}.logsize{border-radius:5px;padding:1px 6px;font-size:11px;line-height:1.4}.logrow{align-items:center;gap:6px;padding:2px 0;display:flex}.logrow .logr{color:var(--muted);font-variant-numeric:tabular-nums;min-width:24px}.logrow .logt{min-width:0}.logrow.hostile .logt{color:#ff8a65}.logrow.hostile{font-weight:500}.logrow.system .logt{color:var(--muted);font-style:italic}.report h3{margin:6px 0 4px;font-size:16px}.report-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:10px 0;display:grid}.report-grid div{border:1px solid var(--line);background:#11161d;border-radius:6px;justify-content:space-between;gap:8px;padding:6px 8px;display:flex}.report-grid span,.report-player div{color:var(--muted)}.report-grid b,.report-player b{color:var(--ink)}.report-players{flex-direction:column;gap:8px;display:flex}.report-player{border:1px solid var(--line);background:#11161d;border-radius:6px;padding:8px;font-size:12px}.report-player div{flex-wrap:wrap;align-items:center;gap:6px;margin:2px 0;display:flex}button.big{margin-top:8px;padding:12px;font-size:15px}.setup-preview{flex:1;min-width:0;padding:16px;display:flex}.setup-preview .board{flex:1;min-width:0}@media (width<=760px){#app:not(.mode-game){height:auto;min-height:100dvh}header{padding:calc(8px + var(--safe-top)) 12px 8px;flex-wrap:wrap;gap:8px 12px}header h1{font-size:15px}.phases{flex-wrap:wrap;flex-basis:100%;order:5;justify-content:flex-start;gap:6px}main{flex-direction:column}.board-col{flex:none;order:-1}.board{flex:none;height:auto;padding:8px;display:block}.board svg{height:auto}.side{flex:none;width:auto;overflow:visible}.side-l{border-right:none}.side-r{border-left:none;border-top:1px solid var(--line)}main.setup{flex-direction:column}.setup-panel{border-right:none;border-bottom:1px solid var(--line);width:auto}.setup-preview{flex:none;height:38vh;padding:10px}button{padding:8px 12px}.dirgrid{grid-template-rows:repeat(2,42px);grid-template-columns:repeat(3,46px)}.dirgrid button{width:46px}}
