:root{
  font-family:"PingFang SC","Microsoft YaHei","Noto Sans SC",system-ui,sans-serif;
  --bg-deep:#0f1a14;--bg-panel:#15261d;--wood-light:#ebc685;--wood-base:#c99347;--wood-shadow:#8b5620;
  --grid-groove:rgba(68,38,12,.75);--accent-vermilion:#c83b23;--accent-gold:#f5c256;
  --text-primary:#f7efe0;--text-muted:#96b8a2;
  color:var(--text-primary)
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:
  radial-gradient(900px 420px at 80% -10%,rgba(245,194,86,.18),transparent 55%),
  radial-gradient(700px 380px at 10% 110%,rgba(21,70,48,.55),transparent 50%),
  var(--bg-deep)}
button,a{-webkit-tap-highlight-color:transparent}
button{font:inherit;cursor:pointer;color:inherit;border:0;background:none}
button:disabled{opacity:.4;cursor:default}
button:focus-visible,a:focus-visible{outline:2px solid var(--accent-gold);outline-offset:3px}
a{color:inherit;text-decoration:none}
[hidden]{display:none!important}
.bar{max-width:520px;margin:0 auto;padding:16px 16px 8px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.bar a,.bar button,.icon-btn{background:rgba(21,38,29,.86);border:1px solid rgba(150,184,162,.22);border-radius:999px;padding:8px 14px;font-size:13px;color:#e8d7b0}
.bar b{letter-spacing:.18em;font-size:13px;text-shadow:0 1px 2px #0008}
.icon-btn{width:36px;height:36px;padding:0;font-size:18px}
.stage{max-width:520px;margin:0 auto;padding:6px 14px 32px}
.panel{background:var(--bg-panel);border:1px solid rgba(150,184,162,.2);border-radius:22px;padding:16px 16px 18px;box-shadow:0 20px 48px -10px #000b}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px}
.panel-head small{display:block;letter-spacing:.22em;font-size:10px;color:var(--text-muted)}
.panel-head h1{margin:4px 0 0;font-size:24px;font-weight:700;letter-spacing:.1em;text-shadow:0 1px 2px #0008}
.hero{position:relative;border-radius:16px;overflow:hidden;border:1px solid rgba(235,198,133,.28);background:#1a120c}
.hero-art{display:block;width:100%;height:auto}
.hero span{position:absolute;left:12px;bottom:10px;background:var(--accent-vermilion);color:#fff4d8;font-size:12px;padding:5px 11px;border-radius:999px;border:1px solid #f5c25666;letter-spacing:.06em}
.record{display:flex;justify-content:space-between;align-items:center;margin:16px 0 12px}
.record h2{margin:0;font-size:16px;letter-spacing:.05em}
.record p{margin:6px 0 0;font-size:12px;line-height:1.5;color:var(--text-muted)}
.record em{font-style:normal;background:var(--accent-vermilion);color:#fff3d2;border-radius:999px;padding:7px 12px;font-weight:800}
.side-pick{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:0 0 12px}
.side-pick small{grid-column:1/-1;text-align:center;font-size:11px;color:var(--text-muted)}
.side{display:flex;align-items:center;justify-content:center;gap:8px;background:linear-gradient(135deg,#193125,#12241b);border:1px solid rgba(150,184,162,.18);border-radius:12px;padding:9px 0;font-size:13px;color:#c9e0d2;transition:border-color .15s,color .15s,box-shadow .15s}
.side:hover{border-color:rgba(245,194,86,.5)}
.side.on{border-color:var(--accent-gold);color:#ffe9b8;box-shadow:inset 0 0 0 1px rgba(245,194,86,.4),0 0 12px rgba(245,194,86,.14)}
.modes{display:grid;gap:8px}
.mode{text-align:left;background:linear-gradient(135deg,#193125,#12241b);border:1px solid rgba(150,184,162,.18);border-radius:14px;padding:13px 14px 13px 16px;position:relative}
.mode:before{content:'';position:absolute;left:0;top:10px;bottom:10px;width:3px;border-radius:2px;background:#4d6f58}
.mode:hover{background:linear-gradient(135deg,#1d382b,#15261d);box-shadow:inset 0 0 0 1px rgba(245,194,86,.35),inset 8px 0 18px rgba(245,194,86,.08)}
.mode:hover:before{background:var(--accent-gold)}
.mode b{display:block;font-size:15px;font-weight:600;letter-spacing:.02em;color:#f6ead0}
.mode small{display:block;margin-top:5px;font-size:12px;color:var(--text-muted);line-height:1.5}
.note{text-align:center;font-size:12px;color:var(--text-muted);margin:14px 0 2px}
.match-bar{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.match-bar h2{margin:3px 0 0;font-size:18px}
.match-bar small{letter-spacing:.22em;font-size:10px;color:var(--text-muted)}
.hud{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;align-items:center;background:#101c16;border:1px solid rgba(150,184,162,.18);border-radius:14px;padding:10px}
.seat{display:flex;align-items:center;gap:8px;padding:7px 8px;border-radius:12px;transition:box-shadow .2s,background .2s}
.seat b{display:block;font-size:14px}
.seat small{color:var(--text-muted);font-size:11px}
.seat.active{background:#24382c;box-shadow:0 0 14px rgba(245,194,86,.4);outline:1px solid rgba(245,194,86,.4)}
.seat.active small{color:var(--accent-gold)}
.dot{width:16px;height:16px;border-radius:50%;display:block;flex:none}
.dot.black{background:radial-gradient(circle at 32% 28%,#3d4c44,#0d110e 68%,#050706)}
.dot.white{background:radial-gradient(circle at 32% 28%,#fff,#f3ecdf 70%,#d7cab4);box-shadow:inset 0 0 0 1px #c6b69c}
.mid{text-align:center}
.mid span{display:block;font-size:12px;color:var(--text-muted)}
.mid strong{display:block;font-size:20px;margin-top:2px;color:var(--text-primary)}
.board-frame{position:relative;margin:12px 0;padding:24px 22px 22px;border-radius:12px;background:linear-gradient(180deg,#6a4018,#3d230c);box-shadow:0 12px 28px #0008,inset 0 1px 0 rgba(255,220,150,.35)}
.coords{position:absolute;display:grid;pointer-events:none;color:rgba(247,239,224,.55);font-size:9px;font-weight:600;letter-spacing:.02em;user-select:none}
.coords span{display:grid;place-items:center}
.coords.top{top:5px;left:22px;right:22px;height:14px;grid-template-columns:repeat(15,1fr)}
.coords.left{left:5px;top:24px;bottom:22px;width:14px;grid-template-rows:repeat(15,1fr)}
.goban{display:grid;grid-template-columns:repeat(15,minmax(0,1fr));aspect-ratio:1;background:
  repeating-linear-gradient(90deg,transparent 0 13px,rgba(90,40,8,.07) 14px),
  linear-gradient(180deg,var(--wood-light),var(--wood-base) 55%,#b07d36);
  border-radius:8px;touch-action:manipulation;user-select:none;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.28),inset 0 -3px 0 rgba(70,35,10,.45)}
.cell{position:relative;aspect-ratio:1;min-width:0;padding:0;background:transparent;min-height:22px}
.cell:before,.cell:after{content:'';position:absolute;background:var(--grid-groove);pointer-events:none}
.cell:before{left:50%;top:0;bottom:0;width:1px;transform:translateX(-50%);box-shadow:1px 0 0 rgba(235,198,133,.18)}
.cell:after{top:50%;left:0;right:0;height:1px;transform:translateY(-50%);box-shadow:0 1px 0 rgba(235,198,133,.18)}
.cell:nth-child(-n+15):before{top:50%}
.cell:nth-child(n+211):before{bottom:50%}
.cell:nth-child(15n+1):after{left:50%}
.cell:nth-child(15n):after{right:50%}
.cell.star:after{box-shadow:0 0 0 3px #8b5620,0 0 0 5px #ebc685aa,0 1px 0 rgba(235,198,133,.18)}
.stone{position:absolute;inset:7%;border-radius:50%;z-index:1;pointer-events:none}
.stone.black{background:radial-gradient(circle at 34% 27%,#40504a 0%,#19221e 30%,#0a0e0b 64%,#040605 100%);box-shadow:0 5px 12px rgba(0,0,0,.52),0 2px 4px rgba(0,0,0,.45),inset 0 -3px 6px rgba(0,0,0,.62),inset 0 1px 1px rgba(255,255,255,.16)}
.stone.white{background:radial-gradient(circle at 33% 26%,#fff 0%,#f8f2e6 42%,#e8dbc7 74%,#c2af95 100%);box-shadow:0 5px 11px rgba(35,22,8,.5),0 2px 4px rgba(35,22,8,.38),inset 0 1.5px 2px #fff,inset 0 -3px 5px rgba(118,96,68,.45),inset 0 0 0 1px rgba(118,96,68,.18)}
.stone.black:before,.stone.white:before{content:'';position:absolute;left:24%;top:15%;width:24%;height:13%;border-radius:50%;transform:rotate(-24deg);pointer-events:none}
.stone.black:before{background:rgba(255,255,255,.3)}
.stone.white:before{background:rgba(255,255,255,.65)}
.cell.last .stone:after{content:'';position:absolute;left:50%;top:50%;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:50%;background:var(--accent-vermilion);box-shadow:0 0 0 1.5px #fff8,0 0 8px #c83b23aa}
.cell.win .stone{box-shadow:0 0 16px #f5c256,0 0 4px #fff8}
@keyframes stone-drop{0%{transform:scale(1.45) translateY(-12%)}72%{transform:scale(.94) translateY(0)}100%{transform:scale(1)}}
.cell.pop .stone{animation:stone-drop .3s cubic-bezier(.2,.7,.3,1.1)}
@keyframes win-pulse{0%,100%{box-shadow:0 0 14px #f5c256,0 0 4px #fff8}50%{box-shadow:0 0 28px #ffdf8a,0 0 8px #fff}}
.cell.win .stone{animation:win-pulse 1.2s ease-in-out infinite}
@keyframes ghost-in{from{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}
.ghost{position:absolute;inset:16%;border-radius:50%;border:2px dashed rgba(245,194,86,.85);background:rgba(245,194,86,.14);z-index:1;pointer-events:none;animation:ghost-in .25s ease-out}
@keyframes thinking-dots{0%{content:''}25%{content:'·'}50%{content:'· ·'}75%{content:'· · ·'}}
#turn-label.thinking::after{content:'· · ·';display:inline-block;animation:thinking-dots 1.4s infinite}
@media(prefers-reduced-motion:reduce){.cell.pop .stone,.cell.win .stone,.ghost,#turn-label.thinking::after{animation:none}}
.cell.hinted{background:radial-gradient(circle,rgba(245,194,86,.55),transparent 62%)}
.cell.cursor:not(:disabled){box-shadow:inset 0 0 0 2px var(--accent-vermilion)}
.cell:not(:disabled):hover{background:rgba(255,255,255,.12)}
.msg{text-align:center;min-height:18px;margin:10px 0;font-size:13px;color:#c9e0d2}
.tools{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tools button{background:linear-gradient(180deg,#1c3428,#15261d);border:1px solid rgba(150,184,162,.22);border-radius:12px;padding:11px 0;font-weight:700;font-size:15px}
.tools button:not(:disabled):hover{border-color:var(--accent-gold)}
dialog{border:1px solid rgba(235,198,133,.4);border-radius:18px;background:#f6ead2;color:#2a1c10;width:min(360px,calc(100% - 28px));padding:22px;text-align:center;box-shadow:0 20px 80px #000a}
dialog::backdrop{background:#07140fe8}
#dialog-icon{font-size:28px;color:var(--accent-vermilion)}
dialog h2{margin:10px 0;font-size:22px}
dialog p{margin:0;font-size:14px;line-height:1.8;white-space:pre-line;color:#5c4630}
#dialog-actions{display:grid;gap:8px;margin-top:18px}
#dialog-actions button{border-radius:12px;padding:12px;background:#17362a;color:#f3e6c8}
#dialog-actions .primary{background:var(--accent-vermilion);color:#fff4d8;font-weight:800}
@media(max-width:420px){.stage{padding:4px 10px 22px}.panel{padding:13px}.board-frame{padding:16px}.coords.top{left:16px;right:16px}.coords.left{top:16px;bottom:16px}}
