body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}:root{--bg:#14161f;--bg-raised:#1d2030;--bg-panel:#232739;--line:#363c55;--line-soft:#2b3047;--ink:#e8e6df;--ink-dim:#a9a698;--ink-faint:#6d6b60;--gold:#e5c451;--gold-soft:#b39a45;--danger:#e06c5f;--good:#58b368;--floor-a:#4a4136;--floor-b:#443c32;--wall:#23201b;--accent:#8fa3e8}*{box-sizing:border-box}html,body,#root{height:100%}body{background:var(--bg);color:var(--ink);margin:0;font-family:Segoe UI,Noto Sans,system-ui,-apple-system,sans-serif;font-size:14px;overflow:hidden}button{cursor:pointer;font-family:inherit}.app-frame{grid-template:"top top top"48px"players board log"1fr"dock dock dock"236px/230px 1fr 280px;gap:0;height:100vh;display:grid}.top-bar{border-bottom:1px solid var(--line);background:linear-gradient(#262a3d,#1d2030);grid-area:top;align-items:center;gap:18px;padding:0 16px;display:flex}.game-title{letter-spacing:3px;color:var(--gold);text-shadow:0 0 14px #e5c45159;white-space:nowrap;font-size:17px;font-weight:800}.turn-indicator{text-align:center;color:var(--ink-dim);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:14px;overflow:hidden}.turn-indicator.mine{color:var(--gold);animation:2.2s ease-in-out infinite glowPulse}.turn-indicator.urgent{color:#fff;background:#e06c5f40;border-radius:8px;padding:4px 10px;animation:1.2s ease-in-out infinite glowPulse}.turn-indicator .dot{border-radius:50%;width:10px;height:10px;margin-right:6px;display:inline-block}@keyframes glowPulse{0%,to{opacity:1}50%{opacity:.65}}.top-right{align-items:center;gap:10px;display:flex}.deck-chip{color:var(--ink-dim);background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:20px;padding:3px 10px;font-size:13px}button.discard-chip{cursor:pointer;transition:border-color .15s}button.discard-chip:hover{border-color:var(--gold-soft)}.discard-chip small{color:var(--ink-faint);font-size:11px}.ghost-button{color:var(--ink-dim);border:1px solid var(--line);background:0 0;border-radius:8px;padding:5px 12px;font-size:13px;transition:all .15s}.ghost-button:hover{color:var(--ink);border-color:var(--gold-soft)}.players-panel{background:var(--bg-raised);border-right:1px solid var(--line-soft);flex-direction:column;grid-area:players;gap:10px;padding:12px 10px;display:flex;overflow-y:auto}.player-card{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:10px;padding:9px 11px;transition:border-color .25s,box-shadow .25s,opacity .4s}.player-card.active{border-color:var(--gold-soft);box-shadow:0 0 12px #e5c4512e}.player-card.responding{border-color:var(--danger);animation:1.1s infinite glowPulse;box-shadow:0 0 12px #e06c5f4d}.player-card.eliminated{opacity:.45}.player-head{align-items:center;gap:8px;display:flex}.player-portrait{background:#171a26;border:2px solid;border-radius:8px;flex:none;justify-content:center;align-items:center;width:30px;height:30px;display:flex;overflow:hidden}.player-portrait img{width:24px;height:24px;image-rendering:pixelated}.tag-sprite{width:16px;height:16px;image-rendering:pixelated;vertical-align:-3px}.inv-sprite{width:18px;height:18px;image-rendering:pixelated;vertical-align:-4px}.player-name{text-overflow:ellipsis;white-space:nowrap;flex:1;font-weight:700;overflow:hidden}.player-turn-pip{color:var(--gold);font-size:11px;animation:1.4s infinite glowPulse}.player-dead{color:var(--ink-faint);margin-top:5px;font-size:13px}.hp-bar{border:1px solid var(--line-soft);background:#171a26;border-radius:8px;height:16px;margin-top:7px;position:relative;overflow:hidden}.hp-fill{border-radius:7px;height:100%;transition:width .5s cubic-bezier(.2,.8,.3,1),background .4s}.hp-fill.good{background:linear-gradient(90deg,#3f9153,#58b368)}.hp-fill.worn{background:linear-gradient(90deg,#b3893d,#d8a944)}.hp-fill.dire{background:linear-gradient(90deg,#a33f3f,#e06c5f)}.hp-label{color:#fff;text-shadow:0 1px 2px #000000b3;justify-content:center;align-items:center;font-size:10.5px;font-weight:700;display:flex;position:absolute;inset:0}.player-tags{flex-wrap:wrap;gap:4px;margin-top:7px;display:flex}.tag{border:1px solid var(--line-soft);color:var(--ink-dim);cursor:help;background:#181b28;border-radius:6px;padding:1px 6px;font-size:12px}.tag small{color:var(--gold);vertical-align:super;font-size:9px}.known-count{white-space:nowrap}.treasure-dot{vertical-align:middle;border:1px solid #00000080;border-radius:50%;width:7px;height:7px;margin-left:3px;display:inline-block}.tag.treasure-tag{border-color:var(--gold-soft);animation:1.6s infinite glowPulse}.responding-note{color:var(--danger);margin-top:6px;font-size:11.5px}.board-panel{background:radial-gradient(ellipse at 50% 30%, #8fa3e80f, transparent 60%), var(--bg);grid-area:board;justify-content:center;align-items:center;padding:10px;display:flex;position:relative;overflow:hidden}.board-loading{color:var(--ink-faint);letter-spacing:1px;font-size:16px}.board-holder{justify-content:center;align-items:center;width:100%;height:100%;display:flex;position:relative}.board-svg{filter:drop-shadow(0 14px 30px #00000080);max-width:100%;max-height:100%}.floor.a{fill:var(--floor-a)}.floor.b{fill:var(--floor-b)}.floor-dot{fill:#00000047}.solid-stone{fill:#2a2723;stroke:#1b1916;stroke-width:2px}.stone-glyph{fill:#3d3830;font-size:22px}.home-ring{fill:none;stroke-width:3px;opacity:.9}.home-ring.inner{stroke-width:1.5px;opacity:.5;stroke-dasharray:4 5}.thornbush-sprite{filter:drop-shadow(0 2px 2px #0006)}.wall-water{fill:#3d7bd6;opacity:.85;filter:drop-shadow(0 0 8px #5aa0ffb3)}.hp-pip{fill:#ffd9d0;paint-order:stroke;stroke:#000c;stroke-width:3px;font-size:12px;font-weight:700}.wall-std{fill:#201d18;stroke:#0e0d0a;stroke-width:1px}.wall-std.damaged{fill:#322d24}.wall-illusion-revealed{fill:#8fa3e840;stroke:#8fa3e880;stroke-dasharray:5 4;stroke-width:1.5px}.wall-door{fill:#7a5230;stroke:#4a2f18;stroke-width:1.5px}.wall-door.open{fill:#8d6a45}.door-gap{fill:var(--floor-a)}.door-keyhole{fill:#2c1c0d}.door-jam{fill:#e06c5f;font-size:13px;font-weight:900}.wall-fire{fill:#ff7a288c;stroke:#ffaa3ccc;stroke-width:1.5px}.wall-fire.flicker{animation:.7s ease-in-out infinite alternate fireFlicker}@keyframes fireFlicker{0%{opacity:.35}to{opacity:.9}}.board-svg image{image-rendering:pixelated}.flipbook .fb1{animation:.66s step-end infinite flipFrame1}.flipbook .fb2{animation:.66s step-end infinite flipFrame2}.flipbook.fast .fb1,.flipbook.fast .fb2{animation-duration:.24s}@keyframes flipFrame1{0%{opacity:1}50%{opacity:0}to{opacity:1}}@keyframes flipFrame2{0%{opacity:0}50%{opacity:1}to{opacity:0}}.item-glyph{font-size:18px}.board-item{pointer-events:none}.item-shadow{fill:#0000004d}.treasure-badge{stroke:#0009;stroke-width:1.2px}.wizard-sprite{pointer-events:none;transition:transform .45s cubic-bezier(.3,.9,.35,1.05)}.wizard-sprite.warped{transition:none;animation:.45s ease-out warpIn}@keyframes warpIn{0%{opacity:0;filter:brightness(3)}40%{opacity:1}to{filter:brightness()}}.wizard-sprite.dead{filter:grayscale()brightness(.6);opacity:.65}.wiz-base{opacity:.4}.carry-chest{filter:drop-shadow(0 1px 2px #000000b3)}.me-halo{fill:none;stroke:var(--gold);stroke-width:2px;stroke-dasharray:6 7;opacity:.75;animation:10s linear infinite spinHalo}@keyframes spinHalo{to{stroke-dashoffset:-130px}}.wizard-name{fill:#fff;paint-order:stroke;stroke:#000000bf;stroke-width:3px;font-size:11px;font-weight:700}.hp-bg{fill:#0a0a10d1;stroke:#ffffff2e;stroke-width:.8px}.hp-text{fill:#ffb3b3;font-size:9.5px;font-weight:700}.status-glyphs{paint-order:stroke;stroke:#0009;stroke-width:2px;font-size:13px}.warp-circle{stroke:#0000008c;stroke-width:1.5px;opacity:.92}.warp-letter{fill:#16141c;font-size:11px;font-weight:900}.warp-marker{pointer-events:none}.hitbox{fill:#0000}.hitbox.quiet:hover{fill:#ffffff0d}.los-tint{fill:#8fa3e829;pointer-events:none}.los-wall{fill:#8fa3e866}.target-tint{fill:#e5c4514d;stroke:var(--gold);stroke-width:2px;cursor:crosshair;animation:1.1s ease-in-out infinite targetPulse}.target-wall{fill:#e5c4518c;stroke:var(--gold);stroke-width:1.5px;cursor:crosshair;animation:1.1s ease-in-out infinite targetPulse}@keyframes targetPulse{0%,to{opacity:1}50%{opacity:.55}}.move-tint{fill:#58b36821;stroke:#58b3688c;stroke-width:1.5px;stroke-dasharray:5 4;cursor:pointer;transition:fill .15s}.move-tint:hover{fill:#58b36852}.sector-target{fill:#e5c4511f;stroke:var(--gold);stroke-width:2.5px;stroke-dasharray:10 7;cursor:crosshair;animation:1.3s infinite targetPulse}.sector-target-glyph{fill:var(--gold);pointer-events:none;opacity:.8;font-size:46px}.ghost-sector{cursor:crosshair}.ghost-rect{fill:#8fa3e812;stroke:var(--accent);stroke-width:2.5px;stroke-dasharray:12 9;animation:1.3s infinite targetPulse}.ghost-sector:hover .ghost-rect{fill:#8fa3e829}.ghost-glyph{fill:var(--accent);pointer-events:none;opacity:.85;font-size:46px}.projectile-fly{animation:fly var(--flyd,.55s) cubic-bezier(.3, 0, .7, 1) var(--flydelay,0s) both;filter:drop-shadow(0 0 6px #ffdc8c8c);pointer-events:none;opacity:0}@keyframes fly{0%{transform:translate(var(--x0), var(--y0));opacity:0}10%{opacity:1}85%{opacity:1}to{transform:translate(var(--x1), var(--y1));opacity:0}}.spin-thrown{animation:.3s linear infinite spinThrown}@keyframes spinThrown{to{transform:rotate(360deg)}}.fx-burst{pointer-events:none}.fx-burst image{opacity:0}.burst2 .f0{animation:b2f0 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}.burst2 .f1{animation:b2f1 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}@keyframes b2f0{0%{opacity:1}50%,to{opacity:0}}@keyframes b2f1{0%{opacity:0}50%{opacity:1}to{opacity:0}}.burst3 .f0{animation:b3f0 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}.burst3 .f1{animation:b3f1 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}.burst3 .f2{animation:b3f2 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}@keyframes b3f0{0%{opacity:1}33.3%,to{opacity:0}}@keyframes b3f1{0%{opacity:0}33.3%{opacity:1}66.7%,to{opacity:0}}@keyframes b3f2{0%{opacity:0}66.7%{opacity:1}to{opacity:0}}.burst4 .f0{animation:b4f0 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}.burst4 .f1{animation:b4f1 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}.burst4 .f2{animation:b4f2 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}.burst4 .f3{animation:b4f3 var(--fxd,.55s) step-end var(--fxdelay,0s) forwards}@keyframes b4f0{0%{opacity:1}25%,to{opacity:0}}@keyframes b4f1{0%{opacity:0}25%{opacity:1}50%,to{opacity:0}}@keyframes b4f2{0%{opacity:0}50%{opacity:1}75%,to{opacity:0}}@keyframes b4f3{0%{opacity:0}75%{opacity:1}to{opacity:0}}.trap-net{pointer-events:none;animation:1.6s ease-out forwards trapDrop}@keyframes trapDrop{0%{opacity:0;transform:translateY(-18px)scale(.5)}25%{opacity:1;transform:translateY(0)scale(1.1)}40%{transform:translateY(0)scale(1)}80%{opacity:1}to{opacity:0}}.float-text{paint-order:stroke;stroke:#000000d9;stroke-width:4px;pointer-events:none;font-size:21px;font-weight:900;animation:1.6s ease-out forwards floatUp}.float-text.damage{fill:#ff6d5e}.float-text.heal{fill:#6ee08a}.float-text.found{fill:#ffd76e}.char-holder.wiz-invisible{opacity:.4}.char-holder.wiz-medusa{filter:grayscale()brightness(.75)}.char-holder.wiz-medusa .fb1{opacity:1;animation:none}.char-holder.wiz-medusa .fb2{opacity:0;animation:none}.char-holder.wiz-mist{opacity:.6;filter:brightness(1.9)saturate(.2);animation:2.4s ease-in-out infinite mistWaver}@keyframes mistWaver{0%,to{transform:translate(-1.5px)}50%{transform:translate(1.5px)}}@keyframes floatUp{0%{opacity:0;transform:translateY(10px)scale(.7)}15%{opacity:1;transform:translateY(0)scale(1.15)}30%{transform:translateY(-4px)scale(1)}to{opacity:0;transform:translateY(-34px)scale(1)}}.roll-chip{pointer-events:none;animation:1.9s forwards fadeInOut}.roll-bg{fill:#0c0c14e6;stroke:var(--gold-soft);stroke-width:1px}.roll-text{fill:var(--ink);font-size:12px;font-weight:700}@keyframes fadeInOut{0%{opacity:0}12%,80%{opacity:1}to{opacity:0}}.status-pop{pointer-events:none;font-size:24px;animation:1.8s ease-out forwards floatUp}.toast-stack{pointer-events:none;z-index:5;flex-direction:column;align-items:center;gap:6px;display:flex;position:absolute;top:14px;left:50%;transform:translate(-50%)}.toast{border:1px solid var(--line);background:#121420f0;border-radius:20px;align-items:center;padding:6px 14px;font-size:13px;animation:2.6s forwards toastIn;display:flex;box-shadow:0 6px 18px #00000073}.toast.counter-toast{border-color:var(--danger)}.toast.found-toast{border-color:var(--gold-soft)}.toast-swatch{border-radius:50%;width:9px;height:9px;margin-right:7px}@keyframes toastIn{0%{opacity:0;transform:translateY(-12px)}8%,82%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-8px)}}.board-tooltip{border:1px solid var(--line);pointer-events:none;z-index:4;background:#10121cf2;border-radius:10px;max-width:280px;padding:9px 12px;position:absolute;bottom:14px;right:14px}.tip-title{color:var(--gold);margin-bottom:3px;font-weight:700}.tip-line{color:var(--ink-dim);margin-top:2px;font-size:12.5px}.log-panel-holder{background:var(--bg-raised);border-left:1px solid var(--line-soft);grid-area:log;overflow:hidden}.log-panel{flex-direction:column;height:100%;display:flex}.log-title{letter-spacing:2px;text-transform:uppercase;color:var(--ink-faint);border-bottom:1px solid var(--line-soft);padding:10px 14px 6px;font-size:11px;font-weight:800}.log-scroll{color:var(--ink-dim);flex:1;padding:8px 14px;font-size:12.5px;line-height:1.5;overflow-y:auto}.log-line{margin-bottom:2px}.log-line.turn-line{border-top:1px dashed var(--line-soft);color:var(--ink);margin-top:8px;padding-top:6px}.log-line.big-line{color:var(--gold);font-weight:700}.control-panel{border-top:1px solid var(--line);background:linear-gradient(#1e2233,#191c2a);flex-direction:column;grid-area:dock;transition:box-shadow .4s;display:flex}.control-panel.my-go{box-shadow:0 -4px 24px #e5c4511f}.staging-banner,.waiting-banner{border-bottom:1px solid var(--line-soft);align-items:center;gap:12px;padding:6px 16px;font-size:13.5px;display:flex}.staging-banner{color:var(--ink);background:#e5c4511a}.staging-text{flex:1}.waiting-banner{color:var(--ink-dim);background:#e06c5f1f}.mode-switch{gap:4px;display:flex}.mode-switch button{background:var(--bg-panel);color:var(--ink-dim);border:1px solid var(--line);border-radius:7px;padding:4px 10px;font-size:12.5px}.mode-switch button.mode-on{background:var(--gold);color:#1a1710;border-color:var(--gold);font-weight:700}.confirm-button{background:var(--gold);color:#241f10;border:none;border-radius:8px;padding:6px 16px;font-size:13.5px;font-weight:800;transition:transform .1s;box-shadow:0 2px 10px #e5c45159}.confirm-button:hover{transform:translateY(-1px)}.confirm-button.big{padding:10px 28px;font-size:16px}.dock{flex:1;gap:12px;min-height:0;padding:8px 14px;display:flex}.dock-left{flex-direction:column;flex:none;gap:6px;width:148px;display:flex}.me-name{font-size:15px;font-weight:800}.me-stats{color:var(--ink-dim);gap:9px;font-size:12.5px;display:flex}.turn-buttons{flex-direction:column;gap:5px;margin-top:2px;display:flex}.action-button{background:var(--bg-panel);color:var(--ink);border:1px solid var(--line);text-align:left;border-radius:8px;padding:6px 10px;font-size:13px;transition:all .13s}.action-button:hover:not(:disabled){border-color:var(--gold-soft);transform:translate(2px)}.action-button:disabled{opacity:.38;cursor:default}.action-button.end-turn{border-color:#57406a}.action-button.end-turn:hover:not(:disabled){border-color:#9b6fc2}.move-hint{color:var(--ink-faint);font-size:10.5px;font-style:italic}.dock-cards{flex:1;align-items:stretch;gap:8px;padding:4px 2px;display:flex;overflow:auto hidden}.empty-hand{color:var(--ink-faint);align-self:center;margin:auto;font-style:italic}.hand-card{color:#241f18;-webkit-user-select:none;user-select:none;background:#efe9dc;border:2px solid #0000008c;border-radius:9px;flex-direction:column;flex:none;width:118px;transition:transform .15s,box-shadow .15s,opacity .2s;display:flex;overflow:hidden;box-shadow:0 3px 8px #0006}.hand-card.clickable{cursor:pointer}.hand-card.clickable:hover{transform:translateY(-7px);box-shadow:0 10px 18px #00000080}.hand-card.staged{outline:2px solid var(--gold);transform:translateY(-9px);box-shadow:0 0 16px #e5c45180}.hand-card.counter-ready{outline:2px solid var(--danger);animation:.9s ease-in-out infinite alternate counterGlow}@keyframes counterGlow{0%{box-shadow:0 0 6px #e06c5f66}to{box-shadow:0 0 18px #e06c5fd9}}.hand-card.counter-dim{opacity:.45}.card-header{color:#fff;text-shadow:0 1px 2px #0000008c;white-space:nowrap;text-overflow:ellipsis;padding:4px 7px;font-size:11.5px;font-weight:800;overflow:hidden}.cat-attack .card-header{background:linear-gradient(#c2453a,#9c3229)}.cat-counter .card-header{background:linear-gradient(#3f63c4,#2e4a99)}.cat-neutral .card-header{background:linear-gradient(#3f9153,#2e7040)}.cat-dual .card-header{background:linear-gradient(90deg,#2e7040,#2e4a99)}.cat-modifier .card-header{background:linear-gradient(#6aa86f,#4d8a55)}.cat-number .card-header{background:linear-gradient(#8a4fc9,#6c3aa3)}.card-body{flex:1;padding:5px 7px;overflow:hidden}.card-big-number{text-align:center;color:#6c3aa3;text-shadow:0 2px #0000001f;font-size:44px;font-weight:900;line-height:1.5}.card-glyph{text-align:center;margin:1px 0 3px;font-size:21px}.card-text{color:#3c352b;-webkit-line-clamp:6;-webkit-box-orient:vertical;font-size:9.3px;line-height:1.35;display:-webkit-box;overflow:hidden}.card-footer{background:#00000012;border-top:1px solid #0000001f;align-items:center;padding:4px 6px;display:flex}.card-action{color:#8a6d1f;text-transform:uppercase;letter-spacing:.5px;flex:1;font-size:11px;font-weight:800}.card-action.disabled{color:#a09a8d;font-weight:600}.card-discard{opacity:.45;background:0 0;border:none;padding:0 2px;font-size:12px}.card-discard:hover{opacity:1}.dock-items{flex:none;width:225px;overflow-y:auto}.inv-empty{color:var(--ink-faint);padding:4px 2px;font-size:12px;font-style:italic}.inventory-strip{flex-direction:column;gap:4px;display:flex}.strip-label{letter-spacing:2px;text-transform:uppercase;color:var(--ink-faint);margin-top:2px;font-size:10px}.strip-label.floor{margin-top:8px}.inv-item{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:8px;align-items:center;gap:6px;padding:4px 8px;font-size:12.5px;display:flex}.inv-item.floor-item{border-style:dashed}.inv-icon{font-size:15px}.inv-name{text-overflow:ellipsis;white-space:nowrap;flex:1;overflow:hidden}.inv-buttons{gap:3px;display:flex}.inv-item button{color:var(--ink-dim);border:1px solid var(--line);background:#181b28;border-radius:6px;padding:2px 7px;font-size:11px}.inv-item button:hover{color:var(--ink);border-color:var(--gold-soft)}.spectating{text-align:center;color:var(--ink-faint);padding:20px;font-size:15px}.modal-backdrop{z-index:30;background:#08090eb8;justify-content:center;align-items:center;animation:.25s backdropIn;display:flex;position:fixed;inset:0}@keyframes backdropIn{0%{opacity:0}to{opacity:1}}.attack-modal-holder{z-index:25;position:fixed;bottom:250px;left:50%;transform:translate(-50%)}.attack-modal{border:2px solid var(--danger);background:linear-gradient(#33202a,#241a24);border-radius:14px;min-width:420px;max-width:640px;padding:14px 20px;animation:.3s cubic-bezier(.2,1.2,.4,1) attackIn;box-shadow:0 14px 40px #000000a6,0 0 30px #e06c5f40}@keyframes attackIn{0%{opacity:0;transform:translateY(24px)scale(.94)}to{opacity:1;transform:translateY(0)scale(1)}}.attack-title{color:#ffb9ae;font-size:16px;font-weight:800}.attack-payload{color:var(--ink-dim);margin-top:4px;font-size:13.5px}.attack-chain{border-left:2px solid var(--line);margin-top:7px;padding-left:6px}.chain-step{color:var(--ink-dim);padding:1px 0 1px 8px;font-size:12.5px}.attack-options{flex-wrap:wrap;gap:7px;margin-top:12px;display:flex}.counter-chip{color:#fff;background:#2e4a99;border:1px solid #4a67bd;border-radius:8px;padding:7px 14px;font-size:13px;font-weight:700;transition:transform .1s,box-shadow .1s}.counter-chip:hover{transform:translateY(-2px);box-shadow:0 4px 14px #4a67bd80}.pass-chip{color:var(--ink-dim);border:1px solid var(--line);background:0 0;border-radius:8px;padding:7px 14px;font-size:13px}.pass-chip:hover{color:var(--ink);border-color:var(--ink-dim)}.picker-modal{background:var(--bg-panel);border:1px solid var(--line);border-radius:14px;flex-direction:column;gap:12px;min-width:380px;max-width:560px;max-height:70vh;padding:18px 22px;display:flex;box-shadow:0 18px 50px #0009}.picker-title{color:var(--gold);font-size:15.5px;font-weight:800}.picker-filter{color:var(--ink);border:1px solid var(--line);background:#171a26;border-radius:8px;outline:none;padding:7px 12px;font-size:14px}.picker-filter:focus{border-color:var(--gold-soft)}.picker-options{flex-wrap:wrap;gap:6px;display:flex;overflow-y:auto}.picker-chip{color:var(--ink);border:1px solid var(--line);background:#181b28;border-radius:8px;padding:6px 12px;font-size:13px}.picker-chip:hover{border-color:var(--gold);color:var(--gold)}.picker-empty{color:var(--ink-faint);font-style:italic}.counter-staging-note{color:var(--ink-dim);flex-basis:100%;margin-bottom:6px;font-size:13px}.counter-chip.play-counter{border-color:var(--gold-soft);font-weight:700}.staging-banner.forced-discard{background:#e06c5f24}.picker-chip.static{cursor:default}.picker-chip.static:hover{border-color:var(--line-soft);transform:none}.picker-options.discard-list{max-height:320px;overflow-y:auto}.telepath-cards{flex-wrap:wrap;gap:7px;display:flex}.telepath-card{color:#241f18;background:#efe9dc;border:1px solid #0006;border-radius:7px;padding:8px 11px;font-size:12.5px;font-weight:700}.telepath-number{color:#6c3aa3;font-size:17px}.victory-backdrop{background:#08090ed9}.victory-card{text-align:center;background:var(--bg-panel);border:1px solid var(--gold-soft);border-radius:20px;padding:40px 70px;animation:.45s cubic-bezier(.2,1.2,.4,1) attackIn;box-shadow:0 0 60px #e5c45140}.victory-card .ghost-button{margin-left:10px}.start-page{background:radial-gradient(ellipse at 50% -20%, #8fa3e81f, transparent 60%), var(--bg);justify-content:center;align-items:center;height:100%;display:flex;overflow-y:auto}.start-card{background:var(--bg-raised);border:1px solid var(--line);border-radius:18px;width:640px;max-width:94vw;max-height:94vh;padding:26px 32px 30px;overflow-y:auto;box-shadow:0 18px 60px #00000080}.start-title{letter-spacing:3px;color:var(--gold);text-align:center;font-size:34px;font-weight:900}.start-subtitle{text-align:center;color:var(--ink-faint);margin-bottom:18px;font-style:italic}.start-section-label{letter-spacing:2.5px;text-transform:uppercase;color:var(--ink-faint);margin:16px 0 7px;font-size:11px}.mode-cards{gap:10px;display:flex}.mode-card{text-align:left;background:var(--bg-panel);border:2px solid var(--line-soft);color:var(--ink);border-radius:12px;flex:1;padding:11px 14px;transition:border-color .15s,transform .15s}.mode-card:hover{transform:translateY(-1px)}.mode-card.selected{border-color:var(--gold)}.mode-name{margin-bottom:3px;font-size:15px;font-weight:800}.mode-desc{color:var(--ink-dim);font-size:12px}.count-row{align-items:center;gap:7px;display:flex}.count-button{background:var(--bg-panel);border:2px solid var(--line-soft);width:36px;height:32px;color:var(--ink);border-radius:9px;font-size:15px;font-weight:700}.count-button.selected{border-color:var(--gold);color:var(--gold)}.board-shape{color:var(--ink-faint);margin-left:8px;font-size:12.5px;font-style:italic}.seat-list{flex-direction:column;gap:6px;margin-top:8px;display:flex}.seat-row{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:11px;align-items:center;gap:9px;padding:5px 10px;display:flex}.seat-type{text-align:center;letter-spacing:1px;width:34px;color:var(--ink-faint);border:1px solid var(--line-soft);border-radius:6px;padding:2px 0;font-size:10px;font-weight:800}.seat-type.human{color:var(--gold);border-color:var(--gold-soft)}.sprite-cycler{align-items:center;gap:2px;display:flex}.cycle-arrow{color:var(--ink-dim);background:0 0;border:none;padding:0 4px;font-size:20px}.cycle-arrow:hover{color:var(--gold)}.seat-portrait{background:var(--bg);border:2px solid;border-radius:9px;justify-content:center;align-items:center;width:40px;height:40px;display:inline-flex}.seat-portrait img{width:30px;height:30px;image-rendering:pixelated}.seat-name{background:var(--bg);border:1px solid var(--line-soft);min-width:0;color:var(--ink);border-radius:8px;flex:1;padding:6px 9px;font-size:13.5px}.seat-name:focus{border-color:var(--gold-soft);outline:none}.color-dots{gap:4px;display:flex}.color-dot{border:2px solid #0000;border-radius:50%;width:17px;height:17px;padding:0}.color-dot.selected{border-color:var(--ink);transform:scale(1.15)}.start-button{width:100%;margin-top:20px;display:block}.landing-actions{align-items:center;gap:10px;margin-top:18px;display:flex}.landing-actions .confirm-button{flex:1}.big-ghost{padding:10px 18px;font-size:14px}.join-row{gap:8px;display:flex}.code-input{letter-spacing:4px;text-transform:uppercase;flex:none;width:140px;font-weight:700}.join-error{color:var(--danger);margin-top:6px;font-size:12.5px}.lobby-list{flex-direction:column;gap:6px;display:flex}.lobby-entry{background:var(--bg-panel);border:1px solid var(--line-soft);border-radius:11px;align-items:center;gap:10px;padding:7px 12px;display:flex}.lobby-code{letter-spacing:3px;color:var(--gold);font-weight:800}.lobby-host{font-weight:600}.lobby-meta{color:var(--ink-faint);flex:1;font-size:12.5px}.lobby-empty{color:var(--ink-faint);padding:8px 2px;font-style:italic}.lobby-code-row{justify-content:center;align-items:center;gap:14px;margin:4px 0 10px;display:flex}.big-code{letter-spacing:8px;font-size:30px}.seat-type.away{color:var(--danger);border-color:var(--danger)}.seat-type.open-chip{color:var(--accent);border-color:var(--accent)}.seat-row.your-seat{border-color:var(--gold-soft)}.seat-toggle{white-space:nowrap;padding:3px 8px;font-size:11px}.host-star{color:var(--gold);font-size:15px}.waiting-note{color:var(--ink-dim);padding:9px 4px;font-style:italic}.disconnected-note{color:var(--danger);align-items:center;gap:8px;margin-top:6px;font-size:12px;display:flex}.convert-ai{padding:3px 8px;font-size:11px}.victory-glyph{font-size:64px}.victory-title{letter-spacing:1px;margin:14px 0 24px;font-size:26px;font-weight:900}::-webkit-scrollbar{width:9px;height:9px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--line);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--line-soft)}
