:root {
  --bg0:#020712;
  --bg1:#071326;
  --panel:rgba(8,20,39,.72);
  --line:rgba(134,186,255,.18);
  --text:#f8fbff;
  --muted:#9db0cb;
  --blue:#2eb7ff;
  --blue2:#6ce5ff;
  --red:#ff3b52;
  --red2:#ff8a3d;
  --gold:#ffd36b;
  --gold2:#fff1b7;
  --shadow:0 22px 70px rgba(0,0,0,.5);
}
*{box-sizing:border-box}
html{background:var(--bg0);color-scheme:dark}
body{margin:0;min-height:100vh;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:
radial-gradient(circle at 25% 18%,rgba(19,116,255,.18),transparent 34%),
radial-gradient(circle at 76% 16%,rgba(255,54,69,.16),transparent 32%),
linear-gradient(180deg,#07152c 0%,#030815 56%,#02050d 100%);overflow-x:hidden}
button,select{font:inherit}
button{touch-action:manipulation}
#fxCanvas{position:fixed;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.78}
.vignette{position:fixed;inset:0;pointer-events:none;z-index:1;background:radial-gradient(circle at 50% 35%,transparent 0 28%,rgba(0,0,0,.12) 58%,rgba(0,0,0,.7) 100%)}
.city{position:fixed;left:0;right:0;bottom:0;height:24vh;z-index:0;opacity:.5;display:flex;align-items:flex-end;justify-content:space-around;gap:1vw;padding:0 1vw;filter:drop-shadow(0 -12px 45px rgba(39,126,255,.1))}
.city span{width:11vw;min-width:54px;background:linear-gradient(180deg,#0b1730,#030915);border-top:1px solid rgba(125,178,255,.24);box-shadow:inset 0 0 0 1px rgba(38,79,128,.12);position:relative}
.city span:nth-child(1){height:42%}.city span:nth-child(2){height:72%}.city span:nth-child(3){height:53%}.city span:nth-child(4){height:88%}.city span:nth-child(5){height:61%}.city span:nth-child(6){height:76%}.city span:nth-child(7){height:48%}.city span:nth-child(8){height:66%}.city span:nth-child(9){height:37%}
.city span::after{content:"";position:absolute;inset:12px 16px;background:repeating-linear-gradient(180deg,rgba(88,176,255,.28) 0 3px,transparent 3px 15px),repeating-linear-gradient(90deg,rgba(88,176,255,.17) 0 3px,transparent 3px 18px);opacity:.45}
.app-shell{position:relative;z-index:2;width:min(1100px,100%);margin:0 auto;padding:24px clamp(16px,4vw,44px) 32px;min-height:100vh;display:flex;flex-direction:column;align-items:center}
.hero-header{text-align:center;width:100%;padding-top:4px}
.game-logo{width:min(620px,90vw);height:auto;display:block;margin:0 auto;filter:drop-shadow(0 10px 28px rgba(0,0,0,.48)) drop-shadow(-12px 2px 24px rgba(0,163,255,.12)) drop-shadow(12px 2px 24px rgba(255,62,62,.1));animation:logoFloat 5s ease-in-out infinite}
.tagline{margin:-8px 0 18px;text-transform:uppercase;letter-spacing:.34em;font-size:clamp(.66rem,1.8vw,.83rem);font-weight:850;color:var(--gold2);text-shadow:0 0 16px rgba(255,214,106,.24)}
.hud{width:min(860px,100%);display:grid;grid-template-columns:1fr auto 1fr;align-items:stretch;gap:16px;margin-top:4px}
.hud-card,.scoreboard{background:linear-gradient(180deg,rgba(16,34,60,.8),rgba(5,14,29,.72));border:1px solid rgba(147,192,255,.18);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 14px 36px rgba(0,0,0,.2);border-radius:16px;backdrop-filter:blur(16px)}
.hud-card{padding:12px 14px;display:flex;flex-direction:column;gap:8px;justify-content:center}
.hud-card label,.control-label{font-size:.7rem;text-transform:uppercase;letter-spacing:.16em;font-weight:850;color:var(--muted)}
.select-wrap{position:relative}.select-wrap::after{content:"▾";position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--gold)}
select{width:100%;appearance:none;border:1px solid rgba(116,180,255,.2);background:rgba(2,9,19,.72);color:white;border-radius:10px;padding:10px 34px 10px 11px;outline:none;font-weight:750}
select:focus-visible,.segment:focus-visible,.cell:focus-visible,button:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.scoreboard{min-width:240px;padding:10px 18px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:14px}
.score{text-align:center}.score-label{display:block;font-size:.64rem;letter-spacing:.18em;color:var(--muted);font-weight:850}.score strong{display:block;font-size:2rem;line-height:1;margin-top:2px}.player-score strong{color:var(--blue2);text-shadow:0 0 20px rgba(46,183,255,.32)}.ai-score strong{color:#ff7d83;text-shadow:0 0 20px rgba(255,59,82,.28)}.versus{font-style:italic;font-weight:950;color:var(--gold);font-size:.8rem}
.segmented{display:grid;grid-template-columns:1fr 1fr;background:rgba(0,0,0,.28);padding:4px;border-radius:12px;gap:4px}.segment{border:0;border-radius:9px;background:transparent;color:var(--muted);min-height:40px;font-size:1.2rem;font-weight:950;cursor:pointer;transition:.2s}.segment.active:first-child{background:linear-gradient(180deg,#1b84ff,#0750b6);color:white;box-shadow:0 6px 18px rgba(0,128,255,.22),inset 0 1px 0 rgba(255,255,255,.25)}.segment.active:last-child{background:linear-gradient(180deg,#ff5a63,#ba1e34);color:white;box-shadow:0 6px 18px rgba(255,46,72,.2),inset 0 1px 0 rgba(255,255,255,.25)}
.arena{position:relative;width:min(760px,100%);padding:28px 20px 22px;margin-top:6px;isolation:isolate}
.arena::before{content:"";position:absolute;left:12%;right:12%;bottom:0;height:24%;border-radius:50%;background:radial-gradient(ellipse,rgba(55,142,255,.22),transparent 62%);filter:blur(10px);z-index:-1}
.board-stage{perspective:1000px;display:grid;place-items:center}.board{--board-size:min(58vw,480px);width:var(--board-size);height:var(--board-size);display:grid;grid-template-columns:repeat(3,1fr);grid-template-rows:repeat(3,1fr);gap:clamp(7px,1.2vw,12px);padding:clamp(10px,1.6vw,16px);border-radius:30px;background:linear-gradient(145deg,rgba(20,50,84,.92),rgba(3,9,21,.96));border:1px solid rgba(143,199,255,.35);box-shadow:0 42px 65px rgba(0,0,0,.54),0 0 0 4px rgba(5,16,32,.8),0 0 44px rgba(26,116,255,.16),inset 0 1px 0 rgba(255,255,255,.12);transform:rotateX(8deg) rotateZ(-.25deg);transform-style:preserve-3d;transition:transform .45s cubic-bezier(.2,.8,.2,1);position:relative}
.board::after{content:"";position:absolute;inset:10px;border-radius:22px;pointer-events:none;border:1px solid rgba(255,219,123,.12);box-shadow:inset 0 0 32px rgba(34,105,184,.12)}
.board.ai-thinking{transform:rotateX(10deg) rotateZ(.35deg) scale(.995)}
.board.win-pop{animation:boardWin .78s ease}
.cell{position:relative;border:1px solid rgba(135,188,255,.18);border-radius:18px;background:linear-gradient(145deg,rgba(17,38,68,.98),rgba(3,10,23,.98));box-shadow:inset 0 1px 0 rgba(255,255,255,.08),inset 0 -10px 24px rgba(0,0,0,.3),0 9px 0 #020711,0 12px 22px rgba(0,0,0,.36);cursor:pointer;transform:translateZ(10px);transition:transform .16s ease,filter .18s ease,border-color .18s ease;overflow:hidden;display:grid;place-items:center;min-width:0;min-height:0}
.cell::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.09),transparent 34%);opacity:.9;pointer-events:none}
.cell:disabled{cursor:default}.cell:not(:disabled):active{transform:translateZ(4px) translateY(5px);box-shadow:inset 0 1px 0 rgba(255,255,255,.06),inset 0 -6px 18px rgba(0,0,0,.3),0 4px 0 #020711,0 7px 14px rgba(0,0,0,.3)}
@media (hover:hover) and (pointer:fine){.cell:not(:disabled):hover{transform:translateZ(18px) translateY(-3px);border-color:rgba(115,196,255,.48);filter:brightness(1.16)}}
.cell.core::after{content:"";position:absolute;width:46%;aspect-ratio:1;border-radius:50%;border:1px solid rgba(255,213,107,.12);box-shadow:0 0 28px rgba(255,204,84,.07);pointer-events:none}
.token{width:62%;height:62%;position:relative;display:block;filter:drop-shadow(0 10px 10px rgba(0,0,0,.35));animation:tokenIn .36s cubic-bezier(.15,.95,.3,1.25)}
.token.x::before,.token.x::after{content:"";position:absolute;left:44%;top:-6%;width:17%;height:112%;border-radius:999px;background:linear-gradient(90deg,#0c5ec6 0%,#6ff2ff 30%,#e7ffff 48%,#48d7ff 65%,#0750bd 100%);box-shadow:0 0 12px rgba(55,215,255,.7),0 0 28px rgba(16,132,255,.38),inset 2px 0 2px rgba(255,255,255,.55),inset -3px 0 4px rgba(0,39,104,.65)}
.token.x::before{transform:rotate(45deg)}.token.x::after{transform:rotate(-45deg)}
.token.o{border-radius:50%;border:clamp(10px,1.5vw,16px) solid #ff4e4e;background:radial-gradient(circle,transparent 47%,rgba(255,98,58,.18) 49%,rgba(255,45,59,.28) 70%,transparent 72%);box-shadow:0 0 12px rgba(255,80,62,.85),0 0 30px rgba(255,65,49,.38),inset 0 0 14px rgba(255,173,70,.75),inset 0 0 0 3px rgba(255,205,140,.5);filter:drop-shadow(0 10px 10px rgba(0,0,0,.35));background-clip:padding-box}
.cell.winner{animation:winnerPulse .85s ease-in-out infinite alternate;border-color:rgba(255,225,123,.8);z-index:3}.cell.winner .token{filter:drop-shadow(0 0 15px rgba(255,224,125,.7)) drop-shadow(0 10px 10px rgba(0,0,0,.3))}
.energy-column{position:absolute;top:26%;width:4px;height:40%;border-radius:999px;opacity:.55;filter:blur(.3px);animation:energyPulse 2.3s ease-in-out infinite}.energy-column.left{left:7%;background:linear-gradient(transparent,var(--blue2),transparent);box-shadow:0 0 18px var(--blue),0 0 48px rgba(46,183,255,.35)}.energy-column.right{right:7%;background:linear-gradient(transparent,#ff7069,transparent);box-shadow:0 0 18px var(--red),0 0 48px rgba(255,59,82,.35);animation-delay:-1s}
.status-zone{text-align:center;width:min(860px,100%)}.turn-pill{display:inline-flex;align-items:center;gap:10px;border-radius:999px;border:1px solid rgba(145,195,255,.2);background:rgba(3,12,26,.78);padding:10px 16px;color:#eaf4ff;font-weight:800;box-shadow:0 10px 30px rgba(0,0,0,.2);backdrop-filter:blur(14px)}.pulse-dot{width:9px;height:9px;border-radius:50%;background:var(--blue2);box-shadow:0 0 13px var(--blue);animation:pulse 1.1s ease-in-out infinite}.turn-pill.ai .pulse-dot{background:#ff6c70;box-shadow:0 0 13px var(--red)}.turn-pill.done .pulse-dot{background:var(--gold);box-shadow:0 0 13px var(--gold)}
.actions{margin-top:16px;display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.primary-btn,.ghost-btn,.icon-btn{border-radius:12px;min-height:46px;border:1px solid transparent;font-weight:850;cursor:pointer;transition:transform .16s,filter .16s}.primary-btn{padding:0 20px;background:linear-gradient(180deg,#ffd970,#d99818);color:#1b1200;box-shadow:0 10px 24px rgba(220,150,24,.18),inset 0 1px 0 rgba(255,255,255,.7)}.ghost-btn{padding:0 16px;background:rgba(7,20,40,.72);border-color:rgba(130,184,255,.2);color:#dce9fa}.icon-btn{width:48px;background:rgba(7,20,40,.72);border-color:rgba(130,184,255,.2);color:white;font-size:1.05rem}.primary-btn:active,.ghost-btn:active,.icon-btn:active{transform:translateY(2px);filter:brightness(.92)}
.difficulty-hint{color:var(--muted);font-size:.78rem;margin:12px 0 0}footer{margin-top:auto;padding-top:28px;color:#51647f;text-transform:uppercase;font-size:.62rem;letter-spacing:.14em}
.result-modal[hidden]{display:none}.result-modal{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:rgba(0,4,12,.64);backdrop-filter:blur(12px);animation:fadeIn .22s ease}.result-card{width:min(390px,100%);text-align:center;border-radius:24px;padding:30px 24px;background:linear-gradient(180deg,rgba(20,42,72,.98),rgba(4,12,26,.98));border:1px solid rgba(161,205,255,.25);box-shadow:0 30px 90px rgba(0,0,0,.62),inset 0 1px 0 rgba(255,255,255,.08);animation:modalIn .35s cubic-bezier(.2,.9,.25,1.1)}.result-icon{font-size:3rem;filter:drop-shadow(0 0 20px rgba(255,210,92,.3))}.result-card h2{margin:8px 0 8px;font-size:2rem}.result-card p{margin:0 0 20px;color:var(--muted)}
@keyframes logoFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}
@keyframes tokenIn{0%{transform:scale(.1) rotateY(100deg);opacity:0}70%{transform:scale(1.12) rotateY(-10deg)}100%{transform:scale(1) rotateY(0);opacity:1}}
@keyframes boardWin{0%,100%{transform:rotateX(8deg) rotateZ(-.25deg)}35%{transform:rotateX(2deg) rotateZ(1deg) scale(1.025)}65%{transform:rotateX(8deg) rotateZ(-1deg) scale(1.01)}}
@keyframes winnerPulse{from{filter:brightness(1);box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 9px 0 #020711,0 12px 22px rgba(0,0,0,.36),0 0 8px rgba(255,210,89,.1)}to{filter:brightness(1.4);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 9px 0 #020711,0 12px 22px rgba(0,0,0,.36),0 0 28px rgba(255,210,89,.42)}}
@keyframes energyPulse{0%,100%{opacity:.24;transform:scaleY(.75)}50%{opacity:.78;transform:scaleY(1.05)}}@keyframes pulse{50%{transform:scale(1.55);opacity:.52}}@keyframes fadeIn{from{opacity:0}}@keyframes modalIn{from{transform:translateY(14px) scale(.94);opacity:0}}
@media (max-width:720px){.app-shell{padding-top:14px}.game-logo{width:min(520px,96vw)}.tagline{margin-top:-5px}.hud{grid-template-columns:1fr 1fr;gap:10px}.scoreboard{grid-column:1/-1;grid-row:1;min-width:0}.control-card{grid-row:2}.symbol-card{grid-row:2}.arena{padding:20px 0 16px}.board{--board-size:min(88vw,450px);gap:8px;padding:10px;border-radius:22px}.cell{border-radius:14px;box-shadow:inset 0 1px 0 rgba(255,255,255,.07),inset 0 -8px 20px rgba(0,0,0,.25),0 7px 0 #020711,0 10px 18px rgba(0,0,0,.3)}.energy-column{display:none}.actions{gap:8px}.primary-btn,.ghost-btn{flex:1 1 180px}}
@media (max-width:420px){.hero-header{padding-top:0}.tagline{font-size:.6rem;letter-spacing:.22em;margin-bottom:12px}.hud-card{padding:10px}.scoreboard{padding:9px 12px}.score strong{font-size:1.7rem}.arena{margin-top:2px}.board{--board-size:92vw}.status-zone{padding:0 4px}.difficulty-hint{padding:0 12px}.result-card{padding:26px 18px}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.001ms!important}}
