:root{--parchment:oklch(92% .035 82);--parchment-2:oklch(88% .04 78);--parchment-edge:oklch(78% .06 70);--ink:oklch(22% .03 60);--ink-2:oklch(32% .03 60);--ink-soft:oklch(45% .025 60);--ink-faint:oklch(62% .02 60);--gold:oklch(72% .17 75);--gold-2:oklch(62% .16 65);--gold-deep:oklch(48% .13 60);--wax:oklch(48% .18 25);--wax-2:oklch(38% .18 25);--wax-glow:oklch(62% .2 28);--ivy:oklch(50% .12 145);--ivy-2:oklch(38% .1 145);--candle:oklch(85% .15 80);--shadow:0 1px 0 oklch(100% 0 0/.5) inset, 0 12px 28px -16px oklch(20% .04 60/.45);--radius-sm:4px;--radius:6px;--radius-lg:10px}*{box-sizing:border-box}html,body{color:var(--ink);background:var(--parchment);-webkit-font-smoothing:antialiased;min-height:100vh;margin:0;padding:0;font-family:Crimson Pro,Crimson Text,Georgia,serif;font-size:17px;line-height:1.45}#root{min-height:100vh}.app-bg{z-index:-1;will-change:transform;background:radial-gradient(ellipse 80% 60% at 50% 0%, oklch(88% .07 75/.5), transparent 70%), radial-gradient(ellipse 70% 80% at 100% 100%, oklch(78% .08 60/.35), transparent 60%), radial-gradient(ellipse 60% 70% at 0% 100%, oklch(78% .08 50/.3), transparent 60%), var(--parchment);position:fixed;inset:0}.app-bg:before{content:"";opacity:.4;pointer-events:none;will-change:transform;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' seed='5'/><feColorMatrix values='0 0 0 0 0.2 0 0 0 0 0.13 0 0 0 0 0.05 0 0 0 0.18 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/></svg>");background-size:240px 240px;position:absolute;inset:0}.app-bg:after{content:"";pointer-events:none;background:radial-gradient(60% 40% at 50% 0,oklch(95% .12 80/.18),#0000 60%),radial-gradient(circle,#0000 30%,oklch(18% .04 50/.35) 100%);position:absolute;inset:0}.display{letter-spacing:.04em;font-family:Cinzel,Trajan Pro,serif;font-weight:600}.smallcaps{letter-spacing:.18em;text-transform:uppercase;font-family:Cinzel,serif;font-size:.78em;font-weight:600}.italic-quip{color:var(--ink-soft);font-style:italic}.card{background:linear-gradient(180deg, oklch(94% .03 82) 0%, var(--parchment-2) 100%);border:1px solid var(--parchment-edge);border-radius:var(--radius-lg);box-shadow:var(--shadow);position:relative}.card:before{content:"";pointer-events:none;border:1px solid oklch(70% .05 70/.35);border-radius:6px;position:absolute;inset:4px}.divider{color:var(--ink-faint);align-items:center;gap:14px;display:flex}.divider .line{background:linear-gradient(90deg, transparent, var(--ink-faint) 30%, var(--ink-faint) 70%, transparent);opacity:.6;flex:1;height:1px}.btn{letter-spacing:.16em;text-transform:uppercase;cursor:pointer;touch-action:manipulation;border-radius:var(--radius);background:linear-gradient(180deg, oklch(95% .03 82), var(--parchment-2));color:var(--ink);border:none;border:1px solid var(--parchment-edge);justify-content:center;align-items:center;gap:10px;padding:14px 22px;font-family:Cinzel,serif;font-size:14px;font-weight:600;transition:transform .12s,box-shadow .12s,background .12s;display:inline-flex;box-shadow:inset 0 1px oklch(100% 0 0/.5),0 2px oklch(70% .04 60/.4),0 6px 14px -8px oklch(20% 0 0/.4)}.btn:hover{transform:translateY(-1px)}.btn:focus-visible{outline:2px solid var(--gold-2);outline-offset:2px}.btn:active{transition-duration:50ms;transform:translateY(1px)scale(.985);box-shadow:inset 0 1px oklch(100% 0 0/.5),0 1px oklch(70% .04 60/.4)}.btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.btn:disabled:hover{transform:none}@keyframes tapPulse{0%{box-shadow:0 0 0 0 var(--wax-glow,oklch(62% .2 28/.5))}to{box-shadow:0 0 0 12px #0000}}.btn-primary:active{animation:.4s ease-out tapPulse}.btn-primary{background:linear-gradient(180deg, var(--wax-glow), var(--wax));color:oklch(97% .03 80);border:1px solid var(--wax-2);text-shadow:0 1px oklch(20% 0 0/.4);box-shadow:0 1px 0 oklch(100% 0 0/.25) inset, 0 -2px 0 oklch(25% .05 25/.5) inset, 0 2px 0 var(--wax-2), 0 8px 18px -8px var(--wax), 0 0 24px -8px var(--wax-glow)}.btn-primary:hover{filter:brightness(1.08);box-shadow:0 1px 0 oklch(100% 0 0/.25) inset, 0 -2px 0 oklch(25% .05 25/.5) inset, 0 2px 0 var(--wax-2), 0 12px 24px -8px var(--wax), 0 0 32px -6px var(--wax-glow)}.btn-gold{background:linear-gradient(180deg, oklch(82% .16 80), var(--gold-2));color:oklch(20% .04 60);border:1px solid var(--gold-deep);box-shadow:0 1px 0 oklch(100% 0 0/.5) inset, 0 -2px 0 oklch(45% .13 65/.5) inset, 0 2px 0 var(--gold-deep), 0 8px 18px -8px var(--gold-2)}.btn-ghost{border:1px solid var(--ink-faint);box-shadow:none;color:var(--ink-2);background:0 0}.btn-ghost:hover{background:oklch(95% .03 80/.5)}.btn-icon{width:40px;height:40px;padding:10px}.btn-sm{letter-spacing:.14em;padding:8px 14px;font-size:12px}.input{border:1px solid var(--parchment-edge);border-radius:var(--radius);color:var(--ink);background:oklch(96% .025 82);outline:none;width:100%;padding:12px 14px;font-family:Crimson Pro,serif;font-size:17px;transition:border-color .15s,box-shadow .15s;box-shadow:inset 0 2px 4px oklch(50% .04 60/.12)}.input:focus{border-color:var(--gold-2);box-shadow:inset 0 2px 4px oklch(50% .04 60/.12),0 0 0 3px oklch(72% .17 75/.2)}.label{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);margin-bottom:6px;font-family:Cinzel,serif;font-size:11px;display:block}.wax-seal{background:radial-gradient(circle at 35% 30%, var(--wax-glow), var(--wax) 50%, var(--wax-2) 100%);color:oklch(97% .03 80);border-radius:50%;justify-content:center;align-items:center;width:84px;height:84px;display:flex;position:relative;box-shadow:inset 0 2px 6px oklch(100% 0 0/.25),inset 0 -8px 14px oklch(20% .05 25/.5),0 6px 14px -4px oklch(30% .1 25/.5)}.wax-seal:before{content:"";border:1px dashed oklch(97% .05 80/.4);border-radius:50%;position:absolute;inset:5px}@keyframes flicker{0%,to{opacity:1;transform:scale(1)}20%{opacity:.92;transform:scale(.985)}45%{opacity:1;transform:scale(1.01)}70%{opacity:.95;transform:scale(.99)}}.flicker{transform-origin:50%;will-change:transform, opacity;animation:4.5s ease-in-out infinite flicker}@keyframes pulse-gold{0%,to{box-shadow:0 0 oklch(72% .17 75/.5)}50%{box-shadow:0 0 0 8px oklch(72% .17 75/0)}}.app{flex-direction:column;align-items:center;min-height:100vh;padding:32px 24px 64px;display:flex;position:relative}@media (width<=640px){.app{padding:18px 14px 40px}}.topbar{justify-content:space-between;align-items:center;width:100%;max-width:1200px;margin-bottom:28px;display:flex}.shield{letter-spacing:.04em;color:oklch(96% .04 82);filter:drop-shadow(0 4px 6px oklch(20% 0 0/.3));justify-content:center;align-items:center;width:56px;height:64px;font-family:Cinzel,serif;font-weight:700;display:inline-flex;position:relative}.shield svg{width:100%;height:100%;position:absolute;inset:0}.shield .mono{z-index:1;text-shadow:0 1px oklch(20% 0 0/.4);font-size:22px;position:relative}.shield.empty .mono{color:var(--ink-faint)}.player-tile{border:1px solid var(--parchment-edge);border-radius:var(--radius);background:oklch(94% .03 82);grid-template-columns:auto 1fr auto;align-items:center;gap:14px;padding:14px;transition:background .2s,transform .25s,box-shadow .25s;animation:.3s ease-out tileIn;display:grid;position:relative}@keyframes tileIn{0%{opacity:0;transform:translateY(6px)scale(.98)}to{opacity:1;transform:translateY(0)scale(1)}}.player-tile:not(.empty):hover{box-shadow:0 4px 12px -6px oklch(20% .04 50/.3)}.player-tile.empty{color:var(--ink-faint);background:repeating-linear-gradient(45deg,oklch(90% .025 80),oklch(90% .025 80) 8px,oklch(88% .03 78) 8px 16px);border-style:dashed;border-color:oklch(70% .04 70)}.player-tile .name{font-family:Cinzel,serif;font-size:16px}.player-tile .meta{color:var(--ink-soft);font-size:13px;font-style:italic}.ready-pill{letter-spacing:.16em;text-transform:uppercase;color:var(--ink-soft);border:1px solid var(--parchment-edge);background:oklch(88% .04 78);border-radius:100px;padding:5px 10px;font-family:Cinzel,serif;font-size:10px}.ready-pill.ready{color:oklch(25% .08 145);background:oklch(85% .12 145);border-color:oklch(55% .12 145);animation:.3s cubic-bezier(.34,1.56,.64,1) readyPop}@keyframes readyPop{0%{opacity:0;transform:scale(.7)}60%{transform:scale(1.1)}to{opacity:1;transform:scale(1)}}.ready-pill.host{background:linear-gradient(180deg, oklch(82% .16 80), var(--gold-2));color:oklch(20% .04 60);border-color:var(--gold-deep)}.chat{flex-direction:column;height:100%;display:flex}.chat-log{border:1px solid var(--parchment-edge);border-radius:var(--radius);background:oklch(95% .03 82);flex-direction:column;flex:1;gap:8px;min-height:200px;max-height:320px;padding:12px;font-size:14.5px;display:flex;overflow-y:auto}.chat-msg{line-height:1.4;animation:.25s ease-out chatIn}@keyframes chatIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}.chat-msg .author{margin-right:6px;font-family:Cinzel,serif;font-weight:600}.chat-msg.system{color:var(--ink-soft);font-size:13.5px;font-style:italic}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:oklch(70% .04 70/.4);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:oklch(60% .04 70/.6)}.mod-card{border:1px solid var(--parchment-edge);border-radius:var(--radius);cursor:pointer;will-change:transform;background:linear-gradient(oklch(94% .03 82),oklch(90% .04 78));flex-direction:column;gap:8px;padding:14px;transition:transform .15s,border-color .2s;display:flex;position:relative}.mod-card:hover{transform:translateY(-2px)}.mod-card:active{transform:translateY(0)scale(.98)}.mod-card:after{content:"";border-radius:var(--radius);pointer-events:none;border:2px solid oklch(72% .17 75/0);transition:border-color .2s,box-shadow .2s;position:absolute;inset:0;box-shadow:0 0 oklch(72% .17 75/0)}.mod-card.voted{border-color:var(--gold-2)}.mod-card.voted:after{box-shadow:0 6px 16px -8px var(--gold-2);border-color:oklch(72% .17 75/.4)}.voter-pip{will-change:transform;animation:.25s cubic-bezier(.34,1.56,.64,1) pipIn}@keyframes pipIn{0%{opacity:0;transform:scale(0)}to{opacity:1;transform:scale(1)}}.mod-card .mod-name{font-family:Cinzel,serif;font-size:15px;font-weight:600}.mod-card .mod-desc{color:var(--ink-soft);font-size:13.5px;line-height:1.4}.mod-card .mod-votes{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);align-items:center;gap:6px;font-family:Cinzel,serif;font-size:11px;display:flex}.mod-card .vote-bar{background:oklch(85% .03 80);border-radius:2px;flex:1;height:4px;overflow:hidden}.mod-card .vote-bar>div{background:linear-gradient(90deg, var(--gold-2), var(--gold));transform-origin:0;border-radius:2px;height:100%;transition:transform .35s}.code-display{letter-spacing:.32em;color:var(--ink);text-align:center;border:1px dashed var(--parchment-edge);border-radius:var(--radius);background:oklch(96% .03 82);justify-content:center;align-items:center;gap:4px;padding:14px 0 14px 12px;font-family:Cinzel,serif;font-size:36px;font-weight:700;display:flex;position:relative}.code-display .copy-btn{position:absolute;top:50%;right:8px;transform:translateY(-50%)}.code-slots{justify-content:center;gap:10px;display:flex}.code-slot{text-align:center;border:1px solid var(--parchment-edge);border-radius:var(--radius);width:52px;height:64px;color:var(--ink);text-transform:uppercase;background:oklch(96% .03 82);outline:none;font-family:Cinzel,serif;font-size:28px;font-weight:700;transition:border-color .15s,box-shadow .15s,background .15s,transform .15s;box-shadow:inset 0 2px 4px oklch(50% .04 60/.12)}.code-slot:focus{border-color:var(--gold-2);background:oklch(97% .05 82);transform:translateY(-1px);box-shadow:inset 0 2px 4px oklch(50% .04 60/.12),0 0 0 3px oklch(72% .17 75/.2)}.seg{border:1px solid var(--parchment-edge);border-radius:var(--radius);background:oklch(90% .03 80);gap:2px;padding:3px;display:inline-flex}.seg button{letter-spacing:.14em;text-transform:uppercase;cursor:pointer;color:var(--ink-soft);background:0 0;border:none;border-radius:4px;padding:7px 12px;font-family:Cinzel,serif;font-size:11px}.seg button.active{background:var(--ink);color:oklch(95% .04 80)}.hero{text-align:center;margin:24px 0 36px;position:relative}.hero h1{letter-spacing:.06em;color:var(--ink);text-shadow:0 1px oklch(100% 0 0/.5);margin:0;font-family:Cinzel,serif;font-size:clamp(44px,8vw,96px);font-weight:700;line-height:1}.hero .tagline{color:var(--ink-soft);margin-top:12px;font-size:clamp(15px,2vw,18px);font-style:italic}.hero .crown{margin-bottom:14px;display:inline-block}.meta-strip{grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px;width:100%;max-width:720px;margin:0 auto;display:grid}.meta-stat{border:1px solid var(--parchment-edge);border-radius:var(--radius);background:oklch(94% .03 82);align-items:center;gap:12px;padding:12px 14px;display:flex}.meta-stat .icon{color:var(--gold-2);flex-shrink:0}.meta-stat .label-row{letter-spacing:.18em;text-transform:uppercase;color:var(--ink-soft);font-family:Cinzel,serif;font-size:10px}.meta-stat .value{color:var(--ink);font-family:Cinzel,serif;font-size:20px;font-weight:600}.level-card{border:1px solid var(--parchment-edge);border-radius:var(--radius-lg);width:100%;max-width:720px;box-shadow:var(--shadow);background:linear-gradient(oklch(94% .03 82),oklch(90% .04 78));grid-template-columns:auto 1fr;align-items:center;gap:16px;margin:0 auto;padding:16px 20px;display:grid;position:relative}.level-badge{filter:drop-shadow(0 4px 8px oklch(40% .1 60/.3));flex-shrink:0;justify-content:center;align-items:center;width:56px;height:56px;display:flex;position:relative}.level-badge .level-num{color:oklch(97% .04 82);text-shadow:0 1px 2px oklch(20% .05 60/.6);margin-top:-2px;font-family:Cinzel,serif;font-size:22px;font-weight:700;position:absolute}.level-body{min-width:0}.level-row{flex-wrap:wrap;justify-content:space-between;align-items:flex-end;gap:12px;margin-bottom:8px;display:flex}.level-title{color:var(--ink);margin-top:2px;font-family:Cinzel,serif;font-size:18px;font-weight:600}.level-xp{font-family:Cinzel,serif;font-size:11px}.xp-bar{border:1px solid var(--parchment-edge);background:oklch(85% .03 80);border-radius:100px;height:8px;overflow:hidden;box-shadow:inset 0 1px 2px oklch(50% .04 60/.2)}.xp-fill{background:linear-gradient(90deg, var(--gold-2), oklch(82% .16 80));height:100%;box-shadow:0 0 12px -2px var(--gold-2);border-radius:100px;transition:width .5s}.level-quip{color:var(--ink-soft);margin-top:6px;font-size:13px;font-style:italic}.value-aux{color:var(--ink-soft);letter-spacing:0;font-size:13px;font-style:italic;font-weight:400}.meta-strip.compact{grid-template-columns:repeat(3,1fr)}.meta-strip.compact .meta-stat{padding:10px 12px}.meta-strip.compact .meta-stat .value{font-size:17px}@media (width<=540px){.meta-strip.compact{grid-template-columns:1fr 1fr}.meta-strip.compact .meta-stat:last-child{grid-column:1/-1}.level-card{gap:12px;padding:14px}.level-card .level-badge,.level-card .level-badge svg{width:48px;height:48px}.level-card .level-num{font-size:18px}.daily-mod{gap:12px;padding:14px 16px}.daily-mod .wax-seal{width:48px!important;height:48px!important}.actions .btn{padding:16px 12px;font-size:13px}}.daily-mod{border:1px solid var(--gold-deep);border-radius:var(--radius-lg);width:100%;max-width:720px;box-shadow:0 8px 22px -14px var(--gold-2);background:linear-gradient(oklch(94% .05 82),oklch(88% .07 78));grid-template-columns:auto 1fr;align-items:center;gap:18px;margin:18px auto 0;padding:18px 22px;display:grid;position:relative;overflow:hidden}.daily-mod:before{content:"";pointer-events:none;background:radial-gradient(circle,oklch(85% .18 80/.35),#0000 65%);width:140px;height:140px;position:absolute;top:-40px;right:-40px}.actions{grid-template-columns:1fr 1fr;gap:14px;width:100%;max-width:720px;margin:28px auto 0;display:grid}.actions .btn{padding:22px;font-size:15px}.actions .full{grid-column:1/-1}@media (width<=480px){.actions{grid-template-columns:1fr}.code-slot{width:40px;height:50px;font-size:20px}.code-slots{gap:5px}}.lobby-grid{grid-template-columns:1fr 360px;gap:22px;width:100%;max-width:1200px;display:grid}@media (width<=1100px){.lobby-grid{grid-template-columns:1fr 320px;gap:16px}}@media (width<=960px){.lobby-grid{grid-template-columns:1fr}}@media (width<=640px){.panel{padding:14px}.section-head h2{font-size:14px}.section-head .hint{font-size:12px}.code-display{letter-spacing:.18em;padding:10px 36px 10px 10px;font-size:24px}.code-display .copy-btn{right:4px}.setting-row .desc{max-width:100%}}.section-head{justify-content:space-between;align-items:baseline;margin-bottom:12px;display:flex}.section-head h2{letter-spacing:.14em;text-transform:uppercase;color:var(--ink);margin:0;font-family:Cinzel,serif;font-size:18px;font-weight:600}.section-head .hint{color:var(--ink-soft);font-size:13px;font-style:italic}.panel{padding:22px}.panel+.panel{margin-top:18px}.drawer-backdrop{z-index:40;background:oklch(18% .04 50/.65);animation:.2s ease-out fade;position:fixed;inset:0}@keyframes fade{0%{opacity:0}to{opacity:1}}.drawer{background:linear-gradient(180deg, oklch(94% .03 82), var(--parchment));border-left:1px solid var(--parchment-edge);z-index:41;width:min(440px,100%);padding:28px;animation:.25s ease-out slideIn;position:fixed;top:0;bottom:0;right:0;overflow-y:auto;box-shadow:-20px 0 40px -20px oklch(18% .04 50/.5)}@keyframes slideIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.setting-row{border-bottom:1px dashed var(--parchment-edge);justify-content:space-between;align-items:center;padding:14px 0;display:flex}.setting-row:last-child{border-bottom:none}.setting-row .desc{color:var(--ink-soft);max-width:60%;font-size:13px;font-style:italic}.setting-row .name{letter-spacing:.1em;text-transform:uppercase;font-family:Cinzel,serif;font-size:13px}.switch{cursor:pointer;border:1px solid var(--parchment-edge);touch-action:manipulation;background:oklch(78% .04 70);border-radius:100px;flex-shrink:0;width:48px;height:28px;transition:background .2s;position:relative}.switch:after{content:"";background:oklch(97% .03 80);border-radius:50%;width:20px;height:20px;transition:left .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px oklch(20% 0 0/.3)}.switch.on{background:var(--ivy)}.switch.on:after{left:24px}.slider-control{align-items:center;gap:10px;display:flex}.slider-control input[type=range]{appearance:none;background:oklch(78% .04 70);border-radius:2px;outline:none;width:clamp(100px,30vw,140px);height:4px}.slider-control input[type=range]::-webkit-slider-thumb{appearance:none;background:linear-gradient(180deg, oklch(82% .16 80), var(--gold-2));cursor:pointer;border:1px solid var(--gold-deep);border-radius:50%;width:18px;height:18px;box-shadow:0 2px 4px oklch(20% 0 0/.3)}.slider-control input[type=range]::-moz-range-thumb{background:linear-gradient(180deg, oklch(82% .16 80), var(--gold-2));cursor:pointer;border:1px solid var(--gold-deep);border-radius:50%;width:18px;height:18px}.toast{background:var(--ink);color:oklch(95% .04 80);border-radius:var(--radius);letter-spacing:.16em;text-transform:uppercase;z-index:60;padding:12px 20px;font-family:Cinzel,serif;font-size:12px;animation:.2s ease-out toastIn;position:fixed;bottom:28px;left:50%;transform:translate(-50%);box-shadow:0 8px 22px -8px oklch(18% .04 50/.6)}@keyframes toastIn{0%{opacity:0;transform:translate(-50%)translateY(8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}@keyframes goldPulseRing{0%,to{opacity:.6;transform:scale(1)}50%{opacity:0;transform:scale(1.08)}}.btn-pulse:not(:disabled){position:relative;overflow:visible}.btn-pulse:not(:disabled):after{content:"";border-radius:inherit;pointer-events:none;will-change:transform, opacity;border:2px solid oklch(72% .17 75/.6);animation:1.8s ease-in-out infinite goldPulseRing;position:absolute;inset:-3px}.btn-glow{box-shadow:0 1px 0 oklch(100% 0 0/.25) inset, 0 -2px 0 oklch(25% .05 25/.5) inset, 0 2px 0 var(--wax-2), 0 8px 18px -8px var(--wax), 0 0 24px -4px var(--wax-glow)}.rule-chip{border:1px solid var(--parchment-edge);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);background:oklch(90% .04 78);border-radius:100px;align-items:center;gap:6px;padding:5px 10px;font-family:Cinzel,serif;font-size:10px;display:inline-flex}.rule-chip.blind{color:oklch(92% .05 80);background:linear-gradient(oklch(32% .04 60),oklch(22% .03 60));border-color:oklch(18% .03 60);box-shadow:inset 0 1px oklch(100% 0 0/.1),0 2px 6px -2px oklch(18% .03 60/.5)}.brand{letter-spacing:.18em;text-transform:uppercase;color:var(--ink);align-items:center;gap:10px;font-family:Cinzel,serif;font-size:18px;font-weight:600;display:flex}.page{width:100%;max-width:1200px;animation:.3s ease-out pageIn}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.player-tile .kick{opacity:0;pointer-events:none;transition:opacity .15s}.player-tile:hover .kick,.player-tile:focus-within .kick{opacity:1;pointer-events:auto}@media (hover:none){.player-tile .kick{opacity:1;pointer-events:auto}}.voter-pip{border:2px solid var(--parchment);will-change:transform, opacity;border-radius:50%;width:14px;height:14px;margin-right:-6px;display:inline-block}.game-stage{grid-template-rows:auto 1fr auto auto;gap:14px;width:100%;max-width:1280px;margin:0 auto;display:grid}.mod-banner{border-radius:var(--radius);color:oklch(94% .05 80);background:linear-gradient(oklch(32% .04 60),oklch(22% .03 60));border:1px solid oklch(18% .03 60);align-items:center;gap:14px;padding:12px 18px;display:flex;position:relative;overflow:hidden}.mod-banner:before{content:"";pointer-events:none;background:radial-gradient(circle,oklch(85% .18 80/.25),#0000 65%);width:200px;height:200px;position:absolute;top:-30%;right:-5%}.mod-banner .seal{flex-shrink:0}.mod-banner .label{letter-spacing:.18em;text-transform:uppercase;color:oklch(75% .15 80);font-family:Cinzel,serif;font-size:10px}.mod-banner .name{margin-top:2px;font-family:Cinzel,serif;font-size:17px;font-weight:600}.mod-banner .desc{color:oklch(85% .04 80);margin-top:4px;font-size:13.5px;font-style:italic}.game-status{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:10px 14px;display:flex}.status-pill{letter-spacing:.16em;text-transform:uppercase;border:1px solid var(--parchment-edge);color:var(--ink-2);background:oklch(94% .03 82);border-radius:100px;padding:6px 12px;font-family:Cinzel,serif;font-size:11px}.status-pill.active{background:linear-gradient(180deg, var(--wax-glow), var(--wax));color:oklch(95% .04 80);border-color:var(--wax-2)}.chamber{border:1px solid var(--parchment-edge);border-radius:var(--radius-lg);background:radial-gradient(60% 40% at 50% 30%,oklch(85% .06 60/.5),#0000 70%),linear-gradient(oklch(92% .04 78),oklch(86% .05 70));min-height:200px;padding:28px 18px 18px;position:relative}.chamber:before{content:"";pointer-events:none;border:1px dashed oklch(70% .05 70/.4);border-radius:8px;position:absolute;inset:8px}.opponents{z-index:1;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;display:grid;position:relative}.opponent{border:1px solid var(--parchment-edge);border-radius:var(--radius);will-change:transform;background:oklch(94% .03 82/.7);flex-direction:column;align-items:center;gap:8px;padding:12px;transition:transform .25s,box-shadow .25s,opacity .4s;display:flex}.opponent.eliminated{opacity:.45;filter:grayscale(.8)}.opponent.targeted{box-shadow:0 0 0 2px var(--wax), 0 8px 22px -10px var(--wax-glow);transform:translateY(-2px)}.opponent.acting{box-shadow:0 0 0 2px var(--gold-2), 0 8px 22px -10px var(--gold)}.opponent .opp-name{font-family:Cinzel,serif;font-size:14px;font-weight:600}.opponent .opp-meta{color:var(--ink-soft);align-items:center;gap:6px;font-size:12px;display:flex}.opp-cards{gap:6px;display:flex}.your-area{border:1px solid var(--parchment-edge);border-radius:var(--radius-lg);background:linear-gradient(oklch(94% .03 82),oklch(90% .04 78));grid-template-rows:auto auto;grid-template-columns:auto 1fr;align-items:center;gap:14px;padding:18px;display:grid}.your-area .actions-row{grid-column:1/-1}.your-cards{gap:12px;display:flex}.your-meta{flex-direction:column;gap:6px;display:flex}.your-meta .name{font-family:Cinzel,serif;font-size:18px;font-weight:600}.your-meta .coins{color:var(--gold-deep);align-items:center;gap:6px;font-family:Cinzel,serif;font-size:14px;display:flex}.actions-row{grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:6px;display:grid}.action-btn{letter-spacing:.12em;text-transform:uppercase;border-radius:var(--radius);cursor:pointer;border:1px solid var(--parchment-edge);color:var(--ink-2);background:oklch(94% .03 82);flex-direction:column;align-items:center;gap:4px;padding:10px 12px;font-family:Cinzel,serif;font-size:11px;transition:transform .15s,box-shadow .15s,background .15s,border-color .15s;display:flex}.action-btn:hover:not(:disabled){border-color:var(--gold-2);box-shadow:0 4px 10px -6px var(--gold-2);transform:translateY(-1px)}.action-btn:disabled{opacity:.4;cursor:not-allowed}.action-btn .cost{color:var(--gold-deep);letter-spacing:.08em;font-size:10px;font-style:normal}.action-btn.bluff{border-style:dashed}.role-card{filter:drop-shadow(0 6px 12px oklch(20% .04 50/.25));will-change:transform;border-radius:8px;transition:transform .25s,filter .25s;position:relative}.role-card.highlight{transform:translateY(-4px)}.role-card.eliminated{filter:grayscale(.8)drop-shadow(0 4px 8px oklch(20% 0 0/.4));transform:rotate(-3deg)}.role-card svg{width:100%;height:100%;display:block}.role-card .peek-btn{letter-spacing:.12em;text-transform:uppercase;background:linear-gradient(180deg, var(--gold-2), oklch(50% .13 65));color:oklch(97% .03 80);border:1px solid var(--gold-deep);cursor:pointer;border-radius:4px;align-items:center;gap:4px;padding:5px 10px;font-family:Cinzel,serif;font-size:10px;display:inline-flex;position:absolute;bottom:8px;left:50%;transform:translate(-50%);box-shadow:0 3px 8px oklch(20% 0 0/.3)}.role-card .peek-hint{color:var(--ink);border:1px solid var(--gold-2);letter-spacing:.1em;text-transform:uppercase;text-align:center;background:oklch(95% .05 82/.95);border-radius:4px;padding:3px 6px;font-family:Cinzel,serif;font-size:9px;position:absolute;top:6px;left:6px;right:6px}.revealed-stamp{letter-spacing:.2em;color:var(--wax);border:2px solid var(--wax);background:oklch(95% .04 80/.85);border-radius:4px;padding:4px 10px;font-family:Cinzel,serif;font-size:14px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)rotate(-12deg)}.game-log{border:1px solid var(--parchment-edge);border-radius:var(--radius);background:oklch(94% .03 82);flex-direction:column;gap:6px;max-height:180px;padding:14px;font-size:13.5px;display:flex;overflow-y:auto}.game-log .entry{line-height:1.45;animation:.3s ease-out chatIn}.game-log .entry.system{color:var(--ink-soft);font-style:italic}.game-log .entry strong{font-family:Cinzel,serif;font-weight:600}.modal-backdrop{z-index:50;background:oklch(18% .04 50/.72);justify-content:center;align-items:center;animation:.2s ease-out fade;display:flex;position:fixed;inset:0}.modal{border:1px solid var(--gold-deep);border-radius:var(--radius-lg);width:calc(100% - 32px);max-width:480px;box-shadow:0 30px 60px -20px oklch(20% .04 50/.6), 0 0 40px -10px var(--gold-2);background:linear-gradient(oklch(94% .03 82),oklch(90% .04 78));padding:28px;animation:.25s cubic-bezier(.34,1.56,.64,1) modalIn}@keyframes modalIn{0%{opacity:0;transform:scale(.92)translateY(8px)}to{opacity:1;transform:scale(1)translateY(0)}}.modal h2{letter-spacing:.1em;text-align:center;margin:0 0 8px;font-family:Cinzel,serif;font-size:20px}.modal .modal-body{color:var(--ink-2);text-align:center;font-size:14.5px;line-height:1.5}.timer-ring{justify-content:center;align-items:center;width:60px;height:60px;margin:8px auto 14px;font-family:Cinzel,serif;font-size:18px;font-weight:700;display:flex;position:relative}.timer-ring svg{position:absolute;inset:0;transform:rotate(-90deg)}.timer-ring circle{fill:none;stroke-width:4px}.timer-ring .track{stroke:oklch(85% .04 80)}.timer-ring .fill{stroke:var(--wax);stroke-linecap:round;transition:stroke-dashoffset 1s linear}.elim-flash{z-index:60;pointer-events:none;background:radial-gradient(circle,oklch(40% .18 25/.5),oklch(10% .05 25/.95));flex-direction:column;justify-content:center;align-items:center;gap:24px;animation:.3s ease-out elimIn,.5s ease-in 2s forwards elimOut;display:flex;position:fixed;inset:0}@keyframes elimIn{0%{opacity:0}to{opacity:1}}@keyframes elimOut{0%{opacity:1}to{opacity:0}}.elim-flash .elim-text{letter-spacing:.18em;color:oklch(95% .05 80);text-shadow:0 0 20px oklch(95% .05 80/.6);font-family:Cinzel,serif;font-size:48px;animation:.6s ease-out elimText}@keyframes elimText{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.elim-card-flip{animation:.7s cubic-bezier(.34,1.56,.64,1) cardFlip}@keyframes cardFlip{0%{opacity:0;transform:rotateY(0)scale(.6)}50%{transform:rotateY(180deg)scale(1.1)}to{opacity:1;transform:rotateY(360deg)scale(1)}}.winner-screen{z-index:55;background:radial-gradient(circle,oklch(40% .13 75/.4),oklch(18% .04 50/.95));flex-direction:column;justify-content:center;align-items:center;gap:18px;padding:24px;animation:.4s ease-out fade;display:flex;position:fixed;inset:0}.winner-screen .crown-big{filter:drop-shadow(0 0 30px var(--gold));will-change:transform;animation:3s ease-in-out infinite float}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.winner-screen h1{letter-spacing:.12em;color:oklch(95% .08 80);text-shadow:0 0 30px var(--gold);margin:0;font-family:Cinzel,serif;font-size:clamp(32px,10vw,56px)}.winner-screen .who{color:oklch(92% .05 80);text-align:center;padding:0 16px;font-family:Cinzel,serif;font-size:clamp(16px,5vw,24px)}@media (width<=700px){.chamber{min-height:0;padding:14px 10px}.opponents{grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px}.opponent{gap:5px;padding:8px}.opponent .opp-name{font-size:12px}.opponent .opp-meta{font-size:11px}.your-area{grid-template-columns:1fr;align-items:stretch;gap:10px}.your-meta .name{font-size:16px}.game-log{max-height:120px;font-size:12.5px}.mod-banner{gap:10px;padding:10px 14px}.mod-banner .name{font-size:15px}.mod-banner .desc{font-size:12.5px}.game-status{gap:8px;padding:8px 10px}.status-pill{padding:5px 10px;font-size:10px}}@media (width<=480px){.actions-row{grid-template-columns:repeat(4,1fr);gap:5px}.action-btn{letter-spacing:.06em;gap:3px;padding:8px 4px;font-size:9px}.your-cards{gap:8px}.winner-screen{padding:16px}.elim-flash .elim-text{letter-spacing:.12em;font-size:32px}}
