/* 围棋 版权 © 月光 better.tian@qq.com main@ac26055 #8c1f7edf */
*{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;--glass: rgba(255, 255, 255, .02);--glass-solid: rgba(15, 18, 26, .86);--glass-blur: blur(14px) saturate(1.25);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;--font-serif: "Songti SC", "Noto Serif SC", "Source Han Serif SC", Georgia, serif;--font-mono: ui-monospace, SFMono-Regular, Menlo, monospace}[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);--glass: rgba(0, 0, 0, .02);--glass-solid: rgba(255, 253, 247, .9);--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%}html{background-color:var(--bg)}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:var(--font-sans);user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;touch-action:manipulation}.board-wrap{position:fixed;inset:0;touch-action:none}.board-wrap canvas{position:absolute;inset:0;width:100%;height:100%;cursor:crosshair}#cv-ripple,#cv-fx{pointer-events:none}.announce-toast{position:absolute;left:50%;transform:translate(-50%);max-width:min(84vw,480px);padding:8px 18px;border-radius:14px;background:#0f1218d9;color:var(--text);border:1px solid rgba(232,182,76,.38);box-shadow:0 6px 24px #0006,0 0 16px #e8b64c14;font-size:14px;letter-spacing:2px;line-height:1.5;text-align:center;opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;z-index:30}.announce-toast.show{opacity:1;transform:translate(-50%) translateY(4px)}[data-theme=light] .announce-toast{background:#fffdf7f2;color:#4a4436;border-color:#a97c1d57;box-shadow:0 6px 24px #00000029,0 0 14px #a97c1d1a}.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:10px;right:10px;margin:0 auto;width:fit-content;z-index:20;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:8px 12px;padding:6px 12px;max-width:calc(100vw - 20px);border-radius:18px;background:var(--glass);border:1px solid var(--border);box-shadow:0 10px 32px #0000004d;transition:transform .3s ease,opacity .3s ease;touch-action:none;cursor:grab}.topbar.dragged{left:auto;right:auto;transform:none}.topbar:active{cursor:grabbing}body.ui-hidden .topbar.dragged{transform:translateY(-130%)}.brand{display:flex;flex-direction:column;line-height:1.15;padding:2px 4px 2px 8px}.brand b{font-family:var(--font-serif);font-size:19px;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}.seg{display:flex;gap:2px;padding:3px;border:1px solid var(--border);border-radius:12px;background:#00000029}[data-theme=light] .seg{background:#0000000d}.seg-btn{height:28px;padding:0 12px;border:none;border-radius:9px;background:transparent;color:var(--text-dim);font-size:13.5px;letter-spacing:3px;cursor:pointer;transition:color .2s,background .2s}.seg-btn:hover{color:var(--text)}.seg-btn.active{background:var(--accent-soft);color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent-soft)}.statusbar .seg{padding:3px;gap:3px;border-radius:999px;flex-shrink:0}.statusbar .seg-btn{height:28px;padding:0 14px;font-size:13.5px;letter-spacing:1px;border-radius:999px}@media (max-width: 420px){.statusbar .seg-btn{padding:0 10px;font-size:12px}}.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:34px;padding:0 12px;border-radius:12px;border:1px solid var(--border);background:transparent;color:var(--text-dim);font-size:14px;cursor:pointer;display:grid;place-items:center;transition:color .2s,transform .15s,border-color .2s}.btn:hover{color:var(--text);transform:translateY(-1px)}.btn:active{transform:scale(.94)}.btn-entry{display:flex;position:fixed;top:max(10px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));z-index:40;width:38px;height:38px;border-radius:50%;align-items:center;justify-content:center;border:1px solid var(--border);background:var(--panel);color:var(--text-dim);font-size:15px;text-decoration:none;backdrop-filter:blur(14px) saturate(1.25);-webkit-backdrop-filter:blur(14px) saturate(1.25);box-shadow:0 6px 20px #0000004d;opacity:.8;transition:color .2s,transform .15s,opacity .2s}.btn-entry:hover{color:var(--text);transform:translateY(-1px);opacity:1}.btn-entry:active{transform:scale(.92)}.btn-entry svg{width:18px;height:18px}.btn.danger{color:var(--danger);border-color:#e0655a73}@media (max-width: 500px){.vol-slider{width:56px}.brand small{display:none}}@media (min-width: 501px){.brand b{letter-spacing:10px}.brand b .qi{margin-left:6px}}@media (max-width: 420px){.vol-slider{display:none}.btn{padding:0 10px}.seg-btn{padding:0 9px;letter-spacing:1px}}@media (max-width: 560px){.topbar{gap:4px 6px;padding:5px 8px;border-radius:14px}.topbar .brand,.topbar .seg{flex-shrink:0}.brand{padding:0 2px 0 6px}.brand b{font-size:15px;letter-spacing:2px}.seg-btn{height:28px;padding:0 9px;font-size:12px;letter-spacing:1px;min-width:44px}.controls{gap:4px}.btn{height:30px;padding:0 8px;font-size:12px;border-radius:9px}.vol-slider{display:none}}.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:12px;padding:7px 16px;border-radius:999px;background:var(--glass);border:1px solid var(--border);box-shadow:0 10px 32px #0000004d;white-space:nowrap;transition:transform .3s ease,opacity .3s ease}.chip{width:24px;height:24px;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:15.5px;letter-spacing:2px;font-weight:600}.sep{color:var(--text-dim);opacity:.6}#move-count{color:var(--text-dim);font-size:13px;letter-spacing:1px}.coord{color:var(--text-dim);font-size:12px;font-family:var(--font-mono);text-align:right;white-space:nowrap}@media (max-width: 420px){.coord,.sep{display:none}}.replay-bar{position:fixed;bottom:calc(max(12px,env(safe-area-inset-bottom)) + 66px);left:50%;transform:translate(-50%);z-index:25;display:flex;align-items:center;gap:6px;padding:8px 12px;border-radius:999px;background:var(--glass-solid);border:1px solid var(--border);box-shadow:0 10px 32px #0006;backdrop-filter:var(--glass-blur);-webkit-backdrop-filter:var(--glass-blur);white-space:nowrap}.replay-btn{min-width:34px;height:34px;padding:0 6px;border:none;border-radius:999px;background:var(--panel);color:var(--text);font-size:14px;line-height:1;cursor:pointer;display:grid;place-items:center;transition:background .2s,transform .15s}.replay-btn:hover{background:var(--accent-soft);color:var(--accent)}.replay-btn:active{transform:scale(.92)}.replay-btn:disabled{opacity:.35;cursor:default}.replay-btn:disabled:hover{background:var(--panel);color:var(--text)}.replay-count{color:var(--text);font-size:13px;letter-spacing:1px;min-width:66px;text-align:center}@media (max-width: 480px){.replay-bar{gap:4px;padding:6px 8px}.replay-btn{min-width:30px;height:30px;font-size:13px}.replay-count{min-width:58px;font-size:12px}}@media (max-width: 560px){.statusbar .seg{position:fixed;bottom:100%;left:50%;transform:translate(-50%);margin-bottom:8px}.replay-bar{bottom:calc(max(12px,env(safe-area-inset-bottom)) + 114px)}}.controls-stack{position:fixed;right:max(12px,env(safe-area-inset-right));bottom:max(12px,env(safe-area-inset-bottom));min-height:194px;z-index:20;display:flex;flex-direction:column;align-items:center;gap:10px;touch-action:none;cursor:grab;pointer-events:none}.controls-stack.dragged{right:auto;bottom:auto}.controls-stack:active{cursor:grabbing}.controls-stack>.immersive,.controls-stack>.fab-cluster>.fab{pointer-events:auto}body.ui-hidden .controls-stack>.fab-cluster>.fab{pointer-events:none}.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:#ffffff09;color:var(--text-dim);font-size:18px;cursor:pointer;display:grid;place-items:center;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 svg{width:18px;height:18px}.immersive{width:42px;height:42px;border-radius:50%;border:1px solid var(--border);background:#ffffff09;color:var(--text-dim);font-size:14px;cursor:pointer;display:grid;place-items:center;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)}[data-theme=light] .fab,[data-theme=light] .immersive{background:#00000006}body.ui-hidden .topbar,body.ui-hidden .fab-cluster{opacity:0;pointer-events:none}body.ui-hidden .topbar{transform:translateY(-130%)}body.ui-hidden .fab-cluster{transform:translateY(24px) scale(.85)}body.ui-hidden .statusbar,body.ui-hidden .controls-stack>.immersive{opacity:1;pointer-events:auto}.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);max-height:calc(100vh - 40px);overflow-y:auto;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:before{background:radial-gradient(ellipse 130% 95% at 50% 42%,#0d0f134d,#0d0f1375 72%,#0d0f138f)}[data-theme=light] #overlay:before{background:radial-gradient(ellipse 130% 95% at 50% 42%,#faf6ec66,#f4eee08a 72%,#ece4d0a3)}#overlay .overlay-card:before{background:linear-gradient(168deg,#202632cc,#10131ab8);backdrop-filter:blur(14px) saturate(1.1);-webkit-backdrop-filter:blur(14px) saturate(1.1)}[data-theme=light] #overlay .overlay-card:before{background:linear-gradient(168deg,#fffdf7ed,#f2eddfe3)}.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:var(--font-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 p.score{color:var(--accent);font-size:17px;letter-spacing:4px;font-weight:600;white-space:nowrap;margin-top:-4px;text-shadow:0 0 14px var(--accent-soft),0 1px 0 rgba(0,0,0,.35)}[data-theme=light] .overlay p.score{text-shadow:0 0 12px var(--accent-soft),0 1px 0 rgba(255,255,255,.65)}.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:var(--font-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}.overlay-actions #btn-again{flex:1 1 100%;max-width:240px}.back-card p{font-size:12px;letter-spacing:1px;line-height:1.7}.back-card .overlay-actions{margin-top:10px}.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)}.btn-unlock{color:var(--accent);border-color:var(--accent-soft)}.btn-unlock.done{color:var(--text-dim);border-color:var(--border)}.promo-tip{position:fixed;left:14px;bottom:84px;z-index:30;max-width:236px;padding:11px 15px;border-radius:16px;border:1px solid rgba(232,182,76,.45);background:radial-gradient(130% 170% at 15% -50%,rgba(232,182,76,.3),transparent 62%),linear-gradient(135deg,#e8b64c24,#e8b64c0a 65%),var(--panel);color:var(--text);font-size:13.5px;font-weight:700;letter-spacing:.5px;line-height:1.5;cursor:pointer;text-align:left;opacity:0;transform:translateY(10px);pointer-events:none;transition:opacity .35s ease,transform .35s ease;animation:promoGlow 3.2s ease-in-out infinite}@keyframes promoGlow{0%,to{box-shadow:0 0 #e8b64c38,0 10px 30px #00000059}50%{box-shadow:0 0 14px 3px #e8b64c61,0 10px 30px #00000059}}[data-theme=light] .promo-tip{border-color:#a97c1d59;background:radial-gradient(130% 170% at 15% -50%,rgba(169,124,29,.22),transparent 62%),linear-gradient(135deg,#a97c1d1f,#a97c1d0a 65%),#fffdf7a8}.promo-tip.show{opacity:1;transform:none;pointer-events:auto}.promo-tip.gone{opacity:0;transform:translateY(6px);pointer-events:none}.ripple-tip{position:fixed;left:50%;top:50%;z-index:30;transform:translate(-50%,-50%) scale(.96);display:flex;align-items:center;width:max-content;max-width:min(330px,90vw);padding:7px 7px 7px 15px;border-radius:999px;border:1px solid rgba(232,182,76,.45);background:radial-gradient(130% 170% at 15% -50%,rgba(232,182,76,.3),transparent 62%),linear-gradient(135deg,#e8b64c24,#e8b64c0a 65%),var(--panel);color:var(--text);font-size:13.5px;font-weight:700;letter-spacing:.3px;line-height:1.35;cursor:pointer;box-shadow:0 14px 34px #00000061;opacity:0;pointer-events:none;transition:opacity .3s ease,transform .3s ease;animation:promoGlow 3.2s ease-in-out infinite}.ripple-tip.show{opacity:1;transform:translate(-50%,-50%) scale(1);pointer-events:auto}[data-theme=light] .ripple-tip{border-color:#a97c1d59;background:radial-gradient(130% 170% at 15% -50%,rgba(169,124,29,.22),transparent 62%),linear-gradient(135deg,#a97c1d1f,#a97c1d0a 65%),#fffdf7eb}.ripple-body{display:flex;align-items:center;gap:7px;min-width:0}.ripple-body .promo-crown{font-size:15px;line-height:1}.ripple-txt{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ripple-x{flex:none;order:1;margin-left:7px;width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:#80808029;color:currentColor;font-size:12px;line-height:1;cursor:pointer;opacity:.75;transition:background .2s ease,opacity .2s ease}.ripple-x:hover{opacity:1;background:#8080804d}[hidden]{display:none!important}@media (max-width: 768px){.promo-tip{bottom:82px;left:12px}}@media (max-width: 560px){.promo-tip{bottom:calc(max(12px,env(safe-area-inset-bottom)) + 100px)}}.wise-btn.active{color:var(--accent);border-color:#e8b64c8c;background:var(--accent-soft)}.btn.wise-btn{display:inline-flex;align-items:center;gap:4px;padding:0 10px}.btn.wise-btn svg{flex-shrink:0}.wise-bar{backdrop-filter:none;-webkit-backdrop-filter:none;background:var(--glass);border-color:var(--border);color:var(--text);box-shadow:var(--shadow)}.wise-bar .replay-count{color:var(--accent);min-width:auto;padding:0 6px;letter-spacing:1px}.wise-bar .replay-btn{background:transparent;color:var(--text);min-width:auto;padding:0 13px;font-size:13.5px;white-space:nowrap}.wise-bar .replay-btn:hover{background:var(--accent-soft);color:var(--accent)}#wise-copy{border:1px solid var(--accent);color:var(--accent)}#wise-copy:hover{background:var(--accent-soft)}[data-theme=light] .wise-bar{background:var(--glass);border-color:var(--border);color:var(--text);box-shadow:var(--shadow)}.wise-bar .replay-count{display:inline-flex;align-items:center;height:34px;line-height:1}.wise-bar{bottom:auto;top:calc(max(10px,env(safe-area-inset-top)) + 56px)}
