:root{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--page-bg:#f8fafc;--panel-bg:#fffffff0;--panel-border:#e2e8f0;--text:#0f172a;--muted:#64748b;--button-bg:#fff;--button-hover:#f1f5f9;--primary-bg:#111827;--primary-text:#fff;--board-bg:#fff;--grid:#dbe3ed;--mark-x:#2563eb;--mark-o:#e11d48;--last-move:#0f172a14;--win-line:#16a34a;--board-focus:#7c3aed;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--page-bg:#090f1a;--panel-bg:#0f172af5;--panel-border:#273449;--text:#f8fafc;--muted:#94a3b8;--button-bg:#172033;--button-hover:#202d43;--primary-bg:#f8fafc;--primary-text:#0f172a;--board-bg:#0b1220;--grid:#263348;--mark-x:#60a5fa;--mark-o:#fb7185;--last-move:#ffffff14;--win-line:#4ade80;--board-focus:#c4b5fd}*{box-sizing:border-box}[hidden]{display:none!important}html,body,#app{width:100%;height:100%;margin:0;overflow:hidden}body{background:var(--page-bg);color:var(--text);overscroll-behavior:none}#app{flex-direction:column;display:flex}button,select{border:1px solid var(--panel-border);background:var(--button-bg);color:var(--text);font:inherit;border-radius:10px;font-size:14px;font-weight:600}button{cursor:pointer;min-height:40px;padding:10px 13px;line-height:1;transition:background .12s,transform .12s,opacity .12s}select{min-height:38px;padding:7px 30px 7px 10px}button:hover:not(:disabled),select:hover:not(:disabled){background:var(--button-hover)}button:active:not(:disabled){transform:translateY(1px)}button:disabled,select:disabled{cursor:default;opacity:.45}button:focus-visible,select:focus-visible,input:focus-visible,#board:focus-visible{outline:3px solid color-mix(in srgb, var(--mark-x) 45%, transparent);outline-offset:2px}button.primary{border-color:var(--primary-bg);background:var(--primary-bg);color:var(--primary-text)}.sr-only{clip:rect(0, 0, 0, 0)!important;white-space:nowrap!important;border:0!important;width:1px!important;height:1px!important;margin:-1px!important;padding:0!important;position:absolute!important;overflow:hidden!important}.button-icon{font-size:18px;line-height:1;display:none}.topbar{z-index:10;min-height:60px;padding:max(10px, env(safe-area-inset-top)) max(12px, env(safe-area-inset-right)) 10px max(12px, env(safe-area-inset-left));border-bottom:1px solid var(--panel-border);background:var(--panel-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);flex:none;grid-template-columns:1fr auto 1fr;align-items:center;gap:12px;display:grid}.brand{letter-spacing:-.02em;align-items:center;gap:10px;min-width:0;font-weight:750;display:flex}.brand-symbol{background:var(--primary-bg);min-width:38px;height:34px;color:var(--primary-text);border-radius:10px;place-items:center;font-size:18px;display:inline-grid}.brand-name{white-space:nowrap;text-overflow:ellipsis;overflow:hidden}.status{text-align:center;min-width:150px;color:var(--muted);font-size:14px;font-weight:700}.status[data-winner=X],.status[data-winner=O]{color:var(--win-line)}.actions{justify-self:end;gap:7px;display:flex}.game-shell{flex-direction:column;flex:1;min-height:0;display:flex}.game-info{padding:10px max(14px, env(safe-area-inset-right)) 10px max(14px, env(safe-area-inset-left));border-bottom:1px solid var(--panel-border);background:var(--panel-bg);flex:none;grid-template-columns:minmax(260px,1fr) auto;align-items:center;gap:18px;display:grid}.game-info-copy{min-width:0;padding-right:40px;position:relative}.game-info-copy h1{letter-spacing:-.01em;margin:0 0 3px;font-size:14px;line-height:1.3}.game-info-copy p{max-width:920px;color:var(--muted);margin:0;font-size:12px;line-height:1.4}.game-options{align-items:end;gap:10px;display:flex}.option-field{gap:4px;min-width:0;display:grid}.option-field>span,.settings-field>span{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding-left:2px;font-size:10px;font-weight:700}.stats{white-space:nowrap;color:var(--muted);align-self:center;padding:16px 2px 0;font-size:12px;font-weight:650}.game-options[data-mode=local] #difficultyField,.game-options[data-mode=local] .stats{display:none}.board-shell{background:var(--board-bg);flex:1;min-height:0;position:relative}#board{touch-action:none;-webkit-user-select:none;user-select:none;cursor:crosshair;width:100%;height:100%;display:block;position:absolute;inset:0}#board[data-dragging=true]{cursor:grabbing}.replay-bar{z-index:8;left:50%;bottom:max(14px, env(safe-area-inset-bottom));border:1px solid var(--panel-border);background:var(--panel-bg);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:14px;justify-content:space-between;align-items:center;gap:16px;width:min(720px,100% - 28px);padding:10px 12px;display:flex;position:absolute;transform:translate(-50%);box-shadow:0 12px 40px #0f172a29}.replay-copy{gap:2px;min-width:0;display:grid}.replay-copy strong{font-size:13px}.replay-copy span{color:var(--muted);font-size:11px}.replay-actions{gap:7px;display:flex}.modal-dialog{border:1px solid var(--panel-border);background:var(--panel-bg);width:min(430px,100vw - 28px);max-height:calc(100dvh - 24px);color:var(--text);border-radius:16px;padding:0;box-shadow:0 24px 80px #0f172a4d}.modal-dialog::backdrop{-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0f172a6b}.dialog-body{overscroll-behavior:contain;max-height:calc(100dvh - 26px);padding:22px;overflow:auto}.dialog-body h2{margin:0 0 8px;font-size:22px;line-height:1.2}.dialog-body p{color:var(--muted);margin:0;font-size:14px;line-height:1.5}.dialog-details{margin-top:8px!important;font-size:12px!important}.dialog-actions{flex-wrap:wrap;justify-content:flex-end;gap:8px;margin-top:20px;display:flex}.settings-dialog{width:min(500px,100vw - 28px)}.settings-grid{gap:14px;margin-top:18px;display:grid}.settings-field{gap:5px;display:grid}.settings-field select{width:100%}.toggle-field{align-items:center;gap:10px;min-height:38px;font-size:14px;font-weight:600;display:flex}.toggle-field input{width:18px;height:18px;accent-color:var(--mark-x)}.install-field{gap:6px;display:grid}.install-field span{color:var(--muted);font-size:11px;line-height:1.35}.history-dialog{width:min(620px,100vw - 28px)}.history-summary{margin-top:4px!important}.history-list{overscroll-behavior:contain;gap:8px;max-height:min(56vh,520px);margin-top:16px;display:grid;overflow:auto}.history-empty{color:var(--muted);padding:16px 0;font-size:13px}.history-entry{border:1px solid var(--panel-border);background:color-mix(in srgb, var(--button-bg) 88%, transparent);border-radius:12px;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;display:grid}.history-entry-copy{gap:3px;min-width:0;display:grid}.history-entry-copy strong{font-size:13px;line-height:1.3}.history-entry-copy span{color:var(--muted);font-size:11px;line-height:1.35}.history-entry button{white-space:nowrap}.toast{z-index:40;left:50%;bottom:max(18px, env(safe-area-inset-bottom));border:1px solid var(--panel-border);background:var(--panel-bg);max-width:calc(100vw - 28px);color:var(--text);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-size:13px;font-weight:600;display:flex;position:fixed;transform:translate(-50%);box-shadow:0 12px 40px #0f172a33}:root[data-replay=true] #board{cursor:grab}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}@media (width<=980px){.topbar{grid-template-columns:auto 1fr auto;gap:8px}.brand-name{display:none}.status{min-width:0}.button-icon{display:inline}.actions .button-label{display:none}.actions button{width:42px;min-width:42px;height:42px;padding:0}.game-info{grid-template-columns:1fr;gap:8px}.game-options{justify-content:flex-start}}@media (width<=620px){.topbar{grid-template-columns:auto 1fr;min-height:54px;padding-bottom:7px}.brand-symbol{min-width:34px;height:32px;font-size:16px}.status{text-align:right;justify-self:end;font-size:12px}.actions{grid-column:1/-1;grid-template-columns:repeat(6,minmax(44px,1fr));justify-self:stretch;gap:4px;display:grid}.actions button{border-radius:9px;width:100%;min-width:44px;height:44px;min-height:44px}.game-info{padding:7px max(10px, env(safe-area-inset-right)) 7px max(10px, env(safe-area-inset-left))}.game-info-copy h1{font-size:12px}.game-info-copy p{font-size:10.5px;line-height:1.32}.game-options{gap:7px;width:100%}.option-field{flex:1}.option-field select{width:100%;min-height:36px;font-size:12px}.stats{display:none}.replay-bar{flex-direction:column;align-items:stretch;gap:8px}.replay-copy{grid-template-columns:1fr auto;align-items:center}.replay-actions{grid-template-columns:42px 42px 1fr 1.2fr;display:grid}.replay-actions button{padding-inline:8px;font-size:12px}.history-entry{grid-template-columns:1fr}.history-entry button{width:100%}.dialog-body{padding:18px}.dialog-actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.dialog-actions button{width:100%}}@media (width<=410px){.topbar{padding-inline:max(8px, env(safe-area-inset-left))}.button-icon{font-size:15px}.game-info-copy p{max-height:2.65em;overflow:hidden}}.about-button{width:30px;height:30px;min-height:30px;color:var(--mark-x);border-radius:999px;place-items:center;padding:0;font-size:14px;font-weight:800;line-height:1;display:grid;position:absolute;top:0;right:0;box-shadow:0 2px 10px #0f172a14}.about-dialog{width:min(470px,100vw - 28px)}.about-dialog .about-meta,.about-dialog .about-developer,.about-dialog .about-rights{margin-top:10px;font-size:12px}.about-links{flex-wrap:wrap;gap:8px 14px;margin-top:16px;display:flex}.about-links a{color:var(--mark-x);text-underline-offset:3px;font-size:13px;font-weight:700}.about-links a:focus-visible{outline:3px solid color-mix(in srgb, var(--mark-x) 45%, transparent);outline-offset:2px;border-radius:4px}@media (width<=620px){.game-info-copy{padding-right:42px}.about-button{width:38px;height:38px;min-height:38px;font-size:14px}}@media (height<=520px) and (orientation:landscape){.topbar{min-height:48px;padding-top:max(6px, env(safe-area-inset-top));grid-template-columns:auto 1fr auto;padding-bottom:6px}.actions{grid-column:auto;justify-self:end;display:flex}.actions button{width:38px;min-width:38px;height:38px;min-height:38px}.game-info{grid-template-columns:minmax(220px,1fr) auto;gap:10px;padding-top:5px;padding-bottom:5px}.game-info-copy p,.option-field>span{display:none}.stats{padding-top:0}}@media (forced-colors:active){.about-links a:focus-visible{outline-color:highlight}}
