.nb-board{--nb-paper-1: #f7efe0;--nb-paper-2: #ede1c8;--nb-paper-3: #e4d3b4;--nb-line: #4a3525;--nb-border: #cfbe9f;--nb-grid-opacity: .88;--nb-coord: rgb(74 53 37 / 78%);--nb-coord-shadow: rgb(255 255 255 / 72%);--nb-river: rgb(74 53 37 / 78%);--nb-river-shadow: rgb(255 255 255 / 45%);--nb-board-shadow: inset 0 0 0 1px rgb(255 255 255 / 80%), inset 0 0 36px rgb(130 95 50 / 8%), 0 4px 18px rgb(35 25 15 / 8%);--nb-piece-face-1: #ffffff;--nb-piece-face-2: #faf5eb;--nb-piece-face-3: #eedec6;--nb-piece-border: rgb(175 145 112 / 50%);--nb-piece-highlight: inset 0 1.5px 2px rgb(255 255 255 / 95%);--nb-piece-shade: rgb(110 75 35 / 15%);--nb-piece-shadow: 0 2px 4px rgb(45 30 15 / 14%), 0 6px 14px rgb(45 30 15 / 9%);--nb-piece-shadow-hover: 0 6px 12px rgb(45 30 15 / 16%), 0 12px 20px rgb(45 30 15 / 10%);--nb-piece-groove: rgb(145 115 85 / 26%);--nb-piece-groove-shadow: inset 0 1px 1.5px rgb(110 75 40 / 14%);--nb-piece-ring: 0 1px 1px rgb(255 255 255 / 75%);--nb-piece-selected-shadow: 0 0 0 2px rgb(155 59 49 / 85%), 0 0 12px rgb(155 59 49 / 24%), 0 8px 16px rgb(45 30 15 / 18%);--nb-selected-cast: radial-gradient(ellipse at center, rgb(45 30 15 / 24%) 0%, rgb(45 30 15 / 9%) 58%, transparent 78%);--nb-glyph-red: #9b3b31;--nb-glyph-black: #1a1e1d;--nb-glyph-shadow: rgb(255 255 255 / 90%);--nb-glyph-red-shadow: rgb(120 35 28 / 25%);--nb-glyph-black-shadow: rgb(0 0 0 / 30%);--nb-red-groove: rgb(155 59 49 / 30%);--nb-red-groove-inset: rgb(125 40 30 / 14%);--nb-black-groove: rgb(30 35 34 / 28%);--nb-black-groove-inset: rgb(0 0 0 / 18%);--nb-vermilion: #9b3b31;--nb-vermilion-soft: rgb(155 59 49 / 18%);--nb-vermilion-glow: rgb(155 59 49 / 46%);--nb-target: #9b3b31;--nb-target-hover: #843128;--nb-target-edge: rgb(255 255 255 / 88%);--nb-target-edge-hover: rgb(255 255 255 / 95%);--nb-target-glow: rgb(155 59 49 / 42%);--nb-last-origin-border: rgb(185 135 65 / 65%);--nb-last-origin-bg: radial-gradient(circle, rgb(200 150 75 / 16%) 0%, transparent 75%);--nb-last-destination-border: rgb(215 155 50 / 80%);--nb-last-destination-bg: radial-gradient(circle, rgb(225 165 60 / 22%) 0%, transparent 75%);--nb-destination-glow: 0 0 14px rgb(215 155 50 / 38%), inset 0 0 8px rgb(255 245 205 / 50%);--nb-destination-glow-soft: rgb(215 155 50 / 25%);--nb-destination-glow-strong: rgb(215 155 50 / 50%);--nb-destination-inset-soft: rgb(255 245 205 / 40%);--nb-destination-inset-strong: rgb(255 245 205 / 65%);--nb-engine: #107058;--nb-engine-border: rgb(16 112 88 / 75%);--nb-engine-soft: rgb(16 112 88 / 60%);--nb-engine-halo: rgb(255 255 255 / 85%);--nb-piece-size: clamp(30px, 9.2cqi, 62px);--nb-drag-shadow: rgb(45 30 15 / 22%);position:relative;container-type:inline-size;width:100%;aspect-ratio:8 / 9;padding:9.5%;border:1px solid var(--nb-border);border-radius:14px;background-color:var(--nb-paper-2);background-image:radial-gradient(ellipse at 50% 30%,var(--nb-paper-1) 0%,var(--nb-paper-2) 65%,var(--nb-paper-3) 100%);box-shadow:var(--nb-board-shadow);-webkit-user-select:none;user-select:none;touch-action:manipulation}[data-theme=dark] .nb-board{--nb-paper-1: #2b2016;--nb-paper-2: #241a13;--nb-paper-3: #1d1510;--nb-line: #96754c;--nb-border: #46372a;--nb-grid-opacity: .72;--nb-coord: rgb(220 196 155 / 62%);--nb-coord-shadow: rgb(0 0 0 / 45%);--nb-river: rgb(205 175 130 / 55%);--nb-river-shadow: rgb(0 0 0 / 45%);--nb-board-shadow: inset 0 0 0 1px rgb(255 255 255 / 5%), inset 0 0 38px rgb(0 0 0 / 35%), 0 10px 30px rgb(0 0 0 / 45%);--nb-piece-face-1: #fdf7ea;--nb-piece-face-2: #f3e7d0;--nb-piece-face-3: #e2d0b2;--nb-piece-border: rgb(120 95 65 / 55%);--nb-piece-highlight: inset 0 1.5px 2px rgb(255 255 255 / 85%);--nb-piece-shade: rgb(20 15 10 / 30%);--nb-piece-shadow: 0 2px 5px rgb(0 0 0 / 45%), 0 8px 18px rgb(0 0 0 / 35%);--nb-piece-shadow-hover: 0 8px 14px rgb(0 0 0 / 50%), 0 16px 26px rgb(0 0 0 / 38%);--nb-piece-groove: rgb(120 95 65 / 45%);--nb-piece-groove-shadow: inset 0 1px 1.5px rgb(90 65 40 / 26%);--nb-piece-ring: 0 1px 1px rgb(255 255 255 / 55%);--nb-piece-selected-shadow: 0 0 0 2px rgb(224 86 74 / 90%), 0 0 14px rgb(224 86 74 / 35%), 0 10px 20px rgb(0 0 0 / 50%);--nb-selected-cast: radial-gradient(ellipse at center, rgb(0 0 0 / 48%) 0%, rgb(0 0 0 / 22%) 58%, transparent 78%);--nb-glyph-red: #c05a4c;--nb-glyph-black: #241f1a;--nb-glyph-shadow: rgb(255 255 255 / 85%);--nb-glyph-red-shadow: rgb(130 25 18 / 30%);--nb-glyph-black-shadow: rgb(0 0 0 / 35%);--nb-red-groove: rgb(192 90 76 / 35%);--nb-red-groove-inset: rgb(140 55 45 / 20%);--nb-black-groove: rgb(40 35 28 / 35%);--nb-black-groove-inset: rgb(0 0 0 / 22%);--nb-vermilion: #c05a4c;--nb-vermilion-soft: rgb(192 90 76 / 22%);--nb-vermilion-glow: rgb(192 90 76 / 55%);--nb-target: #c05a4c;--nb-target-hover: #d06b5c;--nb-target-edge: rgb(20 15 10 / 65%);--nb-target-edge-hover: rgb(20 15 10 / 80%);--nb-target-glow: rgb(192 90 76 / 52%);--nb-last-origin-border: rgb(216 160 74 / 70%);--nb-last-origin-bg: radial-gradient(circle, rgb(216 160 74 / 18%) 0%, transparent 75%);--nb-last-destination-border: rgb(230 180 90 / 85%);--nb-last-destination-bg: radial-gradient(circle, rgb(230 180 90 / 24%) 0%, transparent 75%);--nb-destination-glow: 0 0 18px rgb(230 180 90 / 42%), inset 0 0 10px rgb(255 230 180 / 18%);--nb-destination-glow-soft: rgb(230 180 90 / 28%);--nb-destination-glow-strong: rgb(230 180 90 / 52%);--nb-destination-inset-soft: rgb(255 230 180 / 16%);--nb-destination-inset-strong: rgb(255 230 180 / 26%);--nb-engine: #4fbe9a;--nb-engine-border: rgb(79 190 154 / 80%);--nb-engine-soft: rgb(79 190 154 / 60%);--nb-engine-halo: rgb(0 0 0 / 50%);--nb-drag-shadow: rgb(0 0 0 / 48%)}.nb-coord-row{position:absolute;left:0;right:0;height:3.1%;pointer-events:none;-webkit-user-select:none;user-select:none;z-index:2}.nb-coord-row.is-top{top:.9%}.nb-coord-row.is-bottom{bottom:.9%}.nb-coord{position:absolute;left:var(--nb-left);top:50%;transform:translate(-50%,-50%);color:var(--nb-coord);font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif CJK SC",serif;font-size:clamp(9.5px,2cqi,13px);font-weight:700;line-height:1;letter-spacing:0;text-shadow:0 1px 0 var(--nb-coord-shadow);pointer-events:none}.nb-grid{position:absolute;inset:9.5%;width:81%;height:81%;overflow:visible;fill:none;stroke:var(--nb-line);stroke-width:.034;vector-effect:non-scaling-stroke}.nb-grid path{opacity:var(--nb-grid-opacity)}.nb-grid text{fill:var(--nb-river);stroke:none;font-family:Songti SC,STSong,"Source Han Serif SC","Noto Serif CJK SC",serif;font-size:.46px;letter-spacing:.22px;font-weight:500;text-shadow:0 1px 0 var(--nb-river-shadow)}.nb-square{position:absolute;left:var(--nb-left);top:var(--nb-top);width:var(--nb-piece-size);height:var(--nb-piece-size);padding:0;border:0;border-radius:50%!important;background:transparent;transform:translate(-50%,-50%);cursor:default;outline:none;-webkit-tap-highlight-color:transparent}.nb-square:focus,.nb-square:active{outline:none}.nb-square.is-movable{cursor:pointer}.nb-square.is-animating{z-index:3}.nb-board.is-busy{cursor:progress}.nb-square.is-last-move:before,.nb-square.is-selected:before{position:absolute;border-radius:50%!important;content:"";pointer-events:none}.nb-square.is-last-origin:before{inset:12%;border:1.5px dashed var(--nb-last-origin-border);background:var(--nb-last-origin-bg);animation:nb-halo-breathe 3.2s ease-in-out infinite alternate}.nb-square.is-last-destination:before{inset:4%;border:2px solid var(--nb-last-destination-border);background:var(--nb-last-destination-bg);box-shadow:var(--nb-destination-glow);animation:nb-halo-glow 2.4s ease-in-out infinite alternate}@keyframes nb-halo-breathe{0%{opacity:.6;transform:scale(.96)}to{opacity:1;transform:scale(1.02)}}@keyframes nb-halo-glow{0%{box-shadow:0 0 8px var(--nb-destination-glow-soft),inset 0 0 5px var(--nb-destination-inset-soft)}to{box-shadow:0 0 16px var(--nb-destination-glow-strong),inset 0 0 10px var(--nb-destination-inset-strong)}}.nb-square.is-in-check:after{position:absolute;inset:-4px;border-radius:50%;border:2px solid var(--nb-vermilion);background:radial-gradient(circle,var(--nb-vermilion-soft) 0%,transparent 70%);box-shadow:0 0 16px var(--nb-vermilion-glow);content:"";pointer-events:none;z-index:2;animation:nb-vermilion-breathe 2s ease-in-out infinite}.nb-square.is-in-check .nb-piece{box-shadow:var(--nb-piece-highlight),inset 0 -1.5px 2px var(--nb-piece-shade),0 0 0 2px var(--nb-vermilion),0 0 14px var(--nb-vermilion-glow)}@keyframes nb-vermilion-breathe{0%,to{transform:scale(.97);opacity:.75;box-shadow:0 0 8px var(--nb-vermilion-glow)}50%{transform:scale(1.05);opacity:1;box-shadow:0 0 22px var(--nb-vermilion-glow)}}.nb-engine-layer{position:absolute;z-index:4;inset:9.5%;width:81%;height:81%;overflow:visible;pointer-events:none}.nb-engine-arrow-halo{stroke:var(--nb-engine-halo);stroke-width:.12;stroke-linecap:round;fill:none;pointer-events:none}.nb-engine-arrow{stroke:var(--nb-engine);stroke-width:.065;stroke-linecap:round;fill:none;pointer-events:none}.nb-engine-arrowhead{fill:var(--nb-engine);stroke:none}.nb-square.is-engine-origin{border-radius:50%!important;box-shadow:inset 0 0 0 2px var(--nb-engine-soft);outline:none}.nb-square.is-engine-destination{z-index:2;border-radius:50%!important;box-shadow:0 0 0 2px var(--nb-engine-border);outline:none}.nb-square:focus-visible{z-index:4;outline:2px solid var(--nb-vermilion);outline-offset:3px}.nb-square.is-selected{z-index:3}.nb-square.is-selected:before{inset:14% 10% 2%;border-radius:50%!important;border:0;background:var(--nb-selected-cast);box-shadow:none;transform:translateY(4px) scale(.94);animation:none}.nb-square.is-target:after{position:absolute;inset:37%;border-radius:50%;background:radial-gradient(circle,var(--nb-target) 0%,color-mix(in srgb,var(--nb-target) 88%,black) 80%);box-shadow:0 0 0 2px var(--nb-target-edge),0 1px 3px var(--nb-piece-shadow);content:"";pointer-events:none;transition:transform .16s cubic-bezier(.2,.8,.2,1),box-shadow .16s ease,inset .16s ease}.nb-square.is-target:hover:after{inset:34%;transform:scale(1.15);background:radial-gradient(circle,var(--nb-target-hover) 0%,color-mix(in srgb,var(--nb-target) 88%,black) 80%);box-shadow:0 0 0 2px var(--nb-target-edge-hover),0 0 8px var(--nb-target-glow)}.nb-square.is-target:active:after{transform:scale(.92)}.nb-square.is-target-capture:after,.nb-square.is-target:has(.nb-piece):after{position:absolute;z-index:2;inset:-3px;border-radius:50%;border:2px solid var(--nb-vermilion);background:radial-gradient(circle,transparent 58%,var(--nb-vermilion-soft) 100%);box-shadow:0 0 0 1.5px var(--nb-target-edge),0 0 10px var(--nb-vermilion-glow);content:"";pointer-events:none;transition:transform .16s cubic-bezier(.2,.8,.2,1),box-shadow .16s ease}.nb-square.is-target-capture:hover:after,.nb-square.is-target:has(.nb-piece):hover:after{transform:scale(1.05);box-shadow:0 0 0 2px var(--nb-target-edge-hover),0 0 14px var(--nb-vermilion-glow),inset 0 0 10px var(--nb-vermilion-soft)}.nb-square.is-target-capture:active:after,.nb-square.is-target:has(.nb-piece):active:after{transform:scale(.96)}.nb-piece{position:relative;z-index:1;display:grid;width:100%;height:100%;place-items:center;border:1.5px solid var(--nb-piece-border);border-radius:50%;background:radial-gradient(circle at 35% 26%,var(--nb-piece-face-1) 0%,var(--nb-piece-face-2) 48%,var(--nb-piece-face-3) 100%);box-shadow:var(--nb-piece-highlight),inset 0 -2px 3px var(--nb-piece-shade),var(--nb-piece-shadow);font-family:LXGW WenKai,Kaiti SC,STKaiti,KaiTi,FZKai-Z03S,"Source Han Serif SC",Songti SC,serif;font-size:calc(var(--nb-piece-size) * .55);font-weight:700;line-height:1;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;transition:transform .18s cubic-bezier(.2,.9,.25,1),box-shadow .18s ease}.nb-piece:after{position:absolute;inset:8.5%;border-radius:50%;border:1px solid var(--nb-piece-groove);box-shadow:var(--nb-piece-groove-shadow),var(--nb-piece-ring);content:"";pointer-events:none}.nb-square.is-animating .nb-piece{transition:none}.nb-piece.is-fading{position:absolute;inset:0;z-index:0;pointer-events:none}.nb-piece.is-red{color:var(--nb-glyph-red);text-shadow:0 1px 0 var(--nb-glyph-shadow),0 -.5px .5px var(--nb-glyph-red-shadow)}.nb-piece.is-red:after{border-color:var(--nb-red-groove);box-shadow:inset 0 1px 1.5px var(--nb-red-groove-inset),0 1px 1px var(--nb-piece-ring)}.nb-piece.is-black{color:var(--nb-glyph-black);text-shadow:0 1px 0 var(--nb-glyph-shadow),0 -.5px .5px var(--nb-glyph-black-shadow)}.nb-piece.is-black:after{border-color:var(--nb-black-groove);box-shadow:inset 0 1px 1.5px var(--nb-black-groove-inset),0 1px 1px var(--nb-piece-ring)}.nb-square.is-movable:hover .nb-piece{transform:translateY(-3px) scale(1.035);box-shadow:var(--nb-piece-highlight),inset 0 -2px 3px var(--nb-piece-shade),var(--nb-piece-shadow-hover)}.nb-square.is-selected .nb-piece{transform:translateY(-5px) scale(1.06);border-color:var(--nb-vermilion);box-shadow:var(--nb-piece-highlight),inset 0 -2px 3px var(--nb-piece-shade),var(--nb-piece-selected-shadow)}.nb-square.is-opponent:hover .nb-piece{transform:none}.nb-square:active .nb-piece,.nb-square.is-movable:active .nb-piece,.nb-square.is-selected:active .nb-piece,.nb-square.is-opponent:active .nb-piece{transform:translateY(-1px) scale(.97);box-shadow:var(--nb-piece-highlight),var(--nb-piece-shadow)}@media(prefers-reduced-motion:reduce){.nb-piece{transition-duration:.01ms}.nb-square.is-last-origin:before,.nb-square.is-last-destination:before,.nb-square.is-in-check:after{animation:none}}:root{color-scheme:light;--ease-out: cubic-bezier(.23, 1, .32, 1);--paper: #e6e4da;--paper-sheet: #eceae2;--paper-raised: #f1efe7;--paper-sunken: #e0ded3;--ink: #15181a;--ink-2: #3f4542;--ink-3: #62675f;--ink-4: #7b7f76;--brick: #9b3b31;--brick-deep: #843128;--brick-text: #9b3b31;--brick-fill: #9b3b31;--brick-fill-hover: #843128;--brick-wash: rgb(155 59 49 / 7%);--brick-wash-strong: rgb(155 59 49 / 12%);--celadon: #4f655c;--celadon-text: #466056;--celadon-wash: rgb(79 101 92 / 8%);--rule: rgb(21 24 26 / 13%);--rule-2: rgb(21 24 26 / 26%);--rule-soft: rgb(21 24 26 / 7%);--sheet-border: #c9c7ba;--sheet-rule: rgb(155 59 49 / 6%);--sheet-highlight: #fff;--board-well-1: #dedbd0;--board-well-2: #d5d2c6;--board-mat: #dad7cb;--band-bg: var(--ink);--band-fg: #efeee6;--band-muted: rgb(239 238 230 / 68%);--band-cta: #9b3b31;--band-cta-border: #b84a3e;--band-cta-hover: #843128;--band-cta-text: #faf6f0;--surface-canvas: var(--paper);--surface-canvas-glow: #f2f0e8;--surface-card: var(--paper-sheet);--surface-card-solid: var(--paper-sheet);--surface-raised: var(--paper-raised);--surface-sunken: var(--paper-sunken);--surface-sunken-soft: var(--paper-sheet);--surface-hover: rgb(21 24 26 / 4%);--surface-hover-strong: rgb(21 24 26 / 7%);--surface-row: transparent;--surface-warm: var(--paper-raised);--surface-warm-deep: var(--paper-sunken);--surface-warm-glass: var(--paper-sheet);--surface-warm-glass-deep: var(--paper-sheet);--surface-overlay: var(--paper-sheet);--surface-input: var(--paper-sheet);--surface-glass: transparent;--surface-glass-strong: transparent;--surface-status-1: transparent;--surface-status-2: transparent;--surface-paper-a: var(--paper-sheet);--surface-paper-b: var(--paper-sunken);--status-rule: var(--rule-2);--surface-tint-vermilion: var(--brick-wash);--surface-tint-vermilion-faint: var(--brick-wash);--surface-tint-ink: rgb(21 24 26 / 5%);--surface-tint-ink-faint: rgb(21 24 26 / 3%);--surface-tint-amber: rgb(180 120 32 / 8%);--surface-skeleton: rgb(21 24 26 / 6%);--surface-skeleton-shine: rgb(21 24 26 / 2%);--border-hairline: var(--rule);--border-soft: var(--rule);--border-strong: var(--rule-2);--border-input: var(--rule-2);--border-warm: var(--rule);--border-warm-soft: var(--rule-soft);--border-danger: rgb(155 59 49 / 34%);--border-danger-strong: var(--brick);--border-ink: var(--rule-2);--text-strong: var(--ink);--text-body: var(--ink-2);--text-muted: var(--ink-3);--text-faint: var(--ink-3);--text-disabled: var(--ink-4);--text-inverse: var(--paper-sheet);--text-vermilion-strong: var(--brick-text);--text-amber-strong: #8a6412;--text-jade-strong: var(--celadon-text);--accent-vermilion: var(--brick);--accent-vermilion-deep: var(--brick-deep);--accent-vermilion-bright: #b4503f;--accent-vermilion-soft: var(--brick-wash-strong);--accent-vermilion-wash: var(--brick-wash);--accent-vermilion-faint: rgb(155 59 49 / 3%);--accent-vermilion-border: rgb(155 59 49 / 32%);--accent-vermilion-ring: rgb(155 59 49 / 16%);--accent-vermilion-glow: rgb(155 59 49 / 18%);--accent-amber: #b47820;--accent-amber-soft: rgb(180 120 32 / 8%);--accent-amber-wash: rgb(180 120 32 / 6%);--accent-amber-border: rgb(180 120 32 / 28%);--accent-amber-glow: rgb(180 120 32 / 18%);--accent-jade: var(--celadon);--accent-jade-soft: var(--celadon-wash);--accent-jade-wash: var(--celadon-wash);--accent-jade-border: rgb(79 101 92 / 30%);--accent-jade-glow: rgb(79 101 92 / 16%);--accent-warm-soft: transparent;--accent-ink-wash: rgb(21 24 26 / 4%);--accent-ink-border: var(--rule-2);--ink-seal: var(--brick);--ink-seal-contrast: #f6efe6;--seal-fill-soft: var(--brick-wash);--seal-ink: var(--brick);--seal-ink-contrast: #f6efe6;--color-bg: var(--paper);--color-text-main: var(--ink);--color-text-muted: var(--ink-3);--color-ink: var(--ink);--color-vermilion: var(--brick);--color-amber: #8a6412;--color-border: var(--rule);--color-card-bg: var(--paper-sheet);--color-card-border: var(--rule);--quality-blunder: #8b2925;--quality-mistake: #923f1e;--quality-inaccuracy: #8a6412;--quality-blunder-bg: var(--brick-wash);--quality-mistake-bg: rgb(146 63 30 / 6%);--quality-inaccuracy-bg: rgb(138 100 18 / 6%);--quality-blunder-border: rgb(139 41 37 / 30%);--quality-mistake-border: rgb(146 63 30 / 26%);--quality-inaccuracy-border: rgb(138 100 18 / 26%);--shadow-ink-3: rgb(0 0 0 / 3%);--shadow-ink-4: rgb(0 0 0 / 4%);--shadow-ink-5: rgb(0 0 0 / 5%);--shadow-ink-6: rgb(0 0 0 / 6%);--shadow-ink-8: rgb(0 0 0 / 8%);--shadow-ink-12: rgb(0 0 0 / 12%);--shadow-ink-15: rgb(0 0 0 / 15%);--shadow-ink-20: rgb(0 0 0 / 20%);--shadow-ink-25: rgb(0 0 0 / 25%);--shadow-ink-28: rgb(0 0 0 / 28%);--shadow-ink-55: rgb(0 0 0 / 55%);--shadow-warm-3: rgb(40 36 28 / 3%);--shadow-warm-4: rgb(40 36 28 / 4%);--shadow-warm-6: rgb(40 36 28 / 6%);--shadow-warm-8: rgb(40 36 28 / 8%);--shadow-dialog: rgb(40 42 36 / 22%);--shadow-dialog-strong: rgb(40 42 36 / 28%);--overlay-backdrop: rgb(21 24 26 / 48%);--paper-highlight: rgb(255 255 255 / 70%);--paper-highlight-strong: rgb(255 255 255 / 88%);--paper-highlight-soft: rgb(255 255 255 / 42%);--paper-highlight-faint: rgb(255 255 255 / 18%);--ring-track: var(--rule);--glow-amber-soft: rgb(180 120 32 / 12%);--glow-amber: rgb(180 120 32 / 26%);--glow-vermilion-soft: rgb(155 59 49 / 14%);--glow-vermilion: rgb(155 59 49 / 34%);--focus-ring-color: rgb(155 59 49 / 22%);--focus-ring-color-strong: rgb(155 59 49 / 36%);--focus-ring: 0 0 0 3px var(--focus-ring-color-strong);--mask-fade: rgb(0 0 0 / 55%);--mask-solid: #000;--shadow-soft: none;--shadow-card: none;--shadow-float: 0 24px 60px rgb(40 42 36 / 22%);--shadow-inset-paper: inset 0 1px 0 var(--paper-highlight);--button-primary-from: var(--brick);--button-primary-to: var(--brick);--button-primary-border: var(--brick);--button-primary-text: #f6efe6;--button-primary-from-hover: var(--brick-deep);--button-primary-to-hover: var(--brick-deep);--button-primary-border-hover: var(--brick-deep);--button-primary-highlight: transparent;--button-primary-highlight-hover: transparent;--button-secondary-from: transparent;--button-secondary-to: transparent;--button-secondary-border: var(--rule-2);--button-secondary-text: var(--ink-2);--button-secondary-hover-bg: rgb(21 24 26 / 4%);--button-secondary-hover-border: var(--brick);--button-secondary-hover-text: var(--brick-text);--button-danger-from: transparent;--button-danger-to: transparent;--button-danger-border: var(--rule-2);--button-danger-text: var(--brick-text);--button-danger-hover-bg: var(--brick-wash);--button-danger-hover-border: var(--brick);--button-danger-hover-text: var(--brick-deep);--button-disabled-bg: transparent;--button-disabled-border: var(--rule);--button-disabled-text: var(--ink-4);--piece-face-1: #fdfaf3;--piece-face-2: #f7f1e5;--piece-face-3: #ecdfc9;--piece-border: rgb(145 120 88 / 42%);--piece-border-soft: rgb(145 120 88 / 30%);--piece-shade: rgb(110 75 35 / 12%);--piece-shadow-color: rgb(45 30 15 / 12%);--piece-shadow-soft: rgb(45 30 15 / 8%);--piece-groove: rgb(145 115 85 / 24%);--piece-red: #9b3b31;--piece-black: #1c2120;--board-frame-border: var(--rule);--board-frame-1: var(--board-mat);--board-frame-2: var(--board-mat);--board-frame-shadow: none;--eval-bar-1: #232826;--eval-bar-2: #343a37;--eval-fill-1: var(--brick);--eval-fill-2: var(--brick-deep);--radar-core-1: #fdfaf3;--radar-core-2: #f4eee3;--radar-core-3: #e8dcc8;--radar-core-border: var(--brick);--radar-core-text: var(--brick);--radar-ring: rgb(155 59 49 / 40%);--radar-ring-bg: rgb(155 59 49 / 8%);--font-ui: "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Noto Sans SC", "Microsoft YaHei", system-ui, sans-serif;--font-serif: "Songti SC", "STSong", "Source Han Serif SC", "Noto Serif CJK SC", "Noto Serif SC", Georgia, serif;--font-num: ui-monospace, "SF Mono", "JetBrains Mono", Menlo, Consolas, monospace;color:var(--ink);background:var(--paper);font-family:var(--font-ui);font-size:13px;font-synthesis:none;text-rendering:optimizeLegibility}[data-theme=dark]{color-scheme:dark;--paper: #17191a;--paper-sheet: #1d2021;--paper-raised: #232627;--paper-sunken: #191c1d;--ink: #e8e5da;--ink-2: #c9c6bb;--ink-3: #9d9c92;--ink-4: #85857c;--brick: #c05a4c;--brick-deep: #d06b5c;--brick-text: #df8678;--brick-fill: #9b3b31;--brick-fill-hover: #843128;--brick-wash: rgb(155 59 49 / 14%);--brick-wash-strong: rgb(192 90 76 / 18%);--celadon: #7d9a8d;--celadon-text: #93ada1;--celadon-wash: rgb(125 154 141 / 10%);--rule: rgb(232 229 218 / 14%);--rule-2: rgb(232 229 218 / 26%);--rule-soft: rgb(232 229 218 / 8%);--sheet-border: #34383a;--sheet-rule: rgb(232 229 218 / 8%);--sheet-highlight: rgb(255 255 255 / 4%);--board-well-1: #191b1c;--board-well-2: #151718;--board-mat: #1b1e1f;--band-bg: #b8b3a5;--band-fg: #17191a;--band-muted: rgb(23 25 26 / 74%);--band-cta: #8f3128;--band-cta-border: #7d2a21;--band-cta-hover: #7d2a21;--band-cta-text: #faf6f0;--surface-canvas-glow: #1e2122;--surface-hover: rgb(232 229 218 / 5%);--surface-hover-strong: rgb(232 229 218 / 8%);--surface-tint-ink: rgb(232 229 218 / 6%);--surface-tint-ink-faint: rgb(232 229 218 / 3%);--paper-highlight: rgb(255 255 255 / 6%);--paper-highlight-strong: rgb(255 255 255 / 9%);--paper-highlight-soft: rgb(255 255 255 / 4%);--paper-highlight-faint: rgb(255 255 255 / 3%);--text-amber-strong: #d8a04a;--quality-blunder: #e8897c;--quality-mistake: #e5a06f;--quality-inaccuracy: #d8a04a;--quality-blunder-bg: rgb(192 90 76 / 10%);--quality-mistake-bg: rgb(229 160 111 / 8%);--quality-inaccuracy-bg: rgb(216 160 74 / 8%);--quality-blunder-border: rgb(232 137 124 / 30%);--quality-mistake-border: rgb(229 160 111 / 28%);--quality-inaccuracy-border: rgb(216 160 74 / 28%);--overlay-backdrop: rgb(6 7 7 / 68%);--shadow-dialog: rgb(0 0 0 / 55%);--shadow-float: 0 28px 70px rgb(0 0 0 / 55%);--button-disabled-border: var(--rule);--button-disabled-text: var(--ink-4);--piece-face-1: #fdf7ea;--piece-face-2: #f3e7d0;--piece-face-3: #e2d0b2;--piece-border: rgb(120 95 65 / 55%);--piece-border-soft: rgb(120 95 65 / 40%);--piece-shade: rgb(20 15 10 / 30%);--piece-shadow-color: rgb(0 0 0 / 38%);--piece-shadow-soft: rgb(0 0 0 / 30%);--piece-groove: rgb(120 95 65 / 40%);--piece-red: #c05a4c;--piece-black: #2a2620;--eval-bar-1: #3b403d;--eval-bar-2: #292d2b;--radar-core-1: #2a2723;--radar-core-2: #221f1c;--radar-core-3: #1a1816;--radar-core-border: #c05a4c;--radar-core-text: #df8678;--radar-ring: rgb(192 90 76 / 40%);--radar-ring-bg: rgb(192 90 76 / 10%)}*{box-sizing:border-box}html{min-width:320px;background:var(--paper)}body{min-width:320px;min-height:100vh;margin:0;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left);color:var(--ink);background-color:var(--paper);background-image:radial-gradient(ellipse at 50% -20%,var(--surface-canvas-glow) 0%,transparent 55%),radial-gradient(circle at 90% 90%,rgb(155 59 49 / 2%) 0%,transparent 38%);font-family:var(--font-ui);font-size:13px;line-height:1.7;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea{touch-action:manipulation}a{color:inherit}:focus-visible{outline:2px solid var(--brick);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);clip-path:inset(50%);white-space:nowrap;border:0}.site-header{display:flex;width:min(1400px,calc(100% - 48px));height:60px;margin:0 auto;align-items:center;justify-content:space-between}.brand{display:flex;min-width:0;align-items:baseline;gap:12px}.wordmark{color:var(--ink);font-family:var(--font-serif);font-size:24px;font-weight:700;letter-spacing:.01em;text-decoration:none}.wordmark:hover{opacity:.75}.brand-sub{color:var(--ink-3);font-size:11px;white-space:nowrap}.header-actions{display:flex;min-width:0;align-items:center;gap:18px}.sound-toggle-btn{display:inline-flex;width:40px;height:40px;flex:none;align-items:center;justify-content:center;padding:0;border:1px solid var(--rule-2);border-radius:2px;color:var(--ink-2);background:transparent;cursor:pointer;line-height:1;transition:transform .16s var(--ease-out),background-color .14s ease,border-color .14s ease,color .14s ease}.sound-toggle-btn:hover{border-color:var(--brick);color:var(--brick-text);background:var(--brick-wash)}.sound-toggle-btn:active{transform:scale(.97)}.sound-toggle-btn.is-muted{color:var(--ink-4)}.sound-toggle-btn svg{display:block}.header-return,.header-account{display:inline-flex;min-height:32px;margin:0;padding:0 4px;align-items:center;border-bottom:1px solid transparent;color:var(--ink-2);font-size:12.5px;text-decoration:none;white-space:nowrap}.header-return:hover,.header-account:hover{border-bottom-color:var(--rule-2);color:var(--brick-text)}.header-account.has-user{display:inline-flex;min-width:0;padding-bottom:0;border-bottom:0;align-items:center;gap:8px}.account-label-short{display:none}.header-user-pill{display:inline-flex;max-width:200px;min-width:0;align-items:center;gap:8px;overflow:hidden;padding:2px 8px;border:1px solid var(--rule);border-radius:2px;color:var(--ink-2);font-family:var(--font-num);font-size:11px;font-variant-numeric:tabular-nums;line-height:1.5;text-overflow:ellipsis;white-space:nowrap}.header-user-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.header-user-rating{flex:none;color:var(--ink-3);white-space:nowrap}.account-home{display:inline-flex;min-height:40px;margin:0;padding:0 12px;align-items:center;border:1px solid var(--rule-2);color:var(--ink-2);font-size:12px;text-decoration:none;white-space:nowrap}.account-home:hover{border-color:var(--brick);color:var(--brick-text)}.lobby-sheet,.account-sheet{position:relative;border:1px solid var(--sheet-border);background-color:var(--paper-sheet);box-shadow:inset 0 1px 0 var(--sheet-highlight),0 18px 44px #282a2414}.lobby-sheet:after,.account-sheet:after,.game-sheet:after{position:absolute;inset:10px;border:1px solid var(--rule-soft);content:"";pointer-events:none;z-index:2}[data-theme=dark] .lobby-sheet,[data-theme=dark] .account-sheet,[data-theme=dark] .error-sheet{box-shadow:inset 0 1px 0 var(--sheet-highlight),0 20px 50px #00000061}.lobby-sheet{width:min(1080px,calc(100% - 40px));margin:6px auto 72px;padding:40px 54px 46px}.lobby-head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px;padding-bottom:24px}.lobby-intro h1{margin:0;font-family:var(--font-serif);font-size:40px;font-weight:600;letter-spacing:.06em;line-height:1.1}.lede{max-width:34em;margin:10px 0 0;color:var(--ink-3);font-size:12.5px;line-height:1.7}.lobby-record{color:var(--ink-3);font-size:11.5px;line-height:1.8;text-align:right}.lobby-record p{margin:2px 0 0}.lobby-record.is-guest{display:block;padding:0;border:0;color:var(--ink-3);text-decoration:none}.lobby-record.is-guest .record-guest{color:var(--ink-2)}.lobby-record.is-guest:hover .record-cta{color:var(--brick)}.record-cta{display:inline;margin-left:6px;padding-bottom:1px;border-bottom:1px solid currentColor;color:var(--brick-text);font-size:11.5px;letter-spacing:.06em}.record-score{display:flex;align-items:baseline;justify-content:flex-end;gap:8px}.record-score b{color:var(--ink);font-family:var(--font-serif);font-size:30px;font-weight:600;font-variant-numeric:tabular-nums;letter-spacing:.02em;line-height:1.1}.record-score span,.record-guest{color:var(--ink-3);font-size:11px}.record-score .record-stage{color:var(--ink-3);font-size:10px;letter-spacing:.04em}.record-guest{display:block;font-family:var(--font-serif);font-size:15px;letter-spacing:.08em}.ladder-band{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:26px;margin:0 -54px;padding:24px 54px;color:var(--band-fg);background:var(--band-bg)}.river-word{color:var(--band-muted);font-family:var(--font-serif);font-size:18px;letter-spacing:.5em;white-space:nowrap}.ladder-copy h2{margin:0 0 3px}.band-title{padding:0;border:0;color:inherit;background:none;font-family:var(--font-serif);font-size:24px;font-weight:600;letter-spacing:.1em;line-height:1.25;cursor:pointer;text-align:left;transition:transform .16s var(--ease-out),color .14s ease}.band-title:hover{color:var(--band-cta)}.band-title:active{transform:scale(.97)}.ladder-copy p{margin:0;color:var(--band-muted);font-size:11.5px;line-height:1.6}.ladder-cta{min-height:44px;padding:9px 24px;border:1px solid var(--band-cta-border);border-radius:0;color:var(--band-cta-text);background:var(--band-cta);font-family:var(--font-serif);font-size:14px;letter-spacing:.16em;cursor:pointer;transition:transform .16s var(--ease-out),background-color .14s ease,border-color .14s ease}.ladder-cta:hover{background:var(--band-cta-hover);border-color:var(--band-cta-hover)}.ladder-cta:active{transform:scale(.97)}[data-theme=dark] .ladder-cta:hover{color:var(--band-cta-text)}.lobby-modes{margin:0;padding:0;border-bottom:1px solid var(--rule-2);list-style:none}.mode-row{display:grid;grid-template-columns:170px 1fr auto;align-items:center;gap:28px;padding:20px 2px;border-top:1px solid var(--rule)}.mode-row:first-child{border-top:0}.mode-row h3{margin:0}.mode-title{padding:0;border:0;color:var(--ink);background:none;font-family:var(--font-serif);font-size:19px;font-weight:600;letter-spacing:.08em;line-height:1.5;cursor:pointer;transition:transform .16s var(--ease-out),color .14s ease;text-align:left}.mode-title:hover{color:var(--brick-text)}.mode-title:active{transform-origin:left center;transform:scale(.97)}.mode-row p{margin:0;color:var(--ink-3);font-size:12.5px;line-height:1.7}.mode-action{justify-self:end;min-height:40px;padding:6px 18px;border:1px solid var(--rule-2);border-radius:0;color:var(--ink-2);background:transparent;font-family:var(--font-serif);font-size:12.5px;letter-spacing:.12em;cursor:pointer;transition:transform .16s var(--ease-out),color .14s ease,border-color .14s ease,background-color .14s ease}.mode-action:hover{border-color:var(--brick);color:var(--brick-text);background:var(--brick-wash)}.mode-action:active{transform:scale(.97)}.lobby-recent{margin-top:34px}.lobby-recent[hidden]{display:none}.recent-head{display:flex;align-items:baseline;justify-content:space-between;padding-bottom:10px;border-bottom:1px solid var(--rule-2)}.recent-head h2{margin:0;font-family:var(--font-serif);font-size:15px;font-weight:600;letter-spacing:.16em}.recent-head a{color:var(--ink-3);font-size:11.5px;text-decoration:none}.recent-head a:hover{color:var(--brick-text)}.recent-row{display:grid;grid-template-columns:74px 44px 1fr 88px 74px 52px;align-items:center;gap:16px;height:46px;border-bottom:1px solid var(--rule);color:var(--ink-2);font-size:12.5px}.recent-date,.recent-plies{color:var(--ink-3);font-variant-numeric:tabular-nums}.recent-empty{margin:0;padding:18px 2px;border-bottom:1px solid var(--rule);color:var(--ink-3);font-size:12px}.recent-result{color:var(--celadon-text);font-family:var(--font-serif);font-size:14px;font-weight:600}.recent-result.is-win{color:var(--brick-text)}.recent-result.is-loss{color:var(--ink-2)}.recent-result.is-draw{color:var(--celadon-text)}.recent-result.is-ongoing{color:var(--ink-3);font-size:11px;font-weight:400}.recent-who{min-width:0;overflow:hidden;color:var(--ink);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.recent-clock{color:var(--ink-3);font-variant-numeric:tabular-nums}.recent-review{justify-self:end;color:var(--celadon-text);font-size:11.5px;text-decoration:none;border-bottom:1px solid var(--accent-jade-border)}.recent-review:hover{color:var(--brick-text);border-bottom-color:var(--brick)}.lobby-foot{margin:26px 0 0;color:var(--ink-3);font-size:11px}.error-sheet{position:relative;width:min(720px,calc(100% - 40px));margin:clamp(40px,12vh,120px) auto;padding:48px 54px;border:1px solid var(--sheet-border);background-color:var(--paper-sheet);box-shadow:inset 0 1px 0 var(--sheet-highlight),0 18px 44px #282a2414}.error-sheet:after{position:absolute;inset:10px;border:1px solid var(--rule-soft);content:"";pointer-events:none}.error-sheet h1{margin:6px 0 10px;font-family:var(--font-serif);font-size:clamp(30px,4vw,42px);font-weight:600;letter-spacing:.06em;line-height:1.2}.error-sheet p{margin:0;color:var(--ink-3);font-size:13px;line-height:1.8}.error-actions{display:flex;margin-top:28px;flex-wrap:wrap;gap:10px}.primary-button,.secondary-button,.danger-button,.control-link{display:inline-flex;min-height:44px;padding:0 18px;align-items:center;justify-content:center;gap:8px;border-radius:0;font-family:var(--font-serif);font-size:13px;font-weight:600;letter-spacing:.12em;text-decoration:none;cursor:pointer;transition:transform .16s var(--ease-out),background-color .14s ease,border-color .14s ease,color .14s ease}.primary-button{border:1px solid var(--brick-fill);color:#f6efe6;background:var(--brick-fill)}.primary-button:hover:not(:disabled){border-color:var(--brick-fill-hover);background:var(--brick-fill-hover)}.secondary-button{border:1px solid var(--rule-2);color:var(--ink-2);background:transparent}.secondary-button:hover:not(:disabled){border-color:var(--brick);color:var(--brick-text);background:var(--brick-wash)}.danger-button{border:1px solid var(--rule-2);color:var(--brick-text);background:transparent}.danger-button:hover:not(:disabled){border-color:var(--brick);background:var(--brick-wash)}.primary-button:focus-visible,.secondary-button:focus-visible,.danger-button:focus-visible,.control-link:focus-visible{outline:2px solid var(--brick);outline-offset:2px}.primary-button:disabled,.secondary-button:disabled,.danger-button:disabled,.control-link:disabled{border-color:var(--rule);color:var(--ink-4);background:transparent;cursor:not-allowed}.primary-button:active:not(:disabled),.secondary-button:active:not(:disabled),.danger-button:active:not(:disabled),.control-link:active{transform:scale(.97)}.game-sheet{position:relative;display:grid;width:min(1060px,calc(100% - 48px));margin:2px auto 8px;grid-template-columns:minmax(0,696px) minmax(300px,1fr);border:1px solid var(--sheet-border);background:var(--paper-sheet);box-shadow:inset 0 1px 0 var(--sheet-highlight),0 18px 44px #282a2414}[data-theme=dark] .game-sheet{box-shadow:inset 0 1px 0 var(--sheet-highlight),0 20px 50px #00000061}.board-cell{display:flex;min-width:0;padding:8px;align-items:flex-start;justify-content:center;background:linear-gradient(180deg,var(--board-well-1),var(--board-well-2))}.board-stack{display:grid;width:min(680px,calc((100dvh - 150px) * 8 / 9 + 16px),100%);margin:0 auto;gap:4px}.board-frame{display:block;padding:8px;border:1px solid var(--rule-2);border-radius:2px;background:var(--board-mat);box-shadow:none}#board{width:100%;margin:0}#board .nb-board{border-radius:3px}.game-panel{display:flex;min-width:0;max-height:calc(100dvh - 62px);flex-direction:column;padding:20px 26px 16px;border-left:1px solid var(--rule-2);background-color:var(--paper-sheet)}.material{display:flex;min-height:22px;padding:0 2px;align-items:center;flex-wrap:nowrap;gap:3px;overflow:hidden}.material-piece{display:grid;width:20px;height:20px;place-items:center;overflow:hidden;border:1px solid var(--piece-border);border-radius:50%;color:var(--piece-black);background:radial-gradient(circle at 35% 26%,var(--piece-face-1) 0%,var(--piece-face-2) 50%,var(--piece-face-3) 100%);box-shadow:inset 0 1px 1px var(--paper-highlight-strong),inset 0 -1px 1.5px var(--piece-shade);font-family:var(--font-serif);font-size:12px;font-weight:700;line-height:1}.material.is-red .material-piece{color:var(--piece-red)}.material.is-black .material-piece{color:var(--piece-black)}.material-score{margin-left:3px;color:var(--ink-3);font-family:var(--font-num);font-size:11px;font-variant-numeric:tabular-nums}.turn-card,.panel-status{display:block;padding:0;border:0;border-radius:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.analysis-summary{padding:0 0 14px;border-bottom:1px solid var(--rule-2)}.status-line{display:flex;align-items:center;justify-content:space-between;gap:12px}.eyebrow{color:var(--ink-3);font-size:11px;font-weight:400;letter-spacing:.04em}.status-badges{display:inline-flex;align-items:center;gap:8px}.connection-status{display:inline-flex;align-items:center;gap:5px;color:var(--ink-3);font-size:10.5px}.conn-dot{width:5px;height:5px;border-radius:50%;background:var(--celadon)}.connection-status[data-state=connecting],.connection-status[data-state=reconnecting]{color:var(--text-amber-strong)}.connection-status[data-state=connecting] .conn-dot,.connection-status[data-state=reconnecting] .conn-dot{background:var(--accent-amber);animation:pulse-subtle 1.2s ease-in-out infinite}.live-dot{display:inline-flex;padding:1px 7px;align-items:center;gap:5px;border:1px solid var(--rule);border-radius:2px;color:var(--ink-3);background:transparent;font-size:10.5px;line-height:1.6}.live-dot[data-state=ongoing]{border-color:var(--accent-jade-border);color:var(--celadon-text)}.live-dot[data-state=waiting],.live-dot.is-analyzing{border-color:var(--accent-amber-border);color:var(--text-amber-strong)}#status{margin:10px 0 3px;color:var(--ink);font-family:var(--font-serif);font-size:clamp(23px,2.1vw,28px);font-weight:600;letter-spacing:.06em;line-height:1.28}#status b{color:var(--brick-text);font-weight:600}.is-red-turn #status{color:var(--ink)}.status-note{margin-left:9px;color:var(--brick-text);font-family:var(--font-ui);font-size:11px;font-weight:400;letter-spacing:.04em;vertical-align:4px}.game-detail{display:block;margin:0;padding-bottom:14px;border-bottom:1px solid var(--rule-2);color:var(--ink-3);font-family:var(--font-ui);font-size:11.5px;font-variant-numeric:tabular-nums}.analysis-summary .game-detail{padding-bottom:0;border-bottom:0}.result-block{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:14px;padding:14px 0;border-bottom:1px solid var(--rule)}.result-block[hidden]{display:none}.result-seal{display:grid;width:52px;height:52px;place-items:center;border:2px solid currentColor;box-shadow:inset 0 0 0 1px currentColor;font-family:var(--font-serif);font-size:19px;font-weight:700;letter-spacing:.08em;line-height:1}.result-seal.is-win{color:var(--brick-text)}.result-seal.is-loss{color:var(--ink)}.result-seal.is-draw{color:var(--celadon-text)}.result-meta{display:grid;min-width:0;gap:1px}.result-meta strong{font-family:var(--font-serif);font-size:15px;font-weight:600;letter-spacing:.05em}.result-meta span{color:var(--ink-3);font-size:11.5px}.friend-invite{display:grid;min-width:0;gap:3px;padding:10px 0;border-bottom:1px solid var(--rule);background:none}.friend-invite[hidden]{display:none}.friend-invite-label{color:var(--ink-3);font-size:10.5px;letter-spacing:.04em}.friend-invite code{min-width:0;overflow:hidden;color:var(--ink-2);font-family:var(--font-num);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.players{display:grid;gap:0;margin-top:0;padding-top:2px}.player{display:grid;min-height:0;padding:12px 0 10px;align-items:baseline;grid-template-columns:minmax(0,1fr) auto;gap:12px;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:none;transition:none}.player:last-child{border-bottom:1px solid var(--rule-2)}.is-local .player{grid-template-columns:minmax(0,1fr)}.player.is-active{background:none;box-shadow:none}.player-info{display:grid;min-width:0;gap:1px}.player-name{display:block;overflow:hidden;color:var(--ink);font-family:var(--font-serif);font-size:16px;font-weight:600;letter-spacing:.08em;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.player-you{margin-left:7px;padding:0 4px;border:1px solid var(--brick);color:var(--brick-text);font-family:var(--font-ui);font-size:9.5px;font-weight:400;letter-spacing:.04em;vertical-align:2px}.player-note{margin-left:7px;color:var(--ink-3);font-family:var(--font-ui);font-size:10.5px;font-weight:400;letter-spacing:.04em}.player.is-active .player-name:after{margin-left:10px;color:var(--brick-text);content:"行棋中";font-family:var(--font-ui);font-size:10.5px;font-weight:400;letter-spacing:.04em}.player-sub{color:var(--ink-3);font-size:10.5px;line-height:1.6}.player-presence{display:inline-flex;align-items:center;gap:4px;color:var(--ink-3);font-size:10px}.player-presence[data-presence=online]{color:var(--celadon-text)}.player-presence[data-presence=offline]{color:var(--text-amber-strong)}.presence-dot{width:4px;height:4px;border-radius:50%;background:currentColor}.clock{min-width:0;padding:0;border:0;border-radius:0;color:var(--ink);background:none;font-family:var(--font-serif);font-size:26px;font-variant-numeric:tabular-nums;font-weight:400;letter-spacing:.02em;line-height:1.2}.player.is-active .clock{color:var(--brick-text)}.clock.is-low{color:var(--text-amber-strong)}.clock.is-critical{color:var(--brick-text)}.clock[hidden],.is-local .clock,.turn-card.is-ended .players{display:none}.turn-card.is-ended .player.is-active .player-name:after{content:none}@media(min-width:821px){.game-panel:has(.turn-card.is-ended) .actions.is-result{order:1;margin-top:0;padding:12px 0 14px;border-top:0;border-bottom:1px solid var(--rule-2)}.game-panel:has(.turn-card.is-ended) .ledger{order:2;padding-top:14px}}.ledger{display:flex;min-height:0;flex:1;flex-direction:column;padding-top:16px}.ledger-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.ledger-heading h2{margin:0;font-family:var(--font-serif);font-size:13.5px;font-weight:600;letter-spacing:.18em}.ledger-heading span{color:var(--ink-3);font-size:10.5px}.ledger-cols{display:grid;grid-template-columns:46px minmax(0,1fr) minmax(0,1fr);column-gap:0;padding:6px 0;border-bottom:1px solid var(--rule-2);color:var(--ink-3);font-size:10.5px;line-height:1.4}.ledger-cols span:first-child{padding-left:8px}.ledger-cols span:nth-child(2),.ledger-cols span:nth-child(3){padding-left:4px;padding-right:8px}.move-record{display:grid;min-height:0;flex:1;margin:0;padding:0;grid-template-columns:46px minmax(0,1fr) minmax(0,1fr);grid-auto-rows:31px;align-content:start;column-gap:0;background-image:repeating-linear-gradient(to bottom,transparent 0 30px,var(--rule-soft) 30px 31px);overflow-y:auto;overscroll-behavior:contain;scroll-behavior:smooth;background-image:linear-gradient(90deg,transparent 46px,var(--rule-soft) 46px,var(--rule-soft) 47px,transparent 47px),linear-gradient(90deg,transparent calc(50% + 23px),var(--rule-soft) calc(50% + 23px),var(--rule-soft) calc(50% + 24px),transparent calc(50% + 24px)),repeating-linear-gradient(180deg,transparent 0,transparent 30px,var(--rule-soft) 30px,var(--rule-soft) 31px);list-style:none}.move-record li{min-height:31px;height:31px;padding:0;align-items:center;border:0;border-bottom:1px solid var(--rule);border-radius:0;background:none;font-size:12.5px;transition:none}.move-record li.is-red{grid-column:1 / 3;display:grid;grid-template-columns:46px minmax(0,1fr);column-gap:0}.move-record li.is-red:last-child{grid-column:1 / -1;grid-template-columns:46px minmax(0,1fr) minmax(0,1fr)}.move-record li.is-black{grid-column:3;display:flex;min-width:0}.move-record li.is-current-row{border-bottom-color:transparent;background:var(--brick-wash)}.move-record li.is-red.is-current-row{box-shadow:inset 2px 0 0 var(--brick)}.move-round{padding-left:8px;color:var(--ink-3);font-family:var(--font-num);font-size:11.5px;font-variant-numeric:tabular-nums;line-height:1}.move-cell{display:inline-flex;min-width:0;padding-left:4px;padding-right:8px;align-items:baseline;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.move-cell.is-empty{color:var(--ink-3);font-size:12px}.move-cell strong{font-family:var(--font-serif);font-size:13px;font-weight:400;letter-spacing:.03em}.move-record li.is-red .move-cell:not(.is-empty) strong{color:var(--brick-text)}.move-record li.is-black .move-cell:not(.is-empty) strong{color:var(--ink)}.move-meta{display:inline-flex;margin-left:6px;align-items:baseline;gap:5px;vertical-align:baseline}.move-tag{padding:0;border:0;border-radius:0;color:var(--ink-3);background:none;font-family:var(--font-ui);font-size:9.5px;font-style:normal;line-height:1}.move-tag.is-check{color:var(--brick-text)}.move-record .empty-moves{grid-column:1 / -1;display:flex;height:auto;min-height:44px;padding:16px 8px;align-items:center;justify-content:center;border:0;color:var(--ink-3);font-size:12px;text-align:center}.move-record.is-scrolled{-webkit-mask-image:linear-gradient(180deg,transparent 0,var(--mask-fade) 6px,var(--mask-solid) 18px,var(--mask-solid) 100%);mask-image:linear-gradient(180deg,transparent 0,var(--mask-fade) 6px,var(--mask-solid) 18px,var(--mask-solid) 100%)}.actions,.controls{display:grid;margin-top:14px;padding-top:0;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;border-top:1px solid var(--rule-2)}.actions button,.controls button{min-width:0;min-height:44px;padding:8px 4px;border:0;border-right:1px solid var(--rule);border-radius:0;color:var(--ink-2);background:transparent;font-family:var(--font-serif);font-size:12.5px;letter-spacing:.1em;cursor:pointer;transition:transform .16s var(--ease-out),background-color .14s ease,color .14s ease}.actions button:last-child,.controls button:last-child{border-right:0}.actions button:hover:not(:disabled),.controls button:hover:not(:disabled){background:var(--surface-hover)}.actions button:active:not(:disabled),.controls button:active:not(:disabled){transform:scale(.97)}.actions button.is-danger,.controls button.is-danger{color:var(--brick-text)}.actions button:disabled,.controls button:disabled{color:var(--ink-4);cursor:not-allowed}.actions.is-result,.controls.is-result{display:grid;padding-top:12px;grid-auto-flow:row;grid-template-columns:1fr 1fr;gap:8px}.actions.is-result .result-action,.controls.is-result .result-action{width:100%;border:1px solid var(--rule-2)}.actions.is-result .result-action.primary-button,.controls.is-result .result-action.primary-button{grid-column:1 / -1}.actions.is-result .result-action.primary-button,.controls.is-result .result-action.primary-button{border-color:var(--brick-fill);color:#f6efe6;background:var(--brick-fill)}.actions.is-result .result-action.secondary-button,.controls.is-result .result-action.secondary-button{background:transparent}.actions.is-result .result-action.primary-button:disabled,.controls.is-result .result-action.primary-button:disabled{border-color:var(--rule);color:var(--ink-4);background:transparent}dialog{color:var(--ink)}.confirm-dialog,.computer-dialog,.matchmaking-dialog,.gameover-dialog{max-height:calc(100dvh - 24px - env(safe-area-inset-top) - env(safe-area-inset-bottom));padding:0;border:1px solid var(--rule-2);border-radius:2px;background:var(--paper-sheet);box-shadow:var(--shadow-float);overflow:auto;overscroll-behavior:contain}.confirm-dialog::backdrop,.computer-dialog::backdrop,.matchmaking-dialog::backdrop,.gameover-dialog::backdrop,dialog::backdrop{background:var(--overlay-backdrop);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}.confirm-dialog{width:min(400px,calc(100% - 32px))}.confirm-content{display:flex;padding:28px 24px 22px;flex-direction:column;align-items:center;text-align:center}.dialog-seal-badge{display:grid;width:42px;height:42px;margin:0 auto 12px;place-items:center;border:2px solid var(--brick);border-radius:0;color:var(--brick-text);background:transparent;box-shadow:inset 0 0 0 1px var(--brick);transform:rotate(-2deg)}.dialog-seal-badge span{font-family:var(--font-serif);font-size:19px;font-weight:700;line-height:1}.dialog-eyebrow{margin-bottom:6px;color:var(--ink-3);font-size:10.5px;letter-spacing:.06em}.confirm-dialog h2{margin:0 0 8px;font-family:var(--font-serif);font-size:22px;font-weight:600;letter-spacing:.04em}.confirm-dialog p{margin:0;color:var(--ink-3);font-size:12.5px;line-height:1.7}.dialog-actions{display:grid;width:100%;margin-top:22px;grid-template-columns:1fr 1fr;gap:10px}.computer-dialog{width:min(520px,calc(100% - 28px))}.computer-dialog form{padding:26px}.dialog-heading h2{margin:5px 0 6px;font-family:var(--font-serif);font-size:24px;font-weight:600;letter-spacing:.04em}.dialog-heading p{margin:0 0 20px;color:var(--ink-3);font-size:12.5px;line-height:1.7}.level-grid{display:grid;margin:0;padding:0;grid-template-columns:1fr 1fr;border:1px solid var(--rule-2)}.level-grid label{cursor:pointer}.level-grid input{position:absolute;opacity:0;pointer-events:none}.level-grid span{display:grid;min-height:64px;padding:12px 14px;border:0;border-radius:0;background:transparent;transition:background-color .13s ease}.level-grid label+label span{border-left:1px solid var(--rule)}.level-grid label:nth-child(n+3) span{border-top:1px solid var(--rule)}.level-grid label:nth-child(2) span{border-left:1px solid var(--rule)}.level-grid label:hover span{background:var(--surface-hover)}.level-grid input:checked+span{background:var(--brick-wash);box-shadow:inset 0 0 0 1px var(--brick)}.level-grid strong{color:var(--ink);font-family:var(--font-serif);font-size:15px;font-weight:600;letter-spacing:.06em}.level-grid small{margin-top:2px;color:var(--ink-3);font-size:11px}.level-grid input:focus-visible+span{outline:2px solid var(--brick);outline-offset:-2px}.time-select{display:grid;margin-top:16px;grid-template-columns:auto 1fr;align-items:center;gap:14px;color:var(--ink-2);font-size:12.5px}.time-select select{min-height:42px;padding:0 12px;border:1px solid var(--rule-2);border-radius:0;color:var(--ink-2);background:var(--paper-sheet);outline:none}.time-select select:focus-visible{border-color:var(--brick)}.computer-dialog .dialog-actions button{min-height:44px}.matchmaking-dialog{width:min(520px,calc(100% - 28px));padding:26px}.matchmaking-dialog .dialog-heading p{margin-bottom:16px}.searching-state{display:grid;padding:6px 0 2px;justify-items:center;gap:8px;text-align:center}.searching-state[hidden]{display:none}.matchmaking-radar{position:relative;display:grid;width:140px;height:140px;margin:6px auto 4px;place-items:center;isolation:isolate}.matchmaking-radar:before{position:absolute;inset:10%;border:1px dashed var(--rule-2);border-radius:50%;content:"";pointer-events:none}.radar-ring{position:absolute;inset:0;border:1px solid var(--radar-ring);border-radius:50%;background:radial-gradient(circle,var(--radar-ring-bg) 0%,transparent 68%);animation:matchmaking-radar 3s cubic-bezier(.2,.65,.4,1) infinite}.radar-ring.is-two{animation-delay:1s}.radar-ring.is-three{animation-delay:2s}.radar-core{position:relative;display:grid;width:52px;height:52px;place-items:center;z-index:2;border:2px solid var(--radar-core-border);border-radius:50%;color:var(--radar-core-text);background:radial-gradient(circle at 36% 28%,var(--radar-core-1) 0%,var(--radar-core-2) 52%,var(--radar-core-3) 100%);font-family:var(--font-serif);font-size:23px;font-weight:700;line-height:1}.searching-title{margin:0;color:var(--ink);font-family:var(--font-serif);font-size:16px;font-weight:600;letter-spacing:.04em}.searching-timer{margin:0;color:var(--ink-3);font-family:var(--font-num);font-size:12px;font-variant-numeric:tabular-nums}.rating-window-pill{display:inline-flex;padding:2px 9px;border:1px solid var(--rule);border-radius:2px;color:var(--ink-3);font-family:var(--font-serif);font-size:11px;letter-spacing:.03em}#matchmaking-abort-btn{min-width:132px;margin-top:6px}.gameover-dialog{width:min(420px,calc(100% - 32px));border-radius:2px;box-shadow:inset 0 0 0 1px var(--sheet-highlight),0 24px 60px var(--shadow-dialog)}.gameover-dialog::backdrop{background:var(--overlay-backdrop);-webkit-backdrop-filter:none;backdrop-filter:none}.gameover-card{position:relative;display:flex;padding:28px 26px 22px;flex-direction:column;align-items:center;text-align:center}.gameover-close-icon{position:absolute;top:12px;right:12px;display:grid;width:30px;height:30px;place-items:center;border:0;border-radius:0;color:var(--ink-3);background:transparent;font-size:20px;line-height:1;cursor:pointer}.gameover-close-icon:hover{color:var(--brick-text);background:var(--brick-wash)}.gameover-seal-wrap{margin:2px 0 12px}.gameover-seal{display:grid;width:74px;height:74px;place-items:center;border:2px solid currentColor;border-radius:0;box-shadow:inset 0 0 0 1.5px currentColor}.gameover-seal span{font-family:var(--font-serif);font-size:27px;font-weight:700;letter-spacing:2px;line-height:1}.gameover-seal.is-win,.gameover-seal.is-win-red{color:var(--brick-text);background:transparent;transform:rotate(-2deg)}.gameover-seal.is-win-black,.gameover-seal.is-loss{color:var(--ink);background:transparent;transform:rotate(1.5deg)}.gameover-seal.is-draw{color:var(--celadon-text);background:transparent;transform:rotate(-1deg)}.gameover-title{margin:0;color:var(--ink-3);font-family:var(--font-serif);font-size:13px;font-weight:600;letter-spacing:.38em}.gameover-reason{margin:0 0 18px;color:var(--ink-3);font-size:12.5px;line-height:1.7}.gameover-meta{margin:0 0 20px;color:var(--ink-3);font-family:var(--font-num);font-size:12px;font-variant-numeric:tabular-nums;letter-spacing:.04em}.gameover-stats{display:grid;width:100%;margin-bottom:20px;grid-template-columns:repeat(auto-fit,minmax(80px,1fr));border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2)}.stat-item{display:flex;padding:10px 8px;flex-direction:column;gap:2px;border:0;border-left:1px solid var(--rule);border-radius:0;background:transparent}.stat-item:first-child{border-left:0}.stat-label{color:var(--ink-3);font-size:10.5px}.stat-value{color:var(--ink);font-family:var(--font-num);font-size:14px;font-variant-numeric:tabular-nums;font-weight:600}.stat-value.is-positive{color:var(--brick-text)}.stat-value.is-negative{color:var(--ink-2)}.stat-value.is-neutral{color:var(--celadon-text)}.gameover-actions{display:grid;width:100%;grid-template-columns:1fr;gap:8px}.gameover-actions button{min-height:44px}.gameover-actions button:active:not(:disabled){transform:scale(.97)}.gameover-inspect-btn{margin-top:10px;padding:5px 10px;border:0;color:var(--ink-3);background:transparent;font-size:12px;cursor:pointer}.gameover-inspect-btn:hover{color:var(--brick-text)}.analysis-sheet{grid-template-columns:minmax(0,760px) minmax(320px,1fr)}.analysis-sheet .board-cell{display:block}.board-stage{display:grid;width:min(100%,calc(42px + (100dvh - 200px) * 8 / 9));margin:0 auto;grid-template-columns:34px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto;gap:4px 8px;align-items:stretch}.board-stage>#material-top{grid-column:2;grid-row:1}.board-stage>.eval-rail{grid-column:1;grid-row:2}.board-stage>.board-frame{grid-column:2;grid-row:2}.board-stage>#material-bottom{grid-column:2;grid-row:3}.eval-rail{display:grid;min-height:0;grid-template-rows:minmax(0,1fr) auto;gap:6px}.eval-bar{position:relative;width:7px;justify-self:center;overflow:visible;border:1px solid var(--rule-2);border-radius:0;background:linear-gradient(180deg,var(--eval-bar-1) 0%,var(--eval-bar-2) 100%)}.eval-bar:before{position:absolute;top:50%;right:-5px;left:-5px;height:1px;background:var(--rule-2);content:"";pointer-events:none;z-index:2}.eval-bar:after{position:absolute;top:50%;left:50%;width:9px;height:9px;border:1px solid var(--rule-2);background:var(--paper-sheet);content:"";pointer-events:none;transform:translate(-50%,-50%) rotate(45deg);z-index:3}.eval-bar.is-red-ahead:after{border-color:var(--brick)}.eval-fill{position:absolute;right:0;bottom:0;left:0;height:100%;background:linear-gradient(180deg,var(--eval-fill-1) 0%,var(--eval-fill-2) 100%);transform:scaleY(.5);transform-origin:bottom;transition:transform .24s var(--ease-out)}.eval-bar.is-analyzing{animation:pulse-subtle 2s ease-in-out infinite}.eval-score{color:var(--ink-3);font-family:var(--font-num);font-size:10.5px;font-variant-numeric:tabular-nums;text-align:center}.eval-score.is-red{color:var(--brick-text)}.eval-score.is-black{color:var(--ink-2)}.review-nav{display:grid;width:min(100%,calc(42px + (100dvh - 200px) * 8 / 9));margin:0 auto;padding-left:42px;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px}.review-nav button{display:inline-flex;min-height:42px;padding:0 6px;align-items:center;justify-content:center;gap:5px;font-size:11.5px;transition:transform .16s var(--ease-out)}.review-nav button span{white-space:nowrap}.review-nav button:active:not(:disabled){transform:scale(.97)}.analysis-panel{display:flex;flex-direction:column;gap:0}.analysis-summary{min-height:0}#analysis-status{margin:10px 0 3px;font-family:var(--font-serif);font-size:22px;font-weight:600;letter-spacing:.04em;line-height:1.3}#analysis-detail{font-size:11.5px}.analysis-quality-summary{display:grid;padding-top:9px;gap:4px;border-top:1px solid var(--rule)}.quality-row{display:grid;min-width:0;grid-template-columns:38px minmax(0,1fr);align-items:center;gap:6px}.quality-side{color:var(--ink-3);font-family:var(--font-serif);font-size:11px;font-weight:600;letter-spacing:.06em}.quality-row.is-red .quality-side{color:var(--brick-text)}.quality-items{display:flex;min-width:0;align-items:center;flex-wrap:wrap;gap:5px}.quality-stat{display:inline-flex;min-height:22px;padding:0 6px;align-items:center;gap:3px;border:1px solid var(--rule);border-radius:2px;color:var(--ink-3);background:transparent;font:inherit;font-size:10px;font-variant-numeric:tabular-nums;cursor:pointer}.quality-stat b{font-style:normal;font-weight:700}.quality-stat:disabled{cursor:default;opacity:.45}.quality-stat.is-blunder b{color:var(--quality-blunder)}.quality-stat.is-mistake b{color:var(--quality-mistake)}.quality-stat.is-inaccuracy b{color:var(--quality-inaccuracy)}.quality-stat.is-blunder:not(:disabled){border-color:var(--quality-blunder-border);background:var(--quality-blunder-bg)}.quality-stat.is-mistake:not(:disabled){border-color:var(--quality-mistake-border);background:var(--quality-mistake-bg)}.quality-stat.is-inaccuracy:not(:disabled){border-color:var(--quality-inaccuracy-border);background:var(--quality-inaccuracy-bg)}.quality-none{color:var(--ink-3);font-size:10.5px}.review-detail{display:grid;padding:12px 0;gap:3px;border:0;border-bottom:1px solid var(--rule-2);border-radius:0;background:none}.review-loading-card{display:flex;align-items:center;gap:12px;padding:4px 0}.review-loading-text{display:grid;gap:2px}.review-loading-text strong{color:var(--ink);font-family:var(--font-serif);font-size:14px;font-weight:600}.review-loading-text small{color:var(--ink-3);font-size:11.5px;line-height:1.5}.loading-spinner{display:inline-block;width:16px;height:16px;border:2px solid var(--rule);border-top-color:var(--brick);border-radius:50%;animation:spin .8s linear infinite}.review-detail p{margin:0}.review-detail-move{display:flex;align-items:baseline;gap:8px;font-family:var(--font-serif);font-size:15px}.review-detail .glyph{font-family:var(--font-ui);font-size:12px;font-weight:700}.review-detail .glyph.is-inaccuracy{color:var(--quality-inaccuracy)}.review-detail .glyph.is-mistake{color:var(--quality-mistake)}.review-detail .glyph.is-blunder{color:var(--quality-blunder)}.review-judgment{color:var(--ink-2);font-size:12.5px;line-height:1.7}.review-engine{color:var(--celadon-text);font-size:12.5px;line-height:1.7}.analysis-ledger{flex:1;min-height:120px;padding-top:12px}.review-pairs{min-height:0;flex:1;margin:0;padding:0;overflow-y:auto;overscroll-behavior:contain;border:1px solid var(--rule-2);scrollbar-width:thin;scrollbar-color:var(--rule-2) transparent;list-style:none}.review-pairs::-webkit-scrollbar{width:5px}.review-pairs::-webkit-scrollbar-thumb{background:var(--rule-2)}.review-pairs li{display:grid;min-height:31px;padding:0;grid-template-columns:46px minmax(0,1fr) minmax(0,1fr);align-items:center;column-gap:0;border-bottom:1px solid var(--rule)}.review-pairs li:has(.review-ply[aria-current=step]){border-bottom-color:transparent;background:var(--brick-wash);box-shadow:inset 2px 0 0 var(--brick)}.review-pairs .pair-index{padding-left:8px;color:var(--ink-3);font-family:var(--font-num);font-size:11.5px;font-variant-numeric:tabular-nums;text-align:left}.review-pair-skeleton{display:grid;padding:4px 0;grid-template-columns:46px minmax(0,1fr) minmax(0,1fr);align-items:center;gap:6px}.skeleton-cell{height:24px;background:linear-gradient(90deg,var(--surface-skeleton) 25%,var(--surface-skeleton-shine) 50%,var(--surface-skeleton) 75%);background-size:200% 100%;animation:shimmer 1.8s infinite}.review-ply{min-width:0;padding:4px 8px 4px 4px;overflow:hidden;border:0;border-radius:0;color:inherit;background:transparent;font-family:var(--font-serif);font-size:13px;line-height:1.35;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.review-ply:hover{background:var(--surface-hover)}.review-ply[aria-current=step]{background:transparent;font-weight:600}.review-ply:focus-visible{outline:2px solid var(--brick);outline-offset:-2px}.review-ply .glyph{margin-left:1px;font-family:var(--font-ui);font-size:11px;font-style:normal;font-weight:700}.review-ply.is-inaccuracy .glyph{color:var(--quality-inaccuracy)}.review-ply.is-mistake,.review-ply.is-mistake .glyph{color:var(--quality-mistake)}.review-ply.is-blunder,.review-ply.is-blunder .glyph{color:var(--quality-blunder)}.review-empty{min-height:1px}.review-back{margin-left:auto;color:var(--ink-2);font-family:var(--font-serif);font-size:12px;letter-spacing:.06em;text-decoration:none;border-bottom:1px solid var(--rule-2);padding-bottom:1px}.review-back:hover{color:var(--brick);border-bottom-color:var(--brick)}.account-layout{width:min(760px,calc(100% - 32px));margin:52px auto}.account-sheet{padding:34px 40px 40px}.account-card{padding:0;border:0;border-radius:0;background:none;box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.account-card:not([hidden])+.account-card{margin-top:28px;padding-top:24px;border-top:1px solid var(--rule-2)}.account-card h1{margin:6px 0 8px;font-family:var(--font-serif);font-size:24px;font-weight:600;letter-spacing:.05em}.profile-header{display:flex;align-items:center;gap:16px;margin:6px 0 10px}.profile-avatar{display:grid;place-items:center;width:48px;height:48px;flex:none;border:1px solid var(--accent-vermilion-border);background:var(--brick-wash);color:var(--brick-text);font-family:var(--font-serif);font-size:22px;font-weight:700;box-shadow:inset 0 0 0 1px var(--sheet-highlight)}.profile-info{display:grid;gap:2px;min-width:0}.profile-title{display:flex;align-items:baseline;gap:12px;flex-wrap:wrap}.profile-username{color:var(--ink);font-family:var(--font-serif);font-size:26px;font-weight:700;letter-spacing:.04em;line-height:1.2}.profile-rating-badge{display:inline-flex;align-items:center;gap:6px;color:var(--brick-text);font-family:var(--font-num);font-size:18px;font-weight:600;letter-spacing:.02em}.profile-subtitle{margin:0;color:var(--ink-3);font-size:12px}.account-card>p{margin:0 0 22px;color:var(--ink-3);font-size:12.5px;line-height:1.7}.account-card form{display:grid;gap:14px}.account-card label{display:grid;gap:5px;color:var(--ink-2);font-size:12px}.account-card input{min-height:42px;padding:0 12px;border:1px solid var(--rule-2);border-radius:0;color:var(--ink);background:var(--paper-sheet);outline:none}.account-card input:focus-visible{border-color:var(--brick)}.account-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}.account-actions button,.account-heading button{min-height:44px;border-radius:0;font:inherit;cursor:pointer}.account-heading{display:flex;align-items:center;justify-content:space-between;gap:16px}.account-heading button{padding:0 16px;border:1px solid var(--rule-2);color:var(--ink-2);background:transparent;font-family:var(--font-serif);font-size:12.5px;letter-spacing:.1em}.account-heading button:hover{border-color:var(--brick);color:var(--brick-text)}.form-error{min-height:20px;margin:0;color:var(--brick-text);font-size:12px}.account-stats-bar{display:grid;margin:18px 0 0;padding:12px 0;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-top:1px solid var(--rule-2);border-bottom:1px solid var(--rule-2);background:none}.account-stat{display:grid;min-width:0;padding:2px 14px;gap:2px;border-left:1px solid var(--rule)}.account-stat:first-child{padding-left:0;border-left:0}.account-stat-label{color:var(--ink-3);font-size:10.5px}.account-stat strong{display:flex;align-items:baseline;gap:5px;color:var(--ink);font-family:var(--font-num);font-size:21px;font-weight:600;font-variant-numeric:tabular-nums;line-height:1.2}.account-stat small{overflow:hidden;color:var(--ink-3);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.account-stat.is-rating strong{color:var(--brick-text)}.rating-stage{padding:0 5px;border:1px solid var(--accent-vermilion-border);border-radius:0;color:var(--brick-text);font-family:var(--font-serif);font-size:9.5px;font-style:normal;font-weight:400;letter-spacing:.04em}.account-stat.is-record strong{gap:3px;font-size:18px}.account-stat.is-record b{font-weight:600}.account-stat.is-record i{color:var(--ink-4);font-style:normal;font-weight:400}.account-stat.is-record b.is-win{color:var(--brick-text)}.account-stat.is-record b.is-draw{color:var(--quality-inaccuracy)}.account-stat.is-record b.is-loss{color:var(--ink-2)}.record-rate-bar{display:flex;height:4px;width:100%;margin:4px 0 2px;background:var(--rule);overflow:hidden;gap:1px}.record-rate-bar .bar-win{background:var(--brick)}.record-rate-bar .bar-draw{background:var(--quality-inaccuracy)}.record-rate-bar .bar-loss{background:var(--ink-4)}.history-list{display:grid;margin:14px 0 0;padding:0;gap:0;border-bottom:1px solid var(--rule-2);list-style:none}.history-item{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:stretch;gap:8px;border-top:1px solid var(--rule)}.history-list .history-game{display:flex;min-width:0;padding:12px 4px;align-items:center;justify-content:space-between;gap:12px;border:0;border-radius:0;color:var(--ink-2);background:transparent;text-decoration:none;transition:background-color .12s ease}.history-list .history-game:hover{background:var(--surface-hover);box-shadow:none;transform:none}.history-summary{display:flex;min-width:0;align-items:center;gap:11px}.history-result{display:inline-flex;min-width:32px;height:28px;padding:0 8px;flex:none;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:2px;box-shadow:none;font-family:var(--font-serif);font-size:12px;font-weight:600;letter-spacing:.06em;white-space:nowrap}.history-result.is-win{color:var(--brick-text);border-color:var(--accent-vermilion-border);background:var(--brick-wash-strong)}.history-result.is-loss{color:var(--ink-3);border-color:var(--rule-2);background:transparent}.history-result.is-draw{color:var(--quality-inaccuracy);border-color:var(--quality-inaccuracy-border);background:var(--quality-inaccuracy-bg)}.history-result.is-ongoing{color:var(--celadon-text);border-color:var(--accent-jade-border);background:var(--celadon-wash)}.history-game-details{display:grid;gap:2px;min-width:0}.history-title{color:var(--ink);font-family:var(--font-serif);font-size:13.5px;font-weight:600;letter-spacing:.02em}.history-sub{display:block;overflow:hidden;color:var(--ink-3);font-size:11.5px;text-overflow:ellipsis;white-space:nowrap}.history-meta{display:grid;flex:none;gap:2px;text-align:right}.history-meta b{color:var(--ink-2);font-family:var(--font-num);font-size:12px;font-variant-numeric:tabular-nums;font-weight:500}.history-meta small{color:var(--ink-3);font-size:10.5px}.history-analysis{display:inline-flex;padding:0 12px;align-items:center;border:1px solid var(--rule);border-radius:0;color:var(--celadon-text);background:transparent;font-size:11.5px;text-decoration:none;white-space:nowrap}.history-analysis:hover{border-color:var(--brick);color:var(--brick-text);background:var(--brick-wash)}.history-empty{padding:28px;color:var(--ink-3);text-align:center}.fatal-error{width:min(560px,calc(100% - 40px));margin:20vh auto;color:var(--brick-text);font-family:var(--font-serif);font-size:18px;text-align:center}@keyframes pulse-subtle{0%,to{opacity:1}50%{opacity:.5}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}@keyframes matchmaking-radar{0%{opacity:.85;transform:scale(.36)}65%{opacity:.3}to{opacity:0;transform:scale(1)}}@media(max-width:1100px){.game-sheet{grid-template-columns:minmax(0,1.9fr) minmax(250px,1fr)}.analysis-sheet{grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr)}}@media(max-width:820px){.site-header{width:calc(100% - 24px);height:60px}.brand{gap:8px}.wordmark{font-size:21px}.brand-sub{font-size:9.5px}.header-actions{min-width:0;gap:8px}.header-return{display:none}.header-account{min-height:44px;padding:0 6px}.account-label{display:none}.account-label-short{display:inline}.header-account.has-user .account-label,.header-user-rating{display:none}.header-user-pill{max-width:130px;overflow:hidden;text-overflow:ellipsis;font-size:10.5px}.lobby-sheet:after,.account-sheet:after,.game-sheet:after{inset:6px}.lobby-sheet{width:calc(100% - 20px);margin:4px auto 40px;padding:24px 18px 26px}.lobby-head{display:block;padding-bottom:16px;border-bottom:1px solid var(--rule-2)}.lobby-intro h1{font-size:28px;letter-spacing:.05em}.lede{margin-top:8px;font-size:11.5px}.lobby-record{display:flex;margin-top:12px;align-items:baseline;justify-content:flex-start;gap:10px;text-align:left}.record-score{justify-content:flex-start}.record-score b{font-size:22px}.lobby-record p{margin:0;font-size:10.5px}.record-guest{font-size:13px}.ladder-band{position:relative;margin:16px -18px 0;padding:16px 30px;grid-template-columns:1fr auto;gap:12px}.river-word{position:absolute;top:7px;display:block;color:var(--band-muted);font-size:9px;letter-spacing:.16em;line-height:1;writing-mode:horizontal-tb;transform:none}.river-word:first-child{left:14px}.river-word:last-child{right:14px;left:auto}.ladder-band{padding-top:30px}.band-title{font-size:19px}.ladder-copy p{font-size:10.5px}.ladder-cta{min-height:44px;padding:8px 14px;font-size:12.5px}.mode-row{grid-template-columns:1fr auto;grid-template-rows:auto auto;align-items:center;gap:2px 10px;padding:14px 0}.mode-row h3{grid-column:1;grid-row:1}.mode-title{font-size:16px;letter-spacing:.06em}.mode-row p{grid-column:1 / -1;grid-row:2;margin-top:2px;font-size:10.5px}.mode-action{grid-column:2;grid-row:1;min-height:40px;padding:3px 0;align-self:center;margin-top:0;border:0;border-bottom:1px solid var(--rule-2);font-size:12px;letter-spacing:.08em}.lobby-recent{margin-top:22px}.recent-head h2{font-size:12.5px;letter-spacing:.14em}.recent-row{grid-template-columns:58px 26px minmax(0,1fr) auto;gap:10px;height:42px;font-size:11px}.recent-clock,.recent-plies{display:none}.recent-row:nth-child(n+3){display:none}.recent-who{font-size:11.5px}.recent-review{font-size:10.5px}.lobby-foot{font-size:10px}.game-sheet{display:flex;width:calc(100% - 20px);margin:6px auto 28px;padding-bottom:0;flex-direction:column}.game-panel{display:contents}.turn-card{order:1;padding:12px 14px 0}.turn-card .players{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:0;border-bottom:1px solid var(--rule-2)}.turn-card .player{padding:9px 10px 8px 0;border-bottom:0}.turn-card .player+.player{padding-right:0;padding-left:12px;border-left:1px solid var(--rule)}.board-cell{order:2;width:100%;padding:6px}.board-stack{width:100%}.board-frame{padding:5px}.ledger,.moves-card{order:3;width:100%;height:auto;max-height:260px;min-height:0;padding:10px 14px 6px;flex:none}.actions,.controls{order:4;width:100%;margin:0;padding:0 8px;position:static;background:var(--paper-sheet);border-top:1px solid var(--rule-2);border-bottom:0}.game-sheet:has(.empty-moves) .actions,.game-sheet:has(.empty-moves) .controls{order:3;border-bottom:1px solid var(--rule)}.game-sheet:has(.empty-moves) .ledger,.game-sheet:has(.empty-moves) .moves-card{order:4}.actions button,.controls button{min-height:42px;font-size:12.5px}.actions.is-result,.controls.is-result{position:static;padding:10px 14px 12px;border-top:1px solid var(--rule-2)}.move-record{max-height:170px;padding-bottom:0}.ledger-cols{padding:5px 0}.move-record li{min-height:31px;height:31px;font-size:12.5px}.review-nav{width:100%;padding-left:0;gap:4px}.review-nav button{padding:0 3px;gap:3px;font-size:10.5px;letter-spacing:0}.analysis-sheet .board-cell{order:2}.analysis-panel{display:contents}.analysis-summary{order:1;padding:10px 14px 6px}.analysis-summary #analysis-status{font-size:18px;margin:4px 0 2px}.analysis-sheet .review-detail{order:3;width:100%;padding:10px 14px;border-bottom:1px solid var(--rule)}.analysis-ledger{order:4;height:min(250px,32dvh)}.analysis-sheet .review-back{font-size:11.5px}.account-layout{width:calc(100% - 20px);margin:24px auto 40px}.account-sheet{padding:24px 18px 28px}.account-card h1{font-size:22px}.profile-header{gap:12px}.profile-avatar{width:40px;height:40px;font-size:18px}.profile-username{font-size:20px}.history-analysis{min-height:36px;padding:0 10px}}@media(max-width:480px){.site-header{width:calc(100% - 20px);height:54px}.wordmark{font-size:20px}.brand-sub{display:none}.header-actions{gap:6px}.sound-toggle-btn{width:44px;height:44px}.header-account.has-user .header-user-pill{display:none}.header-user-pill{max-width:112px;min-height:32px}.lobby-sheet{padding:20px 16px 22px}.ladder-band{margin-right:-16px;margin-left:-16px;padding:14px 16px}.ladder-cta{padding:7px 11px;font-size:12px;letter-spacing:.1em}.game-sheet{width:calc(100% - 12px);margin:4px auto 20px}.turn-card{padding:10px 12px}#status{font-size:22px}.player{padding:9px 0 8px}.player-name{font-size:14px}.clock{font-size:22px}.actions button,.controls button{font-size:12px;letter-spacing:.06em}.computer-dialog form,.matchmaking-dialog{padding:18px}.level-grid{grid-template-columns:1fr}.level-grid label+label span{border-left:0}.level-grid label:nth-child(n+2) span{border-top:1px solid var(--rule)}.account-stats-bar{grid-template-columns:1fr;gap:2px}.account-stat{padding:7px 0;border-left:0;border-top:1px solid var(--rule)}.account-stat:first-child{border-top:0}.account-stat strong{font-size:19px}.history-item{grid-template-columns:1fr;padding-bottom:8px}.history-analysis{min-height:34px;justify-content:center}.gameover-card{padding:26px 18px 20px}.gameover-seal{width:64px;height:64px}.gameover-seal span{font-size:23px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation:none!important;transition:none!important}.radar-ring{opacity:.18;transform:scale(1)}}
