:root{--felt: #0f3d2e;--felt-dark: #0b2a20;--felt-light: #17543f;--gold: #e5c76b;--cream: #fbf7ec;--red: #c0392b;--ink: #1d1d1f;--text: #f3efe3;--muted: #a9bfb3;--danger: #e2574c;--ok: #57c785;--radius: 14px;--card-sm-w: clamp(30px, 7.5vw, 44px);--card-lg-w: clamp(54px, 17vw, 84px);font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:var(--text);background:radial-gradient(ellipse at center,var(--felt-light) 0%,var(--felt) 55%,var(--felt-dark) 100%) fixed;-webkit-tap-highlight-color:transparent}*{box-sizing:border-box}body{margin:0;min-height:100dvh;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);-webkit-user-select:none;user-select:none}h1,h2{margin:0 0 .6em}h2{font-size:1.15rem}.logo{font-family:Georgia,Times New Roman,serif;font-size:clamp(2.6rem,10vw,4rem);color:var(--gold);letter-spacing:.04em;text-shadow:0 3px 0 rgba(0,0,0,.35);margin:0}.logo.small{font-size:1.6rem}.muted{color:var(--muted);font-size:.92em}.center{text-align:center;margin:1rem auto}.spacer{flex:1}.error{color:var(--danger);margin:0}.up{color:var(--ok)}.down{color:var(--danger)}button{font:inherit;font-weight:600;border:none;border-radius:999px;padding:.7em 1.4em;background:var(--gold);color:var(--ink);cursor:pointer;transition:transform .08s,filter .15s}button:hover:not(:disabled){filter:brightness(1.08)}button:active:not(:disabled){transform:scale(.97)}button:disabled{opacity:.5;cursor:not-allowed}button.secondary{background:var(--cream)}button.ghost{background:#ffffff14;color:var(--text);border:1px solid rgba(255,255,255,.18)}button.small{padding:.4em .9em;font-size:.85rem}button.big{font-size:1.2rem;padding:.9em 2.2em}button.link{background:none;color:var(--gold);padding:.3em;font-weight:500}input,select{font:inherit;width:100%;padding:.65em .9em;border-radius:10px;border:1px solid rgba(255,255,255,.2);background:#00000040;color:var(--text);-webkit-user-select:text;user-select:text}select option{color:var(--ink)}label{display:flex;flex-direction:column;gap:.35em;margin-bottom:.9em;font-size:.92rem;color:var(--muted)}.panel{background:#00000040;border:1px solid rgba(255,255,255,.08);border-radius:var(--radius);padding:1.2rem;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.row{display:flex;gap:.5rem;margin-top:.8rem}.badge{font-size:.75rem;padding:.2em .6em;border-radius:999px;background:#e5c76b33;color:var(--gold)}.tag{display:inline-block;font-size:.7rem;padding:.1em .5em;border-radius:6px;background:#ffffff1f;margin-left:.3em}.tag.danger{background:#e2574c4d}.tag.gollum{background:var(--gold);color:var(--ink);font-weight:700}.spinner{width:36px;height:36px;margin:1rem auto;border-radius:50%;border:4px solid rgba(255,255,255,.15);border-top-color:var(--gold);animation:spin .9s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.toast{position:fixed;left:50%;bottom:calc(1.5rem + env(safe-area-inset-bottom));transform:translate(-50%);background:var(--cream);color:var(--ink);padding:.7em 1.3em;border-radius:999px;box-shadow:0 6px 20px #00000059;z-index:100;animation:pop .2s ease-out;max-width:90vw;text-align:center}.connection{position:fixed;top:0;left:0;right:0;padding:.4em;background:var(--danger);text-align:center;font-size:.85rem;z-index:100}@keyframes pop{0%{transform:translate(-50%) scale(.85);opacity:0}}.auth{max-width:400px;margin:0 auto;padding:3rem 1rem;text-align:center;position:relative}.auth .lang{position:absolute;top:1rem;right:1rem}.auth form{margin-top:2rem;text-align:left;display:flex;flex-direction:column;gap:.4rem}.home,.lobby{max-width:900px;margin:0 auto;padding:.8rem}.topbar{display:flex;align-items:center;gap:.6rem;margin-bottom:.8rem}.me-chip{font-size:.85rem;color:var(--muted)}.tabs{display:flex;gap:.3rem;margin-bottom:1rem;overflow-x:auto}.tabs button{background:transparent;color:var(--muted);border-radius:10px;padding:.5em 1em}.tabs button.active{background:#e5c76b2e;color:var(--gold)}.cards-grid{display:grid;grid-template-columns:1fr;gap:1rem}.segmented{display:flex;gap:.3rem;margin-bottom:1rem;flex-wrap:wrap}.segmented button{background:#ffffff14;color:var(--text);border-radius:10px;min-width:2.6em;padding:.5em}.segmented button.active{background:var(--gold);color:var(--ink)}.queue{text-align:center}.code-input{text-transform:uppercase;letter-spacing:.2em}.stats{display:flex;justify-content:space-around;margin-bottom:1rem;text-align:center}.stats strong{display:block;font-size:1.8rem;color:var(--gold)}.history{list-style:none;padding:0;margin:0}.history li{padding:.7rem 0;border-bottom:1px solid rgba(255,255,255,.08)}.history-head{display:flex;gap:.6rem;align-items:center;flex-wrap:wrap;margin-bottom:.2rem}.place{font-weight:800}.place-1{color:var(--gold)}.rules p{line-height:1.5}.code-panel{display:flex;align-items:center;gap:1rem;justify-content:center;margin-bottom:1rem;flex-wrap:wrap}.lobby-code{font-family:ui-monospace,monospace;font-size:2rem;letter-spacing:.25em;color:var(--gold);-webkit-user-select:text;user-select:text}.player-list{list-style:none;padding:0;margin:0}.player-list li{display:flex;justify-content:space-between;align-items:center;padding:.5rem 0;border-bottom:1px solid rgba(255,255,255,.08)}table.results{width:100%;border-collapse:collapse;font-size:.92rem}.results th,.results td{padding:.45rem .4rem;text-align:left;border-bottom:1px solid rgba(255,255,255,.08);vertical-align:middle}.results th{color:var(--muted);font-weight:500}.me-row{background:#e5c76b1a}.result-cards{display:flex;gap:3px;flex-wrap:wrap}.card{position:relative;flex:none;aspect-ratio:5 / 7;border-radius:8px;padding:0;border:none;box-shadow:0 2px 6px #00000059;transition:transform .15s,box-shadow .15s;font-family:Georgia,Times New Roman,serif;cursor:default;perspective:700px;-webkit-tap-highlight-color:transparent}.card-sm{width:var(--card-sm-w);border-radius:5px}.card-md{width:calc((var(--card-sm-w) + var(--card-lg-w)) / 2)}.card-lg{width:var(--card-lg-w)}.card-inner{position:absolute;top:0;right:0;bottom:0;left:0;transform-style:preserve-3d;border-radius:inherit}.card.animated .card-inner{transition:transform .6s cubic-bezier(.3,.7,.3,1) var(--flip-delay, 0ms)}.card.face-up .card-inner{transform:rotateY(180deg)}.card-side{position:absolute;top:0;right:0;bottom:0;left:0;border-radius:inherit;backface-visibility:hidden;-webkit-backface-visibility:hidden}.card-front{transform:rotateY(180deg);background:var(--cream);color:var(--ink)}.card-back{background:repeating-linear-gradient(45deg,transparent 0 6px,rgba(255,255,255,.07) 6px 12px),linear-gradient(135deg,#8a2433,#5e1420);border:3px solid var(--cream)}.card-sm .card-back{border-width:2px}.card.empty{background:transparent;border:2px dashed rgba(255,255,255,.2);box-shadow:none}.card .back-pattern{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:#f3e7c480;font-weight:700;font-size:calc(var(--card-lg-w) * .4)}.card-sm .back-pattern{font-size:calc(var(--card-sm-w) * .4)}.card .corner{position:absolute;top:6%;left:9%;font-size:calc(var(--card-lg-w) * .22);line-height:.95;font-weight:700;text-align:center}.card-sm .corner{font-size:calc(var(--card-sm-w) * .3)}.card .pip{position:absolute;right:10%;bottom:6%;font-size:calc(var(--card-lg-w) * .42)}.card-sm .pip{font-size:calc(var(--card-sm-w) * .42)}.card.clickable{cursor:pointer}.card.clickable:hover{transform:translateY(-4px);box-shadow:0 8px 16px #0006}.card.selected{outline:3px solid var(--gold);outline-offset:2px;transform:translateY(-6px)}.card.glow{box-shadow:0 0 0 3px var(--gold),0 0 18px var(--gold)}.card.lift{transform:translateY(-6px) rotate(3deg)}.card.drawn-mini{transform:rotate(10deg);margin-left:6px;opacity:.85}.card.snap-pulse{animation:snapPulse .6s ease-in-out infinite alternate}@keyframes snapPulse{to{box-shadow:0 0 0 3px #fff,0 0 24px var(--gold)}}.hl-peek{box-shadow:0 0 0 3px #6ab7ff,0 0 14px #6ab7ff}.hl-queen{box-shadow:0 0 0 3px #c58bff,0 0 16px #c58bff}.hl-jack,.hl-replace{box-shadow:0 0 0 3px var(--gold),0 0 14px var(--gold);animation:wiggle .4s ease-in-out 2}.hl-penalty,.hl-wrongSnap{box-shadow:0 0 0 3px var(--danger),0 0 14px var(--danger);animation:wiggle .3s ease-in-out 3}@keyframes wiggle{50%{transform:rotate(-6deg) scale(1.05)}}.game{display:flex;flex-direction:column;min-height:100dvh;max-width:1100px;margin:0 auto;padding:.5rem;gap:.5rem}.game-top{display:flex;align-items:center;gap:.6rem}.gollum-banner{text-align:center;background:var(--gold);color:var(--ink);font-weight:800;border-radius:10px;padding:.4em;animation:pop2 .3s ease-out}@keyframes pop2{0%{transform:scale(.8)}}.opponents{--card-sm-w: min(var(--opp-w, 44px), 9vw);display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}.player{background:#00000038;border:2px solid transparent;border-radius:var(--radius);padding:.5rem .6rem;transition:border-color .2s}.player.small{min-width:140px}.player.current{border-color:var(--gold);box-shadow:0 0 16px #e5c76b59}.player.power{border-color:#c58bff}.player-head{display:flex;justify-content:space-between;gap:.6rem;font-size:.88rem}.player-name{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:14ch}.player-score{color:var(--gold);white-space:nowrap}.tags{min-height:.2rem}.slots{display:flex;gap:5px;flex-wrap:wrap;justify-content:center;margin-top:.35rem}.me .player .slots{gap:clamp(6px,2vw,14px)}.table-center{flex:1;display:flex;justify-content:center;align-items:center;gap:clamp(1rem,5vw,3rem);padding:.5rem 0}.pile{position:relative;display:flex;flex-direction:column;align-items:center;gap:.4rem}.pile-label{font-size:.78rem;color:var(--muted)}.snap-bar{position:absolute;bottom:-8px;left:0;right:0;height:4px;border-radius:2px;background:var(--gold);transform-origin:left;transition:transform .2s linear}.hint{display:flex;justify-content:center;align-items:center;gap:.8rem;text-align:center;min-height:2.6em;font-weight:600}.hint.urgent .timer{color:var(--danger);animation:snapPulse .5s infinite alternate}.timer{font-variant-numeric:tabular-nums;color:var(--gold)}.turn-bar{height:4px;background:#ffffff1a;border-radius:2px;overflow:hidden}.turn-bar>div{height:100%;background:var(--gold);transform-origin:left;transition:transform .2s linear}.me{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding-bottom:.6rem}.me .player{width:100%;max-width:560px}.me-actions{display:flex;gap:.6rem;align-items:center;min-height:3rem}.gollum-btn{font-size:1.15rem;font-weight:900;letter-spacing:.08em;padding:.7em 2em;background:linear-gradient(180deg,#ffd86b,#e0a92e);box-shadow:0 4px #9a6f12}.log-panel{position:fixed;right:.5rem;top:3rem;width:min(340px,92vw);max-height:60vh;overflow-y:auto;background:#0a1e16f5;border:1px solid rgba(255,255,255,.12);border-radius:var(--radius);padding:.6rem .9rem;z-index:40;font-size:.85rem}.log-panel ul{list-style:none;margin:0;padding:0}.log-panel li{padding:.25rem 0;border-bottom:1px solid rgba(255,255,255,.06)}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0000008c;display:grid;place-items:center;z-index:50;padding:.8rem}.modal{background:var(--felt);border:1px solid rgba(229,199,107,.4);border-radius:var(--radius);padding:1.2rem;width:min(640px,100%);max-height:90dvh;overflow-y:auto;animation:pop2 .2s ease-out}.modal-actions{display:flex;justify-content:space-between;align-items:center;margin-top:1rem;gap:1rem}.winner{font-size:1.2rem;font-weight:700;color:var(--gold);text-align:center}.caller-note{text-align:center;font-weight:600;color:var(--gold)}@media (max-width: 520px){.player.small{min-width:0;flex:1 1 calc(50% - .5rem);padding:.4rem}.player-name{max-width:9ch}.hint{font-size:.9rem}}.me .player-name{max-width:none}.flight-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:45}.flight{position:fixed;transform-origin:0 0;will-change:transform;filter:drop-shadow(0 10px 14px rgba(0,0,0,.45))}.flight>.card{width:100%;height:100%}.flight .card-inner{transition:none!important}.gollum-fx{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;pointer-events:none;display:grid;place-content:center;text-align:center;background:radial-gradient(circle,#0000008c,#0000 70%);animation:gollumFade 3.2s ease-out forwards}.gollum-fx span{font-family:Georgia,Times New Roman,serif;font-weight:900;font-size:clamp(3rem,16vw,9rem);letter-spacing:.06em;color:var(--gold);text-shadow:0 0 30px rgba(229,199,107,.8),0 6px 0 #6b4c0c;animation:gollumSlam .5s cubic-bezier(.2,1.6,.4,1) both}.gollum-fx small{font-size:1.2rem;color:var(--text);margin-top:.5rem}@keyframes gollumSlam{0%{transform:scale(3) rotate(-8deg);opacity:0}60%{opacity:1}to{transform:scale(1) rotate(-3deg)}}@keyframes gollumFade{0%,75%{opacity:1}to{opacity:0}}.game:has(>.gollum-fx.call-demon)>:not(.gollum-fx){animation:shake .7s}@keyframes shake{10%{transform:translate(-9px,4px)}20%{transform:translate(8px,-5px)}32%{transform:translate(-6px,3px)}45%{transform:translate(5px,-2px)}60%{transform:translate(-3px,1px)}78%{transform:translate(2px)}}@media (prefers-reduced-motion: reduce){.card .card-inner{transition:none!important}.gollum-fx span,.hl-jack,.hl-replace,.hl-penalty,.hl-wrongSnap{animation:none!important}}.tutorial-invite{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:1rem;border-color:#e5c76b73}.tutorial-invite h2{margin-bottom:.2em}.tutorial-bubble{position:relative;z-index:70;align-self:center;width:min(620px,100%);display:flex;gap:.7rem;background:var(--cream);color:var(--ink);border-radius:var(--radius);padding:.9rem 1rem;box-shadow:0 12px 30px #00000073;animation:pop2 .25s ease-out}.tutorial-bubble p{margin:0 0 .7rem;line-height:1.45;font-size:.95rem}.tutorial-avatar{font-size:1.8rem;line-height:1}.tutorial-actions{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}.tutorial-bubble button.ghost{color:var(--ink);border-color:#0003;background:transparent}[data-tut]{outline:3px solid #6ab7ff!important;outline-offset:3px;animation:tutPulse 1s ease-in-out infinite alternate!important}@keyframes tutPulse{to{outline-offset:7px;outline-color:#b9dcff}}.tutorial-bubble.floating{position:fixed;left:50%;transform:translate(-50%);bottom:calc(1rem + env(safe-area-inset-bottom));width:min(620px,calc(100vw - 2rem))}@media (max-width: 720px){.tutorial-bubble,.tutorial-bubble.floating{position:fixed;left:.5rem;right:.5rem;bottom:calc(.5rem + env(safe-area-inset-bottom));width:auto;transform:none}.game:has(.tutorial-bubble){padding-bottom:220px}}.info{color:var(--ok);margin:0}.verify-banner{display:flex;align-items:center;justify-content:space-between;gap:.8rem;padding:.6rem .9rem;margin-bottom:.8rem;border-radius:10px;background:#e5c76b26;border:1px solid rgba(229,199,107,.4);font-size:.9rem}.account-email{margin:0 0 .6rem}.mini-card{display:inline-flex;align-items:center;justify-content:center;gap:.05em;min-width:1.75em;height:1.45em;padding:0 .25em;margin:0 .12em;vertical-align:-.28em;border-radius:.28em;background:linear-gradient(180deg,#fffaf0,#efe2c2);border:1px solid rgba(120,90,40,.55);box-shadow:0 1px 2px #00000059;color:#1d1b26;font-family:Georgia,Times New Roman,serif;font-weight:700;font-size:.86em;line-height:1;white-space:nowrap}.mini-card.red{color:var(--red)}.arena{position:relative;display:flex;flex-direction:column;gap:.5rem;flex:1}.status{position:relative;display:flex;align-items:center;justify-content:center;gap:.8rem;min-height:3.4em;padding-bottom:8px}.status .hint{display:flex;align-items:center;justify-content:center;min-height:2.8em;text-align:center;font-weight:600}.status .turn-bar{position:absolute;left:8%;right:8%;bottom:0}.timer.urgent{color:var(--danger)}.pile.drawn.idle{visibility:hidden}.table-center{position:relative}.table-center .gollum-banner{position:absolute;top:-16px;left:50%;transform:translate(-50%);z-index:2;white-space:nowrap;padding:.3em 1.3em;border-radius:999px}.player{position:relative}.action-chip{position:absolute;left:50%;top:0;z-index:6;transform:translate(-50%,-60%);white-space:nowrap;padding:.28em .8em;border-radius:999px;font-size:.8rem;font-weight:700;background:#fff;color:#151515;box-shadow:0 4px 14px #0006;pointer-events:none;animation:chipIn .28s cubic-bezier(.2,1.4,.4,1)}@keyframes chipIn{0%{transform:translate(-50%,-20%) scale(.6);opacity:0}}.card:is(.hl-peek,.hl-queen,.hl-jack,.hl-replace,.hl-penalty,.hl-wrongSnap):after{position:absolute;left:50%;bottom:-10px;z-index:3;transform:translate(-50%);width:22px;height:22px;border-radius:50%;display:grid;place-items:center;font:700 12px/1 system-ui,sans-serif;background:#fff;color:#151515;box-shadow:0 2px 8px #00000073;animation:chipIn .28s cubic-bezier(.2,1.4,.4,1)}.card.hl-peek:after,.card.hl-queen:after{content:"👁"}.card.hl-jack:after{content:"⇄"}.card.hl-replace:after{content:"↻"}.card.hl-penalty:after{content:"+1";background:var(--danger);color:#fff}.card.hl-wrongSnap:after{content:"✗";background:var(--danger);color:#fff}.swap-preview{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;z-index:44;pointer-events:none}.swap-preview line{stroke:#8fe9ff;stroke-width:3;stroke-linecap:round;stroke-dasharray:10 8;animation:dashMove .5s linear infinite;filter:drop-shadow(0 0 6px #59b8ff)}.swap-preview circle{fill:none;stroke:#8fe9ff;stroke-width:2;stroke-dasharray:4 5}@keyframes dashMove{to{stroke-dashoffset:-18}}@media (min-width: 900px) and (min-height: 620px){.game{height:100dvh;overflow:hidden}.arena{display:block;min-height:0}.arena .opponents{position:absolute;top:0;right:0;bottom:0;left:0;display:block}.arena .player.small{position:absolute;left:var(--sx);top:var(--sy);transform:translate(-50%,-50%);min-width:0;width:max-content}.arena .player.small .slots{flex-wrap:nowrap}.arena .table-center{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(44%,540px);height:min(44%,270px);margin:0}.arena .status{position:absolute;left:50%;bottom:0;transform:translate(-50%);width:min(640px,70%)}.arena .tutorial-bubble:not(.floating){position:absolute;left:50%;bottom:0;transform:translate(-50%);width:min(640px,72%)}.me{flex-direction:row;justify-content:center;align-items:center;gap:1rem}.me .player{width:auto;max-width:none}.me-actions{flex-direction:column-reverse;min-height:0}}.fx-bolt{position:fixed;top:0;right:0;bottom:0;left:0;width:100vw;height:100vh;pointer-events:none;overflow:visible}.fx-bolt path{fill:none;stroke-linecap:round;stroke-linejoin:round}.fx-bolt .glow{stroke:var(--bolt);stroke-width:12;opacity:.35;filter:blur(6px)}.fx-bolt .core{stroke:#fff;stroke-width:3;filter:drop-shadow(0 0 4px var(--bolt)) drop-shadow(0 0 10px var(--bolt))}.fx-bolt .branch{stroke:var(--bolt);stroke-width:1.5;opacity:.8}.theme-switch{width:auto;padding:.35em .6em;font-size:.8rem;border-radius:999px}@media (max-width: 520px){.game-top .theme-switch{max-width:2.6rem;padding:.35em .3em}}.turn-order li{white-space:nowrap}@media (min-width: 900px) and (min-height: 620px){.game{position:relative}.turn-order{position:absolute;left:.6rem;bottom:calc(.8rem + env(safe-area-inset-bottom));z-index:5;flex-direction:column;align-items:stretch;gap:.45rem;max-height:calc(100dvh - 5rem)}.turn-order li{justify-content:space-between;min-width:9rem}.turn-order li+li:before{content:"⌄";left:50%;top:-.85rem;transform:translate(-50%)}.turn-order li.current{transform:translate(6px) scale(1.05)}}@media (max-width: 520px){.game-top .theme-switch{display:none}.turn-order li{font-size:.72rem;padding:.25em .6em}}.turn-order{justify-content:flex-start}.turn-order>li:first-child{margin-left:auto}.turn-order>li:last-child{margin-right:auto}@media (min-width: 900px) and (min-height: 620px){.turn-order>li:first-child,.turn-order>li:last-child{margin:0}}.customize h3{margin:1rem 0 .2rem;font-size:1rem}.customize h3+p{margin:0 0 .6rem;font-size:.85rem}.choice-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:.6rem}.choice{position:relative;display:flex;flex-direction:column;align-items:center;gap:.3rem;padding:.7rem .6rem;text-align:center;border-radius:12px;background:#ffffff0d;border:1px solid rgba(255,255,255,.14);color:var(--text);box-shadow:none;font-weight:500}.choice.chosen{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),0 0 18px var(--accent-glow)}.choice small{font-size:.75rem;line-height:1.25}.chosen-tag{font-size:.7rem;font-weight:700;color:var(--accent)}.theme-preview{display:flex;justify-content:center;gap:6px;width:100%;padding:10px 0;border-radius:50%/40%;background:var(--table-bg);box-shadow:var(--table-ring);font-family:var(--font-body)}.theme-preview .card{cursor:default}.call-choice{padding:0;overflow:hidden}.call-pick{display:flex;flex-direction:column;align-items:center;gap:.3rem;width:100%;padding:.7rem .6rem .4rem;background:none;border:0;box-shadow:none;color:inherit;font:inherit}.call-emoji{font-size:2rem;line-height:1}.call-choice .listen{margin:0 0 .6rem}.choice small,.choice .muted{font-family:var(--font-body);text-transform:none;letter-spacing:0}.social-buttons{display:flex;gap:.4rem}button.round{width:2.4rem;height:2.4rem;padding:0;border-radius:50%;font-size:1.15rem;line-height:1}.reaction-wrap,.chat-toggle{position:relative}.reaction-picker{position:absolute;bottom:calc(100% + 8px);left:0;z-index:45;display:grid;grid-template-columns:repeat(5,2.4rem);gap:.2rem;padding:.4rem;border-radius:14px;background:var(--modal-bg);border:var(--panel-border);box-shadow:var(--panel-shadow);animation:pickerIn .15s ease-out}.reaction-picker button{height:2.4rem;padding:0;font-size:1.4rem;background:none;border:0;box-shadow:none;border-radius:10px;transition:transform .1s}.reaction-picker button:hover{transform:scale(1.25)}@keyframes pickerIn{0%{opacity:0;transform:translateY(6px) scale(.95)}}.unread{position:absolute;top:-4px;right:-4px;min-width:1.1rem;height:1.1rem;padding:0 .25rem;border-radius:999px;background:var(--danger);color:#fff;font-size:.65rem;font-weight:800;line-height:1.1rem}.player-name{position:relative}.reaction-pop{display:inline-block;margin-left:.3rem;font-size:1.3em;line-height:1;transform-origin:50% 70%;animation:reactionPop 4s cubic-bezier(.2,1.4,.4,1) both}@keyframes reactionPop{0%{transform:scale(.2);opacity:0}8%{transform:scale(3.2) rotate(-10deg);opacity:1}18%{transform:scale(2.6) rotate(8deg)}30%{transform:scale(1)}85%{transform:scale(1);opacity:1}to{transform:scale(.8);opacity:0}}.chat-bubble{position:absolute;left:50%;top:calc(100% + 6px);z-index:7;max-width:min(240px,80vw);padding:.35em .8em;border-radius:12px;background:var(--bubble-bg);color:var(--bubble-ink);font-size:.8rem;font-weight:600;line-height:1.3;text-align:left;overflow-wrap:anywhere;box-shadow:0 6px 16px #00000059;transform:translate(-50%);animation:bubbleLife 5s ease-out both;pointer-events:none}.me .chat-bubble{top:auto;bottom:calc(100% + 6px)}@keyframes bubbleLife{0%{opacity:0;transform:translate(-50%,6px) scale(.9)}6%,88%{opacity:1;transform:translate(-50%) scale(1)}to{opacity:0}}.chat-panel{position:fixed;right:.5rem;bottom:.5rem;z-index:46;display:flex;flex-direction:column;width:min(320px,calc(100vw - 1rem));max-height:min(50vh,380px);border-radius:var(--panel-radius);background:var(--modal-bg);border:var(--panel-border);box-shadow:var(--panel-shadow)}.chat-head{display:flex;align-items:center;justify-content:space-between;padding:.4rem .4rem .4rem .8rem;border-bottom:1px solid rgba(255,255,255,.08)}.chat-panel ul{flex:1;margin:0;padding:.4rem .8rem;list-style:none;overflow-y:auto;font-size:.85rem}.chat-panel li{padding:.2rem 0;overflow-wrap:anywhere}.chat-panel li b{color:var(--accent)}.chat-panel li.mine b{color:var(--muted)}.chat-panel form{display:flex;gap:.4rem;padding:.5rem;border-top:1px solid rgba(255,255,255,.08)}.chat-panel input{flex:1;min-width:0}button.pile-label.discard-view{padding:.1rem .4rem;background:none;border:0;box-shadow:none;font:inherit;font-size:.78rem;color:var(--muted);cursor:pointer}button.pile-label.discard-view:not(:disabled):hover{color:var(--accent);text-decoration:underline}.discard-modal{max-width:min(560px,94vw)}.discard-grid{display:flex;flex-wrap:wrap;gap:6px;max-height:50vh;overflow-y:auto;padding:4px}.discard-grid .card.top{box-shadow:0 0 0 2px var(--accent),0 0 14px var(--accent-glow)}@media (prefers-reduced-motion: reduce){.reaction-pop,.chat-bubble,.reaction-picker{animation:none!important}}.game-top{min-width:0}.game-top>*{flex-shrink:0}.game-top>.badge{flex-shrink:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.game-top>strong{white-space:nowrap}@media (max-width: 480px){.game-top{gap:.35rem}}.player:has(>.chat-bubble){z-index:20}.card-badge{position:absolute;top:-8px;right:-8px;z-index:4;display:grid;place-items:center;width:20px;height:20px;border-radius:50%;font-size:11px;line-height:1;background:#fff;box-shadow:0 2px 6px #00000073;pointer-events:none;animation:chipIn .28s cubic-bezier(.2,1.4,.4,1)}.card.jack-locked .card-inner{filter:saturate(.6) brightness(.9)}@font-face{font-family:Sora;src:url(./sora-latin-5v9NviDD.woff2) format("woff2");font-weight:100 800;font-display:swap}@font-face{font-family:Cinzel;src:url(./cinzel-latin-BOqWLKHx.woff2) format("woff2");font-weight:400 900;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+2000-206F,U+20AC,U+2122,U+2212}@font-face{font-family:Cinzel;src:url(./cinzel-latin-ext-C_yqxIr0.woff2) format("woff2");font-weight:400 900;font-display:swap;unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1E00-1E9F,U+2C60-2C7F,U+A720-A7FF}:root,[data-theme=arcane]{--font-display: "Sora", system-ui, sans-serif;--font-body: "Sora", system-ui, sans-serif;--display-weight: 800;--display-spacing: .01em;--page-bg: radial-gradient(ellipse at 50% 38%, #2f1f66 0%, #160f33 55%, #07051a 100%) fixed;--text: #eef0ff;--muted: #a9acd6;--accent: #7ce7ff;--accent-2: #a77bff;--accent-ink: #0d0b25;--accent-glow: rgba(124, 231, 255, .55);--snap: #3ddc97;--power: #b48cff;--danger: #ff6b8a;--ok: #6ff0b4;--red: #e5395b;--gold: #7ce7ff;--panel-bg: linear-gradient(180deg, rgba(255, 255, 255, .09), rgba(255, 255, 255, .035));--panel-border: 1px solid rgba(255, 255, 255, .14);--panel-shadow: 0 12px 30px rgba(0, 0, 0, .38);--panel-radius: 16px;--panel-blur: blur(10px);--modal-bg: linear-gradient(180deg, #221a4d, #141032);--table-bg: radial-gradient(ellipse at 50% 38%, rgba(124, 231, 255, .18), transparent 60%), linear-gradient(160deg, #1f2c72, #121640 70%);--table-ring: inset 0 0 0 1px rgba(124, 231, 255, .4), inset 0 0 60px rgba(0, 0, 0, .5), 0 0 70px rgba(110, 80, 255, .35);--card-radius: 10px;--card-shadow: 0 6px 16px rgba(0, 0, 0, .45);--card-back: linear-gradient(135deg, rgba(255, 255, 255, .22), transparent 42%), conic-gradient(from 210deg at 50% 50%, #6a5cff, #b65cff, #3fd0ff, #6a5cff);--card-back-border: 2px solid rgba(255, 255, 255, .55);--card-back-mark: rgba(255, 255, 255, .85);--card-face: linear-gradient(160deg, #ffffff, #e8ebff);--card-face-ring: inset 0 0 0 1px rgba(110, 120, 200, .25);--card-ink: #1b1d3a;--card-font: "Sora", system-ui, sans-serif;--btn-bg: linear-gradient(135deg, #7ce7ff, #a77bff);--btn-ink: #0d0b25;--btn-border: 0;--btn-shadow: 0 8px 22px rgba(124, 120, 255, .45);--btn2-bg: rgba(255, 255, 255, .08);--btn2-ink: #eef0ff;--btn2-border: 1px solid rgba(255, 255, 255, .2);--btn-radius: 12px;--gollum-bg: linear-gradient(135deg, #ff5f9e, #a75cff);--gollum-ink: #fff;--gollum-shadow: 0 10px 30px rgba(255, 95, 158, .5);--chip-bg: #7ce7ff;--chip-ink: #0d0b25;--banner-bg: linear-gradient(90deg, transparent, rgba(20, 16, 60, .92) 18%, rgba(20, 16, 60, .92) 82%, transparent);--banner-ink: #ffffff;--mote: #9fe9ff;--bubble-bg: linear-gradient(180deg, #ffffff, #eef0ff);--bubble-ink: #1b1d3a;--input-bg: rgba(0, 0, 0, .3)}[data-theme=epic]{--font-display: "Cinzel", Georgia, serif;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--display-weight: 800;--display-spacing: .04em;--page-bg: radial-gradient(ellipse at 50% 30%, rgba(80, 120, 190, .22), transparent 60%), radial-gradient(ellipse at 50% 120%, rgba(255, 150, 60, .14), transparent 60%), linear-gradient(180deg, #121926 0%, #0b1019 60%, #06080d 100%) fixed;--text: #f1e9d6;--muted: #b3a88f;--accent: #f0c86b;--accent-2: #6fb6ff;--accent-ink: #1f1406;--accent-glow: rgba(240, 200, 107, .55);--snap: #4fe0a0;--power: #8fb8ff;--danger: #ff6b5a;--ok: #7fe0a6;--red: #b3261e;--gold: #f0c86b;--panel-bg: linear-gradient(180deg, rgba(255, 255, 255, .05), transparent 40%), linear-gradient(180deg, #232c3c, #151b26);--panel-border: 1px solid #a07a32;--panel-shadow: inset 0 1px 0 rgba(255, 230, 170, .18), inset 0 0 0 3px rgba(0, 0, 0, .35), inset 0 0 0 4px rgba(240, 200, 107, .18), 0 12px 30px rgba(0, 0, 0, .55);--panel-radius: 10px;--panel-blur: none;--modal-bg: linear-gradient(180deg, #232c3c, #151b26);--table-bg: radial-gradient(ellipse at 50% 42%, rgba(111, 182, 255, .18), transparent 60%), radial-gradient(ellipse at center, #1c3a4a 0%, #102632 65%, #0a1820 100%);--table-ring: inset 0 0 40px rgba(0, 0, 0, .7), 0 0 0 3px #a07a32, 0 0 0 6px #10151e, 0 0 0 7px rgba(240, 200, 107, .45), 0 18px 40px rgba(0, 0, 0, .6);--card-radius: 8px;--card-shadow: 0 4px 12px rgba(0, 0, 0, .6);--card-back: radial-gradient(circle at 50% 42%, rgba(111, 182, 255, .35), transparent 55%), linear-gradient(160deg, #1d2f5c, #0f1834);--card-back-border: 2px solid #c79a3f;--card-back-mark: #f0c86b;--card-face: radial-gradient(circle at 50% 38%, #fffaf0 0%, #f3e6c4 65%, #e3cd96 100%);--card-face-ring: inset 0 0 0 1px rgba(150, 110, 40, .45), inset 0 0 0 3px #fffaf0, inset 0 0 0 4px rgba(184, 134, 43, .5);--card-ink: #1d1b26;--card-font: "Cinzel", Georgia, serif;--btn-bg: linear-gradient(180deg, #ffeeb0 0%, #f0c86b 45%, #b8862b 100%);--btn-ink: #22160a;--btn-border: 1px solid #6b4a16;--btn-shadow: inset 0 1px 0 #fff8dc, 0 3px 0 #5c3e10, 0 6px 14px rgba(0, 0, 0, .5);--btn2-bg: linear-gradient(180deg, #2a3446, #1a2130);--btn2-ink: #f1e9d6;--btn2-border: 1px solid #a07a32;--btn-radius: 8px;--gollum-bg: radial-gradient(ellipse at 50% 25%, #ff9a7a 0%, #c8372a 45%, #6e120d 100%);--gollum-ink: #fff3d6;--gollum-shadow: 0 0 0 2px #f0c86b, 0 4px 0 #3e0a06, 0 0 26px rgba(255, 110, 60, .55);--chip-bg: #f0c86b;--chip-ink: #22160a;--banner-bg: linear-gradient(90deg, transparent, rgba(16, 22, 34, .94) 18%, rgba(16, 22, 34, .94) 82%, transparent);--banner-ink: #f0c86b;--mote: #ffb066;--bubble-bg: linear-gradient(180deg, #f8eccd, #ead6a4);--bubble-ink: #22160a;--input-bg: rgba(0, 0, 0, .35)}[data-theme=classic]{--font-display: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-body: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--display-weight: 750;--display-spacing: 0;--page-bg: radial-gradient(ellipse at 50% 35%, #1f2a2a 0%, #101616 60%, #0a0d0d 100%) fixed;--text: #f2f5f4;--muted: #9fb0ab;--accent: #e8c16a;--accent-2: #e8c16a;--accent-ink: #151515;--accent-glow: rgba(232, 193, 106, .4);--snap: #3ddc97;--power: #9fb8ff;--danger: #ff6b5a;--ok: #6fe0a6;--red: #c8202f;--gold: #e8c16a;--panel-bg: rgba(255, 255, 255, .05);--panel-border: 1px solid rgba(255, 255, 255, .1);--panel-shadow: 0 10px 30px rgba(0, 0, 0, .3);--panel-radius: 14px;--panel-blur: none;--modal-bg: #141c1c;--table-bg: radial-gradient(ellipse at 50% 40%, #1d6b52 0%, #0f4535 70%, #0b3328 100%);--table-ring: inset 0 2px 30px rgba(0, 0, 0, .45), 0 0 0 1px rgba(232, 193, 106, .5), 0 30px 60px rgba(0, 0, 0, .5);--card-radius: 8px;--card-shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 8px 18px rgba(0, 0, 0, .35);--card-back: repeating-linear-gradient(45deg, rgba(255, 255, 255, .06) 0 4px, transparent 4px 8px), linear-gradient(160deg, #a3252b, #6e1419);--card-back-border: 3px solid #fbfaf7;--card-back-mark: rgba(255, 255, 255, .55);--card-face: #fbfaf7;--card-face-ring: inset 0 0 0 1px rgba(0, 0, 0, .08);--card-ink: #151515;--card-font: Georgia, "Times New Roman", serif;--btn-bg: #e8c16a;--btn-ink: #151515;--btn-border: 0;--btn-shadow: 0 6px 18px rgba(0, 0, 0, .35);--btn2-bg: rgba(255, 255, 255, .07);--btn2-ink: #f2f5f4;--btn2-border: 1px solid rgba(255, 255, 255, .18);--btn-radius: 10px;--gollum-bg: #c8202f;--gollum-ink: #fff;--gollum-shadow: 0 8px 24px rgba(200, 32, 47, .45);--chip-bg: #f2f5f4;--chip-ink: #151515;--banner-bg: linear-gradient(90deg, transparent, rgba(10, 16, 16, .92) 18%, rgba(10, 16, 16, .92) 82%, transparent);--banner-ink: #e8c16a;--mote: transparent;--bubble-bg: #fbfaf7;--bubble-ink: #151515;--input-bg: rgba(0, 0, 0, .3)}:root{color:var(--text);background:var(--page-bg);font-family:var(--font-body)}body{background:radial-gradient(ellipse at center,transparent 55%,rgba(0,0,0,.45) 100%) fixed}#root{position:relative;z-index:1}h1,h2,.logo,button,.tabs button,.badge,.game-top strong,.lobby-code,.stats strong,.place,.winner,.pile-label{font-family:var(--font-display);letter-spacing:var(--display-spacing)}h2{font-weight:var(--display-weight)}.muted{color:var(--muted)}.logo{font-weight:900;background:linear-gradient(180deg,#ffffff 0%,var(--accent) 55%,var(--accent-2) 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 0 18px var(--accent-glow))}button{background:var(--btn-bg);color:var(--btn-ink);border:var(--btn-border);border-radius:var(--btn-radius);box-shadow:var(--btn-shadow);font-weight:700;text-shadow:none;transition:transform .12s,filter .2s}button:hover:not(:disabled){filter:brightness(1.1)}button:active:not(:disabled){transform:translateY(2px)}button.ghost,button.secondary{background:var(--btn2-bg);color:var(--btn2-ink);border:var(--btn2-border);box-shadow:none}button.link{background:none;border:none;box-shadow:none;color:var(--accent);font-family:var(--font-body)}.segmented button{background:var(--btn2-bg);color:var(--muted);border:var(--btn2-border);box-shadow:none}.segmented button.active{background:var(--btn-bg);color:var(--btn-ink);box-shadow:0 0 14px var(--accent-glow)}.tabs button{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;box-shadow:none;color:var(--muted)}.tabs button.active{background:none;color:var(--text);border-bottom-color:var(--accent)}input,select{background:var(--input-bg);border:var(--btn2-border);color:var(--text)}input:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-glow)}.panel,.player,.modal,.log-panel{background:var(--panel-bg);border:var(--panel-border);border-radius:var(--panel-radius);box-shadow:var(--panel-shadow);-webkit-backdrop-filter:var(--panel-blur);backdrop-filter:var(--panel-blur)}.modal{background:var(--modal-bg);animation:modalIn .32s cubic-bezier(.2,1.3,.4,1)}.log-panel{background:var(--modal-bg)}@keyframes modalIn{0%{transform:scale(.9) translateY(12px);opacity:0}}.overlay{background:#04040ea8}.badge{background:var(--btn2-bg);border:var(--btn2-border);color:var(--text)}.toast{background:var(--bubble-bg);color:var(--bubble-ink);font-weight:600}.me-row{background:#ffffff12}.card{border-radius:var(--card-radius);box-shadow:var(--card-shadow)}.card-sm{border-radius:calc(var(--card-radius) * .7)}.card-inner{will-change:transform}.card-back{background:var(--card-back);border:var(--card-back-border)}.card .back-pattern{font-family:var(--font-display);font-weight:900;color:var(--card-back-mark);opacity:.9;text-shadow:0 1px 6px rgba(0,0,0,.35)}.card-front{background:var(--card-face);box-shadow:var(--card-face-ring);color:var(--card-ink)}.card .corner{font-family:var(--card-font);font-weight:800}.red{color:var(--red)}.card.empty{border:2px dashed rgba(255,255,255,.22);background:transparent;box-shadow:none}.card.clickable{transition:transform .22s cubic-bezier(.2,1.4,.4,1)}.card.clickable:hover{transform:translateY(-9px) scale(1.05)}.card.clickable:before,.card.selected:before,.card.glow:before,.card.snap-pulse:before{content:"";position:absolute;top:-5px;right:-5px;bottom:-5px;left:-5px;border-radius:calc(var(--card-radius) + 4px);pointer-events:none;opacity:0;box-shadow:0 0 0 2px var(--accent),0 0 22px var(--accent-glow);transition:opacity .2s}.card.clickable:hover:before,.card.selected:before{opacity:1}.card.selected{transform:translateY(-12px) scale(1.06)}.card.selected:before{box-shadow:0 0 0 3px var(--power),0 0 26px var(--power)}.card.glow:before{animation:haloPulse 1.4s ease-in-out infinite}.card.snap-pulse:before{box-shadow:0 0 0 3px var(--snap),0 0 26px var(--snap);animation:haloPulse .7s ease-in-out infinite}@keyframes haloPulse{0%,to{opacity:.3}50%{opacity:1}}.hl-peek,.hl-queen{box-shadow:0 0 0 3px var(--power),0 0 18px var(--power)}.hl-jack,.hl-replace{box-shadow:0 0 0 3px var(--accent),0 0 18px var(--accent-glow)}.hl-penalty,.hl-wrongSnap{box-shadow:0 0 0 3px var(--danger),0 0 18px var(--danger)}.flight{filter:none}.flight>.card{box-shadow:0 16px 28px #00000080}.mini-card{background:var(--card-face);color:var(--card-ink);border:1px solid rgba(0,0,0,.2);font-family:var(--card-font)}.table-center{isolation:isolate;flex:none;margin:.4rem auto;width:min(560px,100%);height:clamp(150px,26vh,230px);border-radius:50%/46%;background:var(--table-bg);box-shadow:var(--table-ring)}.table-center:before{content:"";position:absolute;top:8%;right:20%;bottom:8%;left:20%;z-index:-1;opacity:.28;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'%3E%3Cg fill='none' stroke='white'%3E%3Ccircle cx='100' cy='100' r='92' stroke-width='1.2'/%3E%3Ccircle cx='100' cy='100' r='84' stroke-width='.6' stroke-dasharray='3 5'/%3E%3Ccircle cx='100' cy='100' r='60' stroke-width='.8'/%3E%3Cpath d='M100 8v16M100 176v16M8 100h16M176 100h16M35 35l11 11M154 154l11 11M165 35l-11 11M46 154l-11 11' stroke-width='1.2'/%3E%3Cpath d='M100 40l17 43 43 17-43 17-17 43-17-43-43-17 43-17z' stroke-width='.8'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;animation:runeSpin 90s linear infinite}[data-theme=classic] .table-center:before{display:none}@keyframes runeSpin{to{transform:rotate(360deg)}}.table-center:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .3s}.arena.phase-snap .table-center:after{opacity:1;box-shadow:0 0 0 3px var(--snap),0 0 40px var(--snap),inset 0 0 50px #3ddc9740;animation:haloPulse .9s ease-in-out infinite}.arena.phase-power .table-center:after{opacity:1;box-shadow:0 0 0 3px var(--power),0 0 40px var(--power),inset 0 0 50px #b48cff40}.pile-label{color:var(--text);opacity:.85}.snap-bar{background:var(--snap)}.player-score{color:var(--accent)}.player.current:before{content:"";position:absolute;top:-3px;right:-3px;bottom:-3px;left:-3px;border-radius:inherit;pointer-events:none;box-shadow:0 0 0 2px var(--accent),0 0 30px var(--accent-glow);animation:haloPulse 2s ease-in-out infinite}.player.power{border-color:var(--power)}.tag.gollum{background:var(--chip-bg);color:var(--chip-ink)}.status .hint{color:var(--text)}.turn-bar{background:#ffffff1f;height:5px}.turn-bar>div{background:var(--accent)}.arena.phase-snap .turn-bar>div{background:var(--snap)}.arena.phase-power .turn-bar>div{background:var(--power)}.turn-bar>div.urgent{background:var(--danger)}.timer{color:var(--accent);font-family:var(--font-display);font-variant-numeric:tabular-nums}.table-center .gollum-banner{background:var(--chip-bg);color:var(--chip-ink);font-family:var(--font-display);font-weight:800}.gollum-btn{font-family:var(--font-display);font-weight:900;letter-spacing:.06em;background:var(--gollum-bg);color:var(--gollum-ink);box-shadow:var(--gollum-shadow);border:0}.action-chip{background:var(--chip-bg);color:var(--chip-ink)}.turn-order{display:flex;justify-content:center;gap:.35rem;margin:0 auto;padding:.2rem .4rem;list-style:none;max-width:100%;overflow-x:auto;scrollbar-width:none}.turn-order li{position:relative;display:flex;align-items:center;gap:.4rem;flex:none;padding:.3em .75em;border-radius:999px;font-size:.8rem;background:var(--btn2-bg);border:var(--btn2-border);color:var(--muted);transition:transform .25s,opacity .25s}.turn-order li+li:before{content:"›";position:absolute;left:-.42rem;color:var(--muted);opacity:.6}.turn-order li.current{color:var(--accent-ink);background:var(--btn-bg);border-color:transparent;font-weight:700;transform:scale(1.08);box-shadow:0 0 16px var(--accent-glow)}.turn-order li.out{opacity:.4;text-decoration:line-through}.turn-order li.me .to-name{font-weight:700}.to-pts{font-variant-numeric:tabular-nums;opacity:.8}.to-badge{font-size:.75em}.to-badge.gollum{display:inline-grid;place-items:center;width:1.4em;height:1.4em;border-radius:50%;background:var(--danger);color:#fff;font-weight:800}.phase-track{position:absolute;top:-1.9em;left:50%;transform:translate(-50%);display:flex;gap:.3rem;white-space:nowrap;font-size:.72rem}.phase-track span{padding:.2em .6em;border-radius:999px;background:var(--btn2-bg);border:var(--btn2-border);color:var(--muted);opacity:.75}.phase-track span.done{opacity:.4}.phase-track span.active{opacity:1;color:var(--accent-ink);background:var(--accent);border-color:transparent;font-weight:700}.phase-track.step-snap span.active{background:var(--snap)}.phase-track.step-power span.active{background:var(--power)}.me{position:relative}.me.snap-armed .player{border-color:var(--snap)}.me.snap-armed .card.clickable:before{box-shadow:0 0 0 2px var(--snap),0 0 22px var(--snap)}.me.power-armed .player{border-color:var(--power)}.me.power-armed .card.clickable:before{box-shadow:0 0 0 2px var(--power),0 0 22px var(--power)}.gollum-fx span{font-family:var(--font-display);background:linear-gradient(180deg,#ffffff,var(--accent) 50%,var(--accent-2));-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none;filter:drop-shadow(0 0 28px var(--accent-glow))}.turn-banner{position:fixed;top:0;right:0;bottom:0;left:0;z-index:55;display:grid;place-items:center;pointer-events:none}.turn-banner span{padding:.35em 2.2em;font-family:var(--font-display);font-weight:900;font-size:clamp(1.8rem,7vw,3.4rem);color:var(--banner-ink);text-shadow:0 0 24px var(--accent-glow);background:var(--banner-bg);border-top:2px solid var(--accent);border-bottom:2px solid var(--accent);animation:bannerSweep 1.5s cubic-bezier(.2,.9,.3,1) forwards}@keyframes bannerSweep{0%{transform:scaleX(.2) scaleY(.6);opacity:0}18%{transform:scaleX(1.05) scaleY(1);opacity:1}28%{transform:scaleX(1)}78%{opacity:1}to{transform:scaleX(1.12);opacity:0}}.tutorial-bubble{background:var(--bubble-bg);color:var(--bubble-ink);border:1px solid rgba(0,0,0,.15);box-shadow:0 14px 34px #00000080}.tutorial-bubble button.ghost{background:transparent;color:var(--bubble-ink);border:1px solid rgba(0,0,0,.25)}[data-tut]{outline-color:var(--accent)!important}.fx-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:46;overflow:hidden}.fx-spark{position:absolute;width:var(--s, 6px);height:var(--s, 6px);margin:calc(var(--s, 6px) / -2);border-radius:50%;background:radial-gradient(circle,#fff 0%,var(--c, var(--accent)) 45%,transparent 72%)}.embers{position:fixed;top:0;right:0;bottom:0;left:0;z-index:0;pointer-events:none;overflow:hidden}.embers span{position:absolute;bottom:-10px;border-radius:50%;background:radial-gradient(circle,#fff,var(--mote) 55%,transparent);opacity:0;animation:moteRise var(--d, 14s) linear infinite;animation-delay:var(--delay, 0s)}[data-theme=classic] .embers{display:none}@keyframes moteRise{0%{transform:translate(0);opacity:0}10%{opacity:.7}to{transform:translate(var(--drift, 40px),-105vh);opacity:0}}@media (prefers-reduced-motion: reduce){.embers,.table-center:before,.table-center:after,.card.glow:before,.card.snap-pulse:before,.player.current:before,.turn-banner span{animation:none!important}}:root[data-dread=demon]:not([data-theme=epic],[data-theme=classic]){--page-bg: radial-gradient(ellipse at 50% 38%, #4a0f3a 0%, #1d0620 55%, #080210 100%) fixed;--accent: #ff4d8d;--accent-2: #ff2a3d;--accent-glow: rgba(255, 60, 110, .6);--gold: #ff4d8d;--mote: #ff3d6e;--chip-bg: #ff3d6e;--chip-ink: #fff;--btn-bg: linear-gradient(135deg, #ff4d8d, #ff2a3d);--btn-ink: #fff;--btn-shadow: 0 8px 22px rgba(255, 40, 90, .45);--table-bg: radial-gradient(ellipse at 50% 38%, rgba(255, 40, 90, .22), transparent 60%), linear-gradient(160deg, #3a0d3f, #16061f 70%);--table-ring: inset 0 0 0 1px rgba(255, 60, 110, .55), inset 0 0 60px rgba(0, 0, 0, .6), 0 0 80px rgba(255, 30, 80, .4);--card-back: linear-gradient(135deg, rgba(255, 255, 255, .2), transparent 42%), conic-gradient(from 210deg at 50% 50%, #ff2a5f, #8a1bff, #ff7a3d, #ff2a5f);--dread-flash: #ff2a5f}[data-theme=epic][data-dread=demon]{--page-bg: radial-gradient(ellipse at 50% 120%, rgba(255, 90, 30, .28), transparent 60%), linear-gradient(180deg, #1c0b0d 0%, #0f0607 60%, #050203 100%) fixed;--accent: #ff7a45;--accent-2: #ff4a2a;--accent-glow: rgba(255, 90, 40, .6);--mote: #ff5a1f;--banner-ink: #ff9a6a;--chip-bg: #c8372a;--chip-ink: #fff3d6;--table-bg: radial-gradient(ellipse at 50% 42%, rgba(255, 80, 40, .24), transparent 60%), radial-gradient(ellipse at center, #3a1414 0%, #220b0b 65%, #140606 100%);--table-ring: inset 0 0 40px rgba(0, 0, 0, .75), 0 0 0 3px #8a2a1a, 0 0 0 6px #120808, 0 0 0 7px rgba(255, 110, 60, .55), 0 0 60px rgba(255, 60, 20, .35);--card-back: radial-gradient(circle at 50% 42%, rgba(255, 90, 40, .35), transparent 55%), linear-gradient(160deg, #5c1d1d, #2a0b0b);--dread-flash: #ff3b1a}[data-theme=classic][data-dread=demon]{--page-bg: radial-gradient(ellipse at 50% 35%, #2a1616 0%, #120a0a 55%, #050303 100%) fixed;--chip-bg: #c8202f;--chip-ink: #fff;--table-bg: radial-gradient(ellipse at 50% 40%, #7a1a26 0%, #4a0e17 70%, #330910 100%);--table-ring: inset 0 2px 30px rgba(0, 0, 0, .55), 0 0 0 1px rgba(232, 193, 106, .6), 0 0 90px rgba(200, 32, 47, .35), 0 30px 60px rgba(0, 0, 0, .6);--dread-flash: #ffffff}[data-dread] .table-center:before{opacity:.45;animation-duration:24s}.dread-layer{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;overflow:hidden;animation:dreadIn 1.8s ease-out both}.dread-layer:before,.dread-layer:after{content:"";position:absolute}@keyframes dreadIn{0%{opacity:0}}.dread-demon:before{top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 45%,transparent 45%,rgba(255,30,90,.28) 85%,rgba(60,0,25,.7) 100%);animation:dreadBreath 2.3s ease-in-out infinite}.dread-demon:after{top:-50%;right:0;bottom:0;left:0;background:repeating-linear-gradient(180deg,transparent 0 6px,rgba(255,60,120,.05) 6px 7px);animation:dreadScan 9s linear infinite}@keyframes dreadBreath{50%{opacity:.55}}@keyframes dreadScan{to{transform:translateY(33%)}}[data-theme=epic] .dread-demon:before{inset:auto;top:-14vmin;left:50%;width:46vmin;height:46vmin;margin-left:-23vmin;border-radius:50%;background:radial-gradient(circle at 42% 40%,#ff9a7a,#c8372a 38%,#6e120d 62%,#6e120d00 72%);box-shadow:0 0 120px 40px #ff321440;opacity:.75;animation:dreadBreath 4s ease-in-out infinite}[data-theme=epic] .dread-demon:after{inset:auto -50% 0 -50%;height:45vh;background:radial-gradient(ellipse 30% 60% at 20% 100%,rgba(255,70,30,.22),transparent 70%),radial-gradient(ellipse 25% 50% at 60% 100%,rgba(180,30,20,.25),transparent 70%),radial-gradient(ellipse 30% 55% at 90% 100%,rgba(255,90,40,.18),transparent 70%);animation:dreadFog 14s ease-in-out infinite alternate}@keyframes dreadFog{to{transform:translate(18%)}}[data-theme=classic] .dread-demon:before{background:radial-gradient(ellipse 55% 50% at 50% 42%,transparent 35%,rgba(0,0,0,.55) 70%,rgba(0,0,0,.85) 100%);animation:dreadFlicker 7s steps(1) infinite}[data-theme=classic] .dread-demon:after{display:none}@keyframes dreadFlicker{0%,to{opacity:1}91%{opacity:.6}92%{opacity:1}94%{opacity:.7}95%{opacity:1}}:root[data-dread=funny]{--accent: #ff5fa2;--accent-2: #ffd23f;--accent-glow: rgba(255, 95, 162, .55);--mote: #ffd23f;--chip-bg: #ffd23f;--chip-ink: #2a1640;--table-ring: inset 0 0 40px rgba(0, 0, 0, .45), 0 0 0 3px #ff5fa2, 0 0 0 6px #ffd23f, 0 0 0 9px #3ddc97, 0 0 0 12px #59b8ff, 0 0 40px rgba(255, 95, 162, .45)}.dread-funny:before{top:-540px;right:0;bottom:0;left:0;opacity:.6;background:radial-gradient(ellipse 3px 6px at 20px 30px,#ff5fa2 98%,transparent),radial-gradient(circle 4px at 95px 100px,#ffd23f 98%,transparent),radial-gradient(ellipse 6px 3px at 60px 10px,#3ddc97 98%,transparent),radial-gradient(circle 3px at 150px 60px,#59b8ff 98%,transparent),radial-gradient(ellipse 3px 7px at 120px 160px,#b48cff 98%,transparent),radial-gradient(ellipse 7px 3px at 40px 220px,#ff9a45 98%,transparent),radial-gradient(circle 4px at 230px 130px,#ff5fa2 98%,transparent),radial-gradient(ellipse 3px 6px at 200px 250px,#3ddc97 98%,transparent);background-size:135px 135px,135px 135px,180px 180px,180px 180px,180px 180px,270px 270px,270px 270px,270px 270px;animation:confettiFall 11s linear infinite}.dread-funny:after{top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 45%,transparent 50%,rgba(255,95,162,.2) 100%);animation:dreadBreath .9s ease-in-out infinite}@keyframes confettiFall{to{transform:translateY(540px)}}:root[data-dread=brat]{--accent: #7dff6b;--accent-2: #ff5fd2;--accent-glow: rgba(125, 255, 107, .5);--mote: #7dff6b;--chip-bg: #7dff6b;--chip-ink: #1a2a10;--table-ring: inset 0 0 40px rgba(0, 0, 0, .5), 0 0 0 3px #7dff6b, 0 0 0 6px #ff5fd2, 0 0 40px rgba(125, 255, 107, .4)}.dread-brat:before{top:-160px;right:-160px;bottom:0;left:0;opacity:.13;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Ctext x='20' y='60' font-size='42'%3E😜%3C/text%3E%3Ctext x='95' y='140' font-size='34' transform='rotate(18 110 130)'%3E😛%3C/text%3E%3C/svg%3E") 0 0 / 160px 160px;animation:tauntDrift 7s linear infinite}.dread-brat:after{top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 50% 45%,transparent 50%,rgba(125,255,107,.14) 80%,rgba(255,95,210,.22) 100%);animation:dreadBreath 1.6s ease-in-out infinite}@keyframes tauntDrift{to{transform:translate(160px,160px)}}:root[data-dread=royal]{--accent: #f0c86b;--accent-2: #fff3c4;--accent-glow: rgba(240, 200, 107, .6);--mote: #ffe9a8;--chip-bg: #f0c86b;--chip-ink: #2a1a04;--table-bg: radial-gradient(ellipse at 50% 42%, rgba(255, 220, 140, .2), transparent 60%), radial-gradient(ellipse at center, #7a1424 0%, #4a0a16 65%, #2e0610 100%);--table-ring: inset 0 0 40px rgba(0, 0, 0, .6), 0 0 0 3px #f0c86b, 0 0 0 6px #4a0a16, 0 0 0 7px #f0c86b, 0 0 60px rgba(240, 200, 107, .35)}.dread-royal:before{top:-60vmax;right:-60vmax;bottom:-60vmax;left:-60vmax;opacity:.1;background:repeating-conic-gradient(from 0deg at 50% 50%,#ffe9a8 0deg 6deg,transparent 6deg 20deg);animation:runeSpin 80s linear infinite}.dread-royal:after{top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse 70% 40% at 50% 0%,rgba(255,220,140,.25),transparent 70%),radial-gradient(ellipse at 50% 50%,transparent 55%,rgba(60,30,0,.45) 100%)}.gollum-fx:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;background:var(--dread-flash, #ff2a5f);opacity:0;animation:dreadFlash .7s ease-out}@keyframes dreadFlash{0%{opacity:.85}to{opacity:0}}[data-theme=epic] .gollum-fx.call-demon span{background:linear-gradient(180deg,#fff3d6,#ff9a5a 45%,#8e1a10);-webkit-background-clip:text;background-clip:text;filter:drop-shadow(0 4px 0 #2a0503) drop-shadow(0 0 30px rgba(255,70,30,.8))}[data-theme=classic] .gollum-fx.call-demon span{background:none;color:#fff;filter:drop-shadow(0 0 24px rgba(200,32,47,.9))}:root:not([data-theme=epic],[data-theme=classic]) .gollum-fx.call-demon span{filter:drop-shadow(-4px 0 0 rgba(0,240,255,.7)) drop-shadow(4px 0 0 rgba(255,30,90,.8)) drop-shadow(0 0 28px var(--accent-glow))}@media (prefers-reduced-motion: reduce){.dread-layer,.dread-layer:before,.dread-layer:after,.gollum-fx:before{animation:none!important}}.gollum-fx i{font-style:normal;font-size:clamp(2.5rem,9vw,4.5rem);line-height:1;margin-bottom:.2em;animation:gollumEmoji .6s cubic-bezier(.2,1.6,.4,1) both}@keyframes gollumEmoji{0%{transform:scale(0) rotate(-30deg)}}.gollum-fx.call-funny:before{background:#ffd23f}.gollum-fx.call-funny span{background:linear-gradient(90deg,#ff5fa2,#ffd23f,#3ddc97,#59b8ff,#b48cff);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 5px 0 rgba(0,0,0,.35));animation:gollumJelly .9s ease-out both}@keyframes gollumJelly{0%{transform:scale(.2,1.6)}30%{transform:scale(1.25,.75)}50%{transform:scale(.85,1.15)}70%{transform:scale(1.06,.95)}to{transform:scale(1)}}.gollum-fx.call-brat:before{background:#7dff6b}.gollum-fx.call-brat span{background:linear-gradient(180deg,#fff36b,#7dff6b 55%,#ff5fd2);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 0 rgba(0,0,0,.4));animation:gollumTaunt .5s ease-in-out 4 alternate both}@keyframes gollumTaunt{0%{transform:rotate(-7deg) translate(-10px)}to{transform:rotate(7deg) translate(10px)}}.gollum-fx.call-royal:before{background:#ffe9a8}.gollum-fx.call-royal span{font-family:Cinzel,Georgia,serif;background:linear-gradient(180deg,#fffbe8,#f0c86b 50%,#a6741e);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 4px 0 #3b2606) drop-shadow(0 0 30px rgba(255,215,120,.8));animation:gollumHerald 1s cubic-bezier(.2,.8,.3,1) both}@keyframes gollumHerald{0%{transform:translateY(-40px) scale(1.15);opacity:0}}@media (prefers-reduced-motion: reduce){.gollum-fx i,.gollum-fx span{animation:none!important}}
