:root{--ink:#1d1233;--sun:#ffd23f;--sun-2:#ffc21a;--paper:#fffaf0;--white-team:#fff;--black-team:#3b2a6b;--pink:#ff4f8b;--mint:#2fd9a0;--sky:#38b6ff;--line:4px;--shadow:0 7px 0 var(--ink)}*{box-sizing:border-box}html,body{min-height:100%;margin:0}body{color:var(--ink);background-color:var(--sun);background-image:linear-gradient(45deg, var(--sun-2) 25%, transparent 25%, transparent 75%, var(--sun-2) 75%), linear-gradient(45deg, var(--sun-2) 25%, transparent 25%, transparent 75%, var(--sun-2) 75%);background-position:0 0,48px 48px;background-size:96px 96px;font-family:Nunito,system-ui,sans-serif;font-weight:800}.stage{flex-direction:column;justify-content:center;align-items:center;gap:18px;min-height:100vh;padding:32px 16px;display:flex;position:relative;overflow:hidden}.logo{letter-spacing:.01em;-webkit-text-stroke:5px var(--ink);paint-order:stroke fill;flex-wrap:wrap;justify-content:center;gap:0 .18em;margin:0;font-family:Bagel Fat One,Nunito,sans-serif;font-size:clamp(3.4rem,15vw,7.5rem);font-weight:400;line-height:.9;display:flex;transform:rotate(-3deg)}.logo span{text-shadow:0 .06em 0 var(--ink);display:inline-block}.logo-chess{color:var(--white-team)}.logo-party{color:var(--pink);animation:2.4s ease-in-out infinite wob;transform:rotate(4deg)}.logo.small{-webkit-text-stroke-width:3px;font-size:clamp(2.2rem,9vw,3.6rem)}@keyframes wob{50%{transform:rotate(-2deg)translateY(-6px)}}.tagline{text-align:center;max-width:30ch;margin:0 0 6px;font-size:1.1rem}.pieces{pointer-events:none;position:absolute;inset:0}.p{color:var(--ink);opacity:.9;font-size:clamp(3rem,9vw,6rem);line-height:1;position:absolute}.p1{color:var(--white-team);-webkit-text-stroke:3px var(--ink);top:12%;left:6%;transform:rotate(-14deg)}.p2{color:var(--black-team);top:9%;right:8%;transform:rotate(10deg)}.p3{color:var(--black-team);bottom:10%;left:9%;transform:rotate(8deg)}.p4{color:var(--white-team);-webkit-text-stroke:3px var(--ink);bottom:14%;right:12%;transform:rotate(-9deg)}.p5{color:var(--pink);opacity:.8;bottom:3%;left:46%;transform:rotate(14deg)}.p6{color:var(--sky);-webkit-text-stroke:3px var(--ink);opacity:.85;top:46%;right:4%;transform:rotate(-6deg)}.landing .p{animation:7s ease-in-out infinite alternate drift}.landing .p1{--r:-14deg;animation-duration:6.2s}.landing .p2{--r:10deg;animation-duration:7.4s;animation-delay:-2s}.landing .p3{--r:8deg;animation-duration:8.1s;animation-delay:-4s}.landing .p4{--r:-9deg;animation-duration:6.8s;animation-delay:-1s}.landing .p5{--r:14deg;animation-duration:9s;animation-delay:-3s}.landing .p6{--r:-6deg;animation-duration:7.7s;animation-delay:-5s}@keyframes drift{0%{transform:translateY(0) rotate(var(--r,0deg))}to{transform:translateY(-22px) rotate(calc(var(--r,0deg) * -.6))}}@media (width<=640px){.p{opacity:.35}}.card{z-index:1;background:var(--paper);border:var(--line) solid var(--ink);width:min(440px,100%);box-shadow:var(--shadow);border-radius:28px;flex-direction:column;gap:18px;padding:22px;display:flex;position:relative}.card-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.card-title{margin:0;font-family:Bagel Fat One,sans-serif;font-size:1.9rem;font-weight:400}.badge{background:var(--sky);border:3px solid var(--ink);white-space:nowrap;border-radius:999px;padding:2px 14px;font-size:1rem}.stats{grid-template-columns:1fr 1fr;gap:12px;display:grid}.stat,.countdown{border:3px solid var(--ink);background:#fff;border-radius:18px;flex-direction:column;gap:2px;padding:10px 14px;display:flex}.countdown{background:var(--mint);align-items:center;padding:14px}.stat-num{font-variant-numeric:tabular-nums;font-family:Bagel Fat One,sans-serif;font-size:2.2rem;font-weight:400;line-height:1.1}.stat-num small{opacity:.55;font-size:1.1rem}.stat-num.big{font-size:3.4rem}.stat-label{opacity:.75;font-size:.9rem}.field{flex-direction:column;gap:6px;font-size:.95rem;display:flex}.field input{font:inherit;color:var(--ink);border:3px solid var(--ink);background:#fff;border-radius:16px;outline:none;padding:12px 16px;font-size:1.2rem}.field input::placeholder{color:#1d123355}.field input:focus-visible,.btn:focus-visible{outline:4px solid var(--sky);outline-offset:2px}.btn{color:#fff;background:var(--pink);border:var(--line) solid var(--ink);cursor:pointer;box-shadow:0 6px 0 var(--ink);-webkit-text-stroke:0;text-shadow:0 3px 0 var(--ink);border-radius:20px;padding:10px 20px 12px;font-family:Bagel Fat One,sans-serif;font-size:1.7rem;transition:transform 80ms,box-shadow 80ms}.btn:hover:not(:disabled){box-shadow:0 8px 0 var(--ink);transform:translateY(-2px)}.btn:active:not(:disabled){box-shadow:0 1px 0 var(--ink);transform:translateY(5px)}.btn:disabled{cursor:not-allowed;text-shadow:none;color:#fff;background:#cfc8dc}.btn.ghost{color:var(--ink);text-shadow:none;background:#fff;font-size:1.3rem}.status{border:3px solid var(--ink);border-radius:14px;margin:0;padding:10px 14px;font-size:.95rem}.status.offline{background:#ffe1a8}.status.error{background:#ffc3d6}.teams{grid-template-columns:1fr 1fr;gap:12px;display:grid}.team{border:3px solid var(--ink);border-radius:18px;min-height:120px;padding:10px 12px 12px}.team-white{background:var(--white-team)}.team-black{background:var(--black-team);color:#fff}.team h3{justify-content:space-between;margin:0 0 8px;font-family:Bagel Fat One,sans-serif;font-size:1.2rem;font-weight:400;display:flex}.team ul{flex-direction:column;gap:6px;max-height:260px;margin:0;padding:0;list-style:none;display:flex;overflow-y:auto}.team li{align-items:center;gap:8px;font-size:.95rem;display:flex}.team .nick{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.team li.me .nick{-webkit-text-decoration:underline wavy var(--pink);text-decoration:underline wavy var(--pink);text-underline-offset:4px}.team em{background:var(--pink);color:#fff;border:2px solid var(--ink);border-radius:999px;padding:0 7px;font-size:.7rem;font-style:normal}.dot{border:3px solid var(--ink);border-radius:50%;flex:none;width:14px;height:14px}.team-white .dot{background:#fff}.team-black .dot{background:var(--black-team);border-color:#fff}@media (prefers-reduced-motion:reduce){.logo-party{animation:none}.btn{transition:none}}.stage.landing{justify-content:flex-start;padding-top:40px;padding-bottom:48px}.newbie{z-index:1;color:var(--ink);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);background:#fff;border-radius:999px;padding:6px 16px;font-size:1rem;text-decoration:none;animation:1.6s ease-in-out infinite nudge;position:relative}.newbie:hover{background:var(--mint)}.newbie:focus-visible{outline:4px solid var(--sky);outline-offset:2px}@keyframes nudge{50%{transform:translateY(4px)}}.game-card,.landing .duel-card{width:min(520px,100%)}.live{border:3px solid var(--ink);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:2px 12px;font-size:.9rem;display:inline-flex}.live-dot{background:var(--pink);border:2px solid var(--ink);border-radius:50%;width:10px;height:10px;animation:1.2s ease-in-out infinite pulse}@keyframes pulse{50%{opacity:.6;transform:scale(1.45)}}.queues{grid-template-columns:1fr 1fr;gap:12px;display:grid}.queues:has(>:only-child){grid-template-columns:1fr}.queue{font:inherit;color:var(--ink);text-align:left;cursor:pointer;border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);background:#fff;border-radius:18px;flex-direction:column;gap:8px;padding:12px;transition:transform .1s,box-shadow .1s,background .15s;display:flex}.queue:hover{box-shadow:0 6px 0 var(--ink);transform:translateY(-2px)}.queue:focus-visible{outline:4px solid var(--sky);outline-offset:2px}.queue.selected.mode-classic{background:#d9f1ff}.queue.selected.mode-groupthink{background:#ffe0ea}.queue.selected{box-shadow:0 4px 0 var(--ink), inset 0 0 0 3px var(--ink)}.queue-head{align-items:center;gap:8px;display:flex}.queue-icon{font-size:1.6rem;line-height:1}.queue-tick{background:var(--mint);border:3px solid var(--ink);border-radius:50%;place-items:center;width:26px;height:26px;margin-left:auto;font-size:.9rem;display:grid}.queue-pitch{min-height:3.4em;font-size:.86rem;font-weight:700;line-height:1.3}.queue-meta{flex-direction:column;gap:1px;display:flex}.queue-players{font-size:.85rem}.queue-players b{font-variant-numeric:tabular-nums;font-family:Bagel Fat One,sans-serif;font-size:1.6rem;font-weight:400;line-height:1}.queue-players small{opacity:.55;font-size:.95rem}.queue-status{opacity:.75;font-variant-numeric:tabular-nums;font-size:.8rem}.queue.counting .queue-status{opacity:1;color:#c2185b}.queue-fill{border:2px solid var(--ink);background:#eee6f7;border-radius:999px;height:8px;overflow:hidden}.queue-fill i{background:var(--mint);height:100%;transition:width .4s;display:block}.queue.mode-groupthink .queue-fill i{background:var(--pink)}@media (width<=480px){.queues{gap:8px}.queue{gap:6px;padding:10px}.queue-icon{font-size:1.2rem}.queue-head .badge{padding:1px 8px;font-size:.85rem}.queue-tick{width:22px;height:22px;font-size:.75rem}.queue-pitch{min-height:4em;font-size:.76rem}}@media (width<=340px){.queues{grid-template-columns:1fr}.queue-pitch{min-height:0}}.how{width:min(720px,100%);scroll-margin-top:16px}.how.fresh{animation:2.4s ease-in-out 3 fresh-glow}@keyframes fresh-glow{50%{box-shadow:0 7px 0 var(--ink), 0 0 0 8px #fffa}}.how .card-head{flex-wrap:wrap}.tabs{border:3px solid var(--ink);background:#eee6f7;border-radius:999px;gap:6px;padding:3px;display:flex}.tab{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:4px 14px;font-size:.9rem}.tab[aria-selected=true]{background:var(--sky);box-shadow:inset 0 0 0 2px var(--ink)}.tab.mode-groupthink[aria-selected=true]{background:var(--pink);color:#fff}.tab:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.how-body{grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);align-items:start;gap:16px;display:grid}@media (width<=680px){.how-body{grid-template-columns:minmax(0,1fr)}}.steps{counter-reset:step;flex-direction:column;gap:10px;margin:0;padding:0;list-style:none;display:flex}.step{align-items:flex-start;gap:10px;animation:.4s ease-out both step-in;display:flex}.step-icon{background:var(--sun);border:3px solid var(--ink);width:40px;height:40px;box-shadow:0 3px 0 var(--ink);border-radius:12px;flex:none;place-items:center;font-size:1.3rem;display:grid}.step-text{font-size:.9rem;font-weight:700;line-height:1.35}.step-text b{font-family:Bagel Fat One,sans-serif;font-size:1.05rem;font-weight:400;display:block}@keyframes step-in{0%{opacity:0;transform:translate(-10px)}}.how-foot{opacity:.75;text-align:center;margin:0;font-size:.85rem}.demo{flex-direction:column;gap:8px;margin:0;display:flex}.demo-screen{border:var(--line) solid var(--ink);background:var(--sky);aspect-ratio:4/3;box-shadow:0 4px 0 var(--ink);border-radius:18px;position:relative;overflow:hidden}.demo-screen .mg-demo{border:0;border-radius:0;flex:none;width:100%;height:100%;position:absolute;inset:0}.demo-play{color:#fff;background:var(--pink);border:var(--line) solid var(--ink);width:76px;height:76px;box-shadow:0 5px 0 var(--ink);cursor:pointer;border-radius:50%;margin:auto;font-size:2rem;position:absolute;inset:0}.demo-play:focus-visible{outline:4px solid var(--sun);outline-offset:3px}.demo-tag{background:var(--ink);color:#fff;pointer-events:none;border-radius:999px;padding:1px 9px;font-size:.72rem;position:absolute;top:8px;left:8px}.demo-tag:before{content:"● ";color:var(--pink)}.demo-caption{align-items:center;gap:8px;display:flex}.demo-name{text-align:center;flex:1;min-width:0;min-height:3.6em;font-size:.85rem;font-weight:700;line-height:1.3}.demo-name b{font-family:Bagel Fat One,sans-serif;font-size:1.05rem;font-weight:400;display:block}.demo-nav{width:34px;height:34px;font:inherit;color:var(--ink);border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);cursor:pointer;background:#fff;border-radius:50%;flex:none;font-size:1.3rem;line-height:1}.demo-nav:active{box-shadow:0 1px 0 var(--ink);transform:translateY(2px)}.demo-nav:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.vote-screen{aspect-ratio:auto;background:#8fd6ff;grid-template-columns:minmax(0,1fr) auto;gap:8px;padding:8px;display:grid}.mini-board{aspect-ratio:1;border:3px solid var(--ink);border-radius:8px;grid-template-columns:repeat(8,1fr);display:grid;position:relative;overflow:hidden}.mb-sq{place-items:center;display:grid;container-type:size}.mb-sq.light{background:#ffeec2}.mb-sq.dark{background:#b88de0}.mb-sq.hot{background:var(--sun)}.mb-pc{font-size:78cqh;line-height:1}.mb-pc.w{color:#fff;-webkit-text-stroke:1px var(--ink);paint-order:stroke fill}.mb-pc.b{color:var(--black-team)}.mb-pc.landed{animation:.45s cubic-bezier(.3,1.8,.5,1) land}@keyframes land{0%{transform:translateY(80%)scale(1.3)}}.mb-arrows{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.mb-arrow{animation:.35s ease-out both arrow-in}.mb-arrow:nth-child(2){animation-delay:.15s}.mb-arrow:nth-child(3){animation-delay:.3s}.mb-arrow line{stroke:var(--pink);stroke-width:.16px;stroke-linecap:round;opacity:.9}.mb-arrow circle{fill:var(--pink);stroke:var(--ink);stroke-width:.07px}.mb-arrow text{fill:#fff;text-anchor:middle;font-family:Bagel Fat One,sans-serif;font-size:.42px}@keyframes arrow-in{0%{opacity:0}}.voters{flex-direction:column;justify-content:center;gap:4px;margin:0;padding:0;list-style:none;display:flex}.voter{border:2px solid var(--ink);background:#fff;border-radius:10px;grid-template-columns:auto auto;align-items:center;gap:0 6px;padding:2px 7px;font-size:.72rem;transition:background .2s,transform .2s;display:grid}.voter-name{font-weight:800}.voter-vote{opacity:0;background:var(--ink);color:#fff;border-radius:999px;justify-self:end;padding:0 6px;font-size:.68rem;transition:opacity .2s}.voter.voted .voter-vote{opacity:1}.voter-lives{color:var(--pink);letter-spacing:1px;grid-column:1/-1;font-size:.66rem;position:relative}.voter.won{background:var(--mint)}.voter.hit{background:#ffc3d6;animation:.4s shake}.minus{color:var(--ink);font-size:.72rem;font-style:normal;animation:.6s ease-out both pop-up;position:absolute;top:-4px;right:-2px}@keyframes shake{25%{transform:translate(-3px)}75%{transform:translate(3px)}}@keyframes pop-up{0%{opacity:0;transform:translateY(6px)}}@media (prefers-reduced-motion:reduce){.landing .p,.newbie,.live-dot,.how.fresh,.step,.mb-pc.landed,.mb-arrow,.voter.hit,.minus{animation:none}.queue,.queue-fill i{transition:none}}.stage.game{justify-content:flex-start;gap:0;min-height:0;padding:0;position:fixed;inset:0}.hud{flex-wrap:wrap;justify-content:center;gap:8px;max-width:560px;display:flex}.chip{background:var(--paper);border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);border-radius:999px;padding:3px 14px;font-size:.95rem}.team-chip.white{background:var(--white-team)}.team-chip.black{background:var(--black-team);color:#fff}.chip .me{color:var(--pink)}.stage.game .hud{z-index:3;max-width:760px;padding:10px 12px 8px;position:relative}.play{flex:1;width:100%;min-height:0;position:relative}.board-layer{border-top:var(--line) solid var(--ink);background:#8fd6ff;position:absolute;inset:0}.board-layer>div{inset:0;position:absolute!important}.board-layer[data-hidden]{visibility:hidden;pointer-events:none}.board-layer.flat{background:0 0;border-top:0;place-items:center;padding:12px;display:grid;container-type:size}.board-layer.flat .board2d{width:min(560px,100cqw,100cqh)}.board-layer.flat>div{position:relative!important}.play-top{z-index:2;pointer-events:none;flex-direction:column;gap:10px;width:min(560px,100% - 24px);display:flex;position:absolute;top:10px;left:50%;transform:translate(-50%)}.play-top>*{pointer-events:auto}.play-top>.banner{pointer-events:none}.phase-minigame .board-layer{filter:saturate(.85)brightness(.92)}.log.caption{z-index:2;text-align:center;width:max-content;max-width:calc(100% - 24px);box-shadow:0 4px 0 var(--ink);pointer-events:none;padding:6px 14px;font-size:.95rem;position:absolute;bottom:12px;left:50%;transform:translate(-50%)}.sound-toggle{cursor:pointer;color:var(--ink);font:inherit;place-items:center;padding:2px 10px;display:inline-grid}.sound-toggle.off{background:var(--ink);color:#fff}.sound-toggle:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.results-overlay{z-index:5;background:#1d123361;place-items:center;padding:16px;animation:.6s ease-out both results-in;display:grid;position:absolute;inset:0}.results-card{max-height:calc(100% - 16px);animation:.6s cubic-bezier(.3,1.5,.5,1) both results-pop;overflow-y:auto}@keyframes results-in{0%{opacity:0}}@keyframes results-pop{0%{transform:translateY(24px)scale(.92)}}@media (prefers-reduced-motion:reduce){.results-overlay,.results-card{animation:none}}@media (aspect-ratio<=3/4){.board-layer:not(.flat)>div{top:10%!important;bottom:-10%!important}.board-layer:not(.flat){background:#b0c7f1;overflow:hidden}}@media (width<=520px){.stage.game .hud{gap:6px;padding:8px 8px 6px}.stage.game .chip{padding:2px 10px;font-size:.8rem}.banner{padding:8px 12px;font-size:1.15rem}.log.caption{font-size:.85rem}}.banner{background:var(--mint);border:var(--line) solid var(--ink);box-shadow:0 5px 0 var(--ink);text-align:center;border-radius:20px;padding:10px 16px;font-family:Bagel Fat One,sans-serif;font-size:1.5rem}.banner.move{background:var(--pink);color:#fff;text-shadow:0 2px 0 var(--ink)}.banner.assign{background:var(--sky)}.banner.busy{opacity:.6;filter:saturate(.6);transition:opacity .2s,filter .2s}.mg-box{touch-action:none;-webkit-user-select:none;user-select:none;cursor:pointer;height:clamp(240px,62dvh,520px)}.mg-box[hidden]{display:none}.mg.mg-board .mg-box{height:clamp(280px,70dvh,600px)}@media (orientation:landscape) and (height<=560px){.mg.mg-board.stage-play>.banner{display:none}.stage.game:has(.mg.mg-board.stage-play)>.hud{display:none}.mg.mg-board.stage-play .mg-box{height:calc(100dvh - 28px)}}.mg-intro{flex-direction:column;align-items:center;gap:4px;animation:.35s cubic-bezier(.3,1.6,.5,1) both mg-intro-in;display:flex}.mg-intro .card-title{color:var(--pink);-webkit-text-stroke:1.5px var(--ink);paint-order:stroke fill;text-shadow:0 2px 0 var(--ink);letter-spacing:.01em;font-size:2.4rem;line-height:1.05}.mg-howto{max-width:30ch;font-size:1.1rem;font-weight:800}.mg-intro-row{justify-content:center;align-items:center;gap:18px;margin-top:6px;display:flex}.mg-intro-side{justify-content:center;align-items:center;gap:18px;display:flex}.mg-intro-row.with-demo{align-self:stretch}.mg-intro-row.with-demo .mg-intro-side{flex-direction:column;gap:10px}.mg-count-wait{visibility:hidden;animation:none}.mg-demo{border:var(--line) solid var(--ink);background:var(--sky);pointer-events:none;border-radius:16px;flex:0 0 45%;width:45%;height:210px;overflow:hidden}.mg-intro-piece{animation:.66s ease-in-out infinite alternate mg-bob}.mg-count{background:var(--sun);border:var(--line) solid var(--ink);width:96px;height:96px;box-shadow:0 5px 0 var(--ink);color:#fff;-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;border-radius:50%;place-items:center;font-family:Bagel Fat One,sans-serif;font-size:3.6rem;line-height:1;animation:.5s cubic-bezier(.3,1.8,.5,1) both mg-count-pop;display:grid}@keyframes mg-intro-in{0%{opacity:0;transform:scale(.85)translateY(-12px)}}@keyframes mg-count-pop{0%{transform:scale(.3)rotate(-14deg)}}@keyframes mg-bob{to{transform:translateY(-8px)}}@media (prefers-reduced-motion:reduce){.mg-intro,.mg-intro-piece,.mg-count{animation:none}}@media (width<=520px){.mg-intro .card-title{font-size:2rem}.mg-howto{font-size:1rem}.mg-count{width:80px;height:80px;font-size:3rem}.mg-intro-row.with-demo{flex-direction:column;gap:10px}.mg-intro-row.with-demo .mg-intro-side{flex-direction:row;gap:18px}.mg-demo{flex:none;width:100%;height:180px}}.overlay{background:var(--paper);border:var(--line) solid var(--ink);box-shadow:var(--shadow);text-align:center;border-radius:24px;padding:18px}.overlay p{margin:6px 0}.muted{opacity:.7}.center{text-align:center;margin:0}.board2d{aspect-ratio:1;border:var(--line) solid var(--ink);width:100%;box-shadow:var(--shadow);background:var(--paper);border-radius:14px;grid-template-columns:repeat(8,1fr);display:grid;position:relative;overflow:hidden}.sq{all:unset;box-sizing:border-box;cursor:default;position:relative}.sq.light{background:#ffeec2}.sq.dark{background:#b88de0}.sq.pick{cursor:pointer;box-shadow:inset 0 0 0 3px var(--sky)}.sq.sel{background:var(--sun)}.sq.dest{cursor:pointer}.sq.dest:after{content:"";background:var(--mint);border:3px solid var(--ink);border-radius:50%;position:absolute;inset:33%}.sq.dest.cap:after{border:5px solid var(--pink);background:0 0;inset:8%}.piece{pointer-events:none;place-items:center;width:12.5%;height:12.5%;transition:left .7s ease-in-out,top .7s ease-in-out;display:grid;position:absolute}.glyph{font-size:clamp(1.6rem,8vw,3.2rem);line-height:1}.piece.white .glyph{color:#fff;-webkit-text-stroke:2px var(--ink);paint-order:stroke fill}.piece.black .glyph{color:var(--black-team);text-shadow:0 0 #fff;-webkit-text-stroke:1px #fff;paint-order:stroke fill}.piece.owned .glyph{filter:drop-shadow(0 2px 0 var(--ink))}.piece.mine{background:radial-gradient(circle, var(--sun) 30%, transparent 70%);outline:4px solid var(--pink);outline-offset:-4px;z-index:2;border-radius:12px}.tag{text-overflow:ellipsis;white-space:nowrap;background:var(--ink);color:#fff;border-radius:6px;max-width:140%;padding:0 4px;font-size:clamp(.5rem,1.9vw,.7rem);line-height:1.2;position:absolute;bottom:-2px;left:50%;overflow:hidden;transform:translate(-50%)}.piece.mine .tag{background:var(--pink)}.log{background:var(--paper);border:3px solid var(--ink);border-radius:16px;flex-direction:column;gap:4px;margin:0;padding:12px 16px;list-style:none;display:flex}.win-banner{text-align:center;text-shadow:0 4px 0 var(--ink);-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;color:var(--pink);margin:0;font-family:Bagel Fat One,sans-serif;font-size:3rem;font-weight:400;line-height:1}.win-banner.white{color:#fff}.win-banner.black{color:var(--black-team);-webkit-text-stroke-color:#fff}.win-banner.lost{color:#cfc8dc}.win-banner.draw{color:var(--sky)}.duel-handicap{margin-top:0;font-size:.95rem}@media (prefers-reduced-motion:reduce){.piece{transition:none}}.chip.out{background:var(--ink);color:#fff}.btn.small{padding:3px 14px;font-size:.95rem}.review{background:#8fd6ff;grid-template-columns:minmax(280px,330px) 1fr;display:grid;position:fixed;inset:0;overflow:hidden}.review-scene{min-width:0;min-height:0;position:relative}.review-scene>div{inset:0;position:absolute!important}.review-panel{z-index:1;background:var(--paper);border-right:var(--line) solid var(--ink);flex-direction:column;min-height:0;display:flex;position:relative;box-shadow:6px 0 #1d12332e}.review-head{justify-content:space-between;align-items:center;gap:10px;padding:12px 16px 6px;display:flex}.review-sheet-toggle{font:inherit;background:var(--sun);color:var(--ink);border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);cursor:pointer;border-radius:999px;padding:3px 12px;font-size:.9rem;display:none}.review-body{flex-direction:column;flex:1;gap:12px;min-height:0;padding:6px 16px 16px;display:flex;overflow-y:auto}.review-tabs{align-self:flex-start}.review-transport{align-items:center;gap:10px;display:flex}.review-transport .btn{flex:1}.review-transport .btn.ghost{font-size:.95rem}.review-speed{grid-template-columns:auto 1fr auto;align-items:center;gap:10px;font-weight:700;display:grid}.review-speed input{accent-color:var(--pink);width:100%;min-width:0}.review-speed output{text-align:center;font-variant-numeric:tabular-nums;min-width:4.2em}.review-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.review-row .seg-btn{padding:5px 10px;font-size:.85rem}.review-mute{background:var(--paper);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink)}.review-mute[aria-pressed=true]{background:var(--ink);color:#fff}.review-group h2{letter-spacing:.02em;margin:4px 0 6px;font-family:Bagel Fat One,sans-serif;font-size:1.15rem;font-weight:400}.review-buttons{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;display:grid}.review-btn{font:inherit;text-align:left;text-transform:capitalize;color:var(--ink);border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);cursor:pointer;background:#fff;border-radius:12px;padding:7px 10px;font-size:.9rem;font-weight:700;transition:transform 80ms,box-shadow 80ms}.review-btn:hover{box-shadow:0 4px 0 var(--ink);transform:translateY(-1px)}.review-btn:active{box-shadow:0 0 0 var(--ink);transform:translateY(3px)}.review-btn:focus-visible{outline:3px solid var(--sky);outline-offset:2px}.review-btn.current{background:var(--sun)}.review-btn.running{background:var(--pink);color:#fff;text-shadow:0 2px 0 var(--ink)}.review-now{border:3px dashed var(--ink);background:#fff;border-radius:12px;margin:0;padding:7px 10px;font-size:.9rem}.sandbox-msg{background:var(--paper);position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.sandbox-title{color:var(--sun);-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink);margin:0;font-family:Bagel Fat One,sans-serif;font-size:clamp(1.6rem,6vw,2.2rem);font-weight:400;transform:rotate(-3deg)}.seg{background:var(--paper);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);border-radius:999px;padding:3px;display:flex}.seg-btn{font:inherit;color:var(--ink);cursor:pointer;background:0 0;border:0;border-radius:999px;padding:6px 14px;font-size:.95rem}.seg-btn[aria-pressed=true].seg-white{background:var(--pink);color:#fff}.seg-btn[aria-pressed=true].seg-black{background:var(--black-team);color:#fff}.seg-btn:focus-visible{outline:3px solid var(--sky);outline-offset:2px}@media (width<=760px){.review{grid-template-rows:1fr auto;grid-template-columns:1fr}.review-scene{grid-row:1}.review-panel{border-right:0;border-top:var(--line) solid var(--ink);border-radius:22px 22px 0 0;grid-row:2;max-height:46vh;box-shadow:0 -6px #1d12332e}.review-head{padding:8px 14px 4px}.sandbox-title{font-size:1.5rem}.review-sheet-toggle{display:inline-block}.sheet-closed .review-body{display:none}.review-buttons{grid-template-columns:repeat(3,minmax(0,1fr))}.review-btn{padding:6px 7px;font-size:.8rem}}.stage.mg-test{justify-content:flex-start;gap:12px;padding:16px}.mg-test-controls{flex-wrap:wrap;justify-content:center;align-items:flex-end;gap:10px;max-width:760px;display:flex}.mg-test-controls select,.mg-test-controls input[type=number]{font:inherit;border:3px solid var(--ink);background:var(--paper);border-radius:12px;padding:6px 10px}.mg-test-controls input[type=number]{width:7em}.mg-test-check{flex-direction:row;align-items:center}.mg-test-play{width:min(560px,100%)}.opening{pointer-events:none;flex-direction:column;align-items:stretch;display:flex}.kickoff-card{background:var(--paper);border:var(--line) solid var(--ink);box-shadow:0 7px 0 var(--ink);border-radius:26px;padding:18px 14px 14px;animation:.6s cubic-bezier(.3,1.45,.5,1) both kick-in;position:relative}.kickoff-card.leaving{animation:.26s cubic-bezier(.5,0,.9,.4) both kick-out}@keyframes kick-in{0%{transform:translateY(-130%)rotate(-7deg)scale(.9)}}@keyframes kick-out{to{opacity:0;transform:translateY(-24px)rotate(3deg)scale(.86)}}.kickoff-eyebrow{background:var(--sun);border:3px solid var(--ink);box-shadow:0 3px 0 var(--ink);white-space:nowrap;border-radius:999px;margin:0;padding:2px 14px;font-family:Bagel Fat One,sans-serif;font-size:1rem;font-weight:400;animation:.9s ease-in-out .6s infinite alternate kick-wob;position:absolute;top:-17px;left:50%;transform:translate(-50%)rotate(-3deg)}@keyframes kick-wob{to{transform:translate(-50%)rotate(3deg)translateY(-2px)}}.vs-title{-webkit-text-stroke:3px var(--ink);paint-order:stroke fill;text-shadow:0 4px 0 var(--ink);justify-content:center;align-items:center;gap:10px;margin:2px 0 12px;font-family:Bagel Fat One,sans-serif;font-size:clamp(2.1rem,10vw,3rem);font-weight:400;line-height:1;display:flex}.vs-name{display:inline-block}.vs-name.white{color:#fff;animation:.5s cubic-bezier(.3,1.6,.5,1) .15s both vs-slam-l}.vs-name.black{color:var(--black-team);animation:.5s cubic-bezier(.3,1.6,.5,1) .15s both vs-slam-r}.vs-vs{background:var(--pink);border:var(--line) solid var(--ink);width:2em;height:2em;box-shadow:0 4px 0 var(--ink);color:#fff;-webkit-text-stroke:2px var(--ink);text-shadow:none;border-radius:50%;flex:none;place-items:center;font-size:.55em;animation:.55s cubic-bezier(.3,1.9,.5,1) .4s both vs-pop;display:grid}@keyframes vs-slam-l{0%{transform:translate(-60vw)rotate(-20deg)}}@keyframes vs-slam-r{0%{transform:translate(60vw)rotate(20deg)}}@keyframes vs-pop{0%{transform:scale(0)rotate(-200deg)}}.vs-rosters{grid-template-columns:1fr 1fr;gap:10px;display:grid}.vs-side{border:3px solid var(--ink);min-width:0;box-shadow:0 4px 0 var(--ink);border-radius:18px;padding:8px 8px 9px;position:relative}.vs-side.white{background:var(--white-team);animation:.5s cubic-bezier(.3,1.4,.5,1) .25s both vs-side-l}.vs-side.black{background:var(--black-team);color:#fff;animation:.5s cubic-bezier(.3,1.4,.5,1) .25s both vs-side-r}@keyframes vs-side-l{0%{opacity:0;transform:translate(-40px)rotate(-4deg)}}@keyframes vs-side-r{0%{opacity:0;transform:translate(40px)rotate(4deg)}}.vs-count{text-align:center;background:var(--sun);min-width:26px;color:var(--ink);border:3px solid var(--ink);border-radius:999px;padding:0 7px;font-family:Bagel Fat One,sans-serif;font-size:.9rem;line-height:1.25;position:absolute;top:-12px;right:10px}.vs-roster{flex-direction:column;gap:4px;margin:0;padding:0;list-style:none;display:flex}.vs-roster li{border-radius:999px;align-items:center;gap:6px;min-width:0;padding:1px 6px;font-size:.95rem;animation:.35s cubic-bezier(.3,1.6,.5,1) both vs-name-in;display:flex}.vs-roster .nick{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vs-roster .dot{border-width:3px;width:12px;height:12px}.vs-roster.white .dot{background:#fff}.vs-roster.black .dot{background:var(--black-team);border-color:#fff}.vs-roster li.me{background:var(--pink);color:#fff;box-shadow:0 0 0 2px var(--ink);text-shadow:0 1px 0 var(--ink)}.vs-roster li.me .dot{border-color:var(--ink);background:var(--sun)}.vs-roster em{background:var(--sun);color:var(--ink);text-shadow:none;border:2px solid var(--ink);border-radius:999px;flex:none;margin-left:auto;padding:0 6px;font-size:.68rem;font-style:normal;line-height:1.3}@keyframes vs-name-in{0%{opacity:0;transform:scale(.5)}}.kickoff-vs.dense{padding:16px 10px 10px}.kickoff-vs.dense .vs-title{margin-bottom:10px;font-size:clamp(1.7rem,8vw,2.4rem)}.kickoff-vs.dense .vs-side{padding:6px 5px}.kickoff-vs.dense .vs-roster{gap:1px}.kickoff-vs.dense .vs-roster li{gap:4px;padding:0 5px;font-size:.74rem;line-height:1.25}.kickoff-vs.dense .vs-roster .dot{border-width:2px;width:8px;height:8px}.kickoff-vs.dense .vs-roster em{border-width:1.5px;padding:0 4px;font-size:.58rem}.kickoff-rule{align-items:center;gap:14px;padding:14px 18px 14px 14px;animation:.55s cubic-bezier(.3,1.6,.5,1) both rule-in;display:flex}.kickoff-rule[data-rule="1"]{transform:rotate(-1.5deg)}.kickoff-rule[data-rule="2"]{transform:rotate(1.5deg)}.kickoff-rule[data-rule="3"]{transform:rotate(-1deg)}.kickoff-rule.leaving{animation:.26s cubic-bezier(.5,0,.9,.4) both rule-out}@keyframes rule-in{0%{transform:translate(-110%)rotate(-12deg)scale(.7)}}@keyframes rule-out{to{transform:translate(110%)rotate(10deg)scale(.8)}}.rule-step{background:var(--ink);color:#fff;border-radius:999px;padding:0 10px;font-family:Bagel Fat One,sans-serif;font-size:.95rem;line-height:1.5;position:absolute;top:-14px;left:16px}.rule-glyph{border:var(--line) solid var(--ink);width:76px;height:76px;box-shadow:0 4px 0 var(--ink);border-radius:50%;flex:none;padding:6px;animation:.6s cubic-bezier(.3,2,.5,1) .18s both glyph-pop,.8s ease-in-out .8s infinite alternate glyph-bob}.kickoff-rule[data-rule="1"] .rule-glyph{background:var(--mint)}.kickoff-rule[data-rule="2"] .rule-glyph{background:var(--sky)}.kickoff-rule[data-rule="3"] .rule-glyph{background:var(--sun)}@keyframes glyph-pop{0%{transform:scale(0)rotate(-40deg)}}@keyframes glyph-bob{to{transform:translateY(-4px)rotate(5deg)}}.rule-text{margin:0;font-size:1.2rem;line-height:1.2}.rule-text b{color:var(--pink);-webkit-text-stroke:1.5px var(--ink);paint-order:stroke fill;text-shadow:0 2px 0 var(--ink);letter-spacing:.01em;margin-bottom:2px;font-family:Bagel Fat One,sans-serif;font-size:1.75rem;font-weight:400;line-height:1.05;display:block}@media (width<=520px){.vs-roster li{font-size:.85rem}.rule-glyph{width:64px;height:64px}.rule-text{font-size:1.02rem}.rule-text b{font-size:1.45rem}}.board2d.kickoff .piece{transform-origin:50% 90%;animation:1.01s linear both kick-pop}@keyframes kick-pop{0%{opacity:0;animation-timing-function:cubic-bezier(.55,0,1,.45);transform:translateY(-420%)scale(.82,1.25)}6%{opacity:1}45.5%{animation-timing-function:ease-out;transform:translateY(0)scale(.82,1.25)}52%{animation-timing-function:ease-out;transform:translateY(0)scale(1.32,.62)}67%{animation-timing-function:ease-in;transform:translateY(-24%)scale(.92,1.1)}80%{animation-timing-function:ease-out;transform:translateY(0)scale(1.12,.86)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.kickoff-card,.kickoff-card.leaving,.kickoff-eyebrow,.vs-name,.vs-vs,.vs-side,.vs-roster li,.rule-glyph,.board2d.kickoff .piece{animation:none}}@media (width>=900px) and (aspect-ratio>=1){.play-top:has(.kickoff-vs){width:380px;left:16px;transform:none}}.badge.mode-groupthink{background:var(--pink);color:#fff}.chip.lives{letter-spacing:1px}.card.reveal{width:100%;box-shadow:0 5px 0 var(--ink);pointer-events:none;padding:10px 16px}.card.reveal p{margin:4px 0 0}.reveal-title{margin:0 0 4px;font-family:Bagel Fat One,sans-serif;font-size:1.15rem}.tally{margin:0;padding:0;font-size:.95rem;list-style:none}.tally li{opacity:.7;padding:2px 0}.tally li.chosen{opacity:1;font-weight:700}.tally li.chosen b{color:var(--pink)}@media (width<=560px){.card.reveal{padding:8px 12px}.tally{font-size:.85rem}}.badge.mode-duel{background:var(--ink);color:#fff}.duel-card .card-title small{opacity:.7;margin-left:4px;font-family:inherit;font-size:1rem}.duel-card{gap:14px}.duel-blurb{margin:0;font-size:.95rem}.duel-actions{grid-template-columns:1fr 1fr;gap:12px;display:grid}.duel-actions .btn{padding:8px 10px 10px;font-size:1.25rem}@media (width<=420px){.duel-actions{grid-template-columns:1fr}}.invite{align-items:stretch;gap:8px;display:flex}.invite-link{min-width:0;font:inherit;color:var(--ink);border:3px solid var(--ink);background:#fff;border-radius:14px;flex:1;padding:8px 12px;font-size:.95rem}.invite-link:focus-visible{outline:4px solid var(--sky);outline-offset:2px}.invite .btn.small{flex:none;min-width:5.5em}.duel-status{background:var(--mint);align-items:center;gap:10px;display:flex}.duel-status .spinner{font-size:1.4rem;animation:1.2s ease-in-out infinite duel-hop;display:inline-block}@keyframes duel-hop{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-5px)rotate(-12deg)}}@media (prefers-reduced-motion:reduce){.duel-status .spinner{animation:none}}.duel-you{margin:0;font-size:.95rem}.duel-chip{background:var(--ink);color:#fff}.duel-names .me{color:var(--pink)}.challenge-card,.draft-overlay{width:100%;box-shadow:0 5px 0 var(--ink);text-align:center;padding:12px 16px;animation:.5s cubic-bezier(.3,1.45,.5,1) both kick-in}.challenge-line,.draft-title{margin:0;font-family:Bagel Fat One,sans-serif;font-size:1.35rem;font-weight:400;line-height:1.15}.challenge-bars{gap:6px;margin-top:10px;display:grid}.challenge-bar{grid-template-columns:5.5em 1fr 3em;align-items:center;gap:8px;font-size:.95rem;display:grid}.challenge-bar .who{text-align:left;text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.challenge-bar .bar,.draft-meter{border:3px solid var(--ink);background:#fff;border-radius:999px;height:16px;position:relative;overflow:hidden}.challenge-bar .bar i,.draft-meter i{background:var(--sky);transition:width .4s ease-out;position:absolute;inset:0 auto 0 0}.challenge-bar.me .bar i{background:var(--pink)}.challenge-bar b{text-align:right}.challenge-verdict{background:var(--sun);border:3px solid var(--ink);border-radius:12px;margin:10px 0 0;padding:4px 10px;font-size:1.05rem}.draft-overlay{background:var(--paper)}.draft-overlay.watching{pointer-events:none;background:var(--sky)}.draft-row{align-items:center;gap:10px;margin-top:8px;display:flex}.draft-meter{flex:1;height:20px}.draft-meter i{background:var(--mint)}.draft-secs{min-width:2.2em;font-family:Bagel Fat One,sans-serif;font-size:1.3rem;font-weight:400}.draft-sub{opacity:.8;margin:6px 0 0;font-size:.85rem}.draft-overlay.watching .draft-sub{opacity:1}.board2d .piece.marked{opacity:.4}.board2d .piece.marked:after{content:"";background:var(--pink);border:2px solid var(--ink);border-radius:3px;height:5px;margin-top:-2px;position:absolute;top:50%;left:10%;right:10%;transform:rotate(-35deg)}.sq.check{box-shadow:inset 0 0 0 5px #ff2d55,inset 0 0 18px 6px #ff2d55b3}.phase-duelMove .play-top{top:64px}.duel-clock{z-index:2;background:var(--paper);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);pointer-events:none;border-radius:999px;align-items:center;gap:8px;max-width:calc(100% - 24px);padding:4px 6px 4px 12px;display:flex;position:absolute}.duel-clock.top{top:10px;left:50%;transform:translate(-50%)}.duel-clock.bottom{bottom:12px;left:12px}.duel-clock .dot{border:2px solid var(--ink);background:var(--white-team);border-radius:50%;flex:none;width:14px;height:14px}.duel-clock.black .dot{background:var(--black-team)}.duel-clock .who{text-overflow:ellipsis;white-space:nowrap;max-width:9em;font-size:.95rem;overflow:hidden}.duel-clock .you{background:var(--pink);color:#fff;border:2px solid var(--ink);border-radius:999px;flex:none;padding:0 6px;font-size:.7rem;font-style:normal}.duel-clock .time{font-variant-numeric:tabular-nums;text-align:center;background:#e9e3f5;border-radius:999px;min-width:3.4em;padding:0 8px;font-family:Bagel Fat One,sans-serif;font-size:1.35rem;font-weight:400}.duel-clock.running .time{background:var(--mint)}.duel-clock.low .time{color:#fff;text-shadow:0 1px 0 var(--ink);background:#ff2d55;animation:1s ease-in-out infinite clock-pulse}@keyframes clock-pulse{50%{transform:scale(1.06)}}.banner.duel-turn{padding:6px 14px;font-size:1.25rem}.banner.check .check-flag{color:var(--sun)}.btn.resign{z-index:3;color:var(--ink);text-shadow:none;background:#fff;position:absolute;bottom:12px;right:12px}.btn.resign.confirm{color:#fff;text-shadow:0 1px 0 var(--ink);background:#ff2d55}@media (width<=520px){.challenge-line,.draft-title{font-size:1.1rem}.duel-clock .time{font-size:1.15rem}.duel-clock .who{max-width:6.5em;font-size:.85rem}.banner.duel-turn{font-size:1.05rem}}@media (prefers-reduced-motion:reduce){.challenge-card,.draft-overlay,.duel-clock.low .time{animation:none}}.party-hour{z-index:1;max-width:min(520px,100%);color:var(--ink);border:3px solid var(--ink);box-shadow:0 4px 0 var(--ink);text-align:center;background:#fff;border-radius:16px;flex-wrap:wrap;justify-content:center;align-items:center;gap:4px 6px;margin:0;padding:8px 16px;font-size:1rem;display:flex;position:relative}.party-hour small{opacity:.7}.party-time{font-variant-numeric:tabular-nums;font-weight:700}.party-hour.live-now{background:var(--pink);color:#fff}.party-hour.live-now .party-icon{animation:1.2s ease-in-out infinite nudge}@media (prefers-reduced-motion:reduce){.party-hour.live-now .party-icon{animation:none}}
