@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(data:font/woff2;base64,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)format("woff2-variations");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-vietnamese-wght-normal-qRpaaN48.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-ext-wght-normal-DmpS2jIq.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:Plus Jakarta Sans Variable;font-style:normal;font-display:swap;font-weight:200 800;src:url(/assets/plus-jakarta-sans-latin-wght-normal-eXO_dkmS.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{--bg:#eef3f8;--surface:#fff;--surface-2:#f5f8fc;--ink:#0f1b2d;--muted:#5b6b82;--line:#d5deea;--accent:#4b4fe0;--accent-ink:#fff;--accent-soft:#e8e9fd;--brand-night:#0b1026;--brand-deep:#19205a;--brand-indigo:#5b5ff5;--brand-violet:#8a5cf6;--brand-gold:#ffc23d;--brand-gradient:linear-gradient(135deg, #5b5ff5 0%, #8a5cf6 55%, #c25cf0 100%);--ok:#117a3d;--warn:#9a5b00;--warn-soft:#fff4e0;--danger:#c4262e;--danger-soft:#fdecec;--sea:#d7e7f6;--sea-line:#bcd3ea;--sea-hover:#c3daf1;--ship:#4b5d75;--ship-edge:#33435a;--hit:#e0353d;--miss:#6f8fb2;--sunk:#8f2a30;--radius:12px;--radius-sm:8px;--shadow:0 1px 2px #0f1b2d0f, 0 4px 16px #0f1b2d0f;color:var(--ink);background:var(--bg);-webkit-text-size-adjust:100%;font-family:Plus Jakarta Sans Variable,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;line-height:1.5}@media (prefers-color-scheme:dark){:root{--bg:#08111f;--surface:#101b2d;--surface-2:#0c1626;--ink:#e6edf7;--muted:#93a3bb;--line:#22324b;--accent:#8b8fff;--accent-ink:#0b1026;--accent-soft:#1d2150;--ok:#4ade80;--warn:#fbbf4d;--warn-soft:#2b2111;--danger:#ff6b6b;--danger-soft:#3a1416;--sea:#0f2742;--sea-line:#1a3a5c;--sea-hover:#16365a;--ship:#9fb3cf;--ship-edge:#c8d6ea;--hit:#ff5a5f;--miss:#5f86b3;--sunk:#ff8a8f;--shadow:0 1px 2px #0000004d, 0 4px 16px #00000040}}*,:before,:after{box-sizing:border-box}body{background:var(--bg);min-height:100vh;margin:0}h1,h2,h3{margin:0 0 .5rem;line-height:1.2}h1{font-size:clamp(1.6rem,4vw,2.2rem)}h2{font-size:1.15rem}h3{font-size:.95rem}p{margin:0 0 .75rem}.muted{color:var(--muted)}.small{font-size:.875rem}.center{text-align:center;margin-top:3rem}.center-text{text-align:center}.sr-only{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}kbd{border:1px solid var(--line);font:inherit;border-bottom-width:2px;border-radius:4px;padding:0 .35em;font-size:.85em}:focus-visible{outline:3px solid var(--accent);outline-offset:2px}.app{flex-direction:column;min-height:100vh;display:flex}.topbar{border-bottom:1px solid var(--line);background:var(--surface);justify-content:space-between;align-items:center;gap:1rem;padding:.75rem 1rem;display:flex}.brand{color:var(--ink);align-items:center;gap:.5rem;font-size:1.05rem;font-weight:700;text-decoration:none;display:inline-flex}.logo{width:28px;height:28px}.topbar-user{background:var(--accent-soft);color:var(--accent);text-overflow:ellipsis;white-space:nowrap;border-radius:999px;max-width:50vw;padding:.2rem .7rem;font-size:.9rem;font-weight:600;overflow:hidden}.main{flex:1;width:100%;max-width:1120px;margin:0 auto;padding:1.25rem 1rem 3rem}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:1.25rem}.narrow{max-width:30rem;margin:3rem auto}.row{align-items:center;gap:.5rem;display:flex}.row.wrap{flex-wrap:wrap}.btn{min-height:2.6rem;font:inherit;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;justify-content:center;align-items:center;gap:.4rem;padding:.5rem 1rem;font-weight:600;transition:background .15s,border-color .15s;display:inline-flex}.btn:hover:not(:disabled){border-color:var(--accent)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.primary{color:var(--accent-ink);background:var(--accent);border-color:var(--accent)}.btn.primary:hover:not(:disabled){filter:brightness(1.08)}.btn.ghost{background:0 0}.btn.danger{color:#fff;background:var(--danger);border-color:var(--danger)}.btn.block{width:100%}.input{width:100%;min-height:2.6rem;font:inherit;color:var(--ink);background:var(--surface-2);border:1px solid var(--line);border-radius:var(--radius-sm);padding:.5rem .75rem}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}label{margin-bottom:.35rem;font-weight:600;display:block}.hint{color:var(--muted);margin:.35rem 0 1rem;font-size:.8rem}.form-error{color:var(--danger);font-size:.9rem}.pill{background:var(--accent-soft);color:var(--accent);border-radius:999px;padding:.1rem .55rem;font-size:.8rem;font-weight:600}.banner{border-radius:var(--radius-sm);margin:0 0 1rem;padding:.65rem .9rem;font-weight:500}.banner.warn{background:var(--warn-soft);color:var(--warn)}.banner.error{background:var(--danger-soft);color:var(--danger)}.toast{z-index:20;border-radius:var(--radius-sm);background:var(--ink);color:var(--bg);box-shadow:var(--shadow);max-width:calc(100vw - 2rem);margin:0;padding:.65rem 1rem;font-weight:600;position:fixed;bottom:1.25rem;left:50%;transform:translate(-50%)}.hero{align-items:center;gap:2rem;margin-top:2rem;display:grid}@media (width>=820px){.hero{grid-template-columns:1.2fr 1fr;margin-top:4rem}}.eyebrow{color:var(--accent);text-transform:uppercase;letter-spacing:.06em;margin-bottom:.5rem;font-size:.8rem;font-weight:700}.alias-form{justify-self:center;width:100%;max-width:26rem}.home-intro{margin-bottom:1.5rem}.segmented{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);flex-wrap:wrap;gap:.25rem;padding:.25rem;display:inline-flex}.segment{font:inherit;color:var(--ink);border-radius:var(--radius-sm);cursor:pointer;background:0 0;border:0;flex-direction:column;align-items:flex-start;padding:.5rem 1rem;display:flex}.segment span{color:var(--muted);font-size:.8rem}.segment.active{background:var(--accent);color:var(--accent-ink)}.segment.active span{color:inherit;opacity:.85}.choices{gap:1rem;display:grid}@media (width>=820px){.choices{grid-template-columns:repeat(2,1fr)}}.choice{flex-direction:column;display:flex}.choice p{flex:1}.code-input{letter-spacing:.25em;text-transform:uppercase;font-family:ui-monospace,Cascadia Mono,Consolas,monospace}.room-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;margin-bottom:1rem;display:flex}.room-code{align-items:baseline;gap:.5rem;display:flex}.room-code strong{letter-spacing:.15em;font-family:ui-monospace,Cascadia Mono,Consolas,monospace;font-size:1.15rem}.players{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.player-chip{background:var(--surface);border:1px solid var(--line);border-radius:999px;align-items:center;gap:.45rem;padding:.3rem .75rem;font-size:.9rem;font-weight:600;display:inline-flex}.presence{background:var(--muted);border-radius:50%;width:.55rem;height:.55rem}.player-chip.online .presence{background:var(--ok)}.player-chip.offline{border-color:var(--warn)}.player-chip.offline .presence{background:var(--warn)}.away{color:var(--warn);font-variant-numeric:tabular-nums}.share{text-align:center;max-width:34rem;margin:2rem auto}.share-code{justify-content:center;gap:.4rem;margin:1.25rem 0;display:flex}.share-code span{border-radius:var(--radius-sm);background:var(--accent-soft);width:2.6rem;height:3.2rem;color:var(--accent);place-items:center;font:700 1.6rem ui-monospace,Cascadia Mono,Consolas,monospace;display:grid}.share-link{gap:.5rem;margin-bottom:1rem;display:flex}@media (width<=480px){.share-link{flex-wrap:wrap}.share-link .btn{flex:1}}.waiting-dots:after{content:"…";text-align:left;vertical-align:bottom;width:1.2em;animation:1.4s steps(4,end) infinite dots;display:inline-block;overflow:hidden}@keyframes dots{0%{width:0}to{width:1.2em}}.timer{margin:0 0 1rem}.timer-text{color:var(--muted);justify-content:space-between;margin-bottom:.3rem;font-size:.85rem;display:flex}.timer-seconds{font-variant-numeric:tabular-nums;color:var(--ink);font-weight:700}.timer-track{background:var(--line);border-radius:999px;height:6px;overflow:hidden}.timer-fill{background:var(--accent);height:100%;transition:width .2s linear}.timer.urgent .timer-fill{background:var(--hit)}.timer.urgent .timer-seconds{color:var(--hit)}.chat{flex-direction:column;gap:.5rem;min-height:0;display:flex}.chat h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0;font-size:.8rem}.chat-list{overscroll-behavior:contain;flex-direction:column;flex:auto;gap:.35rem;min-height:0;margin:0;padding:0 .15rem 0 0;font-size:.9rem;line-height:1.35;list-style:none;display:flex;overflow-y:auto}.chat-msg{background:var(--surface-2);border:1px solid var(--line);overflow-wrap:anywhere;border-radius:12px 12px 12px 4px;align-self:flex-start;max-width:88%;padding:.35rem .6rem}.chat-msg strong{color:var(--accent);font-size:.75rem;display:block}.chat-msg.mine{background:var(--accent-soft);border-radius:12px 12px 4px;align-self:flex-end}.chat-empty{color:var(--muted);font-size:.85rem}.chat-form{gap:.4rem;display:flex}.chat-input{flex:1;min-width:0;padding-block:.45rem}.chat-send{flex:none}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}.topbar-actions{align-items:center;gap:.5rem;display:flex}.sound-controls{position:relative}.icon-btn{width:2.4rem;height:2.4rem;color:var(--ink);border:1px solid var(--line);cursor:pointer;background:0 0;border-radius:50%;place-items:center;padding:0;display:grid}.icon-btn:hover,.icon-btn[aria-expanded=true]{border-color:var(--accent);color:var(--accent)}.sound-panel{z-index:30;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);width:15rem;box-shadow:var(--shadow);gap:.75rem;padding:1rem;display:grid;position:absolute;top:calc(100% + .5rem);right:0}.switch{cursor:pointer;align-items:center;gap:.6rem;margin:0;display:flex}.switch input{width:1.1rem;height:1.1rem;accent-color:var(--accent)}.slider{grid-template-columns:5rem 1fr 2rem;align-items:center;gap:.5rem;margin:0;font-size:.9rem;font-weight:500;display:grid}.slider input{width:100%;accent-color:var(--accent)}.slider-value{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}.sound-lab{gap:1rem;display:grid}.lab-table{border-collapse:collapse;width:100%}.lab-table th,.lab-table td{text-align:left;border-bottom:1px solid var(--line);vertical-align:middle;padding:.5rem}.lab-table th{color:var(--muted);font-size:.8rem;font-weight:600}.bet-toggle{cursor:pointer;align-items:center;gap:.5rem;margin:.25rem 0 .6rem;font-weight:600;display:flex}.bet-toggle input{width:1.1rem;height:1.1rem;accent-color:var(--accent)}.bet-form{gap:.6rem;margin-bottom:.8rem;display:grid}.money-field{gap:.2rem;font-size:.92rem;display:grid}.money-input{align-items:center;gap:.35rem;display:flex}.money-input .input{flex:1;min-width:0}.bet-pill{color:#7a5200;background:#fff4d6}.bet-summary h2{margin-top:0}.bet-paid{color:var(--ok);font-weight:600}.lobby-seat.unpaid{border-color:color-mix(in srgb, var(--warn) 50%, var(--line))}.lobby-seat-actions{flex-wrap:wrap;justify-content:flex-end;gap:.35rem;display:flex}.lobby-token.plain{background:var(--accent-soft);box-shadow:none}.bet-panel h3{text-transform:uppercase;letter-spacing:.06em;justify-content:space-between;align-items:baseline;gap:.5rem;margin:0 0 .4rem;font-size:.8rem;display:flex}.bet-pot{text-transform:none;letter-spacing:0;font-size:1rem}.bet-rows{gap:.25rem;margin:0;padding:0;font-size:.9rem;list-style:none;display:grid}.bet-rows li{align-items:center;gap:.5rem;display:flex}.bet-rows li.winner{font-weight:700}.bet-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;overflow:hidden}.bet-owes{color:var(--danger);font-weight:600}.bet-settlement p,.bet-rematch p{margin:.3rem 0}.bet-rematch{gap:.4rem;margin-top:.6rem;display:grid}.chat .chat-msg.colored strong{color:var(--chat-color);filter:saturate(1.15)brightness(.92);align-items:center;gap:.35em;display:flex}.chat-msg.colored{border-left:3px solid var(--chat-color)}.chat-msg.colored.mine{border-left:1px solid var(--line);border-right:3px solid var(--chat-color)}.chat-dot{background:var(--chat-color);border-radius:50%;flex:none;width:.7em;height:.7em;box-shadow:0 0 0 1.5px #0000002e}@media (prefers-color-scheme:dark){.chat .chat-msg.colored strong{filter:saturate(1.1)brightness(1.15)}}.chat-list,.log ol{scrollbar-width:thin;scrollbar-color:color-mix(in srgb, var(--muted) 45%, transparent) transparent}.chat-list::-webkit-scrollbar{width:8px}.log ol::-webkit-scrollbar{width:8px}.chat-list::-webkit-scrollbar-track{background:0 0}.log ol::-webkit-scrollbar-track{background:0 0}.chat-list::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:color-mix(in srgb, var(--muted) 40%, transparent);border:2px solid #0000;border-radius:999px}.log ol::-webkit-scrollbar-thumb{background-clip:padding-box;background-color:color-mix(in srgb, var(--muted) 40%, transparent);border:2px solid #0000;border-radius:999px}.chat-list::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--accent) 60%, transparent)}.log ol::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb, var(--accent) 60%, transparent)}.pause-btn{margin-left:.25rem}.pause-banner{background:var(--accent-soft);color:var(--accent);border:1px solid color-mix(in srgb, var(--accent) 35%, transparent);text-align:center;font-weight:600}.voice{gap:.5rem;display:grid}.voice-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.5rem;display:flex}.voice h3{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:0;font-size:.8rem}.voice-buttons{gap:.35rem;display:flex}.voice-people{flex-wrap:wrap;gap:.35rem .8rem;margin:0;padding:0;font-size:.9rem;list-style:none;display:flex}.voice-people li{align-items:center;gap:.35rem;display:flex}.voice-dot{background:var(--muted);border-radius:50%;width:.75rem;height:.75rem;transition:box-shadow .15s}.voice-people li.speaking .voice-dot{box-shadow:0 0 0 3px color-mix(in srgb, var(--accent) 55%, transparent), 0 0 10px var(--accent)}.voice-error{color:var(--danger);margin:0}.turn-time{justify-items:start;gap:.45rem;margin-top:.9rem;display:grid}.turn-time-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.8rem;font-weight:700}.turn-time .segment{text-align:center;min-width:4.6rem}.turn-time-custom{color:var(--muted);align-items:center;gap:.4rem;font-size:.9rem;display:flex}.turn-time-custom .input{text-align:center;width:4.5rem;padding-block:.35rem}.turn-time-custom .input.invalid{border-color:var(--danger)}.turn-time-error{color:var(--danger)}.chat-head{justify-content:space-between;align-items:center;gap:.5rem;min-height:2rem;display:flex}.voice-bar{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.35rem;display:flex}.voice-faces{gap:.3rem;margin:0 .15rem 0 0;padding:0;list-style:none;display:flex}.voice-faces li{display:grid}.voice-faces li.failed .voice-dot{opacity:.35;outline:1px dashed var(--danger)}.voice-btn{width:2rem;height:2rem;color:inherit;border-color:color-mix(in srgb, currentColor 30%, transparent);font-size:.95rem}.voice-btn.muted{background:color-mix(in srgb, var(--danger) 35%, transparent)}.voice-join{padding:.25rem .6rem}.voice-bar .voice-error{text-align:right;flex-basis:100%}.drawer-tabs{z-index:40;flex-direction:column;gap:.45rem;display:flex;position:fixed;top:50%;right:0;transform:translateY(-50%)}.drawer-tab{width:2.7rem;height:2.9rem;color:var(--sea-ink,#fff);background:var(--drawer-tab,#0a2238e0);border:1px solid var(--glass-line,#fff3);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);cursor:pointer;border-right:0;border-radius:14px 0 0 14px;place-items:center;padding:0 0 0 .15rem;font-size:1.2rem;transition:width .15s,background .15s;display:grid;box-shadow:-4px 6px 18px #0000004d}.drawer-tab:hover,.drawer-tab.active{width:3.2rem;color:var(--drawer-accent-ink,#04121f);background:var(--drawer-accent,#4da3ff)}.drawer-backdrop{z-index:41;background:#00000061;animation:.2s ease-out drawer-fade;position:fixed;inset:0}.drawer{z-index:42;width:min(23rem,92vw);color:var(--sea-ink,#fff);background:var(--drawer-bg,#0c1f33);border-left:1px solid var(--glass-line,#fff3);visibility:hidden;flex-direction:column;transition:transform .25s,visibility 0s linear .25s;display:flex;position:fixed;top:0;bottom:0;right:0;transform:translate(105%);box-shadow:-16px 0 40px #0006}.drawer.open{visibility:visible;transition:transform .25s;transform:none}.drawer-head{padding:max(1rem, env(safe-area-inset-top)) 1rem .6rem;justify-content:space-between;align-items:center;display:flex}.drawer-head h2{margin:0;font-size:1.15rem}.drawer-close{color:inherit;border-color:color-mix(in srgb, currentColor 30%, transparent);font-size:1.4rem}.drawer-body{overscroll-behavior:contain;padding:0 1rem max(1rem, env(safe-area-inset-bottom));flex:1;align-content:start;gap:.8rem;display:grid;overflow-y:auto}.drawer-section{border:1px solid var(--glass-line,#ffffff26);background:#ffffff0d;border-radius:12px;gap:.6rem;padding:.85rem;display:grid}.drawer-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--sea-muted,#9fb3c8);margin:0;font-size:.75rem}.drawer-section p{margin:0}.drawer-section .slider-value{color:var(--sea-muted,#9fb3c8)}.drawer-code{letter-spacing:.18em;font-family:ui-monospace,monospace;font-size:1.1em}.drawer-body .bet-panel{background:0 0;border:0;padding:0}@media (width<=999px){.drawer-tabs{top:auto;bottom:calc(6rem + env(safe-area-inset-bottom));transform:none}.drawer-tab{width:2.4rem;height:2.6rem;font-size:1.05rem}}@keyframes drawer-fade{0%{opacity:0}}@media (prefers-reduced-motion:reduce){.drawer,.drawer.open{transition:none}}.watching-chip{background:#ffffff24;border:1px solid #ffffff38;border-radius:999px;margin-left:.5em;padding:.05em .55em;font-size:.8em;font-weight:600;display:inline-block}.spectate-chat{width:min(100%,26rem);height:20rem}.voice-ptt{-webkit-user-select:none;user-select:none;touch-action:none}.voice-ptt.talking{color:#fff;background:#1f9d55;border-color:#1f9d55;box-shadow:0 0 0 3px #1f9d5559}.voice-btn.danger,.voice-btn.muted{background:color-mix(in srgb, var(--danger) 35%, transparent)}.voice-settings{gap:.6rem;display:grid}.voice-mode{grid-template-columns:1fr 1fr;display:grid}.voice-mode .segment{text-align:left}.voice-more summary{cursor:pointer;color:var(--muted);font-size:.85rem}.voice-more[open] summary{margin-bottom:.5rem}.chat-head{flex-wrap:wrap}.voice-bar.joined{flex-wrap:nowrap;flex:100%;justify-content:flex-end}.voice-bar.joined .voice-faces{margin-right:auto}.drawer .voice-mode{border-color:var(--glass-line,#ffffff26);background:#00000038}.drawer .voice-mode .segment{color:var(--sea-ink,#fff)}.drawer .voice-mode .segment span{color:var(--sea-muted,#9fb3c8)}.drawer .voice-mode .segment.active{color:var(--drawer-accent-ink,#04121f);background:var(--drawer-accent,#4da3ff)}.drawer .voice-mode .segment.active span{color:inherit;opacity:.8}.voice-devices{gap:.5rem;display:grid}.voice-device{gap:.25rem;font-size:.85rem;font-weight:600;display:grid}.voice-device select{width:100%;padding-block:.4rem;font-weight:400}.voice-meter-row{grid-template-columns:minmax(5rem,auto) 1fr;align-items:center;gap:.6rem;display:grid}.voice-meter{background:#7f7f7f40;border-radius:999px;height:.55rem;overflow:hidden}.voice-meter i{border-radius:inherit;background:linear-gradient(90deg,#1f9d55,#7ad151);height:100%;transition:width .2s;display:block}.voice-incoming{gap:.35rem;margin-top:.25rem;display:grid}.drawer .voice-device select{color:var(--sea-ink,#fff);border-color:var(--glass-line,#fff3);background:#00000040}.drawer .voice-device option{color:#111}.voice-faces li.speaking .voice-dot,.voice-people li.speaking .voice-dot{animation:.9s ease-out infinite voice-buzz}@keyframes voice-buzz{0%{transform:scale(1);box-shadow:0 0 #7ad151bf,0 0 #7ad15173}12%{transform:scale(1.12)rotate(-3deg)}24%{transform:scale(1.06)rotate(3deg)}36%{transform:scale(1.1)rotate(-2deg)}to{transform:scale(1);box-shadow:0 0 0 7px #7ad15100,0 0 0 14px #7ad15100}}@media (prefers-reduced-motion:reduce){.voice-faces li.speaking .voice-dot,.voice-people li.speaking .voice-dot{animation:none;box-shadow:0 0 0 3px #7ad151cc}}.topbar{background:var(--brand-night);color:#fff;border-bottom:0}.topbar .brand{color:#fff;letter-spacing:-.01em;font-weight:800}.topbar .icon-btn{color:#fff;border-color:#ffffff38}.topbar .icon-btn:hover,.topbar .icon-btn[aria-expanded=true]{color:var(--brand-gold);border-color:var(--brand-gold)}.topbar .topbar-user{color:#fff;background:#ffffff1f}.dash{gap:2rem;display:grid}.dash-hero{color:#fff;background:radial-gradient(circle at 85% 15%, #ffc23d38 0, transparent 38%), radial-gradient(circle at 10% 110%, #c25cf059 0, transparent 45%), radial-gradient(#ffffff12 1px, transparent 1.5px) 0 0 / 18px 18px, linear-gradient(135deg, var(--brand-night) 0%, var(--brand-deep) 60%, #2b1f6b 100%);border-radius:24px;align-items:end;gap:1.5rem;padding:clamp(1.5rem,4vw,2.75rem);display:grid;position:relative;overflow:hidden;box-shadow:0 18px 40px #0b102640}@media (width>=860px){.dash-hero{grid-template-columns:1.4fr 1fr}}.dash-kicker{letter-spacing:.14em;text-transform:uppercase;color:var(--brand-gold);margin:0 0 .4rem;font-size:.8rem;font-weight:800}.dash-hero h1{letter-spacing:-.02em;margin:0 0 .5rem;font-size:clamp(1.9rem,5vw,2.8rem);font-weight:800}.dash-lead{color:#ffffffc7;max-width:34rem;margin:0;font-size:1.05rem}.dash-join{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#ffffff14;border:1px solid #ffffff24;border-radius:16px;gap:.5rem;padding:1rem;display:grid}.dash-join label{color:#ffffffd9;font-size:.9rem;font-weight:600}.dash-join-row{gap:.5rem;display:flex}.dash-join .input{color:#fff;background:#00000040;border-color:#fff3;flex:1;min-width:0}.dash-join .input::placeholder{color:#fff6}.dash-join .btn.primary{color:var(--brand-night);background:var(--brand-gold);border-color:var(--brand-gold);font-weight:800}.dash-join .btn.primary:disabled{opacity:.55}.dash-join-error{color:#ffb4b4;margin:0;font-size:.85rem}.dash-section-head{align-items:baseline;gap:.75rem;margin-bottom:1rem;display:flex}.dash-section-head h2{letter-spacing:-.01em;margin:0;font-size:1.4rem;font-weight:800}.dash-count{color:var(--muted);font-size:.85rem;font-weight:600}.game-grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,210px),1fr));gap:1.25rem;margin:0;padding:0;list-style:none;display:grid}.game-tile{width:100%;font:inherit;text-align:left;color:var(--ink);background:var(--surface);border:1px solid var(--line);cursor:pointer;box-shadow:var(--shadow);border-radius:20px;flex-direction:column;padding:0;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;overflow:hidden}.game-tile:hover,.game-tile:focus-visible{border-color:color-mix(in srgb, var(--glow) 70%, transparent);box-shadow:0 14px 32px #0b10262e, 0 0 0 3px color-mix(in srgb, var(--glow) 35%, transparent);outline:none;transform:translateY(-4px)}.game-tile-art{aspect-ratio:1;background:var(--brand-night);display:block;position:relative;overflow:hidden}.game-tile-art img{object-fit:cover;width:100%;height:100%;transition:transform .35s;display:block}.game-tile:hover .game-tile-art img{transform:scale(1.05)}.game-tile-play{color:var(--brand-night);background:var(--brand-gold);opacity:0;border-radius:999px;align-items:center;gap:.35rem;padding:.4rem .85rem;font-size:.9rem;font-weight:800;transition:opacity .2s,transform .2s;display:inline-flex;position:absolute;bottom:.75rem;right:.75rem;transform:translateY(6px);box-shadow:0 6px 16px #0000004d}.game-tile:hover .game-tile-play,.game-tile:focus-visible .game-tile-play{opacity:1;transform:none}@media (hover:none){.game-tile-play{opacity:1;transform:none}}.game-tile-body{gap:.35rem;padding:.85rem 1rem 1rem;display:grid}.game-tile-title{letter-spacing:-.01em;font-size:1.1rem;font-weight:800}.game-tile-facts{flex-wrap:wrap;gap:.3rem;display:flex}.game-tile-facts span{color:var(--accent);background:var(--accent-soft);border-radius:999px;padding:.12rem .55rem;font-size:.75rem;font-weight:600}.game-tile-soon{border:2px dashed var(--line);min-height:12rem;color:var(--muted);border-radius:20px;place-content:center;justify-items:center;gap:.4rem;font-weight:700;display:grid}.game-tile-soon-icon{background:var(--brand-gradient);color:#0000;-webkit-background-clip:text;background-clip:text;font-size:1.6rem}@media (prefers-reduced-motion:reduce){.game-tile,.game-tile-art img,.game-tile-play{transition:none}}.game-head{color:#fff;background:radial-gradient(#ffffff12 1px, transparent 1.5px) 0 0 / 18px 18px, linear-gradient(135deg, var(--brand-night) 0%, var(--brand-deep) 70%, #2b1f6b 100%);border-radius:22px;grid-template-columns:auto 1fr;grid-template-areas:"back back""art text";align-items:center;gap:.75rem 1.25rem;margin-bottom:1.75rem;padding:1.25rem;display:grid;position:relative;box-shadow:0 14px 32px #0b102638}.game-back{font:inherit;color:#ffffffd9;cursor:pointer;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:999px;grid-area:back;justify-self:start;padding:.3rem .8rem;font-size:.9rem;font-weight:700}.game-back:hover{color:var(--brand-gold);border-color:var(--brand-gold)}.game-head-art{aspect-ratio:1;object-fit:cover;border-radius:18px;grid-area:art;width:clamp(76px,18vw,120px);height:auto;box-shadow:0 8px 22px #00000059}.game-head-text{grid-area:text}.game-head h1{letter-spacing:-.02em;margin:0 0 .25rem;font-weight:800}.game-head p{color:#ffffffc7;margin:0}.setup-step{letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:1.25rem 0 .6rem;font-size:.8rem;font-weight:800}.home-intro .setup-step:first-child{margin-top:0}.setup-step-who{margin-top:.5rem}.dash-join .btn.primary:disabled{opacity:1;color:#ffffff8c;background:#ffffff1f;border-color:#ffffff2e}@media (width<=560px){.game-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem}.game-tile{border-radius:16px}.game-tile-body{padding:.6rem .7rem .75rem}.game-tile-title{font-size:.98rem}.game-tile-facts span:nth-child(n+3){display:none}.game-tile-play{padding:.3rem .65rem;font-size:.8rem;bottom:.5rem;right:.5rem}.game-tile-soon{aspect-ratio:1;text-align:center;min-height:0;padding:.5rem;font-size:.85rem}}.stage{--glass:#06162894;--glass-line:#c8e1ff2e;--sea-ink:#e8f1fb;--sea-muted:#dcebfab3;--grid-line:#d7ebff21;isolation:isolate;color:var(--sea-ink);background:radial-gradient(at 30% 20%,#0f4561 0%,#072a42 55%,#04182a 100%);margin:0 -1rem;padding:1rem;position:relative;overflow:hidden}@media (width>=720px){.stage{border-radius:18px;margin:0;padding:1.1rem}}.stage.expanded{z-index:40;padding:max(.75rem, env(safe-area-inset-top)) max(.75rem, env(safe-area-inset-right)) max(.75rem, env(safe-area-inset-bottom)) max(.75rem, env(safe-area-inset-left));border-radius:0;margin:0;position:fixed;inset:0;overflow:auto}html.stage-open{overflow:hidden}.ocean-canvas,.fx-canvas{width:100%;height:100%;display:block;position:absolute;inset:0}.ocean-canvas{z-index:0}.fx-canvas{z-index:5;pointer-events:none}.stage-content{z-index:2;gap:.9rem;display:grid;position:relative}.stage .hud,.stage .side-card,.stage .log,.stage .placement-panel{background:var(--glass);border:1px solid var(--glass-line);-webkit-backdrop-filter:blur(10px)saturate(1.2);border-radius:14px;box-shadow:0 10px 30px #00000038}.stage .muted,.stage .small{color:var(--sea-muted)}.stage h2{color:var(--sea-ink)}.stage .btn{color:var(--sea-ink);background:#ffffff14;border-color:#ffffff38}.stage .btn.primary{color:#04121f;background:#6cc4ff;border-color:#6cc4ff}.stage .btn.danger{color:#fff;background:var(--hit);border-color:var(--hit)}.stage .timer-text{color:var(--sea-muted)}.stage .timer-seconds{color:var(--sea-ink)}.stage .timer-track{background:#ffffff29}.stage .timer-fill{background:#6cc4ff}.hud{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"status btn""announce announce";align-items:center;gap:.5rem .9rem;padding:.7rem .9rem .25rem;display:grid}@media (width>=900px){.hud{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) auto;grid-template-areas:"status announce btn"}}.hud.mine{border-color:#6cc4ffb3;box-shadow:0 0 0 1px #6cc4ff59,0 10px 30px #00000038}.hud-status{grid-area:status;min-width:0}.hud-status>strong{margin-bottom:.35rem;display:block}.hud-status .timer{margin-bottom:.4rem}.hud-announce{grid-area:announce;justify-content:center;display:flex}@media (width>=900px){.hud-announce{min-height:3.6rem}}.hud .stage-btn{grid-area:btn;align-self:start}.stage-btn{width:2.5rem;height:2.5rem;color:var(--sea-ink);cursor:pointer;background:#ffffff14;border:1px solid #ffffff38;border-radius:10px;place-items:center;display:grid}.stage-btn:hover{background:#ffffff29}.stage .result{text-align:left;margin:0;padding:.2rem 0 .4rem}.stage .result h1{margin:0;font-size:clamp(1.4rem,3vw,2rem)}.stage .result.win h1{color:#7ef0a6}.stage .result.loss h1{color:#ff8b8f}.stage .result p{color:var(--sea-muted);margin:0}.sunk-banner{pointer-events:none;border-radius:12px;align-items:center;gap:.6rem;padding:.45rem .9rem;animation:3.2s ease-out .5s both announce;display:inline-flex}.sunk-banner strong{font-size:clamp(1rem,2.4vw,1.25rem);line-height:1.2}.sunk-banner>span:last-child{opacity:.9;font-size:.85rem}.sunk-banner.mine{color:#fff;background:linear-gradient(135deg,#e0353d,#b3161e);box-shadow:0 0 24px #e0353d8c}.sunk-banner.theirs{color:#fff;background:linear-gradient(135deg,#2b3a4f,#18222f);border:1px solid #fff3}.sunk-icon{font-size:1.6rem;line-height:1}@keyframes announce{0%{opacity:0;transform:scale(.85)}10%{opacity:1;transform:scale(1.05)}18%{transform:scale(1)}82%{opacity:1}to{opacity:0}}@media (width<=899px){.hud{padding:.55rem .7rem .15rem;position:relative}.hud-status>strong{font-size:.95rem}.hud-announce{z-index:1;pointer-events:none;grid-area:1/1/-1/-1;align-items:center;position:absolute;inset:0}.hud-announce .sunk-banner{justify-content:center;width:calc(100% - .6rem);padding:.35rem .7rem}.hud-announce .sunk-banner strong{font-size:1rem}.hud-announce .sunk-banner>span:last-child{font-size:.78rem}.stage{padding:.7rem}.stage-content,.battle,.battle-side{gap:.6rem}}.stage{--main-board:min(calc(100dvh - 21rem), 52vw)}.stage.expanded{--main-board:min(calc(100dvh - 11.5rem), 54vw)}.battle{align-items:start;gap:.9rem;display:grid}@media (width>=900px){.battle{grid-template:"log main fleet""log main actions"1fr/minmax(0,1fr) auto minmax(0,1fr)}.battle-main{grid-area:main}.battle .battle-side{display:contents}.battle .battle-side .own-fleet{grid-area:fleet}.battle .battle-side .side-stack{height:0;min-height:calc(100% - var(--board-title-h) - .4rem);margin-top:calc(var(--board-title-h) + .4rem);flex-direction:column;grid-area:log;align-self:start;gap:.9rem;display:flex}.battle .battle-side .side-stack .log{flex:1 1 0;height:auto;min-height:4rem;overflow:hidden}.battle .battle-side .side-stack .chat{flex:0 17rem;min-height:11rem}.battle .battle-side .game-actions{grid-area:actions;align-self:start}}.battle-main{justify-items:start;gap:.4rem;min-width:0;display:grid}.battle-main .board-title,.battle-main .board{width:100%}.battle{--board-title-h:1.75rem}.battle-main .board-title{height:var(--board-title-h);flex-wrap:nowrap;margin-bottom:0}@media (width>=900px){.battle-main .board-title,.battle-main .board{width:var(--main-board);min-width:300px}}.battle-side{grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-areas:"fleet log""chat chat""actions actions";align-content:start;gap:.9rem;min-width:0;display:grid}.battle-side .side-stack{display:contents}.battle-side .chat{grid-area:chat;height:15rem}.battle-side .own-fleet{grid-area:fleet}.battle-side .log{grid-area:log;height:0;min-height:100%;overflow:hidden}.battle-side .game-actions{grid-area:actions}@media (width<=899px){.battle-side .log{font-size:.85em}}.side-card{padding:.7rem}.own-fleet .board{width:100%}.board-title{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.4rem;margin-bottom:.35rem;display:flex}.board-title h2{text-shadow:0 1px 3px #00000080;margin:0;font-size:1rem}.fleet-status{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.fleet-status li{gap:2px;display:inline-flex}.fleet-status i{background:#b9c6d4;border-radius:2px;width:.62rem;height:.62rem;display:block}.fleet-status li.sunk i{background:var(--hit);opacity:.85}.fleet-status li.just-sunk{animation:.6s ease-out .5s both chip-pop}@keyframes chip-pop{40%{transform:scale(1.6)}}.game-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.6rem;display:flex}.rematch{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:.5rem;margin-left:auto;display:flex}.game-actions>.btn{margin-left:auto}.log{padding:.7rem .9rem}.log h3{color:var(--sea-muted);text-transform:uppercase;letter-spacing:.06em;margin:0 0 .4rem;font-size:.8rem}.log ol{gap:.15rem;margin:0;padding:0;font-size:.88rem;list-style:none;display:grid}.log-hit,.log-sunk{color:#ff9a9e;font-weight:600}.log-miss{color:var(--sea-muted)}.log-warn{color:#ffd27a}.board{grid-template-columns:1.3em repeat(var(--n), minmax(0, 1fr));grid-template-rows:1.3em repeat(var(--n), auto);-webkit-user-select:none;user-select:none;touch-action:manipulation;background:linear-gradient(#04162838,#020e1c52);border:1px solid #d7ebff38;border-radius:12px;width:100%;padding:.35rem .5rem .5rem .25rem;display:grid;box-shadow:inset 0 0 50px #000a1959,0 12px 34px #00000047}.board.compact{padding:.2rem .3rem .3rem .15rem;font-size:.8em}.board-label{color:#e1f0ffb8;text-shadow:0 1px 2px #0009;font-variant-numeric:tabular-nums;place-items:center;font-size:.7rem;font-weight:600;display:grid}.cell{z-index:3;aspect-ratio:1;background:0 0;border:0;border-radius:0;padding:0;position:relative}.grid-lines{z-index:0;pointer-events:none;border-right:1px solid var(--grid-line,#d7ebff21);border-bottom:1px solid var(--grid-line,#d7ebff21);background-image:linear-gradient(to right, var(--grid-line,#d7ebff21) 1px, transparent 1px), linear-gradient(to bottom, var(--grid-line,#d7ebff21) 1px, transparent 1px);background-size:calc(100% / var(--n)) calc(100% / var(--n));position:relative}.board.interactive .cell:not([aria-disabled=true]){cursor:crosshair}.board.interactive .cell:not([aria-disabled=true]):hover,.board.interactive .cell:not([aria-disabled=true]):focus-visible{background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 40' fill='none' stroke='%23ff5a5f' stroke-width='2'%3E%3Ccircle cx='20' cy='20' r='11'/%3E%3Cpath d='M20 3v9M20 28v9M3 20h9M28 20h9'/%3E%3Ccircle cx='20' cy='20' r='1.5' fill='%23ff5a5f'/%3E%3C/svg%3E") 50%/78% no-repeat,#ff5a5f1a}.board .cell:focus-visible{outline-offset:-2px;outline:2px solid #6cc4ff}.ship-slot{z-index:1;pointer-events:none;position:relative}.ship-sprite{width:92%;height:92%;transition:filter 1.2s,opacity 1.2s,transform 1.2s;position:absolute;inset:4%;overflow:visible}.ship-sunk{filter:grayscale(.7)brightness(.5)sepia(.35);opacity:.88;transform:scale(.95)rotate(-1.5deg)}.ship-ghost-valid{opacity:.8;filter:drop-shadow(0 0 5px #4ade80f2)}.ship-ghost-invalid{opacity:.7;filter:drop-shadow(0 0 5px #ff5a5ff2)saturate(.6)}.ship-foam{animation:2.4s ease-in-out infinite foam}@keyframes foam{50%{opacity:.45}}.radar-spin{transform-box:fill-box;transform-origin:50%;animation:3s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.ship-slot.just-sunk .ship-sprite{animation:1.6s ease-out .55s both sink}@keyframes sink{0%{filter:brightness(2.2)saturate(1.5)}30%{filter:brightness(1.2);transform:scale(1)}to{filter:grayscale(.7)brightness(.5)sepia(.35);transform:scale(.95)rotate(-1.5deg)}}.mark{z-index:2;pointer-events:none;place-items:center;display:grid;position:relative}.mark svg{width:80%;height:80%;overflow:visible}.foam-outer,.foam-inner{fill:none;stroke:#ebf6ffbf}.foam-outer{stroke-width:1.4px;transform-origin:20px 20px;animation:3.2s ease-in-out infinite ripple}.foam-inner{stroke-width:1.8px;stroke:#ebf6ff8c}.foam-dot{fill:#f0f8ffd9}@keyframes ripple{0%,to{opacity:.85;transform:scale(.92)}50%{opacity:.5;transform:scale(1.08)}}.mark.hit svg{width:105%;height:105%}.ember{transform-box:fill-box;transform-origin:50%;filter:blur(.4px);animation:.9s ease-in-out infinite alternate ember}.ember-b{animation-duration:1.3s;animation-delay:-.4s}.ember-c{animation-duration:.7s;animation-delay:-.2s}@keyframes ember{to{opacity:.35;transform:scale(.7)}}.mark.last:after{content:"";border:2px solid #6cc4ffd9;border-radius:4px;animation:1s ease-out 2 last-ping;position:absolute;inset:6%}@keyframes last-ping{0%{box-shadow:0 0 #6cc4ffb3}to{box-shadow:0 0 0 10px #0000}}.placement{align-items:start;gap:.9rem;display:grid}@media (width>=900px){.placement{grid-template-columns:minmax(0,1fr) 20rem}}.placement-board{justify-items:center;display:grid}.placement-board .board{width:min(100%,100dvh - 20rem);min-width:min(100%,300px)}.stage.expanded .placement-board .board{width:min(100%,100dvh - 9rem)}.placement-panel{padding:1rem}.ship-list{gap:.35rem;margin:.8rem 0;padding:0;list-style:none;display:grid}.ship-pick{width:100%;font:inherit;color:var(--sea-ink);cursor:pointer;text-align:left;background:#ffffff0f;border:1px solid #ffffff29;border-radius:10px;grid-template-columns:1fr auto 1.2rem;align-items:center;gap:.6rem;padding:.5rem .7rem;display:grid}.ship-pick.selected{background:#6cc4ff2e;border-color:#6cc4ff}.ship-pick.placed .ship-pick-name{color:var(--sea-muted)}.ship-pick-size{gap:3px;display:inline-flex}.ship-pick-size i{background:#b9c6d4;border-radius:2px;width:.65rem;height:.65rem;display:block}.ship-pick-state{color:#7ef0a6;font-weight:700}.placement-message{color:#ff9a9e;min-height:1.5em;margin:.6rem 0;font-size:.9rem}.stage kbd{border-color:#ffffff4d}.waiting-fleet{text-align:center;justify-items:center;gap:.6rem;display:grid}.waiting-fleet .board{width:min(100%,100dvh - 15rem,34rem)}.stage .chat h3{color:var(--sea-muted)}.stage .chat-msg{background:#ffffff14;border-color:#ffffff24}.stage .chat-msg strong{color:#8fd0ff}.stage .chat-msg.mine{background:#6cc4ff2e;border-color:#6cc4ff4d}.stage .chat-empty{color:var(--sea-muted)}.stage .chat-input{color:var(--sea-ink);background:#00000038;border-color:#fff3}.stage .chat-input::placeholder{color:var(--sea-muted)}@media (prefers-reduced-motion:reduce){.sunk-banner{animation:3.2s step-end .5s both announce-static!important}@keyframes announce-static{0%,99%{opacity:1}to{opacity:0}}}.stage .bet-panel h3{color:var(--sea-muted)}.stage .bet-pot,.stage .bet-rows li.winner{color:var(--sea-ink)}.stage .bet-owes{color:#ff9a9e}.stage .bet-paid{color:#7ee2a8}.stage.pq-stage .bet-pot{color:var(--pq-gold)}.stage.pq-stage{--glass:#2012089e;--glass-line:#ffd6a02e;--sea-ink:#fbf1e2;--sea-muted:#fae8cdb8;--pq-gold:#f2c75c;--drawer-bg:#2a190e;--drawer-tab:#301c0ee6;--drawer-accent:#f2c75c;--drawer-accent-ink:#2a1606;--pq-board:min(calc(100dvh - 19.5rem), calc(100vw - 42rem));background:radial-gradient(at 50% 40%,#ffc88c29 0%,#0000 60%),radial-gradient(at 50% 120%,#0000008c 0%,#0000 70%),repeating-linear-gradient(94deg,#fff0 0 22px,#ffe6c809 22px 23px,#0000000a 23px 41px,#fff0 41px 64px),linear-gradient(160deg,#5a3720 0%,#43281a 45%,#2e1b10 100%)}.stage.pq-stage.expanded{--pq-board:min(calc(100dvh - 9rem), 58vw)}@media (width>=1000px){.stage.pq-stage.expanded{--pq-side:clamp(14rem, 17vw, 21rem);--pq-board:min(calc(100dvh - 1.5rem - env(safe-area-inset-top) - env(safe-area-inset-bottom)), calc(100vw - 2 * var(--pq-side) - 4rem))}.stage.pq-stage.expanded .stage-content{grid-template-columns:minmax(var(--pq-side), 1fr) auto minmax(var(--pq-side), 1fr);grid-template-rows:auto 1fr;grid-template-areas:"hud board side""left board side";align-items:start;min-height:100%}.stage.pq-stage.expanded .pq-layout{display:contents}.stage.pq-stage.expanded .pq-hud{grid-area:hud;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"status btn";padding-bottom:.5rem}.stage.pq-stage.expanded .pq-board-wrap{grid-area:board;align-self:center}.stage.pq-stage.expanded .pq-left{grid-area:left}.stage.pq-stage.expanded .pq-side{grid-area:side}.stage.pq-stage.expanded .pq-board{filter:drop-shadow(0 10px 22px #00000073)}}.stage.pq-stage .btn.primary{color:#2a1606;background:var(--pq-gold);border-color:var(--pq-gold)}.stage.pq-stage .timer-fill{background:var(--pq-gold)}.stage.pq-stage .hud.mine{border-color:#f2c75cbf;box-shadow:0 0 0 1px #f2c75c59,0 10px 30px #0000004d}.pq-chip{vertical-align:-.05em;border-radius:50%;width:.8em;height:.8em;margin-right:.45em;display:inline-block;box-shadow:0 0 0 2px #ffffffb3}.pq-layout{grid-template-areas:"board""side""left";gap:.9rem;display:grid}.pq-left{flex-direction:column;grid-area:left;gap:.9rem;min-width:0;display:flex}.pq-board-wrap{grid-area:board;justify-content:center;display:flex}.pq-side{flex-direction:column;grid-area:side;gap:.9rem;min-width:0;display:flex}.pq-tabs{display:none}.pq-left .log{flex-direction:column;min-height:0;display:flex}.pq-left .log ol{overscroll-behavior:contain;flex:auto;align-content:start;min-height:0;padding-right:.25rem;overflow-y:auto}.pq-left .log li{border-bottom:1px solid #ffffff0d;padding:.12rem 0}@media (width>=1000px){.pq-layout{grid-template-columns:minmax(13rem,1fr) auto minmax(15rem,1fr);grid-template-areas:"left board side";align-items:start}.pq-left .pq-players,.pq-side>:not(.chat){flex:none}.stage.pq-stage:not(.expanded) .pq-left .log{min-height:16rem;max-height:40rem}.stage.pq-stage:not(.expanded) .pq-side .chat{height:30rem}.stage.pq-stage.expanded .pq-left,.stage.pq-stage.expanded .pq-side{align-self:stretch;height:auto;min-height:0}.stage.pq-stage.expanded .pq-left .log{flex:1 1 0;min-height:6rem}.stage.pq-stage.expanded .pq-side .chat{flex:1 1 0;min-height:12rem}.stage.pq-stage.expanded .stage-content{padding-right:2.9rem}}@media (width<=999px){.pq-layout{flex-direction:column;display:flex}.pq-side,.pq-left{display:contents}.pq-board-wrap,.pq-blow,.pq-foul-mine{order:1}.pq-tray{order:2}.pq-side .bet-panel,.pq-side .game-actions{order:3}.pq-players{order:4}.pq-tabs{background:var(--glass);border:1px solid var(--glass-line);border-radius:12px;order:5;gap:.35rem;padding:.3rem;display:flex}.pq-tabs button{font:inherit;color:var(--sea-muted);cursor:pointer;background:0 0;border:0;border-radius:9px;flex:1;padding:.55rem;font-weight:700}.pq-tabs button.active{color:#2a1606;background:var(--pq-gold)}.pq-tab-badge{color:#fff;background:#e0352b;border-radius:999px;place-items:center;min-width:1.3em;height:1.3em;margin-left:.4em;padding:0 .3em;font-size:.75em;display:inline-grid}.pq-left .log,.pq-side .chat{order:6;height:min(24rem,60dvh)}.pq-layout.tab-chat .pq-left .log,.pq-layout.tab-log .pq-side .chat{display:none}.stage.pq-stage,.stage.pq-stage.expanded{--pq-board:min(100%, calc(100dvh - 12rem), 640px)}.pq-board-wrap .pq-board{width:var(--pq-board)}}.pq-board{width:var(--pq-board);aspect-ratio:1;filter:drop-shadow(0 14px 26px #00000073);-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;min-width:280px;height:auto;display:block}.pq-jail-label{letter-spacing:.7px;text-anchor:middle;fill:#ffffffb8;font:700 4.4px system-ui,sans-serif}.pq-unused{opacity:.4;filter:saturate(.35)}.pq-piece{pointer-events:none;transition:transform .11s linear}.pq-piece.clickable{cursor:pointer;pointer-events:auto;outline:none}.pq-halo{fill:#fff0be2e;stroke:var(--pq-gold,#f2c75c);stroke-width:.9px;transform-origin:50%;transform-box:fill-box;animation:1.2s ease-in-out infinite pq-halo}.pq-piece.selected .pq-halo{fill:#fff0be59;stroke-width:1.3px;animation:none}.pq-piece.clickable:focus-visible .pq-halo{stroke:#fff;stroke-width:1.4px}.pq-piece.flash>g{transform-origin:50%;transform-box:fill-box;animation:.9s ease-out .25s 2 pq-flash}@keyframes pq-halo{50%{opacity:.55;transform:scale(1.14)}}@keyframes pq-flash{30%{filter:drop-shadow(0 0 2px #ff5a3c);transform:scale(1.35)}}.pq-dest{cursor:pointer;outline:none}.pq-dest circle{fill:#fff8e1e0;stroke:#7a4b12;stroke-width:.7px;stroke-dasharray:1.6 1;animation:1s linear infinite pq-dest}.pq-dest:hover circle,.pq-dest:focus-visible circle{fill:var(--pq-gold,#f2c75c);stroke-dasharray:none}.pq-dest.straight circle{fill:#e1f0ffe6;stroke:#1c5fa8}.pq-dest.straight text{fill:#123d6b;font-size:4.2px}.pq-dest.both text{font-size:3.6px}.pq-dest.capture circle{fill:#ff5a3c47;stroke:#e0352b;stroke-width:1px}.pq-dest.capture:hover circle,.pq-dest.capture:focus-visible circle{fill:#ff5a3c8c}.pq-dest.capture text{fill:#fff;paint-order:stroke;stroke:#7a1410;stroke-width:1.1px}.pq-dest text{text-anchor:middle;fill:#4a2a08;pointer-events:none;font:800 5px system-ui,sans-serif}@keyframes pq-dest{to{stroke-dashoffset:-2.6px}}.pq-tray{gap:.75rem;padding:.9rem;display:grid}.pq-tray.mine{border-color:#f2c75c8c}.dice{perspective:700px;justify-content:center;gap:1.1rem;padding:.5rem 0 .2rem;display:flex}.die-slot{--die:54px;width:var(--die);height:var(--die);transition:opacity .25s,filter .25s}.die-slot.used{opacity:.38;filter:grayscale(.8)}.die{width:100%;height:100%;transform-style:preserve-3d;transform:rotateX(var(--rx)) rotateY(var(--ry));position:relative}.die.rolling{animation:.68s cubic-bezier(.18,.7,.3,1) both pq-roll}.die.idle{opacity:.9}@keyframes pq-roll{0%{transform:translateY(-34px) rotateX(var(--spin-x)) rotateY(var(--spin-y))}55%{transform:translateY(5px) rotateX(calc(var(--rx) + 40deg)) rotateY(calc(var(--ry) - 30deg))}78%{transform:translateY(-4px) rotateX(calc(var(--rx) - 8deg)) rotateY(calc(var(--ry) + 6deg))}to{transform:translateY(0) rotateX(var(--rx)) rotateY(var(--ry))}}.face{backface-visibility:hidden;background:radial-gradient(circle at 30% 25%,#fffdf7 0%,#f3ecdc 60%,#e2d6bd 100%);border-radius:11px;grid-template-rows:repeat(3,1fr);grid-template-columns:repeat(3,1fr);padding:15%;display:grid;position:absolute;inset:0;box-shadow:inset 0 0 0 1px #785a3240,inset 0 -4px 8px #785a322e}.face.front{transform:translateZ(calc(var(--die) / 2))}.face.back{transform:rotateY(180deg) translateZ(calc(var(--die) / 2))}.face.right{transform:rotateY(90deg) translateZ(calc(var(--die) / 2))}.face.left{transform:rotateY(-90deg) translateZ(calc(var(--die) / 2))}.face.top{transform:rotateX(90deg) translateZ(calc(var(--die) / 2))}.face.bottom{transform:rotateX(-90deg) translateZ(calc(var(--die) / 2))}.face i.pip{background:radial-gradient(circle at 40% 35%,#4a2f2f 0 30%,#1d1212 52%,#0000 56%)}.stage.pq-stage .chat-msg:not(.colored) strong{color:var(--pq-gold)}.stage.pq-stage .chat-msg.mine{background:#f2c75c29;border-color:#f2c75c4d}.lobby .chat{height:16rem}.pq-actions{gap:.5rem;display:grid}.pq-roll{padding-block:.7rem;font-size:1.05rem;animation:1.6s ease-in-out infinite pq-pulse}@keyframes pq-pulse{50%{box-shadow:0 0 0 6px #f2c75c38}}.pq-hint{text-align:center;min-height:1.5em;margin:0}.pq-players{align-content:start;gap:.35rem;padding:.6rem;display:grid}.pq-player{border:1px solid #0000;border-radius:10px;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:.65rem;padding:.55rem .6rem;transition:background .2s,border-color .2s;display:grid}.pq-player.turn{border-color:color-mix(in srgb, var(--pq-color) 70%, transparent);box-shadow:inset 3px 0 0 var(--pq-color);background:#ffffff14}.pq-player.out{opacity:.45}.pq-token{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--pq-color) 35%, #fff) 0%, var(--pq-color) 50%, color-mix(in srgb, var(--pq-color) 60%, #000) 100%);border-radius:50%;width:30px;height:30px;box-shadow:0 0 0 2px #fffc,0 3px 6px #00000059}.pq-player-text{min-width:0;line-height:1.25;display:grid}.pq-player-text strong,.pq-player-text span{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pq-player-meta{align-items:center;gap:.45rem;min-width:0;display:flex}.pq-player-meta .small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.pq-progress{flex:none;gap:3px;display:flex}.pq-progress i{border:1.5px solid color-mix(in srgb, var(--pq-color) 80%, #fff);border-radius:50%;width:9px;height:9px}.pq-progress i.home{background:var(--pq-color)}@media (width<=999px){.pq-players{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}}.lobby{gap:1rem;max-width:720px;margin:0 auto;display:grid}.lobby-seats h2{margin-top:0}.lobby-seats ol{gap:.5rem;margin:0 0 .75rem;padding:0;list-style:none;display:grid}.lobby-seat{border:1px solid var(--line);border-radius:var(--radius-sm);background:var(--surface-2);grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:.8rem;padding:.6rem .75rem;display:grid}.lobby-seat.empty{background:0 0;border-style:dashed}.lobby-token{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--pq-color) 35%, #fff) 0%, var(--pq-color) 50%, color-mix(in srgb, var(--pq-color) 60%, #000) 100%);border-radius:50%;width:32px;height:32px;box-shadow:0 2px 5px #00000040}.lobby-seat.empty .lobby-token{border:2px dashed var(--line);box-shadow:none;background:0 0}.lobby-name{min-width:0;line-height:1.3;display:grid}.lobby-actions{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem;display:flex}.small-btn{padding:.35rem .75rem;font-size:.9rem}.game-picker{margin-bottom:1rem}@media (prefers-reduced-motion:reduce){.pq-piece,.die-slot{transition:none}.die.rolling,.pq-halo,.pq-roll,.pq-dest circle,.pq-piece.flash>g{animation:none}}.player-count{margin-top:.6rem}.player-count .segment{text-align:center;min-width:4.2rem}.pq-torito{color:#2a1606;background:var(--pq-gold,#f2c75c);border-radius:999px;margin-left:.6em;padding:.1em .55em;font-size:.9em;animation:.9s ease-out pq-torito;display:inline-block;box-shadow:0 0 0 2px #ffffff40}@keyframes pq-torito{0%{opacity:0;transform:scale(.6)}45%{transform:scale(1.18)rotate(-4deg)}to{transform:scale(1)}}@media (prefers-reduced-motion:reduce){.pq-torito{animation:none}}.pq-roll{animation:.7s ease-in-out 2 pq-nudge,1.6s ease-in-out 1.4s infinite pq-pulse}@keyframes pq-nudge{0%,to{transform:translate(0)rotate(0)}15%{transform:translate(-5px)rotate(-2deg)}35%{transform:translate(5px)rotate(2deg)}55%{transform:translate(-3px)rotate(-1deg)}75%{transform:translate(3px)rotate(1deg)}}.pq-blow{border-color:color-mix(in srgb, var(--danger) 55%, transparent);background:color-mix(in srgb, var(--danger) 10%, var(--surface));gap:.5rem;padding:.9rem;animation:.45s ease-out pq-blow-in;display:grid}.pq-blow h3{margin:0;font-size:1rem}.pq-blow p{margin:0}.pq-blow-pieces{gap:.4rem;display:grid}.pq-blow-pieces .btn{text-align:left;justify-content:flex-start;align-items:center;gap:.5rem;display:flex}@keyframes pq-blow-in{0%{opacity:0;transform:scale(.94)}60%{transform:scale(1.02)}}.pq-foul-mine{margin:0}.pq-board-wrap.paused{position:relative}.pq-board-wrap.paused .pq-board{filter:grayscale(.6)brightness(.8);pointer-events:none}.pq-paused{z-index:2;color:#fff;text-shadow:0 2px 12px #0009;pointer-events:none;place-items:center;font-size:clamp(1.4rem,5vw,2.4rem);font-weight:800;display:grid;position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.pq-roll,.pq-blow{animation:none}}.stage.pq-stage .drawer input{accent-color:var(--pq-gold)}.lobby-seat.me{border-color:var(--accent);box-shadow:0 0 0 1px color-mix(in srgb, var(--accent) 35%, transparent)}.lobby-token.plain{border:2px solid var(--line);box-shadow:none;background:0 0}.lobby-seats h2 .muted{font-weight:500}.color-picker{border-radius:var(--radius-sm);background:var(--surface-2);border:1px solid var(--line);gap:.5rem;margin:.25rem 0 .9rem;padding:.8rem;display:grid}.color-picker-label{font-weight:700}.color-picker-options{flex-wrap:wrap;gap:.55rem;display:flex}.color-option{cursor:pointer;background:0 0;border:2px solid #0000;border-radius:50%;place-items:center;width:2.75rem;height:2.75rem;padding:0;transition:transform .12s;display:grid;position:relative}.color-option:hover:not(:disabled){transform:scale(1.08)}.color-dot{background:radial-gradient(circle at 35% 30%, color-mix(in srgb, var(--pq-color) 35%, #fff) 0%, var(--pq-color) 50%, color-mix(in srgb, var(--pq-color) 60%, #000) 100%);border-radius:50%;width:2.2rem;height:2.2rem;box-shadow:0 2px 5px #00000040}.color-option.mine{border-color:var(--ink)}.color-option.mine:after{content:"✓";color:#fff;text-shadow:0 1px 3px #000000b3;font-weight:800;position:absolute}.color-option.taken{cursor:not-allowed}.color-option.taken .color-dot{opacity:.35;filter:grayscale(.4)}.color-owner{color:var(--ink);font-size:.95rem;font-weight:800;position:absolute}.lobby-watchers h2{margin-top:0}.watchers{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.watchers li{background:var(--surface-2);border:1px solid var(--line);border-radius:999px;padding:.25rem .7rem;font-size:.9rem}.pq-board-wrap{position:relative}.pq-feat{z-index:3;text-align:center;color:#2a1606;background:linear-gradient(135deg, #fff1c7, var(--pq-gold,#f2c75c));pointer-events:none;border-radius:14px;max-width:min(90%,30rem);padding:.6rem 1rem;font-weight:800;animation:3.6s ease-out forwards pq-feat;position:absolute;top:12%;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #0006,0 0 0 2px #ffffff8c}.pq-feat.defend{color:#fff;background:linear-gradient(135deg,#2f6fd6,#1b4aa0)}@keyframes pq-feat{0%{opacity:0;transform:translate(-50%)translateY(10px)scale(.85)}10%{opacity:1;transform:translate(-50%)translateY(0)scale(1.04)}18%{transform:translate(-50%)scale(1)}85%{opacity:1}to{opacity:0;transform:translate(-50%)translateY(-8px)}}@media (prefers-reduced-motion:reduce){.pq-feat{animation:none}}.pq-no-play{text-align:center;color:var(--pq-gold,#f2c75c);margin:-.25rem 0 0;font-weight:700;animation:3.2s ease-out forwards pq-no-play}@keyframes pq-no-play{0%,85%{opacity:1}to{opacity:0}}
