:root{--bg:#f0f4ff;--text:#1a1a2e;--accent:#6c63ff;--accent-hover:#574fd6;--cell-bg:#fff;--cell-border:#d0d4e8;--cell-hover:#e8eaff;--maru:#e63946;--batsu:#457b9d;--win-bg:#ffd60a22;--shadow:0 4px 16px #6c63ff26;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light dark;font-family:system-ui,Segoe UI,sans-serif}@media (prefers-color-scheme:dark){:root{--lightningcss-light: ;--lightningcss-dark:initial;--bg:#12131f;--text:#e8eaf6;--accent:#9c8dff;--accent-hover:#7b6ef5;--cell-bg:#1e1f30;--cell-border:#2e3050;--cell-hover:#252640;--win-bg:#ffd60a18;--shadow:0 4px 16px #0006}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);justify-content:center;align-items:center;min-height:100svh;display:flex}#app{justify-content:center;align-items:center;width:100%;padding:24px 16px;display:flex}.game{flex-direction:column;align-items:center;gap:24px;display:flex}.title{letter-spacing:-.5px;color:var(--accent);font-size:36px;font-weight:700}.status{min-height:1.5em;font-size:22px;font-weight:600;transition:color .3s}.status.winner{color:inherit}.status.winner.winner-maru,.status.winner[data-winner=maru]{color:var(--maru)}.status.winner.winner-batsu,.status.winner[data-winner=batsu]{color:var(--batsu)}.status.draw{color:var(--accent)}.board{grid-template-columns:repeat(3,1fr);gap:10px;display:grid}.cell{background:var(--cell-bg);border:2px solid var(--cell-border);cursor:pointer;width:100px;height:100px;box-shadow:var(--shadow);border-radius:12px;justify-content:center;align-items:center;font-size:44px;transition:background .15s,transform .1s,box-shadow .15s;display:flex}@media (width<=400px){.cell{width:80px;height:80px;font-size:36px}}.cell:not(:disabled):hover{background:var(--cell-hover);transform:scale(1.04)}.cell:disabled{cursor:default}.cell.taken{animation:.18s ease-out pop}.cell.○{color:var(--maru)}.cell.×{color:var(--batsu)}.cell.winning{background:var(--win-bg);border-color:var(--accent);box-shadow:0 0 0 3px var(--accent)}@keyframes pop{0%{transform:scale(.7)}70%{transform:scale(1.1)}to{transform:scale(1)}}.reset-btn{color:#fff;background:var(--accent);cursor:pointer;border:none;border-radius:8px;padding:10px 28px;font-size:16px;font-weight:600;transition:background .2s,transform .1s}.reset-btn:hover{background:var(--accent-hover);transform:scale(1.03)}.reset-btn:active{transform:scale(.97)}
