:root{color-scheme:light dark;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;-webkit-text-size-adjust:100%;text-size-adjust:100%;--card-unit: 1rem;--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))}.ruleset-select{display:grid;gap:.35rem;margin:.75rem auto;max-width:24rem;font-weight:700}.ruleset-select select{padding:.65rem .8rem;border-radius:.55rem;font:inherit}.onboarding-modal{--card-unit: 1.35rem;display:flex;flex-direction:column;align-items:center;max-width:26rem;text-align:center}.onboarding-modal>p{margin:.35rem 0}.onboarding-modal .card{flex:0 0 auto;margin:.4rem 0}.onboarding-step,.onboarding-countdown{color:var(--muted);font-weight:700}*{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}.log-toggle,.log-close{display:none}.log-toggle{position:relative}.unread-badge{position:absolute;top:-.3rem;right:-.3rem;min-width:1.05rem;height:1.05rem;padding:0 .25rem;border-radius:999px;background:var(--act);color:#fff;font-size:.62rem;font-weight:800;line-height:1.05rem;text-align:center}.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.your-turn{border-color:var(--accent);animation:turn-glow 1.4s ease-in-out infinite}.turn-chip{padding:0 .4rem;border-radius:999px;background:var(--accent);color:#fff;font-size:.68rem;font-weight:800;line-height:1.25rem;text-transform:uppercase}.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:calc(var(--card-unit) * 5.65)}.card{--card-main: #1457d9;position:relative;font-size:var(--card-unit);width:4.05em;height:5.45em;display:grid;place-items:center;border-radius:.55em;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;overflow:hidden}.card:before{content:"";position:absolute;top:.16em;right:.16em;bottom:.16em;left:.16em;border-radius:.42em;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}}.card.removing{animation:card-remove .6s ease-in forwards;pointer-events:none;z-index:1}@keyframes card-remove{to{opacity:0;transform:scale(.55) translateY(-.6em) rotate(10deg);filter:saturate(.3) brightness(1.3)}}@media(prefers-reduced-motion:reduce){.card.removing{animation-duration:.15s}}.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{width:82%;max-width:82%;font-size:2.7em;font-weight:800;letter-spacing:-.02em;text-align:center;overflow-wrap:normal;word-break:normal}.card.num[data-value="10"] .card-center,.card.num[data-value="11"] .card-center,.card.num[data-value="12"] .card-center,.card.num[data-value="13"] .card-center{font-size:2.2em}.special-name{position:absolute;left:8%;right:8%;bottom:.72em;max-width:100%;font-size:.42em;font-weight:800;line-height:1;letter-spacing:.035em;text-align:center;text-transform:uppercase;white-space:nowrap}.card[data-kind=FortunateThirteen] .special-name{font-size:.36em}.card[data-kind=AnchorZero]{--card-main: #2563eb;background:#dbeafe}.card[data-kind=RuinSeven]{--card-main: #6d28d9;background:#ede9fe}.card[data-kind=FortunateThirteen]{--card-main: #b45309;background:#fef3c7}.card.mod .card-center{font-size:1.7em}.card.act .card-center{font-size:.64em;font-weight:800;line-height:1.2;text-transform:uppercase;letter-spacing:.06em}.card-corner{position:absolute;top:calc(var(--card-unit) * .34);left:calc(var(--card-unit) * .4);max-width:calc(var(--card-unit) * 1.4);font-size:.55em;font-weight:800;line-height:1;text-align:left}.card.act .card-corner{display:none}.card-corner.top{top:calc(var(--card-unit) * .34)}.card-corner.bottom{top:auto;left:auto;right:calc(var(--card-unit) * .4);bottom:calc(var(--card-unit) * .34);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;position:relative;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.timer-active{--timer-color: var(--accent);border:2px solid transparent;background:linear-gradient(var(--panel),var(--panel)) padding-box,linear-gradient(to right,var(--timer-color) 0 calc(var(--timer-fraction) * 100%),color-mix(in srgb,var(--border) 75%,transparent) calc(var(--timer-fraction) * 100%) 100%) border-box}@property --timer-fraction{syntax: "<number>"; inherits: false; initial-value: 0;}.controls.timer-ready{transition:--timer-fraction 1s linear}.controls.timer-active.urgent{--timer-color: var(--act)}.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)}.controls.cursed{background:linear-gradient(180deg,#b91c1c,#7f1d1d);border-color:#ef4444}.ride-or-die-banner{margin:0 auto;font-size:1.25rem;font-weight:900;letter-spacing:.12em;color:#fff;text-shadow:0 0 12px rgba(0,0,0,.55);animation:ride-or-die-pulse 1.1s ease-in-out infinite}@keyframes ride-or-die-pulse{50%{opacity:.55}}@media(prefers-reduced-motion:reduce){.ride-or-die-banner{animation-duration:.01ms}}.countdown{margin-left:auto;display:flex;align-items:center;font-variant-numeric:tabular-nums;font-weight:700;opacity:.85}.controls.urgent .countdown-num{color:var(--act);animation:pulse 1s infinite}@keyframes pulse{50%{opacity:.4}}@keyframes turn-glow{50%{box-shadow:0 0 0 .3rem color-mix(in srgb,var(--accent) 25%,transparent)}}.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}.flash{z-index:40;animation:flash-in .25s ease-out both;pointer-events:none}.flash-frozen{background:radial-gradient(circle at center,#38bdf859,#021428b8)}.flash-targeted{background:radial-gradient(circle at center,#a78bfa59,#1e0c28b8)}.flash-cursed{background:radial-gradient(circle at center,#ef444466,#280404c7)}.flash-ruined{background:radial-gradient(circle at center,#f973166b,#280c02cc)}.flash-card{text-align:center}.flash-card h2{margin:.25rem 0;font-size:2.25rem;letter-spacing:.04em}.flash-card p{margin:0;opacity:.9}.flash-frozen .flash-card{color:#e0f2fe;text-shadow:0 0 18px rgba(56,189,248,.8)}.flash-targeted .flash-card{color:#f5e9ff;text-shadow:0 0 18px rgba(251,191,36,.8)}.flash-cursed .flash-card{color:#fee2e2;text-shadow:0 0 18px rgba(239,68,68,.9)}.flash-ruined .flash-card{color:#ffedd5;text-shadow:0 0 18px rgba(249,115,22,.9)}.flash-icon{display:block;font-size:5rem;line-height:1}.flash-frozen .flash-icon{animation:freeze-flake-spin 2.2s linear both}.flash-targeted .flash-icon{animation:target-bolt-pop 1.8s ease-out both}.flash-cursed .flash-icon{animation:cursed-skull-throb 1.2s ease-in-out infinite}.flash-ruined .flash-icon{animation:target-bolt-pop 1.8s ease-out both}@keyframes cursed-skull-throb{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes flash-in{0%{opacity:0}to{opacity:1}}@keyframes freeze-flake-spin{0%{transform:scale(.4) rotate(-30deg)}25%{transform:scale(1) rotate(0)}to{transform:scale(1) rotate(20deg)}}@keyframes target-bolt-pop{0%{transform:scale(.3) rotate(-12deg);opacity:.2}30%{transform:scale(1.15) rotate(6deg);opacity:1}45%{transform:scale(.95) rotate(-4deg)}to{transform:scale(1) rotate(0)}}@media(prefers-reduced-motion:reduce){.flash,.flash-icon{animation-duration:.01ms}}.target-modal .targets{display:grid;gap:.5rem}.target-modal .targets button{font-weight:700}.final-scores{width:100%;margin:.75rem 0 1rem;border-collapse:collapse}.final-scores td{padding:.4rem .5rem;border-bottom:1px solid var(--border)}.final-scores .fs-name{text-align:left;font-weight:600}.final-scores .fs-total{text-align:right;font-weight:800;font-variant-numeric:tabular-nums}.final-scores tr.winner{color:light-dark(#059669,#34d399)}.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){:root{--card-unit: clamp(.5rem, calc((100vw - 4.9rem) / 28.35), 1rem)}.game-board{grid-template-areas:"head" "players" "controls";grid-template-columns:1fr;grid-template-rows:auto 1fr auto;height:100dvh;padding:calc(.5rem + var(--safe-top)) calc(.5rem + var(--safe-right)) calc(.5rem + var(--safe-bottom)) calc(.5rem + var(--safe-left))}.log-toggle{display:inline-flex;align-items:center}.log-panel{display:none}.game-board.log-open .log-panel{display:grid;position:fixed;left:var(--safe-left);right:var(--safe-right);bottom:0;z-index:15;height:min(60vh,24rem);border-radius:.9rem .9rem 0 0;padding:1rem .6rem calc(.6rem + var(--safe-bottom));box-shadow:0 -.5rem 1.5rem #00000073;animation:sheet-up .2s ease-out}.game-board.log-open .log-close{display:block;position:absolute;top:.35rem;right:.5rem;z-index:1;padding:.15rem .5rem}@keyframes sheet-up{0%{transform:translateY(100%)}}.players{gap:.5rem}.player{padding:.5rem .6rem}.hand{gap:.35rem}.card-row{gap:.4rem}.game-head{gap:.5rem;font-size:.8rem}}
