.ah-game{position:relative;display:flex;flex-direction:column;gap:10px;width:100%;flex:1;align-self:stretch;min-height:min(70vh,760px)}.ah-scorebar{display:flex;align-items:center;justify-content:center;gap:clamp(10px,3vw,26px)}.ah-chip{display:inline-flex;align-items:center;gap:8px;max-width:32vw;padding:6px 14px;border-radius:999px;background:var(--card);box-shadow:var(--shadow);font-size:clamp(.95rem,3vw,1.25rem);font-weight:800;white-space:nowrap;overflow:hidden}.ah-dot{flex:none;width:15px;height:15px;border-radius:50%;background:var(--pc, var(--ink));box-shadow:inset 0 0 0 2px #ffffffbf}.ah-total{display:inline-flex;align-items:baseline;gap:clamp(6px,2vw,14px);font-weight:900;font-size:clamp(1.7rem,7vw,2.8rem);line-height:1}.ah-num{display:inline-block;min-width:1.15em;text-align:center;animation:ah-pop .3s ease-out}.ah-vs{font-size:.6em;opacity:.4}.ah-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;touch-action:none;overscroll-behavior:contain}.ah-rink{display:block;border-radius:24px;background:#ddf1fe;box-shadow:var(--shadow);outline:10px solid transparent;outline-offset:-4px;transition:outline-color .15s ease;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer}.ah-goal .ah-rink{outline-color:var(--pc, var(--ink))}.ah-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:2px;padding:clamp(10px,2.5vh,20px) clamp(22px,6vw,44px);background:var(--card);border:6px solid var(--pc, var(--ink));border-radius:999px;box-shadow:var(--shadow);pointer-events:none;animation:ah-banner-pop .25s ease-out}.ah-banner-word{font-size:clamp(1.9rem,9vw,3.6rem);font-weight:900;line-height:1;text-transform:uppercase;letter-spacing:.06em;color:var(--pc, var(--ink))}.ah-banner-name{font-size:clamp(1rem,4vw,1.5rem);font-weight:800;color:var(--ink);opacity:.75}@keyframes ah-pop{0%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes ah-banner-pop{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@media (orientation: landscape){.ah-game{gap:6px;min-height:320px}.ah-chip{padding:4px 12px}.ah-total{font-size:clamp(1.5rem,6vh,2.4rem)}}@media (prefers-reduced-motion: reduce){.ah-num,.ah-banner{animation:none}.ah-rink{transition:none}}.ctd-board{position:relative;display:flex;flex-direction:column;gap:10px;width:100%;flex:1;align-self:stretch;min-height:min(68vh,700px);touch-action:manipulation;overscroll-behavior:contain}.ctd-zone{order:2;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(6px,1.6vh,14px);min-height:0;padding:clamp(8px,2vh,16px);border-radius:var(--radius);background:var(--zone-color, var(--p1));color:#fff;box-shadow:var(--shadow);user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.ctd-zone-0{order:3;background:var(--zone-color, var(--pc0, var(--p0)))}.ctd-zone-1{order:1;background:var(--zone-color, var(--pc1, var(--p1)))}.ctd-stage{order:2;flex:0 0 auto;display:flex;align-items:center;justify-content:center;gap:clamp(10px,3vw,26px);padding:6px 10px}.ctd-head{display:flex;flex-direction:column;align-items:center;gap:4px}.ctd-name{font-size:clamp(1rem,3.6vw,1.7rem);font-weight:800;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 2px 0 rgba(0,0,0,.18)}.ctd-mine{min-height:1.4em;font-size:clamp(.85rem,2.8vw,1.2rem);font-weight:800;text-transform:uppercase;letter-spacing:.06em;opacity:.92}.ctd-btns{display:flex;gap:clamp(8px,2vw,16px);width:100%;max-width:420px}.ctd-btn{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;min-height:clamp(56px,9vh,88px);border:4px solid rgba(255,255,255,.85);border-radius:calc(var(--radius) - 4px);background:#ffffff38;color:#fff;font-family:inherit;cursor:pointer;touch-action:manipulation;box-shadow:inset 0 0 0 2px #0000001f;transition:transform .1s ease,background .15s ease,filter .15s ease}.ctd-btn-face{font-size:clamp(1.5rem,5.5vw,2.6rem);font-weight:900;line-height:1;text-shadow:0 2px 0 rgba(0,0,0,.22)}.ctd-btn-word{font-size:clamp(.7rem,2.2vw,1rem);font-weight:800;text-transform:uppercase;letter-spacing:.18em}.ctd-btn:not(:disabled):active{transform:scale(.94)}.ctd-btn:focus-visible{outline:5px solid rgba(255,255,255,.9);outline-offset:-6px}.ctd-btn-on{background:#fff;color:var(--zone-color);animation:ctd-lock .2s ease-out}.ctd-btn:disabled:not(.ctd-btn-on){filter:saturate(.55) brightness(.85);cursor:default}.ctd-vsbot .ctd-zone-1 .ctd-btn{pointer-events:none}.ctd-pips{display:flex;gap:clamp(6px,1.8vw,12px)}.ctd-pip{width:clamp(14px,3vw,22px);aspect-ratio:1;border-radius:50%;background:#ffffff47;box-shadow:inset 0 0 0 3px #ffffffbf}.ctd-pip-on{background:#fff}.ctd-round{font-size:clamp(.8rem,2.6vw,1.05rem);font-weight:900;letter-spacing:.2em;text-transform:uppercase;color:var(--ink);opacity:.55}.ctd-coin-wrap{perspective:700px}.ctd-spinner{transform-style:preserve-3d}.ctd-phase-spin .ctd-spinner{animation:ctd-flip .42s linear infinite}.ctd-coin{display:grid;place-items:center;width:clamp(84px,20vw,140px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 34% 30%,#ffe9a8,#f7c948 55%,#d9a413);border:5px solid #b98a0a;box-shadow:0 8px #00000024,inset 0 -4px 8px #78500059,inset 0 4px 8px #ffffffa6;color:#7a5600;font-size:clamp(2rem,8vw,4rem);font-weight:900;text-shadow:0 2px 0 rgba(255,255,255,.45)}.ctd-phase-spin .ctd-coin{animation:ctd-squish .42s linear infinite}.ctd-phase-reveal .ctd-coin{animation:ctd-land .35s ease-out}.ctd-status{min-width:clamp(90px,24vw,180px);font-size:clamp(1rem,3.8vw,1.7rem);font-weight:900;text-transform:uppercase;letter-spacing:.05em;color:var(--ink);text-align:center}.ctd-phase-spin .ctd-status{animation:ctd-pulse .7s ease-in-out infinite}.ctd-divider{order:0;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;pointer-events:none;display:flex;align-items:center;justify-content:center;color:var(--ink);opacity:.4}.ctd-divider span{font-weight:900;font-size:.85rem;letter-spacing:.25em;background:var(--bg, #ffffff);padding:2px 6px;border-radius:999px}.ctd-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:clamp(10px,2.5vh,18px) clamp(20px,5vw,40px);background:#fff;color:var(--banner-color, var(--ink));border:6px solid var(--banner-color, var(--ink));border-radius:999px;box-shadow:var(--shadow);text-align:center;animation:ctd-pop .25s ease-out}.ctd-banner-title{font-weight:900;font-size:clamp(1.05rem,4.5vw,2rem);white-space:nowrap}.ctd-banner-score{font-weight:800;font-size:clamp(.95rem,3vw,1.3rem);color:var(--ink);opacity:.65}@keyframes ctd-flip{0%{transform:rotateY(0)}to{transform:rotateY(360deg)}}@keyframes ctd-squish{0%,to{transform:scaleX(1)}50%{transform:scaleX(.72)}}@keyframes ctd-land{0%{transform:translateY(-14%) scale(1.06)}70%{transform:translateY(0) scale(.96)}to{transform:translateY(0) scale(1)}}@keyframes ctd-pulse{0%,to{transform:scale(1);opacity:1}50%{transform:scale(1.07);opacity:.75}}@keyframes ctd-pop{0%{transform:translate(-50%,-50%) scale(.55);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@keyframes ctd-lock{0%{transform:scale(.9)}to{transform:scale(1)}}@media (orientation: landscape){.ctd-board{flex-direction:row;min-height:320px}.ctd-zone-0{order:1}.ctd-zone-1{order:3}.ctd-stage{order:2;flex-direction:column}.ctd-btns{max-width:none}}@media (prefers-reduced-motion: reduce){.ctd-phase-spin .ctd-spinner,.ctd-phase-spin .ctd-coin,.ctd-phase-spin .ctd-status,.ctd-phase-reveal .ctd-coin,.ctd-banner,.ctd-btn-on{animation:none}}.c4-root{--c4-face: #2563c9;--c4-face-dark: #1d4fa8;width:100%;max-width:min(480px,94vw,calc((100dvh - 250px) * 7 / 6));min-width:260px;display:flex;flex-direction:column;gap:10px}@supports not (height: 100dvh){.c4-root{max-width:min(480px,94vw,calc((100vh - 250px) * 7 / 6))}}.c4-status{display:flex;justify-content:center;gap:12px;flex-wrap:wrap}.c4-player{display:inline-flex;align-items:center;gap:8px;padding:6px 14px;border-radius:999px;background:#2b244014;font-weight:700;opacity:.55;transform:scale(.96);transition:opacity .15s ease,transform .15s ease,box-shadow .15s ease}.c4-player.c4-turn{opacity:1;transform:scale(1);box-shadow:0 0 0 3px var(--pc, var(--ink))}.c4-player:first-child{--pc: var(--pc0)}.c4-player:last-child{--pc: var(--pc1)}.c4-mini{width:18px;height:18px;border-radius:50%;border:2px solid rgba(255,255,255,.85);box-shadow:inset -2px -3px 4px #00000040,inset 2px 2px 3px #fff6}.c4-turn-note{font-size:.85rem;opacity:.75}.c4-banner{text-align:center;font-size:clamp(1.1rem,4vw,1.5rem);font-weight:700}.c4-banner-tie{color:var(--ink)}.c4-frame{position:relative;background:var(--c4-face);border-radius:18px;padding:clamp(8px,2vw,12px);border:3px solid var(--c4-face-dark);box-shadow:0 8px #2b24402e}.c4-head{display:grid;grid-template-columns:repeat(7,1fr);margin-bottom:4px}.c4-head-btn{min-height:48px;height:48px;padding:0;border:none;border-radius:10px;background:transparent;box-shadow:none;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;transition:background .12s ease}.c4-head-btn:hover:not(:disabled){background:#ffffff38;transform:none}.c4-head-btn:active:not(:disabled){transform:scale(.92);box-shadow:none}.c4-ghost{width:58%;aspect-ratio:1;max-height:38px;border-radius:50%;opacity:.9;box-shadow:inset -2px -3px 5px #0000004d,inset 2px 2px 4px #ffffff73}.c4-full-col{opacity:.35;cursor:default}.c4-head-btn:disabled .c4-ghost{opacity:0}.c4-grid{position:relative;display:grid;grid-template-columns:repeat(7,1fr)}.c4-col{display:flex;flex-direction:column}.c4-cell{aspect-ratio:1;display:flex;align-items:center;justify-content:center}.c4-disc{width:80%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 32% 28%,#ffffffbf,#fff0 45%),var(--dc);box-shadow:inset -3px -5px 7px #00000047,inset 3px 4px 5px #ffffff59,0 2px 3px #00000040}.c4-p0{--dc: var(--pc0)}.c4-p1{--dc: var(--pc1)}.c4-dropping{animation:c4-fall .32s cubic-bezier(.55,0,1,.45) both,c4-bounce .18s .32s ease-out}@keyframes c4-fall{0%{transform:translateY(var(--fall-from))}to{transform:translateY(0)}}@keyframes c4-bounce{0%{transform:translateY(0) scaleY(1)}40%{transform:translateY(-9%) scaleY(1.04)}to{transform:translateY(0) scaleY(1)}}.c4-face{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:repeat(7,1fr);grid-template-rows:repeat(6,auto);pointer-events:none}.c4-hole{aspect-ratio:1;background:radial-gradient(circle closest-side at 50% 50%,rgba(0,0,0,0) 0 84%,rgba(0,0,0,.3) 88%,rgba(255,255,255,.12) 94%,var(--c4-face) 100%)}.c4-win-cell{z-index:1}.c4-win-cell .c4-disc{animation:c4-win-pulse .45s ease-in-out infinite alternate;box-shadow:0 0 0 4px #fff,0 0 16px 6px #ffffffa6,inset -3px -5px 7px #00000047,inset 3px 4px 5px #ffffff59}@keyframes c4-win-pulse{0%{filter:brightness(1)}to{filter:brightness(1.35)}}@keyframes c4-pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@media (prefers-reduced-motion: reduce){.c4-dropping,.c4-win-cell .c4-disc,.c4-banner{animation:none}}.db-wrap{--db-d: clamp(13px, 3.8vw, 17px);--db-g: clamp(30px, 9.5vw, 54px);--db-hit: clamp(32px, var(--db-g) * .85, 44px);display:flex;flex-direction:column;align-items:center;gap:14px;width:100%}.db-scorebar{display:flex;gap:12px;flex-wrap:wrap;justify-content:center}.db-score{--pc: var(--ink);display:inline-flex;align-items:center;gap:8px;font-size:1.15rem;font-weight:700;padding:8px 16px;border-radius:999px;background:#2b244012;opacity:.55;transition:opacity .15s ease,transform .15s ease,box-shadow .15s ease,outline-color .15s ease;outline:3px solid transparent}.db-score.turn{opacity:1;transform:scale(1.06);box-shadow:var(--shadow);outline-color:var(--pc)}.db-swatch{width:16px;height:16px;border-radius:50%;background:var(--pc);border:2px solid #ffffff;box-shadow:0 0 0 1px #2b244040}.db-board{display:grid;background:var(--card);padding:clamp(10px,3vw,20px);border-radius:var(--radius);box-shadow:var(--shadow);touch-action:manipulation}.db-dot{width:var(--db-d);height:var(--db-d);border-radius:50%;background:var(--ink);place-self:center}.db-edge{min-height:0;min-width:0;padding:0;border:none;background:transparent;box-shadow:none;border-radius:0;cursor:pointer;display:flex;align-items:center;justify-content:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent}.db-edge.h{height:var(--db-hit);width:100%;align-self:center}.db-edge.v{width:var(--db-hit);height:100%;justify-self:center}.db-line{display:block;background:#2b244029;border-radius:999px;transition:background .15s ease}.db-edge.h .db-line{width:100%;height:7px}.db-edge.v .db-line{width:7px;height:100%}.db-edge:not(.taken):hover .db-line{background:#2b244066}.db-edge.taken,.db-edge:disabled{cursor:default}.db-edge.taken .db-line{background:var(--own)}.db-box{place-self:stretch;margin:4px;border-radius:10px;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:clamp(1rem,5vw,1.6rem);text-shadow:0 2px 0 rgba(43,36,64,.25)}.db-box.claimed{animation:db-pop .25s ease}@keyframes db-pop{0%{transform:scale(.4);opacity:.3}70%{transform:scale(1.12)}to{transform:scale(1);opacity:1}}.db-turn{margin:0;font-size:1.2rem;font-weight:700;opacity:.75}.hl-root{display:flex;flex-direction:column;justify-content:space-between;align-items:center;gap:clamp(8px,2vmin,16px);width:min(94vw,640px);min-height:min(78vh,720px);margin:0 auto}.hl-zone{--paper: #fffaf0;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(8px,2vmin,14px);width:100%;padding:clamp(10px,2.5vmin,18px);background:var(--zone-color-soft, var(--paper));border-radius:clamp(16px,4vmin,24px);box-shadow:0 4px #00000014;border-top:6px solid var(--zone-color);transition:box-shadow .25s,transform .25s,opacity .25s}.hl-win{box-shadow:0 4px #0000001f,0 0 0 5px var(--zone-color);transform:scale(1.02)}.hl-lose{opacity:.65}.hl-head{display:flex;align-items:center;gap:8px;max-width:100%}.hl-dot{width:12px;height:12px;border-radius:50%;background:var(--zone-color);flex-shrink:0}.hl-name{font-weight:800;font-size:clamp(.95rem,2.6vmin,1.15rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.hl-pips{display:flex;gap:5px;margin-left:4px}.hl-pip{width:11px;height:11px;border-radius:50%;background:#0000001f;transition:background .2s}.hl-pip-on{background:var(--zone-color);animation:hl-pop .3s cubic-bezier(.34,1.56,.64,1) both}@keyframes hl-pop{0%{transform:scale(0)}to{transform:scale(1)}}.hl-card{width:clamp(84px,18vmin,120px);aspect-ratio:3 / 4;perspective:600px}.hl-inner{position:relative;width:100%;height:100%;transform-style:preserve-3d;transition:transform .45s cubic-bezier(.34,1.2,.5,1)}.hl-up .hl-inner{transform:rotateY(180deg)}.hl-face{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;border-radius:clamp(10px,2.5vmin,16px);backface-visibility:hidden;font-weight:800}.hl-back{background:repeating-linear-gradient(-45deg,var(--zone-color) 0 8px,transparent 8px 16px),#fff;color:var(--zone-color);font-size:clamp(1.8rem,6vmin,2.6rem);box-shadow:inset 0 0 0 4px #fff}.hl-front{background:#fff;color:#22252b;font-size:clamp(2.4rem,9vmin,3.6rem);transform:rotateY(180deg);box-shadow:inset 0 0 0 4px var(--zone-color);animation:hl-bounce-in .35s cubic-bezier(.34,1.56,.64,1) both}@keyframes hl-bounce-in{0%{transform:rotateY(180deg) scale(.7)}to{transform:rotateY(180deg) scale(1)}}.hl-btns{display:flex;gap:clamp(8px,2vmin,12px)}.hl-btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;min-height:48px;min-width:96px;padding:10px 18px;border-radius:999px;background:#fff;color:#22252b;font-weight:800;font-size:clamp(.85rem,2.4vmin,1rem);letter-spacing:.03em;cursor:pointer;box-shadow:0 4px #00000026;transition:transform .1s,box-shadow .1s,background .15s,opacity .15s}.hl-btn:not(:disabled):hover{background:#f4f1ff}.hl-btn:not(:disabled):active{transform:translateY(2px) scale(.97);box-shadow:0 2px #00000026}.hl-btn-on{background:var(--zone-color);color:#fff;box-shadow:0 4px #0003,0 0 0 3px #fff9 inset}.hl-btn:disabled{cursor:default;opacity:.55}.hl-center{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}.hl-score{font-weight:800;font-size:clamp(.9rem,2.6vmin,1.1rem);color:#444a55}.hl-note{font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:clamp(.72rem,2.2vmin,.88rem);color:#8a90a0;min-height:1.2em}.hl-reveal .hl-note{color:#22252b}@media (prefers-reduced-motion: reduce){.hl-inner,.hl-front,.hl-pip-on,.hl-win{animation-duration:.01ms;animation-iteration-count:1;transition-duration:.01ms}}.mm{display:flex;flex-direction:column;align-items:center;gap:14px;width:100%;max-width:480px}.mm-scoreboard{display:flex;justify-content:center;flex-wrap:wrap;gap:12px}.mm-score{display:inline-flex;align-items:center;gap:8px;padding:8px 18px;border-radius:999px;background:var(--card);border:3px solid transparent;box-shadow:var(--shadow);opacity:.7;transition:transform .15s ease,border-color .15s ease,opacity .15s ease}.mm-score-active{opacity:1;transform:scale(1.06);border-color:var(--mm-color)}.mm-dot{width:16px;height:16px;border-radius:50%;background:var(--mm-color);box-shadow:0 0 0 2px #fff inset}.mm-score-name{font-size:1.05rem;font-weight:700}.mm-score-count{min-width:34px;text-align:center;font-size:1.1rem;font-weight:700;color:#fff;background:var(--mm-color);border-radius:999px;padding:3px 10px}.mm-turn-note{margin:0;font-size:1.15rem;font-weight:700;color:#fff;text-shadow:0 2px 0 rgba(43,36,64,.25);background:linear-gradient(160deg,var(--mm-turn),rgba(43,36,64,.25)),var(--mm-turn);padding:6px 22px;border-radius:999px;box-shadow:var(--shadow)}.mm-board{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;width:100%;perspective:900px}.mm-card{aspect-ratio:1 / 1;min-height:0;min-width:0;padding:0;border:none;background:transparent;border-radius:18px;cursor:pointer;box-shadow:none}.mm-card:disabled{cursor:default}.mm-inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .35s cubic-bezier(.34,1.4,.64,1)}.mm-up .mm-inner{transform:rotateY(180deg)}.mm-side{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;border-radius:18px;backface-visibility:hidden;-webkit-backface-visibility:hidden;box-shadow:var(--shadow)}.mm-back{background-color:var(--mm-turn);background-image:radial-gradient(circle at 28% 28%,#ffffff80 0,#ffffff80 11%,#fff0 13%),radial-gradient(circle at 72% 70%,#ffffff59 0,#ffffff59 9%,#fff0 11%),linear-gradient(155deg,#ffffff59,#2b244047);overflow:hidden}.mm-board-locked .mm-back{filter:saturate(.55)}.mm-back-mark{font-size:clamp(1.6rem,6vw,2.4rem);line-height:1;opacity:.9;text-shadow:0 2px 0 rgba(43,36,64,.3)}.mm-front{transform:rotateY(180deg);background:var(--card);font-size:clamp(1.9rem,7vw,2.8rem);line-height:1}.mm-matched{pointer-events:none}.mm-matched .mm-front{outline:4px solid var(--mm-owner, var(--ink));outline-offset:-6px;animation:mm-pop .35s ease}@keyframes mm-pop{0%{transform:rotateY(180deg) scale(1)}50%{transform:rotateY(180deg) scale(1.12)}to{transform:rotateY(180deg) scale(1)}}@media (max-width: 420px){.mm-board{gap:8px}.mm-score{padding:6px 12px}}@media (orientation: landscape) and (max-height: 500px){.mm{max-width:min(480px,58vh)}}@media (prefers-reduced-motion: reduce){.mm-inner,.mm-score,.mm-matched .mm-front{transition:none;animation:none}}.pg-game{position:relative;display:flex;flex-direction:column;gap:10px;width:100%;flex:1;align-self:stretch;min-height:min(70vh,760px)}.pg-scorebar{display:flex;align-items:center;justify-content:center;gap:clamp(10px,3vw,26px)}.pg-chip{display:inline-flex;align-items:center;gap:8px;max-width:32vw;padding:6px 14px;border-radius:999px;background:var(--card);box-shadow:var(--shadow);font-size:clamp(.95rem,3vw,1.25rem);font-weight:800;white-space:nowrap;overflow:hidden}.pg-dot{flex:none;width:15px;height:15px;border-radius:50%;background:var(--pc, var(--ink));box-shadow:inset 0 0 0 2px #ffffffbf}.pg-total{display:inline-flex;align-items:baseline;gap:clamp(6px,2vw,14px);font-weight:900;font-size:clamp(1.7rem,7vw,2.8rem);line-height:1}.pg-num{display:inline-block;min-width:1.15em;text-align:center;animation:pg-pop .3s ease-out}.pg-vs{font-size:.6em;opacity:.4}.pg-stage{position:relative;flex:1;min-height:0;display:flex;align-items:center;justify-content:center;touch-action:none;overscroll-behavior:contain}.pg-court{display:block;border-radius:24px;background:#eaf6d8;box-shadow:var(--shadow);outline:10px solid transparent;outline-offset:-4px;transition:outline-color .15s ease;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;cursor:pointer}.pg-point .pg-court{outline-color:var(--pc, var(--ink))}.pg-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:2;display:flex;flex-direction:column;align-items:center;gap:2px;padding:clamp(10px,2.5vh,20px) clamp(22px,6vw,44px);background:var(--card);border:6px solid var(--pc, var(--ink));border-radius:999px;box-shadow:var(--shadow);pointer-events:none;animation:pg-banner-pop .25s ease-out}.pg-banner-word{font-size:clamp(1.9rem,9vw,3.6rem);font-weight:900;line-height:1;text-transform:uppercase;letter-spacing:.06em;color:var(--pc, var(--ink))}.pg-banner-name{font-size:clamp(1rem,4vw,1.5rem);font-weight:800;color:var(--ink);opacity:.75}@keyframes pg-pop{0%{transform:scale(1.8)}to{transform:scale(1)}}@keyframes pg-banner-pop{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@media (orientation: landscape){.pg-game{gap:6px;min-height:320px}.pg-chip{padding:4px 12px}.pg-total{font-size:clamp(1.5rem,6vh,2.4rem)}}@media (prefers-reduced-motion: reduce){.pg-num,.pg-banner{animation:none}.pg-court{transition:none}}.td-board{position:relative;display:flex;flex-direction:column;gap:10px;width:100%;flex:1;align-self:stretch;min-height:min(68vh,700px);touch-action:manipulation;overscroll-behavior:contain}.td-zone{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(8px,2vh,20px);min-height:0;padding:12px;border:none;border-radius:var(--radius);background:var(--zone-color, var(--p1));color:#fff;font-family:inherit;cursor:pointer;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;box-shadow:var(--shadow);transition:filter .15s ease,background .12s ease}.td-zone:focus-visible{outline:6px solid rgba(255,255,255,.85);outline-offset:-8px}.td-ready .td-zone{filter:saturate(.7) brightness(.9)}.td-go,.td-go .td-zone{background:var(--td-green, #2ecc4e)}.td-go .td-zone{filter:none}.td-early{background:#d81f33;animation:td-shake .45s ease-in-out}.td-name{font-size:clamp(1.1rem,4vw,2rem);font-weight:800;letter-spacing:.04em;text-transform:uppercase;text-shadow:0 2px 0 rgba(0,0,0,.18)}.td-call{font-size:clamp(2.4rem,11vw,6rem);font-weight:900;line-height:1;text-shadow:0 4px 0 rgba(0,0,0,.22)}.td-ready .td-call{font-size:clamp(1.9rem,8vw,4.5rem);animation:td-pulse 1s ease-in-out infinite}.td-pips{display:flex;gap:clamp(8px,2vw,14px)}.td-pip{width:clamp(16px,3.5vw,24px);aspect-ratio:1;border-radius:50%;background:#ffffff47;box-shadow:inset 0 0 0 3px #ffffffbf}.td-pip-on{background:#fff}.td-divider{display:flex;align-items:center;justify-content:center;gap:12px;color:var(--ink);opacity:.5}.td-divider:before,.td-divider:after{content:"";flex:1;height:3px;border-radius:999px;background:currentColor;opacity:.35}.td-divider span{font-weight:900;font-size:.95rem;letter-spacing:.25em}.td-banner{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:3;pointer-events:none;display:flex;flex-direction:column;align-items:center;gap:4px;padding:clamp(10px,2.5vh,18px) clamp(20px,5vw,40px);background:#fff;color:var(--banner-color, var(--ink));border:6px solid var(--banner-color, var(--ink));border-radius:999px;box-shadow:var(--shadow);text-align:center;animation:td-pop .25s ease-out}.td-banner-title{font-weight:900;font-size:clamp(1.15rem,5vw,2.3rem);white-space:nowrap}.td-banner-score{font-weight:800;font-size:clamp(.95rem,3vw,1.3rem);color:var(--ink);opacity:.65}@keyframes td-pulse{0%,to{transform:scale(1)}50%{transform:scale(1.09)}}@keyframes td-pop{0%{transform:translate(-50%,-50%) scale(.55);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}.td-go .td-zone{animation:td-zone-pop .15s ease-out}@keyframes td-zone-pop{0%{transform:scale(.96)}to{transform:scale(1)}}@keyframes td-shake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-7px)}40%,60%{transform:translate(7px)}}@media (orientation: landscape){.td-board{flex-direction:row;min-height:320px}.td-divider{flex-direction:column}.td-divider:before,.td-divider:after{width:3px;height:auto}}@media (prefers-reduced-motion: reduce){.td-ready .td-call,.td-early,.td-go .td-zone,.td-banner{animation:none}}.ttt-root{--line: #ffd166;--paper: #fffaf0;--flash: #ffe9b8;display:flex;flex-direction:column;align-items:center;gap:clamp(12px,3vmin,22px);width:100%}.ttt-status{display:flex;justify-content:center;flex-wrap:wrap;gap:clamp(10px,3vw,24px)}.ttt-badge{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:999px;background:var(--paper);box-shadow:0 3px #00000014;opacity:.55;transform:scale(.96);transition:opacity .2s,transform .2s,box-shadow .2s}.ttt-badge.ttt-active{opacity:1;transform:scale(1);box-shadow:0 4px #00000024,0 0 0 4px var(--pc0)}.ttt-badge:nth-child(2).ttt-active{box-shadow:0 4px #00000024,0 0 0 4px var(--pc1)}.ttt-mini{display:inline-flex;width:20px;height:20px;flex-shrink:0}.ttt-mini .ttt-glyph,.ttt-mark .ttt-glyph{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:13;stroke-linecap:round}.ttt-name{font-weight:800;font-size:clamp(.95rem,2.5vmin,1.15rem)}.ttt-turn-note{font-size:clamp(.7rem,2vmin,.85rem);font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:#b26a00}.ttt-thinking{animation:ttt-blink 1s ease-in-out infinite}@keyframes ttt-blink{50%{opacity:.4}}.ttt-grid{display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:clamp(8px,2vmin,12px);width:min(90vw,60vh);aspect-ratio:1;padding:clamp(8px,2vmin,12px);background:var(--line);border-radius:clamp(18px,4vmin,28px);box-shadow:0 6px #0000001a}.ttt-cell{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;margin:0;padding:0;display:flex;align-items:center;justify-content:center;background:var(--paper);border-radius:clamp(10px,2.5vmin,16px);cursor:pointer;transition:background .15s,transform .1s}.ttt-cell:not(:disabled):hover{background:#fff3d6}.ttt-cell:not(:disabled):active{transform:scale(.94)}.ttt-cell:disabled{cursor:default}.ttt-mark{display:block;width:64%;height:64%;animation:ttt-pop .28s cubic-bezier(.34,1.56,.64,1) both}.ttt-win{animation:ttt-flash .55s ease-in-out infinite alternate}.ttt-win .ttt-mark{animation:ttt-pop .28s cubic-bezier(.34,1.56,.64,1) both,ttt-pulse .55s ease-in-out .28s infinite alternate}@keyframes ttt-pop{0%{transform:scale(0) rotate(-12deg)}to{transform:scale(1) rotate(0)}}@keyframes ttt-flash{0%{background:var(--paper)}to{background:var(--flash)}}@keyframes ttt-pulse{0%{transform:scale(1);filter:drop-shadow(0 0 2px currentColor)}to{transform:scale(1.12);filter:drop-shadow(0 0 14px currentColor)}}@media (prefers-reduced-motion: reduce){.ttt-mark,.ttt-win,.ttt-win .ttt-mark,.ttt-thinking{animation-duration:.01ms;animation-iteration-count:1}}.tw-board{position:relative;display:flex;flex-direction:column;width:100%;flex:1;align-self:stretch;min-height:min(66vh,680px);overflow:hidden;border-radius:var(--radius);background:linear-gradient(180deg,#fff,#fff4e0);box-shadow:var(--shadow);touch-action:none;overscroll-behavior:contain;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent}.tw-board:before,.tw-board:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;pointer-events:none;border-radius:inherit}.tw-board:before{box-shadow:inset 70px 0 90px -40px var(--p0);opacity:var(--glow-l, 0)}.tw-board:after{box-shadow:inset -70px 0 90px -40px var(--p1);opacity:var(--glow-r, 0)}.tw-zone{position:absolute;top:0;bottom:0;z-index:2;width:50%;display:flex;flex-direction:column;gap:clamp(6px,1.6vh,14px);padding:clamp(10px,2.4vh,22px) clamp(10px,2.6vw,26px);border:none;background:transparent;color:var(--ink);font-family:inherit;cursor:pointer;touch-action:none;-webkit-tap-highlight-color:transparent;transition:background .12s ease}.tw-zone:focus-visible{outline:5px solid rgba(43,36,64,.55);outline-offset:-10px;border-radius:var(--radius)}.tw-zone:active{background:#ffffff8c}.tw-zone-l{left:0;align-items:flex-start}.tw-zone-r{right:0;align-items:flex-end;text-align:right}.tw-tag{display:inline-flex;align-items:center;gap:8px;max-width:100%;padding:5px 14px;border-radius:999px;background:var(--pc);color:#fff;font-weight:800;font-size:clamp(.9rem,3vw,1.25rem);letter-spacing:.03em;text-transform:uppercase;text-shadow:0 2px 0 rgba(0,0,0,.18);box-shadow:0 3px #2b24402e;white-space:nowrap;overflow:hidden}.tw-dot{flex:none;width:13px;height:13px;border-radius:50%;background:#fff;box-shadow:0 0 0 2px #ffffff8c}.tw-count{font-weight:900;font-size:clamp(1.7rem,6vw,2.9rem);line-height:1;color:var(--ink);opacity:.85;font-variant-numeric:tabular-nums}.tw-pips{display:flex;gap:clamp(6px,1.6vw,11px)}.tw-pip{width:clamp(13px,3vw,21px);aspect-ratio:1;border-radius:50%;background:#2b244024;box-shadow:inset 0 0 0 3px #fffc;transition:background .12s ease,transform .12s ease}.tw-pip-on{background:var(--pipc);transform:scale(1.12)}.tw-arena{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.tw-track{position:absolute;left:6%;right:6%;top:50%;height:clamp(12px,2.6vh,20px);transform:translateY(-50%);border-radius:999px;background:repeating-linear-gradient(90deg,#b97a3d,#b97a3d 14px,#a06428 14px,#a06428 28px);box-shadow:0 4px #2b24402e}.tw-line{position:absolute;top:50%;width:6px;height:clamp(70px,17vh,130px);transform:translate(-50%,-50%);border-radius:4px;background:repeating-linear-gradient(180deg,var(--lc) 0px,var(--lc) 12px,transparent 12px,transparent 22px)}.tw-line:after{content:"🚩";position:absolute;top:calc(100% + 2px);left:50%;transform:translate(-50%);font-size:clamp(15px,3.4vh,24px);line-height:1}.tw-line-l{left:30%;--lc: var(--p0)}.tw-line-r{left:70%;--lc: var(--p1)}.tw-line-r:after{top:auto;bottom:calc(100% + 2px)}.tw-knot{position:absolute;top:50%;left:50%;z-index:3;width:clamp(46px,9vh,72px);aspect-ratio:1;transform:translate(-50%,-50%);display:flex;align-items:center;justify-content:center;border-radius:50%;background:#fff;border:5px solid #2b2440;box-shadow:0 5px #2b244040;font-size:clamp(24px,4.8vh,40px);line-height:1;will-change:left}.tw-char{position:absolute;top:50%;z-index:3;font-size:clamp(34px,8vh,62px);line-height:1;filter:drop-shadow(0 4px 0 rgba(43,36,64,.2));will-change:transform}.tw-char-l{left:clamp(4px,1.4vw,18px);transform-origin:80% 95%}.tw-char-r{right:clamp(4px,1.4vw,18px);transform-origin:20% 95%}.tw-hint{position:absolute;left:50%;bottom:clamp(10px,3vh,26px);z-index:3;transform:translate(-50%);padding:8px 20px;border-radius:999px;background:#2b2440d1;color:#fff;font-weight:700;font-size:clamp(.85rem,3vw,1.1rem);white-space:nowrap;pointer-events:none;animation:tw-hint-fade 3s ease forwards}@keyframes tw-hint-fade{0%,60%{opacity:1}to{opacity:0}}.tw-win{position:absolute;top:0;right:0;bottom:0;left:0;z-index:6;pointer-events:none;overflow:hidden}.tw-flake{position:absolute;top:0;width:11px;height:15px;border-radius:2px;background:var(--cc);animation:tw-drop var(--dur) var(--del) cubic-bezier(.25,.6,.45,1) forwards}.tw-flake-round{border-radius:50%;width:10px;height:10px}@keyframes tw-drop{0%{transform:translate3d(0,-14vh,0) rotate(0);opacity:1}to{transform:translate3d(var(--dx),114vh,0) rotate(var(--rot));opacity:.92}}.tw-banner{position:absolute;left:50%;top:42%;transform:translate(-50%,-50%);padding:clamp(12px,3vh,20px) clamp(22px,6vw,44px);background:#fff;border:6px solid var(--bc);border-radius:999px;box-shadow:var(--shadow);text-align:center;animation:tw-pop .3s ease-out}.tw-banner-title{display:block;font-weight:900;font-size:clamp(1.3rem,5.5vw,2.4rem);color:var(--ink);white-space:nowrap}@keyframes tw-pop{0%{transform:translate(-50%,-50%) scale(.5);opacity:0}to{transform:translate(-50%,-50%) scale(1);opacity:1}}@media (orientation: landscape) and (max-height: 500px){.tw-zone{flex-direction:row;align-items:center;gap:14px;padding-top:8px;padding-bottom:8px}.tw-hint{bottom:6px;font-size:.8rem}}@media (prefers-reduced-motion: reduce){.tw-hint{animation:none;opacity:.95}.tw-flake{animation:none;opacity:0}.tw-banner{animation:none}}:root{--p1: #ff5d73;--p2: #3ec6ff;--bg1: #fff8ef;--bg2: #ffe9f0;--ink: #2b2440;--card: #ffffff;--radius: 24px;--shadow: 0 6px 0 rgba(43, 36, 64, .14)}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:Comic Sans MS,Comic Neue,"Baloo 2",ui-rounded,Segoe UI,system-ui,sans-serif;color:var(--ink);background:linear-gradient(160deg,var(--bg1) 20%,var(--bg2) 100%);background-attachment:fixed;min-height:100vh}#root{min-height:100vh;display:flex;flex-direction:column}h1,h2{margin:.2em 0}a{color:inherit}button,.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;font-size:1.15rem;font-weight:700;min-height:48px;padding:10px 24px;border:none;border-radius:999px;cursor:pointer;text-decoration:none;color:#fff;background:var(--ink);box-shadow:var(--shadow);transition:transform .08s ease,box-shadow .08s ease}button:active,.btn:active{transform:translateY(3px);box-shadow:0 2px #2b244024}.btn-primary{background:var(--p1)}.btn-ghost{background:#2b24401f;color:var(--ink)}.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:18px;padding:16px;max-width:900px;margin:0 auto;width:100%}.game-card{display:flex;flex-direction:column;align-items:center;gap:6px;background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);border-top:8px solid var(--accent, var(--p1));padding:20px 12px;text-align:center;text-decoration:none;transition:transform .1s ease}.game-card:hover{transform:scale(1.03)}.card-emoji{font-size:3rem;line-height:1}.card-name{font-size:1.25rem;font-weight:700}.card-blurb{font-size:.95rem;opacity:.75}.home-header{text-align:center;padding:28px 16px 10px}.home-header h1{font-size:clamp(2rem,6vw,3rem)}.subtitle{margin:4px 0 0;font-size:1.2rem;opacity:.7}.home-footer{text-align:center;padding:24px 16px 40px;margin-top:auto}.topbar{position:sticky;top:0;z-index:5;background:#ffffffd9;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);box-shadow:0 3px #2b244014;padding:8px 12px 10px}.topbar-row{position:relative;display:flex;align-items:center;justify-content:center;min-height:44px}.back-link{position:absolute;left:4px;top:50%;transform:translateY(-50%);font-size:1.9rem;font-weight:700;line-height:1;min-width:48px;min-height:48px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;color:var(--ink);background:#2b244014;border-radius:999px}.topbar-title{font-size:1.35rem;font-weight:700}.chips{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:8px}.chip{display:inline-flex;align-items:center;gap:8px;font-weight:700;font-size:1rem;padding:6px 14px;border-radius:999px;background:#2b244012}.dot{width:14px;height:14px;border-radius:50%;border:2px solid #ffffff;box-shadow:0 0 0 1px #2b244040}.game-main{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:16px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:30px;color:#fff;text-align:center;padding:24px}.overlay-title{font-size:clamp(2rem,8vw,3.4rem);text-shadow:0 4px 0 rgba(43,36,64,.25)}.overlay-actions{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}.overlay .btn{background:#ffffffeb;color:var(--ink)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:60;display:flex;align-items:center;justify-content:center;background:#2b244073;padding:16px}.modal{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;max-width:420px;width:100%;text-align:center;display:flex;flex-direction:column;gap:16px}.player-setup{display:flex;flex-direction:column;gap:10px}.player-setup input{font-family:inherit;font-size:1.15rem;font-weight:700;min-height:48px;padding:8px 16px;border-radius:16px;border:3px solid rgba(43,36,64,.15);text-align:center}.swatches{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.swatch{min-height:44px;min-width:44px;height:44px;width:44px;padding:0;border-radius:50%;border:4px solid transparent}.swatch.selected{border-color:var(--ink);transform:scale(1.12)}.empty-note{grid-column:1 / -1;text-align:center;font-size:1.2rem;opacity:.7;padding:32px 0}@media (max-width: 480px){.card-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:12px}.chip{font-size:.9rem;padding:5px 10px}}@media (orientation: landscape) and (max-height: 500px){.home-header{padding:14px 16px 4px}.topbar{display:flex;align-items:center;gap:14px}.topbar-row,.chips{margin:0}.game-main{justify-content:flex-start}}.mode-chooser{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:16px}.mode-buttons{display:flex;flex-direction:column;gap:18px;width:100%;max-width:420px;margin-bottom:18px}.mode-card{flex-direction:column;gap:6px;background:var(--card);color:var(--ink);border-radius:var(--radius);border-top:8px solid var(--accent, var(--p1));box-shadow:var(--shadow);padding:24px 16px}.mode-solo{--accent: #9b5de5}.mode-duo{--accent: #3ec6ff}.mode-emoji{font-size:2.8rem;line-height:1}.mode-label{font-size:1.35rem;font-weight:700}.mode-hint{font-size:.95rem;font-weight:600;opacity:.7}.bot-badge{display:inline-flex;align-items:center;justify-content:center;font-size:.8em;line-height:1;background:#9b5de52e;border-radius:999px;padding:3px 6px}.footer-links{display:flex;justify-content:center;align-items:center;gap:14px;flex-wrap:wrap}.leaderboard{width:100%;max-width:540px;margin:0 auto;flex:1;display:flex;flex-direction:column;align-items:center;gap:14px;padding:8px 16px 40px}.lb-list{list-style:none;margin:0;padding:0;width:100%;display:flex;flex-direction:column;gap:12px}.lb-row{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:18px;box-shadow:var(--shadow);padding:12px 16px}.lb-rank{flex:none;min-width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;font-weight:700;font-size:1rem;background:#2b244014;border-radius:999px}.lb-name{flex:1;text-align:left;font-weight:700;font-size:1.1rem;overflow-wrap:anywhere}.lb-stats{font-weight:700;font-size:.95rem;opacity:.75;white-space:nowrap}.leaderboard .empty-note{grid-column:auto;padding:24px 0;margin:0}@media (max-width: 480px){.mode-card{padding:18px 12px}.lb-stats{font-size:.85rem}}
