:root{font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;color:#e9efff;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,*:before,*:after{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;min-width:320px;background:#0b0f1a}.app{min-height:100svh;padding:1rem .85rem;display:grid;place-items:center}.game-shell{width:min(100%,23rem);display:grid;gap:.9rem}.status-strip{display:flex;align-items:center;justify-content:space-between;padding:.45rem .65rem;border:1px solid #2b364e;border-radius:.7rem;background:linear-gradient(180deg,#151c2f,#101726)}.turn-status,.score-text{margin:0;font-size:.8rem;font-weight:600;color:#d9e6ff}.turn-status{display:inline-flex;align-items:center;gap:.42rem}.turn-dot{width:.56rem;height:.56rem;border-radius:999px;box-shadow:0 0 0 2px #0d1322}.turn-dot.is-x{background:#7ec5ff}.turn-dot.is-o{background:#ff9dcb}.score-text{color:#b8c7e8}.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem}.square{border:2px solid #2d3344;border-radius:.75rem;background:#111625;aspect-ratio:1 / 1;min-height:4.5rem;display:grid;place-items:center;cursor:pointer;transition:border-color .16s ease,background-color .16s ease}.square:hover:not(:disabled){border-color:#4c5672;background:#151c2f}.square:disabled{cursor:default}.square.win{border-color:#ffd166;background:#2a2230;animation:winPulse .45s ease-in-out 2}.piece{font-size:clamp(2.1rem,10vw,2.8rem);font-weight:700;line-height:1;-webkit-user-select:none;user-select:none}.piece-x{color:#7ec5ff}.piece-o{color:#ff9dcb}.reset-button{width:100%;border:1px solid #445171;border-radius:.65rem;background:#1a2337;color:#e8eeff;padding:.7rem;font-size:.88rem;font-weight:600;cursor:pointer;transition:border-color .16s ease,background-color .16s ease}.reset-button:hover{border-color:#5a6d98;background:#202b43}.rematch-cue{margin:.1rem 0 0;min-height:1rem;text-align:center;font-size:.77rem;letter-spacing:.01em;color:#aebedd;opacity:0;transition:opacity .18s ease}.rematch-cue.visible{opacity:1;animation:cueFadeOut 1s ease forwards}@keyframes winPulse{0%{transform:scale(1)}50%{transform:scale(1.04)}to{transform:scale(1)}}@keyframes cueFadeOut{0%{opacity:0;transform:translateY(3px)}16%{opacity:.92;transform:translateY(0)}to{opacity:0;transform:translateY(0)}}
