@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-vietnamese-wght-normal-BUzh504Q.woff2)format("woff2-variations");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-ext-wght-normal-CcLUaPy7.woff2)format("woff2-variations");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Bricolage Grotesque Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/bricolage-grotesque-latin-wght-normal-DLoelf7F.woff2)format("woff2-variations");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ink:#0d100f;--panel:#151a18;--panel-2:#1d2421;--line:#2a332f;--text:#ece7db;--muted:#98a39d;--gold:#f2c14e;--gold-deep:#c9962a;--ember:#ef6f4a;--mint:#4fd1a5;--felt:#0e4436;--felt-deep:#08291f;--display:"Bricolage Grotesque Variable", ui-sans-serif, system-ui, sans-serif;--body:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:var(--ink);color:var(--text);font:15px/1.45 var(--body);-webkit-font-smoothing:antialiased}h1,h2,p{margin:0}small{font-size:12px}button,input{font:inherit;color:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed}:focus-visible{outline:2px solid var(--gold);outline-offset:2px}.btn{border:1px solid #0000;border-radius:10px;padding:9px 16px;font-weight:650;transition:transform 80ms,background-color .12s,opacity .12s}.btn:active:not(:disabled){transform:translateY(1px)scale(.99)}.btn:disabled{opacity:.45}.btn-gold{background:var(--gold);color:#241a03}.btn-gold:hover:not(:disabled){background:#ffd163}.btn-ghost{background:#ffffff0f;border-color:#ffffff29}.btn-ghost:hover:not(:disabled){background:#ffffff1c}.btn-large{min-width:132px;padding:13px 26px;font-size:16px}.btn-wide{width:100%}.icon-btn{background:#0a0e0cb8;border:1px solid #ffffff29;border-radius:9px;justify-content:center;align-items:center;gap:6px;min-width:36px;height:36px;padding:0 9px;display:inline-flex}.icon-btn:hover:not(:disabled){background:#28302ce6}.icon-btn.is-off{background:var(--ember);border-color:var(--ember);color:#260b03}.icon-btn.is-attention{background:var(--gold);border-color:var(--gold);color:#241a03;font-weight:650}.share-volume{background:#0000008c;border-radius:999px;align-items:center;gap:6px;height:36px;padding:0 10px;display:inline-flex}.share-volume input{width:90px;accent-color:var(--gold)}.icon-btn-gold{background:var(--gold);border-color:var(--gold);color:#241a03}.icon-btn-gold:hover:not(:disabled){background:#ffd163}.icon-btn:disabled{opacity:.45}.icon-btn.is-muted{color:var(--muted)}.landing{flex-wrap:wrap-reverse;place-content:flex-end center;align-items:flex-end;gap:24px;min-height:100%;padding:24px;display:flex}.landing-note{color:var(--muted);text-align:center;font-size:12px}.live-rooms{flex-direction:column;flex:480px;gap:14px;max-width:980px;display:flex}.live-rooms h2{font:700 22px/1.2 var(--display)}.live-rooms-empty{color:var(--muted);text-align:center;border:1px dashed var(--line);border-radius:14px;padding:32px}.room-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;display:grid}.room-card{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden}.room-thumb{aspect-ratio:16/9;color:var(--muted);background:var(--panel-2);place-items:center;display:grid;position:relative}.room-thumb img{object-fit:cover;width:100%;height:100%}.room-viewers{align-items:center;gap:5px;display:inline-flex;position:absolute;bottom:8px;left:8px}.room-info{justify-content:space-between;align-items:center;gap:8px;padding:10px 12px;display:flex}.room-info strong{letter-spacing:.1em;font:700 14px ui-monospace,SF Mono,Menlo,monospace;display:block}.room-info small{color:var(--muted);font-size:12px}.room-actions{gap:6px;display:flex}.room-actions .btn{padding:6px 10px;font-size:13px}.landing-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;flex-direction:column;gap:18px;width:min(400px,100%);padding:32px;display:flex}.brand{font:800 38px/1 var(--display);letter-spacing:-.02em;color:var(--gold)}.landing-lede{color:var(--muted)}.join-form label{margin-bottom:6px;font-size:13px;font-weight:600;display:block}.join-row{gap:8px;display:flex}.join-row input{background:var(--ink);border:1px solid var(--line);letter-spacing:.14em;text-transform:uppercase;border-radius:10px;flex:1;min-width:0;padding:10px 12px;font:700 20px/1.2 ui-monospace,SF Mono,Menlo,monospace}.form-error{color:var(--ember);font-size:14px}.landing-divider{color:var(--muted);align-items:center;gap:12px;font-size:13px;display:flex}.landing-divider:before,.landing-divider:after{content:"";background:var(--line);flex:1;height:1px}.shell{grid-template-columns:76px minmax(0,1fr);height:100%;display:grid}.sidebar{background:var(--panel);border-right:1px solid var(--line);flex-direction:column;align-items:center;gap:4px;padding:14px 8px;display:flex}.sidebar-logo{background:var(--gold);color:#241a03;width:38px;height:38px;font:800 22px/1 var(--display);border-radius:11px;place-items:center;margin-bottom:14px;display:grid}.sidebar-item{width:100%;color:var(--muted);background:0 0;border:0;border-radius:10px;flex-direction:column;align-items:center;gap:3px;padding:9px 0 7px;font-size:11px;display:flex}.sidebar-item:hover{background:var(--panel-2);color:var(--text)}.sidebar-item.is-active{background:var(--panel-2);color:var(--gold)}.stage{grid-template-columns:minmax(340px,38%) minmax(0,1fr);min-height:0;display:grid}.stage-left{border-right:1px solid var(--line);flex-direction:column;min-width:0;min-height:0;display:flex}.cam{aspect-ratio:16/9;background:#050706;flex:none;max-height:58vh;position:relative;overflow:hidden}.cam video{object-fit:cover;width:100%;height:100%;transition:filter .3s;display:block}.cam video.is-mirrored{transform:scaleX(-1)}.cam-particles{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.cam-placeholder{text-align:center;color:var(--muted);background:#050706b8;place-items:center;padding:16px;display:grid;position:absolute;inset:0}.cam-top{gap:6px;display:flex;position:absolute;top:10px;left:10px}.cam-stats{gap:6px;display:flex;position:absolute;top:10px;right:10px}.cam-controls{gap:6px;display:flex;position:absolute;bottom:10px;right:10px}.cam-notice{border:1px solid var(--ember);background:#301710eb;border-radius:9px;flex-wrap:wrap;align-items:center;gap:4px 10px;max-width:calc(100% - 118px);padding:6px 10px;font-size:12.5px;line-height:1.35;display:flex;position:absolute;bottom:10px;left:10px}.cam-notice-retry{color:var(--gold);background:0 0;border:0;align-items:center;gap:4px;padding:0;font-weight:650;display:inline-flex}.cam-notice-retry:hover{text-decoration:underline}.captions{pointer-events:none;flex-direction:column;justify-content:flex-end;align-items:flex-start;max-height:calc(2.7em + 3px);font-size:clamp(14px,1.25vw,17px);line-height:1.35;display:flex;position:absolute;bottom:10px;left:10px;right:104px;overflow:hidden}.captions span{text-align:start;overflow-wrap:anywhere;background:#000c;border-radius:6px;flex:none;max-width:100%;padding:3px 9px}.caption-controls{align-items:center;gap:6px;display:inline-flex}.caption-btn{background:#0a0e0cb8;border:1px solid #ffffff38;border-radius:99px;align-items:center;gap:5px;padding:3px 9px;font-size:12px;font-weight:650;display:inline-flex}.caption-btn:hover{background:#28302ce6}.caption-btn.is-on{background:var(--gold);border-color:var(--gold);color:#241a03}.caption-select{background:#0a0e0ce0;border:1px solid #ffffff38;border-radius:99px;max-width:128px;padding:3px 6px;font-size:12px}.caption-warn{color:var(--gold)}.chip{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);font-variant-numeric:tabular-nums;white-space:nowrap;background:#0a0e0cb8;border-radius:99px;align-items:center;gap:6px;padding:3px 9px;font-size:12px;display:inline-flex}.chip-live i{background:var(--ember);border-radius:50%;width:7px;height:7px}.cam-banner{text-align:center;white-space:nowrap;background:#080b0ad1;border-radius:14px;flex-direction:column;align-items:center;padding:8px 22px 9px;animation:.42s cubic-bezier(.2,1.4,.4,1) both banner-in;display:flex;position:absolute;bottom:30%;left:50%;transform:translate(-50%)}.cam-banner strong{font:800 clamp(20px, 3.2vw, 34px)/1.1 var(--display);letter-spacing:-.01em}.cam-banner span{font-variant-numeric:tabular-nums;color:var(--muted)}.banner-win strong,.banner-big-win strong{color:var(--gold)}.banner-lose strong{color:var(--ember)}.fx-big-win video{filter:saturate(1.35)brightness(1.08)}.fx-big-win{animation:1.1s ease-in-out 2 glow}.fx-win video{filter:saturate(1.2)brightness(1.04)}.fx-lose video{filter:grayscale(.85)brightness(.72)contrast(1.05)}.fx-lose{animation:.42s ease-in-out shake}.fx-lose:after{content:"";pointer-events:none;background:radial-gradient(#0000 42%,#aa1e0a85 100%);position:absolute;inset:0}@keyframes banner-in{0%{opacity:0;transform:translate(-50%)translateY(16px)scale(.86)}to{opacity:1;transform:translate(-50%)translateY(0)scale(1)}}@keyframes glow{50%{box-shadow:inset 0 0 70px 6px #f2c14ebf}}@keyframes shake{20%{transform:translate(-7px)}40%{transform:translate(6px)}60%{transform:translate(-4px)}80%{transform:translate(2px)}}.chat{background:var(--panel);flex-direction:column;flex:1;min-height:0;display:flex}.chat-list{overflow-wrap:anywhere;flex-direction:column;flex:1;gap:7px;min-height:0;padding:12px 14px;display:flex;overflow-y:auto}.chat-empty{color:var(--muted);margin:auto;font-size:14px}.chat-name{margin-right:7px;font-weight:700}.chat-name-host{color:var(--gold)}.chat-name-player{color:var(--mint)}.chat-name-viewer{color:#9ec5ff}.chat-system{color:var(--muted);font-size:12.5px}.chat-readonly{border-top:1px solid var(--line);color:var(--muted);margin:0;padding:12px;font-size:13px}.chat-form{border-top:1px solid var(--line);gap:8px;padding:10px 12px;display:flex}.chat-form input{background:var(--ink);border:1px solid var(--line);border-radius:9px;flex:1;min-width:0;padding:8px 12px}.felt{background:radial-gradient(ellipse 90% 75% at 50% 45%, var(--felt) 0%, var(--felt-deep) 100%);flex-direction:column;min-width:0;min-height:0;display:flex;position:relative}.felt-header{background:#050c096b;border-bottom:1px solid #ffffff14;flex-wrap:wrap;flex:none;align-items:center;gap:8px 14px;padding:10px 16px;display:flex}.room-code{background:0 0;border:1px dashed #ffffff42;border-radius:9px;align-items:center;gap:8px;padding:5px 10px;display:inline-flex}.room-code:hover{background:#ffffff12}.room-code small{color:var(--muted)}.room-code strong{letter-spacing:.12em;font:700 16px/1 ui-monospace,SF Mono,Menlo,monospace}.presence{color:var(--muted);align-items:center;gap:6px;font-size:13px;display:inline-flex}.presence i{background:var(--muted);border-radius:50%;width:8px;height:8px}.presence.is-online{color:var(--text)}.presence.is-online i{background:var(--mint)}.presence-warn{color:var(--gold)}.balances{gap:16px;margin-left:auto;display:flex}.balance{flex-direction:column;align-items:flex-end;display:flex}.balance small{color:var(--muted);font-size:11px;line-height:1.2}.balance strong{font:700 17px/1.2 var(--display);font-variant-numeric:tabular-nums;align-items:center;gap:5px;display:inline-flex}.balance svg,.balance.is-you small{color:var(--gold)}.felt-body{flex-direction:column;flex:1;justify-content:safe center;align-items:center;min-height:0;padding:18px;display:flex;overflow-y:auto}.felt-status{color:var(--muted)}.toast{border:1px solid var(--ember);background:#301710;border-radius:10px;max-width:calc(100% - 32px);padding:8px 14px;font-size:14px;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.picker,.lobby,.challenge{text-align:center;flex-direction:column;align-items:center;gap:18px;width:min(560px,100%);display:flex}.picker h2,.lobby h2,.challenge h2{font:800 clamp(24px, 3vw, 34px)/1.1 var(--display);letter-spacing:-.015em}.lobby p{color:#c3cec7}.code-inline{color:var(--gold);letter-spacing:.08em;font-family:ui-monospace,SF Mono,Menlo,monospace}.game-tiles{grid-template-columns:1fr 1fr;gap:10px;width:100%;display:grid}.game-tile{text-align:left;background:#040e0a73;border:1px solid #ffffff1f;border-radius:13px;flex-direction:column;justify-content:flex-end;gap:4px;min-height:118px;padding:12px;display:flex}.game-tile small{color:#b4c2ba;line-height:1.3}.game-tile:hover{background:#040e0a9e}.game-tile.is-selected{border-color:var(--gold);box-shadow:inset 0 0 0 1px var(--gold);background:#040e0a9e}.tile-art{gap:4px;margin-bottom:auto;font-size:26px;line-height:1;display:flex}.tile-art span{color:#16130d;background:#fbf7ee;border-radius:6px;padding:5px 7px;font-size:14px;font-weight:800}.tile-art span:last-child{color:#c8321f}.tile-art .tile-emoji{background:0 0;padding:0;font-size:28px;font-weight:400}.tile-art .tile-sprite{background-color:#0000;background-repeat:no-repeat;width:32px;height:32px;padding:0}.stakes{gap:8px;display:flex}.stake{width:62px;height:62px;font:800 17px/1 var(--display);font-variant-numeric:tabular-nums;background:#182f27;border:3px dashed #ffffff57;border-radius:50%;transition:transform .11s,background-color .11s}.stake:hover:not(:disabled){transform:translateY(-2px)}.stake.is-selected{background:var(--gold);color:#241a03;border-color:#7a5a10;transform:translateY(-2px)}.stake:disabled{opacity:.3}.out-of-coins{flex-direction:column;align-items:center;gap:10px;display:flex}.challenge .eyebrow{color:var(--gold);font-size:13px;font-weight:650}.challenge-stake{font:800 44px/1 var(--display);font-variant-numeric:tabular-nums;align-items:center;gap:8px;display:inline-flex}.challenge-stake svg{color:var(--gold)}.challenge-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;display:flex}.challenge-actions p{color:#c3cec7;flex-basis:100%}.timer{background:#ffffff1f;border-radius:4px;flex:none;width:100%;max-width:460px;height:4px;overflow:hidden}.timer.is-idle{visibility:hidden}.timer-bar{background:var(--gold);transform-origin:0;width:100%;height:100%}.table-wrap{flex-direction:column;align-items:center;gap:14px;width:min(620px,100%);display:flex}.bj{flex-direction:column;align-items:center;gap:12px;width:100%;display:flex}.hand{flex-direction:column;align-items:center;gap:8px;display:flex}.hand-label{color:#c3cec7;align-items:center;gap:8px;font-size:13px;display:flex}.hand-label strong{min-width:30px;color:var(--text);text-align:center;font:800 16px/1.4 var(--display);font-variant-numeric:tabular-nums;background:#00000061;border-radius:8px;padding:1px 8px}.hand-label strong.is-bust{background:var(--ember);color:#260b03}.hand-cards{justify-content:center;min-height:112px;display:flex}.card{--w:clamp(64px, 7vw, 78px);width:var(--w);height:calc(var(--w) * 1.42);perspective:700px;margin-left:calc(var(--w) * -.24);animation:.24s cubic-bezier(.2,.9,.3,1) both deal}.card:first-child{margin-left:0}.card-inner{width:100%;height:100%;transform-style:preserve-3d;transition:transform .32s cubic-bezier(.3,.8,.3,1);position:relative;transform:rotateY(180deg)}.card.is-up .card-inner{transform:rotateY(0)}.card-front,.card-back{backface-visibility:hidden;border-radius:8px;position:absolute;inset:0;box-shadow:0 3px 10px #0000006b}.card-front{color:#16130d;background:#fbf7ee;font-weight:800}.card-front.is-red{color:#c8321f}.card-back{background:repeating-linear-gradient(45deg,#8c2a1c 0 5px,#6d1f14 5px 10px);border:4px solid #fbf7ee;transform:rotateY(180deg)}.card-corner{flex-direction:column;align-items:center;font-size:15px;line-height:1;display:flex;position:absolute;top:5px;left:6px}.card-corner i{font-size:13px;font-style:normal}.card-corner.is-flipped{inset:auto 6px 5px auto;transform:rotate(180deg)}.card-pip{place-items:center;font-size:32px;display:grid;position:absolute;inset:0}.card.is-peek .card-front{box-shadow:0 0 0 2px var(--gold), 0 3px 10px #0000006b;background:#e6dfca}@keyframes deal{0%{opacity:0;transform:translate(70px,-26px)rotate(7deg)}to{opacity:1;transform:none}}.bj-middle{flex-wrap:wrap;justify-content:center;align-items:center;gap:12px;display:flex}.pot{font:800 16px/1.4 var(--display);font-variant-numeric:tabular-nums;background:#00000061;border-radius:99px;align-items:center;gap:5px;padding:3px 11px;display:inline-flex}.pot svg{color:var(--gold)}.bj-rule{color:#a9b8b0;font-size:12px}.bj-actions{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;min-height:52px;display:flex}.bj-wait{color:#c3cec7;text-align:center}.cancel-bar{color:#c3cec7;flex-wrap:wrap;justify-content:center;align-items:center;gap:8px 12px;min-height:52px;font-size:14px;display:flex}.cancel-bar.is-asking{border:1px solid var(--gold);color:var(--text);background:#040e0ab8;border-radius:12px;padding:6px 12px;font-weight:600}.btn-quiet{color:#a9b8b0;background:0 0;border-color:#0000;font-size:14px;font-weight:500}.btn-quiet:hover:not(:disabled){color:var(--text);text-decoration:underline}.after-hand{flex-wrap:wrap;justify-content:center;align-items:center;gap:10px;min-height:52px;display:flex}.toggle{color:#c3cec7;cursor:pointer;align-items:center;gap:8px;font-size:14px;display:inline-flex}.toggle input{accent-color:var(--gold);width:16px;height:16px}.table-wrap:has(.pong,.pool,.ships,.maze){width:100%;max-width:860px}.game-hud{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;width:100%;display:flex}.game-hud-side{align-items:baseline;gap:8px;font-weight:650;display:flex}.game-hud-side small{color:#c3cec7;font-weight:400}.game-score{font:800 26px/1 var(--display);font-variant-numeric:tabular-nums}.is-host-color{color:var(--gold)}.is-player-color{color:var(--mint)}.game-message{text-align:center;color:#dfe7e2;min-height:22px;font-weight:600}.pong{flex-direction:column;gap:8px;width:100%;display:flex}.pong canvas{touch-action:none;cursor:none;outline-offset:2px;border-radius:14px;width:100%;height:clamp(300px,58vh,560px);display:block}.maze{flex-direction:column;gap:8px;width:100%;display:flex}.maze canvas{touch-action:none;border-radius:14px;width:100%;height:clamp(280px,56vh,500px);display:block}.maze-clock{font:800 26px/1 var(--display);font-variant-numeric:tabular-nums}.maze-howto{text-align:center;color:#b4c2ba}.pool{touch-action:none;-webkit-user-select:none;user-select:none;flex-direction:column;gap:8px;width:100%;display:flex}.pool canvas{touch-action:none;border-radius:14px;width:100%;transition:box-shadow .2s;display:block}.pool canvas.can-aim{cursor:crosshair;box-shadow:0 0 0 3px var(--gold), 0 0 26px #f2c14e59}.pool-howto{color:#b4c2ba;font-weight:400}.pool-plates{grid-template-columns:1fr 1fr;gap:10px;display:grid}.pool-plate{opacity:.72;background:#040e0a73;border:2px solid #ffffff1a;border-radius:12px;justify-content:space-between;align-items:center;gap:10px;min-height:46px;padding:6px 12px;transition:opacity .2s,border-color .2s,background-color .2s;display:flex}.pool-plate.is-active{opacity:1;border-color:var(--gold);background:#040e0ab8}.pool-plate-name{align-items:center;gap:8px;font-weight:750;display:flex}.pool-plate-turn{background:var(--gold);color:#241a03;text-transform:uppercase;letter-spacing:.04em;border-radius:99px;padding:1px 7px;font-size:11px;font-style:normal;font-weight:800}.pool-plate-group{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:3px;display:flex}.pool-plate-group small{color:#c3cec7}.pool-chip{background:var(--chip);border-radius:50%;width:15px;height:15px;box-shadow:inset 0 0 0 1px #ffffff40}.pool-chip.is-stripe{background:linear-gradient(#f6f3e8 22%, var(--chip) 22% 78%, #f6f3e8 78%)}.pool-chip.is-gone{opacity:.2}.pool-chip-label{color:var(--gold);margin-left:5px;font-size:12px;font-weight:700}.pool-banner{text-align:center;border-radius:12px;flex-wrap:wrap;justify-content:center;align-items:baseline;gap:2px 10px;padding:7px 14px;animation:.26s cubic-bezier(.2,1.3,.4,1) both pool-banner-in;display:flex}.pool-banner strong{font:800 clamp(18px, 1.9vw, 23px)/1.15 var(--display);letter-spacing:-.01em}.pool-banner.is-mine{background:var(--gold);color:#241a03}.pool-banner.is-theirs{color:var(--text);background:#040e0a9e}.pool-banner.is-rolling{color:#c3cec7;background:#040e0a73}.pool-banner.is-won{background:var(--mint);color:#05281c}.pool-banner.is-lost{color:#ffd9cd;background:#5c2a22}@keyframes pool-banner-in{0%{opacity:0;transform:translateY(-6px)scale(.98)}to{opacity:1;transform:none}}.ships{flex-direction:column;align-items:center;gap:12px;width:100%;display:flex}.ships-boards{flex-wrap:wrap;justify-content:center;gap:clamp(14px,3vw,34px);width:100%;display:flex}.ships-board{flex-direction:column;align-items:center;gap:6px;display:flex}.ships-board-title{color:#c3cec7;font-size:13px}.ships-board-title strong{color:var(--text)}.ships-grid{--cell:clamp(28px, 3.2vw, 40px);grid-template-columns:repeat(8, var(--cell));grid-auto-rows:var(--cell);background:#0a2f4a;border-radius:10px;gap:2px;padding:4px;display:grid}.ships-grid.is-target{box-shadow:0 0 0 2px var(--gold)}.ship-cell{background:#114a70;border:0;border-radius:3px;place-items:center;padding:0;display:grid;position:relative}button.ship-cell:hover:not(:disabled){background:#1b6a9c}button.ship-cell:disabled{cursor:default}.ship-cell.has-ship{background:#6f8795}.ship-cell.is-sunk{background:#5c2a22}.ship-cell i{border-radius:50%;display:block}.ship-cell.is-miss i{background:#bcd6e6;width:28%;height:28%}.ship-cell.is-hit i{background:var(--ember);width:62%;height:62%;box-shadow:0 0 10px var(--ember)}.ship-cell.is-incoming i{background:var(--gold);width:40%;height:40%;animation:.5s ease-in-out infinite alternate incoming}.ship-cell.is-latest{outline:2px solid var(--gold);outline-offset:-1px}@keyframes incoming{to{opacity:.5;transform:scale(1.6)}}@media (width<=900px){html,body,#root{height:auto}.shell{grid-template-rows:auto 1fr;grid-template-columns:1fr;min-height:100dvh}.sidebar{border-right:0;border-bottom:1px solid var(--line);flex-direction:row;justify-content:space-around;padding:6px}.sidebar-logo{display:none}.stage{flex-direction:column;display:flex}.stage-left{display:contents}.cam{order:1;max-height:none}.felt{order:2}.felt-body{overflow:visible}.chat{flex:none;order:3;height:300px}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:1ms!important;animation-duration:1ms!important}}.watching{text-align:center;max-width:420px;margin:auto}.watching h2{margin:8px 0}.watching p{color:var(--muted);margin:0}.watching .btn{margin-top:14px}.chat-line.is-private{border-left:2px solid var(--gold,#f2c14e);padding-left:8px}.call{text-align:center;flex-direction:column;align-items:center;gap:12px;width:100%;max-width:720px;margin:auto;display:flex}.call p{color:var(--muted);margin:0}.call-video{aspect-ratio:16/9;background:#00000059;border-radius:12px;place-items:center;width:100%;display:grid;overflow:hidden}.call-video video{object-fit:cover;width:100%;height:100%}.call-video video.is-mirrored{transform:scaleX(-1)}.call-controls{align-items:center;gap:8px;display:flex}.call-controls .btn{align-items:center;gap:8px;display:inline-flex}.call-requests{flex-direction:column;align-items:center;gap:8px;margin-bottom:12px;display:flex}.call-request,.call-ask{border:1px solid var(--line);background:#00000040;border-radius:10px;align-items:center;gap:12px;padding:8px 12px;display:flex}.call-ask{justify-content:center;margin-bottom:12px}.call-ask.is-asking{border-color:var(--gold,#f2c14e)}.listed-toggle{color:var(--muted);cursor:pointer;white-space:nowrap;align-items:center;gap:6px;font-size:13px;display:inline-flex}
