:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;--bg: light-dark(#d9e4ef, #0b1118);--fg: light-dark(#1a232e, #e8edf2);--panel: light-dark(#f9fbff, #18212b);--border: light-dark(#9aa9ba, #465667);--accent: light-dark(#2563eb, #3b82f6);--num: light-dark(#1457d9, #7dd3fc);--mod: light-dark(#d97706, #fbbf24);--act: light-dark(#d81b60, #fb7185);--ink: light-dark(#101a73, #07112b);--card-paper: #fff7bd;--card-shadow: light-dark(rgba(16, 26, 115, .42), rgba(0, 0, 0, .72))}*{box-sizing:border-box}:root{--safe-top: env(safe-area-inset-top, 0px);--safe-right: env(safe-area-inset-right, 0px);--safe-bottom: env(safe-area-inset-bottom, 0px);--safe-left: env(safe-area-inset-left, 0px)}body{margin:0;min-height:100vh;background:radial-gradient(circle at 18% 12%,light-dark(rgba(20,87,217,.18),rgba(125,211,252,.08)),transparent 22rem),linear-gradient(145deg,var(--bg),light-dark(#c7d5e4,#111923));color:var(--fg)}button{font:inherit;padding:.6rem 1rem;border-radius:.5rem;border:1px solid var(--border);background:var(--panel);color:inherit;cursor:pointer}button:disabled{opacity:.5;cursor:not-allowed}input{font:inherit;padding:.6rem 1rem;border-radius:.5rem;border:1px solid var(--border);background:var(--panel);color:inherit}.home,.lobby{max-width:26rem;margin:0 auto;padding:calc(3rem + var(--safe-top)) 1.5rem calc(3rem + var(--safe-bottom));text-align:center}.home h1,.lobby h1{font-size:3rem;margin:0 0 .25rem}.home .tagline{opacity:.75;margin-bottom:2rem}.home form{display:grid;gap:.75rem}.home .join-row{display:grid;grid-template-columns:1fr auto;gap:.75rem}.home button,.lobby .start{font-weight:600;background:var(--accent);border-color:transparent;color:#fff}.home .resume{width:100%;margin-bottom:1.25rem;background:light-dark(#059669,#10b981)}.lobby-code{font-size:3rem;font-weight:800;letter-spacing:.35em;padding:.5rem 0 .5rem .35em;margin:.5rem 0;background:var(--panel);border:2px dashed var(--border);border-radius:.75rem}.lobby-code.small{font-size:.9rem;font-weight:700;letter-spacing:.2em;padding:.2rem .4rem .2rem .6rem;margin:0;border-width:1px}.copy-link{margin-bottom:1rem}.invite-qr{display:grid;justify-items:center;gap:.45rem;width:fit-content;margin:0 auto 1.1rem;padding:.75rem;background:#fffbea;border:3px solid var(--ink);border-radius:.75rem;box-shadow:0 .24rem 0 light-dark(rgba(16,26,115,.4),rgba(0,0,0,.62)),0 .5rem 1rem light-dark(rgba(16,26,115,.2),rgba(0,0,0,.38));color:var(--ink)}.invite-qr img,.qr-loading{width:9.5rem;aspect-ratio:1;display:block;border-radius:.25rem}.qr-loading{background:linear-gradient(90deg,#101a731f,#101a733d,#101a731f);animation:pulse 1s infinite}.invite-qr span{font-size:.82rem;font-weight:900;text-transform:uppercase}.roster{list-style:none;padding:0;margin:1rem 0;display:grid;gap:.4rem;text-align:left}.roster li{display:flex;align-items:center;gap:.5rem;padding:.5rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:.5rem}.lobby .start{width:100%;margin:.5rem 0}.lobby .leave,.waiting{opacity:.7}.dot{width:.6rem;height:.6rem;border-radius:50%;display:inline-block;flex:none}.dot.on{background:#22c55e}.dot.off{background:#9ca3af}.chip{font-size:.7rem;font-weight:700;text-transform:uppercase;padding:.1rem .45rem;border-radius:999px;background:var(--border)}.chip.you{background:var(--accent);color:#fff}.chip.bot{background:light-dark(#7c3aed,#8b5cf6);color:#fff}.roster .remove-bot{margin-left:auto;padding:0 .45rem;font-size:.8rem;line-height:1.4;border-radius:999px}.add-bots{display:flex;gap:.5rem;justify-content:center;margin-bottom:.5rem}.add-bots button{font-size:.85rem}.timer-toggle{display:flex;align-items:center;justify-content:center;gap:.5rem;margin-bottom:.75rem;font-size:.9rem;cursor:pointer;-webkit-user-select:none;user-select:none}.timer-toggle.readonly{cursor:default;opacity:.75}.timer-toggle input{accent-color:var(--accent);width:1.1rem;height:1.1rem;padding:0}.chip.chase7{background:#f59e0b;color:#1a1a1a}.chip.dealer{background:transparent;border:1px solid light-dark(#94a3b8,#64748b);color:light-dark(#475569,#cbd5e1)}.chip.status-busted{background:var(--act);color:#fff}.chip.status-frozen{background:#38bdf8;color:#082f49}.chip.status-stayed{background:#22c55e;color:#052e16}.game-board{display:grid;grid-template-areas:"head head" "players log" "controls log";grid-template-columns:1fr 20rem;grid-template-rows:auto 1fr auto;gap:.75rem;height:100vh;padding:calc(.75rem + var(--safe-top)) calc(.75rem + var(--safe-right)) calc(.75rem + var(--safe-bottom)) calc(.75rem + var(--safe-left))}.game-head{grid-area:head;display:flex;align-items:center;gap:1rem;padding:.5rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:.6rem;font-size:.9rem;flex-wrap:wrap}.game-head .brand{font-weight:800}.game-head .spacer{flex:1}.game-head .icon{padding:.25rem .5rem}.players{grid-area:players;overflow-y:auto;display:grid;gap:.6rem;align-content:start}.player{padding:.6rem .75rem;background:light-dark(#ffffff,#202c38);border:2px solid var(--border);border-radius:.75rem;box-shadow:0 .25rem .7rem light-dark(rgba(35,54,84,.12),rgba(0,0,0,.32));transition:border-color .2s}.player.active-turn{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent)}.player.is-busted{opacity:.75}.player-head{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem;flex-wrap:wrap}.player-head .total{margin-left:auto;font-weight:700}.hand{display:grid;gap:.45rem}.card-row{display:flex;gap:.5rem;flex-wrap:wrap;min-height:5.65rem}.card{--card-main: #1457d9;position:relative;width:4.05rem;height:5.45rem;display:grid;place-items:center;border-radius:.55rem;background:#fcfdfe;border:1px solid light-dark(#b6c2cf,#0a0f14);box-shadow:0 1px 2px light-dark(rgba(23,37,60,.18),rgba(0,0,0,.5)),0 4px 10px light-dark(rgba(23,37,60,.12),rgba(0,0,0,.35));color:var(--card-main);line-height:1;-webkit-user-select:none;user-select:none;animation:flip-in .35s ease-out}.card:before{content:"";position:absolute;top:.3rem;right:.3rem;bottom:.3rem;left:.3rem;border-radius:.32rem;border:1.5px solid color-mix(in srgb,var(--card-main) 40%,transparent);pointer-events:none}@keyframes flip-in{0%{transform:rotateY(90deg) scale(.8);opacity:0}to{transform:rotateY(0) scale(1);opacity:1}}.pending-action{display:contents}.pending-action .card{animation:flip-in .35s ease-out,pending-throb 1.2s ease-in-out .35s infinite}@keyframes pending-throb{0%,to{transform:scale(1);box-shadow:0 1px 2px light-dark(rgba(23,37,60,.18),rgba(0,0,0,.5)),0 4px 10px light-dark(rgba(23,37,60,.12),rgba(0,0,0,.35))}50%{transform:scale(1.06);box-shadow:0 2px 6px light-dark(rgba(23,37,60,.25),rgba(0,0,0,.6)),0 6px 16px light-dark(rgba(23,37,60,.2),rgba(0,0,0,.45))}}.card.mod{--card-main: #d97706}.card.act{--card-main: #d81b60}.card[data-kind=Freeze]{--card-main: #0284c7}.card[data-kind=ExtraLife]{--card-main: #059669}.card-center{max-width:3.4rem;font-size:2.7rem;font-weight:800;letter-spacing:-.02em;text-align:center}.card.num[data-value="10"] .card-center,.card.num[data-value="11"] .card-center,.card.num[data-value="12"] .card-center{font-size:2.2rem}.card.mod .card-center{font-size:1.7rem}.card.act .card-center{font-size:.64rem;font-weight:800;line-height:1.2;text-transform:uppercase;letter-spacing:.06em}.card-corner{position:absolute;top:.34rem;left:.4rem;max-width:1.4rem;font-size:.55rem;font-weight:800;line-height:1;text-align:left}.card.act .card-corner{display:none}.card-corner.top{top:.34rem}.card-corner.bottom{top:auto;left:auto;right:.4rem;bottom:.34rem;transform:rotate(180deg)}.card.empty{background:transparent;border:2px dashed var(--border);box-shadow:none;animation:none}.card.empty:before{content:none}.hand.busted .card-row{animation:bust-shake .5s}.hand.busted .card{filter:grayscale(.85);opacity:.85}@keyframes bust-shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-5px)}40%,80%{transform:translate(5px)}}.controls{grid-area:controls;display:flex;align-items:center;gap:.75rem;padding:.6rem .75rem;background:var(--panel);border:1px solid var(--border);border-radius:.75rem;min-height:3.6rem}.controls .hit,.controls .stay{font-size:1.1rem;font-weight:800;padding:.6rem 2rem;color:#fff;border:none}.controls .hit{background:var(--act)}.controls .stay{background:light-dark(#059669,#10b981)}.countdown{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700;opacity:.8}.countdown.urgent{color:var(--act);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.4}}.log-panel{grid-area:log;display:grid;grid-template-rows:1fr auto;gap:.5rem;background:var(--panel);border:1px solid var(--border);border-radius:.75rem;padding:.6rem;min-height:0}.log{overflow-y:auto;font-size:.82rem;display:flex;flex-direction:column;gap:.15rem}.log-line.marker{font-weight:700;margin:.25rem 0}.log-line.chat-line{color:var(--accent)}.log-panel input{width:100%}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:10}.target-modal{background:var(--panel);border:1px solid var(--border);border-radius:1rem;padding:1.5rem;max-width:22rem;text-align:center}.target-modal .targets{display:grid;gap:.5rem}.target-modal .targets button{font-weight:700}.round-summary .rs-reason{margin:.25rem 0 0;font-weight:600;opacity:.85}.round-summary table{width:100%;margin:.75rem 0 1rem;border-collapse:collapse}.round-summary td{padding:.35rem .5rem;border-bottom:1px solid var(--border)}.round-summary .rs-name{text-align:left;font-weight:600}.round-summary .rs-gain{text-align:right;font-weight:800;color:light-dark(#059669,#34d399)}.round-summary .rs-gain.zero{color:var(--act)}.round-summary .rs-total{text-align:right;opacity:.75;font-variant-numeric:tabular-nums}.round-summary .rs-next{margin:0;text-align:center;font-size:.85rem;opacity:.7;font-variant-numeric:tabular-nums}button.link{background:none;border:none;color:var(--accent);text-decoration:underline;padding:.25rem}.home .how-to-play{margin-top:1.25rem;background:none;color:var(--accent);font-weight:500}.rules-modal{background:var(--panel);border:1px solid var(--border);border-radius:1rem;width:min(34rem,calc(100vw - 2rem));max-height:min(80vh,44rem);display:grid;grid-template-rows:auto 1fr;text-align:left}.rules-modal header{display:flex;align-items:center;justify-content:space-between;padding:.9rem 1.25rem 0}.rules-modal h2{margin:0}.rules-modal .icon{padding:.25rem .6rem}.rules-body{overflow-y:auto;padding:.25rem 1.25rem 1.25rem;font-size:.92rem;line-height:1.5}.rules-body h3{margin:1rem 0 .25rem}.rules-body p,.rules-body ul,.rules-body ol{margin:.35rem 0}.rules-body li{margin:.2rem 0}.toast{position:fixed;bottom:calc(1rem + var(--safe-bottom));left:50%;transform:translate(-50%);padding:.6rem 1.2rem;border-radius:.6rem;color:#fff;z-index:20;animation:flip-in .2s}.toast.error{background:var(--act)}.toast.reconnect{background:#b45309}.toast.paused{background:light-dark(#334155,#1e293b);border:1px solid var(--border)}.game-head .pause.voted{background:light-dark(#dbeafe,#1e3a8a);border-color:var(--accent)}.spectating,.controls .waiting{opacity:.7;margin:0}@media(max-width:720px){.game-board{grid-template-areas:"head" "players" "controls" "log";grid-template-columns:1fr;grid-template-rows:auto 1fr auto 11rem;height:100dvh;padding:calc(.5rem + var(--safe-top)) calc(.5rem + var(--safe-right)) calc(.5rem + var(--safe-bottom)) calc(.5rem + var(--safe-left))}.game-head{gap:.5rem;font-size:.8rem}}
