:root{--primary-color:#667eea;--primary-dark:#5a67d8;--secondary-color:#764ba2;--player-x-color:#3b82f6;--player-o-color:#ef4444;--bg-color:#f8fafc;--card-bg:#fff;--border-color:#e2e8f0;--text-color:#1e293b;--text-muted:#64748b;--board-gap:8px;--cell-size:40px;--won-overlay-opacity:0.95;--won-overlay-blur:3px;--history-bg:#f1f5f9;--history-item-bg:#fff;--history-item-hover:#e2e8f0;--history-item-active:#dbeafe}@media (prefers-color-scheme:dark){:root{--bg-color:#0f172a;--card-bg:#1e293b;--border-color:#334155;--text-color:#f1f5f9;--text-muted:#94a3b8;--player-x-color:#60a5fa;--player-o-color:#f87171;--history-bg:#1e293b;--history-item-bg:#334155;--history-item-hover:#475569;--history-item-active:#1e3a5f;--won-overlay-opacity:0.85;--won-overlay-blur:2px}html{background-color:#0f172a}}*{box-sizing:border-box;margin:0;padding:0}body{align-items:center;background:linear-gradient(135deg,var(--primary-color) 0,var(--secondary-color) 100%);display:flex;font-family:Segoe UI,Tahoma,Geneva,Verdana,sans-serif;justify-content:center;min-height:100vh;padding:20px}.game-container{background:var(--card-bg);border-radius:20px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);max-width:600px;padding:24px;width:100%}.game-header{margin-bottom:20px;text-align:center}.game-header h1{color:var(--text-color);font-size:1.75rem;font-weight:700;margin-bottom:12px}.game-mode-selector{display:flex;gap:8px;justify-content:center;margin-bottom:12px}.mode-btn{background:var(--bg-color);border:2px solid var(--border-color);border-radius:8px;color:var(--text-color);cursor:pointer;font-size:.9rem;font-weight:600;padding:8px 16px;transition:all .2s ease}.mode-btn:hover{background:var(--border-color)}.mode-btn.active{background:linear-gradient(135deg,var(--primary-color) 0,var(--secondary-color) 100%);border-color:transparent;color:#fff}.bot-settings{background:var(--bg-color);border-radius:8px;margin-bottom:12px;padding:10px 12px}.bot-settings[hidden]{display:none}.settings-row{display:flex;flex-wrap:wrap;gap:16px;justify-content:center}.inline-setting{align-items:center;display:flex;gap:6px}.setting-label{color:var(--text-muted);font-size:.85rem;white-space:nowrap}.compact-input{-moz-appearance:textfield;background:var(--card-bg);border:2px solid var(--border-color);border-radius:6px;color:var(--text-color);padding:4px 6px;width:52px}.compact-input::-webkit-inner-spin-button,.compact-input::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}.compact-input{font-size:.85rem;text-align:center}.compact-input:focus{border-color:var(--primary-color);outline:none}.compact-select{background:var(--card-bg);border:2px solid var(--border-color);border-radius:6px;color:var(--text-color);cursor:pointer;font-size:.85rem;padding:4px 8px}.compact-select:focus{border-color:var(--primary-color);outline:none}.hint-settings{background:var(--bg-color);border-radius:8px;display:flex;flex-wrap:wrap;gap:16px;justify-content:center;margin-bottom:12px;padding:6px 12px}.hint-settings .inline-setting{gap:6px}.hint-settings .setting-label{font-size:.8rem}.game-info{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between}.current-player{color:var(--text-color);font-size:1.2rem;font-weight:600}.current-player span{border-radius:8px;display:inline-block;font-weight:700;padding:4px 12px}.player-x{background:rgba(59,130,246,.1);color:var(--player-x-color)}.player-o{background:rgba(239,68,68,.1);color:var(--player-o-color)}@media (prefers-color-scheme:dark){.player-x{background:rgba(96,165,250,.15)}.player-o{background:hsla(0,91%,71%,.15)}}.active-board-info{background:var(--bg-color);border-radius:8px;color:var(--text-muted);font-size:.9rem;padding:6px 12px}.game-board{background:var(--border-color);border-radius:12px;gap:var(--board-gap);margin-bottom:20px;padding:var(--board-gap)}.game-board,.small-board{aspect-ratio:1/1;display:grid;grid-template-columns:repeat(3,1fr)}.small-board{background:var(--card-bg);border-radius:8px;gap:2px;grid-template-rows:repeat(3,1fr);padding:2px;position:relative;transition:all .3s ease}.small-board.active{transform:scale(1.02)}.small-board.active-x{box-shadow:0 0 0 3px var(--player-x-color)}.small-board.active-o{box-shadow:0 0 0 3px var(--player-o-color)}.small-board.free-move-highlight{box-shadow:0 0 0 2px rgba(102,126,234,.5)}.small-board.target-board-highlight-x{background-color:rgba(59,130,246,.1);box-shadow:0 0 0 3px rgba(59,130,246,.7)}.small-board.target-board-highlight-o{background-color:rgba(239,68,68,.1);box-shadow:0 0 0 3px rgba(239,68,68,.7)}.small-board.target-free-highlight-x{box-shadow:0 0 0 2px rgba(59,130,246,.4)}.small-board.target-free-highlight-o{box-shadow:0 0 0 2px rgba(239,68,68,.4)}@media (prefers-color-scheme:dark){.small-board.free-move-highlight{box-shadow:0 0 0 2px rgba(102,126,234,.6)}.small-board.target-board-highlight-x{background-color:rgba(96,165,250,.15);box-shadow:0 0 0 3px rgba(96,165,250,.8)}.small-board.target-board-highlight-o{background-color:hsla(0,91%,71%,.15);box-shadow:0 0 0 3px hsla(0,91%,71%,.8)}.small-board.target-free-highlight-x{box-shadow:0 0 0 2px rgba(96,165,250,.5)}.small-board.target-free-highlight-o{box-shadow:0 0 0 2px hsla(0,91%,71%,.5)}}.small-board.playable{cursor:pointer}.small-board.draw,.small-board.won{pointer-events:none}.small-board-overlay{align-items:center;backdrop-filter:blur(var(--won-overlay-blur));-webkit-backdrop-filter:blur(var(--won-overlay-blur));border-radius:8px;bottom:0;display:flex;font-size:4rem;font-weight:900;justify-content:center;left:0;opacity:var(--won-overlay-opacity);pointer-events:none;position:absolute;right:0;top:0;z-index:10}.small-board.won-x .small-board-overlay{background:rgba(59,130,246,.85);color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.small-board.won-o .small-board-overlay{background:rgba(239,68,68,.85);color:#fff;text-shadow:0 2px 4px rgba(0,0,0,.3)}.small-board.draw .small-board-overlay{background:rgba(100,116,139,.8);color:#fff;font-size:2rem;text-shadow:0 2px 4px rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){.small-board.won-x .small-board-overlay{background:rgba(96,165,250,.75)}.small-board.won-o .small-board-overlay{background:hsla(0,91%,71%,.75)}.small-board.draw .small-board-overlay{background:rgba(148,163,184,.7)}}.cell{align-items:center;aspect-ratio:1/1;background:var(--bg-color);border-radius:4px;cursor:pointer;display:flex;font-size:1.5rem;font-weight:700;justify-content:center;transition:all .2s ease;user-select:none}@media (hover:hover){.cell:hover:not(.occupied){background:var(--border-color)}}.cell.occupied{cursor:not-allowed}.cell.x{color:var(--player-x-color)}.cell.o{color:var(--player-o-color)}.cell.preview{cursor:pointer;opacity:.4}.cell.preview.x{color:var(--player-x-color)}.cell.preview.o{color:var(--player-o-color)}.cell.last-move.x{animation:lastMovePulseX 2s ease-in-out;background-color:rgba(59,130,246,.08);border-radius:4px;box-shadow:inset 0 0 0 2px rgba(59,130,246,.5)}.cell.last-move.o{animation:lastMovePulseO 2s ease-in-out;background-color:rgba(239,68,68,.08);border-radius:4px;box-shadow:inset 0 0 0 2px rgba(239,68,68,.5)}@keyframes lastMovePulseX{0%{box-shadow:inset 0 0 0 3px rgba(59,130,246,.8)}to{box-shadow:inset 0 0 0 2px rgba(59,130,246,.5)}}@keyframes lastMovePulseO{0%{box-shadow:inset 0 0 0 3px rgba(239,68,68,.8)}to{box-shadow:inset 0 0 0 2px rgba(239,68,68,.5)}}@media (prefers-color-scheme:dark){.cell.last-move.x{background-color:rgba(96,165,250,.12);box-shadow:inset 0 0 0 2px rgba(96,165,250,.6)}.cell.last-move.o{background-color:hsla(0,91%,71%,.12);box-shadow:inset 0 0 0 2px hsla(0,91%,71%,.6)}}.history-panel{background:var(--history-bg);border-radius:12px;margin-top:20px;padding:16px}.history-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:12px}.history-header h3{color:var(--text-color);font-size:1rem;font-weight:600}.history-controls{display:flex;gap:4px}.history-btn{align-items:center;background:var(--history-item-bg);border:none;border-radius:6px;color:var(--text-color);cursor:pointer;display:flex;font-size:14px;height:32px;justify-content:center;transition:all .2s ease;width:32px}.history-btn:hover:not(:disabled){background:var(--history-item-hover)}.history-btn:disabled{cursor:not-allowed;opacity:.4}.history-list{align-content:flex-start;display:flex;flex-wrap:wrap;gap:6px;overflow-y:auto}.history-item{background:var(--history-item-bg);border:2px solid transparent;border-radius:6px;color:var(--text-muted);cursor:pointer;font-size:.8rem;padding:6px 10px;transition:all .2s ease}.history-item:hover{background:var(--history-item-hover)}.history-item.active{background:var(--history-item-active);border-color:var(--primary-color);color:var(--text-color)}.history-item.future{opacity:.5}.history-item .move-number{color:var(--text-color);font-weight:600}.history-item .move-player{font-weight:700}.history-item .move-player.x{color:var(--player-x-color)}.history-item .move-player.o{color:var(--player-o-color)}.history-empty{color:var(--text-muted);font-size:.9rem;padding:12px;text-align:center}.game-footer{align-items:center;display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between}.footer-buttons{display:flex;flex-wrap:wrap;gap:8px}.score-section{align-items:flex-end;display:flex;flex-direction:column;gap:4px}.score-board{display:flex;gap:16px}.thinking-indicator{align-items:center;background:var(--bg-color);border-radius:6px;color:var(--text-muted);display:flex;font-size:.8rem;gap:6px;height:26px;opacity:0;padding:4px 10px;transition:opacity .15s ease;visibility:hidden}.thinking-indicator.visible{opacity:1;visibility:visible}.spinner{animation:spin .8s linear infinite;border:2px solid var(--border-color);border-radius:50%;border-top-color:var(--primary-color);height:14px;width:14px}@keyframes spin{to{transform:rotate(1turn)}}.btn{border:none;border-radius:8px;cursor:pointer;font-size:1rem;font-weight:600;padding:10px 20px;transition:all .2s ease}.btn-reset{background:var(--bg-color);border:2px solid var(--border-color);color:var(--text-color)}.btn-reset:hover{background:var(--border-color)}.btn-hint{background:linear-gradient(135deg,#fbbf24,#f59e0b);border:2px solid transparent;color:#1e293b}.btn-hint:hover:not(:disabled){box-shadow:0 4px 12px rgba(251,191,36,.4);transform:translateY(-2px)}.btn-hint:disabled{cursor:not-allowed;opacity:.5}.score{border-radius:8px;font-size:1.1rem;font-weight:600;padding:6px 12px}.cell.hint-highlight{animation:hintPulse 1s ease-in-out infinite;box-shadow:0 0 0 3px #fbbf24;position:relative;z-index:5}@keyframes hintPulse{0%,to{box-shadow:0 0 0 3px rgba(251,191,36,.8)}50%{box-shadow:0 0 0 6px rgba(251,191,36,.4)}}.btn-primary{background:linear-gradient(135deg,var(--primary-color) 0,var(--secondary-color) 100%);color:#fff}.btn-primary:hover{box-shadow:0 4px 12px rgba(102,126,234,.4);transform:translateY(-2px)}.btn-share{font-size:.9rem;padding:8px 16px}.game-over-modal{align-items:center;backdrop-filter:blur(4px);background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.game-over-modal[hidden]{display:none}.modal-content{animation:modalAppear .3s ease;background:var(--card-bg);border-radius:16px;box-shadow:0 25px 50px -12px rgba(0,0,0,.25);padding:32px 48px;position:relative;text-align:center}.modal-close-btn{align-items:center;background:var(--bg-color);border:none;border-radius:50%;color:var(--text-muted);cursor:pointer;display:flex;font-size:1.5rem;height:32px;justify-content:center;line-height:1;position:absolute;right:12px;top:12px;transition:all .2s ease;width:32px}.modal-close-btn:hover{background:var(--border-color);color:var(--text-color)}@keyframes modalAppear{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.modal-content h2{color:var(--text-color);font-size:1.75rem;margin-bottom:12px}.modal-content p{color:var(--text-muted);font-size:1.1rem;margin-bottom:24px}@media (max-width:500px){:root{--board-gap:6px}.game-container{padding:16px}.game-header h1{font-size:1.4rem}.game-info{align-items:stretch;flex-direction:column}.current-player{text-align:center}.small-board-overlay{font-size:2.5rem}.cell{font-size:1.2rem}.game-footer{align-items:stretch;flex-direction:column}.btn-reset{width:100%}.score-board{justify-content:center}}@media (max-width:380px){:root{--board-gap:4px}.cell{font-size:1rem}.small-board-overlay{font-size:2rem}}