.room-tabs{display:flex;gap:8px;align-items:center;margin-bottom:18px}.room-tabs button{font-size:12px;padding:8px 21px;background:transparent}.room-tabs button[aria-pressed=true]{background:#24403966;border-color:#74a59d;color:var(--cyan)}.room-tabs span{margin-left:auto;font:9px monospace;letter-spacing:.13em;color:#80959b}.view-switch{display:flex;gap:5px;margin-left:auto}.view-switch button[aria-pressed=true]{color:var(--cyan);border-color:#73a39c}.game-toolbar{padding:14px 20px;display:flex;align-items:center;gap:14px;border-bottom:1px solid var(--line);flex-wrap:wrap}.game-toolbar>div{display:grid;gap:2px;margin-right:auto}#game-turn{font-size:13px;color:var(--cyan)}#game-ply{font:9px monospace;color:var(--muted)}.game-toolbar label{font-size:10px;color:var(--muted)}.game-toolbar select{background:#101a20;color:var(--ink);border:1px solid #84968955;border-radius:4px;padding:6px;max-width:155px;font:11px 'Yu Gothic',sans-serif}.game-toolbar button{font-size:10px}.hand-row{padding:9px 18px;display:flex;align-items:center;gap:6px;min-height:49px;flex-wrap:wrap;background:#101a20;border-bottom:1px solid var(--line)}.hand-row>span{font-size:10px;color:var(--muted);margin-right:5px}.hand-row button{font:17px 'Yu Mincho',serif;padding:5px 9px;background:#19272c;color:#d8c9ad}.hand-row button small{font:9px monospace;margin-left:5px;color:var(--muted)}.hand-row button[aria-pressed=true]{border-color:var(--cyan);background:#2a453e}.game-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:13px 18px;background:#0f191f}.game-actions form{display:flex;gap:6px;margin-right:auto;max-width:100%}.game-actions input{background:#080f17;color:var(--ink);border:1px solid #667a8866;border-radius:4px;width:160px;max-width:100%;padding:8px 11px;font:12px monospace}.game-actions button{font-size:11px}.game-actions #resign-game{color:#d6a0ae;background:transparent}#game-notice{width:100%;font-size:11px;color:#b7c3c6;margin:6px 0 0;min-height:18px}#game-notice.error{color:#e9acb7}#game-notice.success{color:var(--cyan)}.board-2d{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:min(88%,560px);aspect-ratio:1/1.08;display:grid;grid-template-columns:repeat(9,1fr);grid-template-rows:repeat(9,1fr);padding:5px;border:2px solid #829498;background:#17252c;box-shadow:0 14px 35px #0008}.board-2d button{border:0;border-bottom:1px solid #85969a6b;border-right:1px solid #85969a6b;border-radius:0;padding:3px;background:#1e2c36;position:relative;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0}.board-2d button:nth-child(2n){background:#23313a}.board-2d button:hover{background:#304b50}.board-2d button.target::after{content:"";position:absolute;width:8px;height:8px;border-radius:50%;background:#a0e0d5;box-shadow:0 0 8px #89cfc8;bottom:3px;right:3px}.board-2d button.selected{box-shadow:inset 0 0 0 2px #96e3d9}.board-2d button.last{outline:1px solid #d6c38c;outline-offset:-2px}.board-2d button.checked{box-shadow:inset 0 0 0 2px #cf7f94}.tile-piece{width:90%;height:93%;background:linear-gradient(125deg,#30423c,#1c292a);clip-path:polygon(50% 0,89% 16%,100% 100%,0 100%,11% 16%);color:#ecdfbc;font:clamp(16px,2.1vw,25px) 'Yu Mincho',serif;display:flex;align-items:center;justify-content:center;padding-top:4px;text-shadow:0 1px 3px #000;white-space:nowrap}.tile-piece.promoted{color:#e6a1af;font-size:clamp(12px,1.7vw,20px)}.tile-piece.gote{transform:rotate(180deg)}.score-panel{border:1px solid var(--line);border-radius:8px;padding:24px;margin-top:27px;background:#101a20}.score-heading{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.score-heading>div{margin-right:auto}.score-heading h2{font:23px 'Yu Mincho',serif;margin:0}.score-heading button{font-size:12px}.move-list{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;list-style:none;padding:0;max-height:240px;overflow:auto;margin:20px 0;background:#657b7822;scrollbar-color:#46626a #101a20}.move-list:empty{display:none}.move-list li{background:#13212a;padding:10px;font-size:12px;min-width:0}.move-list li small{font:10px monospace;color:#85989f;margin-right:10px}.move-list li:nth-child(2n){background:#17252e}.score-panel .minor{margin:13px 0 0}dialog{border:1px solid #8c9b8477;border-radius:8px;background:#111d25;color:var(--ink);padding:30px;width:min(90vw,450px)}dialog::backdrop{background:#03070dd9}dialog h2{font:25px 'Yu Mincho',serif}dialog>p:not(.eyebrow){font-size:13px;line-height:1.9}dialog>div{display:flex;gap:10px;justify-content:end;flex-wrap:wrap;margin-top:25px}dialog button{font-size:13px}#promote-yes,#confirm-ok{background:#c6aa76;color:#111b20;border-color:#c6aa76}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(max-width:950px){.game-toolbar{padding:12px;gap:9px}.game-actions{padding:12px}.hand-row{padding:8px 12px}.game-toolbar select{max-width:142px}.move-list{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:720px){.room-tabs span{display:none}.game-toolbar select{max-width:140px}.game-toolbar button{padding:7px 9px}.tile-piece{font-size:clamp(17px,4.5vw,26px)}.tile-piece.promoted{font-size:clamp(11px,3.4vw,20px)}.game-actions input{width:145px}.score-panel{padding:18px;margin-top:20px}.score-heading h2{font-size:21px}.score-heading>div{width:100%}.move-list{grid-template-columns:repeat(2,minmax(0,1fr))}.board-2d{width:88%}}

/* A compact, chess-like score sheet: one numbered row for each pair of moves. */
.score-panel{padding:18px 20px}.score-heading{gap:8px}.score-heading h2{font-size:20px}.score-heading button{padding:7px 12px}.shogi-score-head,.move-list li{display:grid;grid-template-columns:34px minmax(0,1fr) minmax(0,1fr);align-items:center}.shogi-score-head{margin-top:14px;padding:5px 9px;border-bottom:1px solid #a77b40;color:#d3ad70;font:10px/1.4 monospace;letter-spacing:.1em}.move-list{display:block;margin:0;max-height:184px}.move-list li{padding:7px 9px;gap:8px;font-size:12px}.move-list li small{margin:0}.move-list li span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.move-list:empty::after{content:'まだ着手はありません';display:block;padding:12px 9px;color:#9d8666;font-size:11px}.move-list:empty{display:block}
@media(max-width:720px){.score-panel{padding:15px 12px}.score-heading>div{width:auto;margin-right:auto}.score-heading h2{font-size:19px}.score-heading button{font-size:13px;min-height:40px}.shogi-score-head,.move-list li{grid-template-columns:28px minmax(0,1fr) minmax(0,1fr)}.move-list li{font-size:12px;padding:8px 6px}}

/* A reserved portrait rail, not a floating layer over playable squares. */
.stage[data-npc=true]{--npc-rail:100px;box-sizing:content-box;padding-top:var(--npc-rail)}
.stage[data-npc=true] #chamber-viewport{top:var(--npc-rail)}
.stage[data-view="2d"]{box-sizing:border-box;height:clamp(720px,calc(95vw + 178px),934px)}
.stage[data-npc=true] .board-2d{top:calc(50% + var(--npc-rail)/2 - 21px)}
@media(max-width:720px){.stage[data-view="2d"]{height:clamp(528px,calc(98vw + 198px),890px)}.stage[data-view="2d"] .position-label{bottom:45px}}
.stage[data-npc=true] .board-cutin,.stage[data-npc=true] #board-flare{top:var(--npc-rail)}
.board-stack{position:relative}
.opponent-card{position:absolute;top:0;left:0;right:0;height:var(--npc-rail);display:flex;align-items:center;justify-content:flex-end;gap:15px;padding:10px 17px;background:linear-gradient(110deg,#0b141900,#14232ae0);border-bottom:1px solid #83ada22b;pointer-events:none}
.opponent-copy{display:grid;text-align:right;gap:2px;min-width:0}
.opponent-copy small{color:#c5ad80;font:10px/1.4 monospace;letter-spacing:.14em}
.opponent-copy strong{font:23px/1.3 'Yu Mincho',serif;color:#ecdfc8;letter-spacing:.15em}
.opponent-copy span{font-size:10px;color:#a9bcbb}
.npc-face{height:80px;width:80px;flex:0 0 auto;background-color:#1b2324;background-repeat:no-repeat;border:1px solid #d8c69a88;border-radius:5px;box-shadow:0 0 0 3px #a8c5b00a,0 3px 12px #0008}
@media(max-width:720px){.stage[data-npc=true]{--npc-rail:84px}.opponent-card{padding:8px 12px;gap:12px}.npc-face{width:68px;height:68px}.opponent-copy strong{font-size:21px}.opponent-copy small{font-size:9px}.game-toolbar #npc-level{max-width:125px}}
@media(max-width:720px){
 .board-stack>.hand-row{position:absolute;z-index:8;left:8px;right:8px;width:auto;min-height:34px;padding:4px 7px;border:1px solid #d7a84e;background:#2b101bd9;box-shadow:0 3px 12px #0009;backdrop-filter:blur(5px);flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}
 .board-stack>#hand-gote{top:8px}.board-stack:has(.stage[data-npc=true])>#hand-gote{top:calc(106px + 7px)}
 .board-stack>#hand-sente{bottom:8px}
 .board-stack>.hand-row>span{font-size:11px;color:#ffe0a4}.board-stack>.hand-row button{min-width:38px;min-height:36px;padding:3px 7px;font-size:18px;border-color:#c99643;background:#461525;color:#ffe4ad}.board-stack>.hand-row button small{font-size:11px;color:#f1c684}
}
