/* 五子棋 · 无界 版权 © 月光 better.tian@qq.com */
/*!
 * 五子棋 · 无界（Gomoku · Unbounded）
 * 版权 © 月光 ｜ 联系：better.tian@qq.com
 * All rights reserved.
 */*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}:root{--bg: #0e1014;--bg2: #161a21;--panel: rgba(255, 255, 255, .055);--border: rgba(255, 255, 255, .09);--text: #e9ecf2;--text-dim: #8b93a3;--accent: #e8b64c;--accent-soft: rgba(232, 182, 76, .16);--grid: rgba(233, 236, 242, .13);--grid-major: rgba(233, 236, 242, .27);--ruler: rgba(233, 236, 242, .38);--overlay: radial-gradient(ellipse 130% 95% at 50% 42%, rgba(13,15,19,.32) 0%, rgba(13,15,19,.52) 72%, rgba(13,15,19,.62) 100%);--chip-b: linear-gradient(145deg, #565c68, #101216);--chip-w: linear-gradient(145deg, #ffffff, #c6cad2);--danger: #e0655a}[data-theme=light]{--bg: #f2eddf;--bg2: #faf6ec;--panel: rgba(0, 0, 0, .045);--border: rgba(0, 0, 0, .1);--text: #33302a;--text-dim: #948b7a;--accent: #a97c1d;--accent-soft: rgba(169, 124, 29, .14);--grid: rgba(51, 48, 42, .18);--grid-major: rgba(51, 48, 42, .38);--ruler: rgba(51, 48, 42, .5);--overlay: radial-gradient(ellipse 130% 95% at 50% 42%, rgba(250,246,236,.38) 0%, rgba(244,238,224,.56) 72%, rgba(236,228,208,.66) 100%);--chip-b: linear-gradient(145deg, #3d4148, #121418);--chip-w: linear-gradient(145deg, #ffffff, #d5d3c9);--danger: #c24f43}html,body{height:100%}body{position:fixed;inset:0;overflow:hidden;background:radial-gradient(900px 520px at 50% -8%,var(--bg2),transparent 62%),var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,PingFang SC,Hiragino Sans GB,Microsoft YaHei,sans-serif;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.board-wrap{position:fixed;inset:0;touch-action:none;animation:rise .7s cubic-bezier(.2,.9,.3,1) both}.board-wrap canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}#cv-fx{pointer-events:none}@keyframes rise{0%{opacity:0;transform:translateY(14px) scale(.985)}}.glass{background:var(--panel);border:1px solid var(--border);backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25);box-shadow:0 10px 32px #0000004d}.topbar{position:fixed;top:max(10px,env(safe-area-inset-top));left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;padding:8px 12px;max-width:calc(100vw - 20px);border-radius:18px;background:var(--panel);border:1px solid var(--border);backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25);box-shadow:0 10px 32px #0000004d;transition:transform .3s ease,opacity .3s ease}.brand{display:flex;flex-direction:column;line-height:1.15;padding:2px 4px 2px 8px}.brand b{font-family:Songti SC,"Noto Serif SC","Source Han Serif SC",Georgia,serif;font-size:19px;letter-spacing:6px;font-weight:600}.brand small{font-size:10px;letter-spacing:3px;color:var(--text-dim);text-transform:uppercase}.controls{display:flex;gap:8px;align-items:center}body.top-controls-hidden .controls{display:none}.top-toggle{width:30px;height:30px;border-radius:50%;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-size:12px;cursor:pointer;display:grid;place-items:center;transition:color .2s,transform .25s,background .2s}.top-toggle:hover{color:var(--text);background:var(--panel)}.vol-slider{-webkit-appearance:none;appearance:none;width:72px;height:4px;border-radius:2px;background:var(--border);outline:none;cursor:pointer;transition:opacity .2s}.vol-slider.muted{opacity:.35}.vol-slider::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);border:none;box-shadow:0 1px 4px #00000059;transition:transform .15s}.vol-slider::-webkit-slider-thumb:hover{transform:scale(1.15)}.vol-slider::-moz-range-thumb{width:14px;height:14px;border-radius:50%;background:var(--accent);border:none}.vol-slider::-moz-range-track{height:4px;border-radius:2px;background:var(--border)}.btn{height:36px;padding:0 12px;border-radius:12px;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);font-size:14px;cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);transition:color .2s,transform .15s,border-color .2s}.btn:hover{color:var(--text);transform:translateY(-1px)}.btn:active{transform:scale(.94)}.btn.danger{color:var(--danger);border-color:#e0655a73}@media (max-width: 500px){.vol-slider{width:56px}.brand small{display:none}}@media (max-width: 420px){.vol-slider{display:none}.btn{padding:0 10px}}.statusbar{position:fixed;bottom:max(12px,env(safe-area-inset-bottom));left:50%;transform:translate(-50%);z-index:20;display:flex;align-items:center;gap:10px;padding:8px 16px;border-radius:999px;background:var(--panel);border:1px solid var(--border);backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25);box-shadow:0 10px 32px #0000004d;white-space:nowrap;transition:transform .3s ease,opacity .3s ease}.chip{width:20px;height:20px;border-radius:50%;animation:chip-pulse 1.8s ease-in-out infinite}.chip.black{background:var(--chip-b);box-shadow:0 2px 6px #0006,0 0 0 4px #e8b64c1f}.chip.white{background:var(--chip-w);box-shadow:0 2px 6px #00000040,0 0 0 4px #e8b64c1f}@keyframes chip-pulse{50%{box-shadow:0 2px 6px #0000004d,0 0 0 8px #e8b64c0f}}#status-text{font-size:14px;letter-spacing:2px}.sep{color:var(--text-dim);opacity:.6}#move-count{color:var(--text-dim);font-size:12px;letter-spacing:1px}.coord{color:var(--text-dim);font-size:11px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;text-align:right;white-space:nowrap}@media (max-width: 420px){.coord,.sep{display:none}}.controls-stack{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));z-index:20;display:flex;flex-direction:column;align-items:center;gap:10px}.fab-cluster{display:flex;flex-direction:column;align-items:center;gap:8px;transition:opacity .3s ease,transform .3s ease}.fab{width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);font-size:18px;cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25);box-shadow:0 6px 20px #0000004d;transition:color .2s,transform .15s,opacity .25s}.fab:hover{color:var(--text);transform:translateY(-1px)}.fab:active{transform:scale(.92)}.fab-toggle{background:var(--accent-soft);color:var(--accent);font-size:14px}.fab-toggle:hover{color:var(--accent)}.fab-cluster.closed .fab:not(.fab-toggle){display:none}.immersive{width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);font-size:14px;cursor:pointer;display:grid;place-items:center;backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25);box-shadow:0 6px 20px #0000004d;transition:color .2s,transform .15s,background .3s}.immersive:hover{color:var(--text);transform:translateY(-1px)}.immersive:active{transform:scale(.92)}body.ui-hidden .topbar,body.ui-hidden .fab-cluster{opacity:0;pointer-events:none}body.ui-hidden .topbar{transform:translate(-50%) translateY(-130%)}body.ui-hidden .fab-cluster{transform:translateY(24px) scale(.85)}body.ui-hidden .statusbar{padding:5px 13px;gap:8px;background:#0e101480;border-color:#ffffff24;box-shadow:0 8px 24px #00000059}[data-theme=light] body.ui-hidden .statusbar{background:#faf6ecb8;border-color:#00000024;box-shadow:0 8px 24px #78603033}body.ui-hidden .statusbar #move-count,body.ui-hidden .statusbar .sep,body.ui-hidden .statusbar .coord{display:none}.overlay{position:fixed;inset:0;z-index:40;display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:opacity .35s ease}.overlay.show{opacity:1;pointer-events:auto}.overlay:before{content:"";position:absolute;inset:0;background:var(--overlay);z-index:-1}.overlay-card{position:relative;z-index:0;display:flex;flex-direction:column;align-items:center;gap:12px;padding:32px clamp(24px,6vw,48px) 28px;max-width:min(92vw,430px);border-radius:24px;border:1px solid rgba(255,255,255,.1);box-shadow:0 26px 80px #0000008c,0 8px 24px #00000059,inset 0 1px #ffffff14}.overlay-card:before{content:"";position:absolute;inset:0;border-radius:inherit;background:linear-gradient(168deg,#2026328c,#10131a6b);backdrop-filter:blur(8px) saturate(1.1);-webkit-backdrop-filter:blur(8px) saturate(1.1);z-index:-1}[data-theme=light] .overlay-card{border-color:#7860302e;box-shadow:0 24px 70px #78603047,0 8px 22px #7860301f,inset 0 1px #ffffffe6}[data-theme=light] .overlay-card:before{background:linear-gradient(168deg,#fffdf79e,#f2eddf80)}.overlay.show .overlay-card{animation:card-in .5s cubic-bezier(.2,.9,.3,1.15) both}@keyframes card-in{0%{opacity:0;transform:translateY(16px) scale(.95)}}[data-theme=light] .overlay p{color:#6f6758}.overlay h2{font-family:Songti SC,"Noto Serif SC","Source Han Serif SC",Georgia,serif;font-size:26px;letter-spacing:8px;font-weight:600}.overlay.show h2{animation:pop .45s cubic-bezier(.2,.9,.3,1.3) both}.overlay h2:after{content:"";display:block;width:56px;height:2px;margin:14px auto 0;border-radius:2px;background:linear-gradient(90deg,transparent,var(--accent),transparent);box-shadow:0 0 10px var(--accent-soft)}.overlay p{color:var(--text-dim);font-size:13px;letter-spacing:2px}.overlay p.proverb{color:var(--accent);opacity:.9}.overlay h2,.overlay p{text-shadow:0 1px 0 rgba(0,0,0,.35)}[data-theme=light] .overlay h2,[data-theme=light] .overlay p{text-shadow:0 1px 0 rgba(255,255,255,.65)}.colophon{font-family:Songti SC,"Noto Serif SC","Source Han Serif SC",Georgia,serif;font-size:12px;letter-spacing:3px;opacity:.55}@keyframes pop{0%{opacity:0;transform:scale(.85)}}.overlay-actions{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:6px}.btn-primary{padding:11px 36px;border-radius:999px;border:1px solid var(--accent-soft);background:var(--accent-soft);color:var(--accent);font-size:15px;letter-spacing:5px;cursor:pointer;transition:transform .15s,filter .2s}.btn-primary:hover{transform:translateY(-1px);filter:brightness(1.1)}.btn-primary:active{transform:scale(.96)}.btn-secondary{padding:11px 24px;border-radius:999px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-size:15px;letter-spacing:2px;cursor:pointer;transition:transform .15s,color .2s}.btn-secondary:hover{color:var(--text);transform:translateY(-1px)}.btn-secondary:active{transform:scale(.96)}
