:root{--board-dark:#64815b;--board-light:#e8e0cc;--ink:#19242b;--muted:#657078;--paper:#f5f4ee;--accent:#db6c53;--select:#f0cf4e;--square-size:64px}*{box-sizing:border-box}body{margin:0;background:var(--paper);color:var(--ink);font-family:Inter,"Microsoft YaHei",Arial,sans-serif}.chess-header{max-width:1140px;margin:auto;height:70px;padding:0 24px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #d9ddd7}.back{font-weight:800;font-size:15px}.back:hover{text-decoration:underline}.mode-switch{display:flex;gap:8px}.mode-switch a{padding:8px 11px;border:1px solid #cbd1cb;font-size:13px;color:var(--muted)}.mode-switch a.active{background:var(--ink);border-color:var(--ink);color:white}.page{max-width:1140px;margin:auto;padding:38px 24px 50px}.intro{display:flex;justify-content:space-between;align-items:end;margin-bottom:26px}.intro p{margin:0 0 9px;color:var(--muted);font:700 11px monospace;letter-spacing:1.4px}.intro h1{margin:0;font:500 clamp(30px,4vw,45px)/1.1 Georgia,"Microsoft YaHei",serif}.status{margin:0;color:var(--muted);font-size:14px}.game-layout{display:grid;grid-template-columns:528px minmax(260px,1fr);gap:34px;align-items:start}.board-wrap{position:relative;width:528px;box-shadow:0 10px 28px rgba(20,35,43,.16)}.board{width:528px;height:528px;display:grid;grid-template-columns:repeat(8,var(--square-size));grid-template-rows:repeat(8,var(--square-size));border:8px solid #273b31}.square{width:var(--square-size);height:var(--square-size);position:relative;border:0;padding:0;display:grid;place-items:center;cursor:pointer;font-family:Georgia,"Times New Roman",serif;font-size:51px;line-height:1;color:#263238;text-shadow:0 1px 0 rgba(255,255,255,.38)}.square.light{background:var(--board-light)}.square.dark{background:var(--board-dark)}.square.selected{box-shadow:inset 0 0 0 5px var(--select)}.square.legal::after{content:"";position:absolute;width:17%;aspect-ratio:1;border-radius:50%;background:rgba(24,35,31,.45)}.square.capture::after{content:"";position:absolute;inset:7%;border:4px solid rgba(206,78,56,.85);border-radius:50%}.square.last{box-shadow:inset 0 0 0 999px rgba(240,207,78,.22)}.square.check{box-shadow:inset 0 0 0 999px rgba(220,80,60,.42)}.square:focus-visible{outline:3px solid #111;outline-offset:-3px}.rank,.file{position:absolute;font:700 10px/1 Arial;pointer-events:none}.rank{left:3px;top:3px}.file{right:3px;bottom:3px}.light .rank,.light .file{color:#618058}.dark .rank,.dark .file{color:#eee3ce}.side-panel{border-top:3px solid var(--ink);background:white;padding:22px}.player-row{display:flex;align-items:center;gap:11px;padding:11px 0;border-bottom:1px solid #e1e4df}.player-piece{font:32px Georgia}.player-row strong{display:block;font-size:15px}.player-row small{color:var(--muted);font-size:12px}.turn-dot{margin-left:auto;width:10px;height:10px;border-radius:50%;background:transparent}.player-row.active .turn-dot{background:var(--accent)}.panel-label{margin:25px 0 8px;color:var(--muted);font:700 11px monospace;letter-spacing:1px}.moves{height:150px;overflow:auto;background:#f4f4ef;padding:10px;font-family:ui-monospace,Consolas,monospace;font-size:13px;line-height:1.8}.move-number{color:var(--muted);margin-right:5px}.move{display:inline-block;min-width:50px}.controls{display:flex;gap:9px;margin-top:20px}.controls button{height:42px;padding:0 13px;border:1px solid var(--ink);background:white;color:var(--ink);font:700 13px inherit;cursor:pointer}.controls button.primary{background:var(--ink);color:white}.controls button:hover{background:var(--accent);border-color:var(--accent);color:white}.note{font-size:12px;color:var(--muted);margin:18px 0 0;line-height:1.65}.promotion{position:absolute;z-index:2;inset:0;display:none;place-items:center;background:rgba(22,32,36,.58)}.promotion.visible{display:grid}.promotion-box{padding:19px;background:white;text-align:center;box-shadow:0 8px 25px rgba(0,0,0,.25)}.promotion-box p{margin:0 0 9px;font-size:13px;font-weight:700}.promotion-options{display:flex}.promotion-options button{width:56px;height:56px;border:1px solid #d7d7d0;background:#f5f4ee;font:38px Georgia;cursor:pointer}.promotion-options button:hover{background:var(--select)}@media(max-width:760px){.chess-header{height:62px;padding:0 16px}.mode-switch a{padding:7px;font-size:11px}.page{padding:28px 16px}.intro{display:block}.status{margin-top:12px}.game-layout{grid-template-columns:1fr;gap:22px;overflow-x:auto;padding-bottom:4px}.side-panel{padding:18px}.moves{height:120px}}
@media(max-width:600px){:root{--board-size:min(calc(100vw - 32px),528px);--square-size:calc((var(--board-size) - 10px) / 8)}.chess-header{height:auto;min-height:62px;padding:10px 16px;gap:12px;align-items:center}.mode-switch{gap:5px}.mode-switch a{padding:8px 9px;white-space:nowrap}.page{padding:25px 16px 38px}.intro h1{font-size:32px}.game-layout{display:block}.board-wrap{width:var(--board-size);margin:0 auto}.board{width:var(--board-size);height:var(--board-size);border-width:5px}.square{width:var(--square-size);height:var(--square-size);font-size:calc(var(--square-size) * .78)}.rank,.file{font-size:9px}.side-panel{margin-top:22px;padding:16px}.controls{display:grid;grid-template-columns:1fr 1fr}.controls button{min-width:0;padding:0 8px}.moves{height:126px}.promotion-options button{width:48px;height:48px;font-size:32px}}
