/* White-paper controls with a lavish black/crimson/gold battle presentation. */
:root{color-scheme:light;--ink:#241c19;--muted:#68564c;--gold:#885413;--cyan:#af301d;--plum:#a32b2e;--line:#d5c5b7;--panel:#fff}
body{background:#fff;color:var(--ink);font-size:17px;font-weight:700;line-height:1.7}
main{max-width:1440px;padding:28px 32px 0}
.masthead{background:#fff;border-bottom:2px solid var(--line)}
.brand{font-size:25px;font-weight:800;color:#241c19}.brand span{font-size:13px;color:#af301d;font-weight:800}
.edition,.atelier-link{font-size:14px;font-weight:700;color:var(--muted)}
.introduction h1{font:900 clamp(30px,4.5vw,60px)/1.35 'Yu Gothic','Hiragino Sans',Meiryo,sans-serif;letter-spacing:.04em}
.introduction p:not(.eyebrow),.preview-note small{font-size:16px;color:var(--muted)}
.eyebrow{font-size:13px;font-weight:800;color:var(--gold)}.seal{font-weight:800;font-size:14px}
.chamber-layout{display:block}.board-card{width:100%;background:#fff;border:2px solid #37261f;border-radius:18px;box-shadow:0 16px 45px #56230b15}
button{font-weight:800;background:#fff9ef;border-color:#c5aa8b;color:var(--ink);min-height:46px;border-radius:8px}
button:hover:not(:disabled){background:#fff0d6;border-color:var(--cyan)}button:disabled{opacity:.5}
input:not([type=range]):not([type=checkbox]):not([type=file]),select{background:#fff;color:var(--ink);border:1px solid #b49880;border-radius:7px;font:700 16px/1.5 'Yu Gothic',sans-serif;min-height:46px;padding:8px 10px}
.room-tabs button{font-size:17px;padding:11px 24px}.room-tabs button[aria-pressed=true]{background:#b12e1e;color:#fff;border-color:#b12e1e}
.room-tabs span{font-size:12px;color:var(--muted)}.room-tabs #quick-gallery{color:var(--gold)}
.board-caption{color:var(--ink);font-size:20px;font-weight:900;padding:16px 22px;background:#fff9ef}
.board-caption small{font-size:12px;color:var(--cyan)}.board-caption button{font-size:16px;font-weight:800;min-width:50px}
.view-switch button[aria-pressed=true]{background:#ffe7b7;border-color:#a43521;color:#78281a}
.game-toolbar{padding:16px 22px;gap:18px;background:white}.game-toolbar label{font-size:15px;color:var(--muted)}
.game-toolbar select,.game-toolbar #npc-level{font-size:16px;max-width:230px;background:#fff;color:var(--ink);font-weight:700}.game-toolbar button{font-size:15px}
#game-turn{font-size:21px;color:#852414;font-weight:900}#game-ply{font:700 14px/1.5 monospace;color:var(--muted)}
.game-settings{flex:1;max-width:650px}.game-settings-fields{justify-content:flex-end}
.game-settings summary,.move-entry summary{background:#fff2dc;color:#7d2b1f;font-weight:800}
.npc-roster{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:13px}
.game-toolbar .npc-choice{display:flex;flex-direction:column;align-items:center;gap:7px;padding:7px 4px 9px;font-size:13px;background:#fffaf1;line-height:1.4}
.npc-mini-face{display:block;width:54px;height:54px;flex:none;border-radius:7px;background-repeat:no-repeat;border:1px solid #ab794e}
.npc-choice[aria-pressed=true]{outline:2px solid #b72f1d;outline-offset:0;background:#ffe5b4!important;color:#742310}
.hand-row{background:#fff3df;padding:10px 22px}.hand-row>span{font-size:15px;color:var(--muted)}
.hand-row button{font-size:24px;background:#fff;color:#512c1d;min-width:46px;font-weight:800}.hand-row button small{font-size:14px;color:var(--muted)}
.hand-row button[aria-pressed=true]{background:#ffdeb0}
.stage{height:clamp(520px,56vw,790px)}
.stage[data-npc=true]{--npc-rail:108px}
.opponent-card{padding:10px 25px;gap:18px;background:linear-gradient(110deg,#240e0d,#541b12);border-bottom:1px solid #ffac45aa}
.opponent-copy strong{font-size:29px;font-weight:800}.opponent-copy small{font-size:13px;color:#ffd190}.opponent-copy span{font-size:14px;color:#f1dbbd}
.npc-face{width:88px;height:88px;box-shadow:0 0 16px #ff833b66;border-color:#ffb24e}
#stage-status{color:#ffe2a6;font-size:17px}#stage-status button{background:#48201b;color:#ffeac2}
.position-label{font-size:14px;color:#ffe5b1;font-weight:700;letter-spacing:.06em}
.board-2d{width:min(88%,700px)}.board-2d button{min-height:0;border-radius:0}.tile-piece{font-weight:800}
.game-actions{background:#fff;padding:16px 22px;gap:12px}.game-actions button{font-size:16px}.game-actions input{font-size:17px;width:220px}
#game-notice{font-size:16px;color:#633b26;min-height:27px}#game-notice.error{color:#a31b2c}.game-actions #resign-game{color:#a02b2b}
.event-readout{background:#fff3df;padding:20px 22px}.event-readout>span{font-size:13px;color:#aa361c;font-weight:800}.event-readout strong{font-size:24px;font-weight:800}.event-readout small{font-size:15px;color:var(--muted)}
.demo-character{display:flex;align-items:center;gap:12px;padding:14px 22px}.board-card[data-room=play] .demo-character{display:none}
.cue-controls b{font-size:19px;font-weight:800}.cue-controls small{font-size:13px;color:var(--muted)}.cue-controls button[aria-pressed=true]{background:#ffdfa9;border-color:#a32e20}
.board-options{padding:18px 22px}.board-options button{font-size:16px;padding:9px 14px;font-weight:800}.board-options button[aria-pressed=true]{background:#ffe5b5;color:#742b16;border-color:#b58a4e}
.board-options label,.board-options output{font-size:15px;font-weight:700;color:var(--muted)}.board-options input{width:140px;min-height:34px}
.sound-style{padding:0 22px 16px}.sound-style label,.sound-style span{font-size:14px;color:var(--muted)}.sound-style select{font-size:16px;background:#fff;color:var(--ink);max-width:100%}
#audio-status{font-size:14px;line-height:1.8;color:var(--muted);padding:0 22px 18px}
.minor,.score-panel .minor{font-size:14px;line-height:1.8;color:var(--muted)}
.score-panel,.music-card{background:#fff9ef;border:1px solid #ad8c65;border-radius:16px;padding:28px}
.score-heading h2,.music-card h2{font-size:28px;font-weight:800}.score-heading button,.music-options button{font-size:16px}
.move-list li{background:#fff;font-size:16px;font-weight:700}.move-list li:nth-child(2n){background:#f9eedc}.move-list li small{font-size:13px;color:#725a47}
.music-card{grid-template-columns:1fr 1.2fr;gap:32px}.music-intro>p:not(.eyebrow){font-size:16px;color:var(--muted)}
.track-picker{display:grid;gap:7px;font-size:16px;margin:16px 0}.track-picker select{width:100%;max-width:100%;min-width:0}
.file-picker{font-size:15px;min-height:46px;background:#fff;color:#814217;font-weight:800;border-color:#aa7137}
.music-options{font-size:15px;gap:12px}.music-options select{background:#fff;color:var(--ink);font-size:16px}.music-controls audio{height:54px;color-scheme:light}
.music-options input[type=range]{width:120px;min-height:34px}.music-options input[type=checkbox]{width:20px;height:20px}
.assembly summary{font-size:16px;color:#653b24}footer{font-size:12px;color:var(--muted)}
dialog:not(.cast-gallery){background:#fff;color:var(--ink);border-color:#99704d}dialog h2{font-weight:800}dialog>p:not(.eyebrow){font-size:17px}dialog button{font-size:16px}
/* The archive and dramatic cut-ins remain night scenes, not white UI panels. */
.cast-gallery,.board-cutin{--ink:#f2eade;--muted:#b4c4ca;--gold:#e0c78e;--cyan:#a5e4df;color:#f2eade;color-scheme:dark}
.cast-gallery button{background:#241c19;color:#f1e6d3;border-color:#657f85}.cast-gallery .minor{color:#bccbd0}
.cast-gallery .eyebrow{color:#e0c78e}.cast-gallery button:hover{background:#2d454c}.gallery-forms button[aria-pressed=true],.gallery-roster button[aria-pressed=true]{background:#58333d;border-color:#d59591}
@media(max-width:950px){main{padding:22px 16px 0}.game-settings{max-width:none}.music-card{grid-template-columns:1fr;gap:12px}.music-controls{margin-top:0}}
@media(max-width:720px){
  body{font-size:16px}main{padding:16px 8px 0}.masthead{padding-inline:14px}.brand{font-size:20px}.brand span{font-size:11px}.atelier-link{font-size:12px}
  .introduction h1{font-size:clamp(26px,6.8vw,42px);font-weight:900}.seal{font-size:11px;margin-left:8px}
  .room-tabs button{padding:9px 3px;font-size:14px}.room-tabs #quick-gallery{font-size:14px}
  .board-card{border-radius:12px}.board-caption{font-size:17px;padding:8px 11px}.board-caption button{font-size:15px;min-width:44px}
  .game-toolbar{padding:10px 12px;gap:8px}.game-settings{flex:none;width:auto}.game-settings[open]{width:100%}
  #game-turn{font-size:17px}#game-ply{font-size:13px}.game-settings summary{font-size:14px}
  .game-settings-fields{padding:12px 0 0;gap:10px}.game-settings-fields label{font-size:14px;color:var(--muted)}.game-toolbar select,.game-toolbar #npc-level{width:100%;max-width:100%}
  .npc-roster{gap:5px;margin-top:12px}.game-toolbar .npc-choice{font-size:11px;padding:6px 2px;gap:6px}.npc-mini-face{width:clamp(38px,11vw,60px);height:clamp(38px,11vw,60px)}
  .hand-row{padding:7px 11px;gap:5px}.hand-row>span{font-size:14px}.hand-row button small{font-size:13px;color:var(--muted)}
  .stage{height:clamp(314px,calc(100vw - 6px),550px)}.stage[data-npc=true]{--npc-rail:90px}.opponent-card{padding:8px 13px;gap:12px}.npc-face{width:72px;height:72px}
  .opponent-copy strong{font-size:24px}.opponent-copy small{font-size:12px}.opponent-copy span{font-size:13px}.position-label{font-size:12px;bottom:7px}
  .board-2d{width:96%}.board-2d button{padding:1px;min-height:0;min-width:0}
  .game-actions{padding:12px;gap:8px}.game-actions input{width:100%;font-size:16px}#game-notice{font-size:15px;color:#633b26;line-height:1.65}.game-actions>button{font-size:15px}
  .move-entry summary,.move-entry summary small{color:#854020}.event-readout{padding:17px 12px}.event-readout strong{font-size:21px}.event-readout small{font-size:14px}
  .demo-character{padding:12px;font-size:16px}.cue-controls b{font-size:19px}.cue-controls small{font-size:12px}
  .board-options{padding:12px;gap:8px}.board-options button{font-size:15px;padding:8px}.board-options label{font-size:15px}.board-options input{width:100%}
  .sound-style{padding:0 12px 12px}.sound-style label,.sound-style>span{font-size:14px;color:var(--muted)}#audio-status{padding:0 12px 15px;font-size:14px}
  .score-panel,.music-card{padding:20px 14px}.score-heading h2,.music-card h2{font-size:25px}.score-heading button{font-size:15px}.score-panel .minor,.minor{font-size:14px;color:var(--muted)}
  .move-list li{font-size:15px;padding:11px 7px}.music-intro>p:not(.eyebrow){font-size:15px}.music-options{font-size:15px}.music-options input[type=range]{width:100%}.music-options label{min-width:0}
  footer{font-size:11px;overflow-wrap:anywhere}.assembly summary{font-size:15px}
}


/* Theatrical heat, without looping effects or decorations over playable squares. */
body{background:#fffdf9}
.masthead{border-bottom:3px solid #2c201b}
.brand{font-weight:900;color:#2a1a17}.brand span{color:#b82f1c}
.introduction{position:relative;isolation:isolate;min-height:365px;overflow:hidden;border-bottom:7px solid #b92f1c;margin-bottom:24px;align-items:center;padding:20px 24px 28px;background:#fffdf9}
.intro-copy{position:relative;z-index:2;width:65%}
.introduction .eyebrow{font-size:14px;color:#a62c1b;letter-spacing:.18em}
.introduction h1{font-family:'Yu Gothic','Hiragino Kaku Gothic ProN',Meiryo,sans-serif;font-size:clamp(44px,6vw,82px);font-weight:1000;letter-spacing:-.055em;line-height:1.08;text-shadow:2px 3px 0 #e7d6bd}
.introduction h1>span{color:#b42b18}
.introduction p.battle-lead{font-size:20px;color:#32221b;font-weight:900;letter-spacing:.08em;margin:18px 0}
.battle-art{position:absolute;z-index:0;right:0;top:0;bottom:0;width:59%;background-image:linear-gradient(90deg,#fffdf9,transparent 30%),linear-gradient(0deg,#2a100ee6,transparent 65%),url('./cast/moonlit-assembly.jpg');background-position:center,center,center 12%;background-size:cover}
.battle-art::after{content:'';position:absolute;inset:0;background:linear-gradient(120deg,transparent 50%,#dc4c1425);pointer-events:none}
.battle-art>span{position:absolute;right:25px;top:24px;writing-mode:vertical-rl;font:900 37px/1.4 'Yu Mincho',serif;letter-spacing:.12em;color:#ffe1aa;text-shadow:2px 2px 3px #000}
.battle-links{display:flex;gap:20px;align-items:center}.battle-links>a{font-size:15px;font-weight:900}
.battle-links>a:not(.battle-jump){display:flex;align-items:center;min-height:44px;padding:6px 10px;background:#fff8edf2;color:#922719;border:1px solid #c2a284}
.battle-links .battle-jump{display:flex;align-items:center;gap:28px;background:#b42b18;color:white;border:2px solid #762219;padding:11px 22px;box-shadow:4px 4px 0 #282019;text-decoration:none;min-height:50px;font-size:20px}
.battle-jump:hover{background:#8f2314}.battle-links a:focus-visible{outline:3px solid #cf7619;outline-offset:4px}
.introduction p.preview-note{position:absolute;right:25px;bottom:24px;z-index:1;color:#fff0d3;font-size:15px;text-align:right}.introduction .preview-note small{color:#efcd9a;font-size:13px}
.room-tabs button{border-radius:3px;border-width:2px;font-weight:900}.room-tabs button[aria-pressed=true]{box-shadow:3px 3px 0 #301e16}
.room-tabs span{font-weight:800;letter-spacing:.12em;color:#74401e}.room-tabs #quick-gallery{border-color:#866142;color:#70401d}
.board-card{border-radius:4px;border:3px solid #302018;box-shadow:7px 8px 0 #ddc8ae;scroll-margin-top:12px}
.board-caption{background:#281917;color:#ffe3ac;border-bottom:4px solid #b4301f;font-size:25px;font-weight:1000;letter-spacing:.12em}
.board-caption small{color:#dfa95b;font-weight:800}
.board-caption button{color:#f6dcad;border-color:#a7784c;border-radius:3px}.board-caption button:hover{background:#60321e}.view-switch button[aria-pressed=true]{background:#ecc17c;color:#321b12;border-color:#ecc17c}
.game-settings summary,.move-entry summary{border-radius:3px;border-width:2px}
.game-toolbar .npc-choice{border:2px solid #b59977;border-radius:2px;font-weight:900;box-shadow:2px 2px 0 #d9c6ac}
.npc-mini-face{width:66px;height:66px;border-radius:1px;border:1px solid #9d6734}
.npc-choice[aria-pressed=true]{outline:2px solid #b42b18;outline-offset:1px;box-shadow:3px 3px 0 #7f2518;background:#ffe5b4!important}
.opponent-card{background:repeating-linear-gradient(125deg,#9b36250c 0 2px,transparent 2px 22px),linear-gradient(110deg,#221413,#6c2516);border-bottom:3px solid #d79341}
.opponent-rival{margin-right:auto;color:#e8af6e;font:900 30px/1 'Yu Mincho',serif;letter-spacing:.18em;border-left:5px solid #c93e22;padding-left:18px}
.opponent-copy strong{color:#ffdc99;font-weight:900;text-shadow:2px 2px 0 #421b0e}.npc-face{border:2px solid #dba95b;border-radius:2px}
.stage-corners{border-color:#ffb14766}.position-label{background:#351810e8;color:#ffdf9b;border:1px solid #ba7835}
.board-2d{border:3px solid #d6a351;box-shadow:0 0 0 4px #3d1814,0 0 26px #ee5a2133;background:#33201d}
.board-2d button{background:#352326;border-color:#b5986366}.board-2d button:nth-child(2n){background:#3a2829}.board-2d button:hover{background:#57402e}
.board-2d button.target::after{background:#ffc361;box-shadow:0 0 8px #f29131}.board-2d button.selected{box-shadow:inset 0 0 0 2px #ffd17c}
.tile-piece{background:linear-gradient(130deg,#463b32,#211b20);color:#ffe2ad}.tile-piece.promoted{color:#ff7990}
#game-turn{font-weight:900}.hand-row{border-bottom-color:#c6a982}
#game-actions,.game-actions{border-top:1px solid #d7b995}.game-actions button{border-radius:3px}
#move-form button,#new-game{background:#b42b18;color:white;border-color:#902b1c;box-shadow:2px 2px 0 #64251a}
#move-form button:hover:not(:disabled),#new-game:hover{background:#86220f}
.event-readout{border-left:6px solid #b42b18}
.score-panel,.music-card{border-radius:3px;border:2px solid #a58b6d;border-top:7px solid #32211a;box-shadow:5px 5px 0 #e2d0b7}
.music-card{border-top-color:#b42b18;position:relative;background:linear-gradient(120deg,#fff7e7,#fffdf9);scroll-margin-top:20px}
.music-card .eyebrow{color:#a72a18}.music-card h2{font-size:33px;line-height:1.3;font-weight:1000;color:#8f271b}
.music-options input{accent-color:#b53520}.file-picker{border-radius:3px}
#promote-yes,#confirm-ok{background:#b42b18;color:white;border-color:#852314}
@media(max-width:950px){
 .introduction{min-height:300px;padding-left:8px}.introduction h1{font-size:60px}.battle-art{width:62%}
}
@media(max-width:720px){
 .introduction{min-height:204px;padding:15px 8px 16px;margin-bottom:16px;border-bottom-width:5px}
 .intro-copy{width:80%}.introduction h1{font-size:clamp(34px,8.5vw,55px);line-height:1.09;letter-spacing:-.06em}
 .introduction .eyebrow{display:block;font-size:10px;letter-spacing:.1em;margin:0 0 8px}
 .introduction p.battle-lead{display:block;font-size:12px;margin:10px 0;color:#4a2416;letter-spacing:0}
 .battle-art{width:60%;background-position:center,center,57% top}.battle-art>span{font-size:20px;right:10px;top:14px;letter-spacing:.06em}
 .battle-links{gap:14px}.battle-links .battle-jump{font-size:15px;min-height:44px;padding:7px 11px;gap:12px;box-shadow:3px 3px 0 #2c1e17}.battle-links>a{font-size:12px}
 .introduction .preview-note{display:none}
 .room-tabs button{font-size:14px}.board-caption{font-size:19px;letter-spacing:.08em;padding:9px 11px}
 .board-card{border-width:2px;box-shadow:3px 4px 0 #dac4a9}
 .game-toolbar .npc-choice{font-size:11px;box-shadow:none;padding:5px 1px}.npc-mini-face{width:clamp(36px,10.5vw,60px);height:clamp(36px,10.5vw,60px)}
 .opponent-rival{font-size:21px;letter-spacing:.1em;border-left-width:3px;padding-left:10px}.opponent-copy strong{font-size:24px}
 .opponent-copy span{font-size:12px}.opponent-copy small{font-size:11px}
 .score-panel,.music-card{padding:19px 14px;box-shadow:3px 3px 0 #dac4a9}
.music-card h2{font-size:25px}.event-readout{border-left-width:4px}
}

/* Late-Heisei game-poster excess: static bevels, lacquer and oversized gold type.
   The pale controls and unobstructed playing field remain the reading surface. */
body{background:radial-gradient(ellipse at 50% 0,#5d1723 0,#241019 480px,#130d13 1100px);background-color:#130d13}
.masthead{background:linear-gradient(#2c1520,#100b11);border-bottom:3px double #c99b4c;color:#fce2a4;box-shadow:0 3px 18px #0009}
.brand{color:#ffe1a1;text-shadow:0 2px 0 #724218,0 0 14px #e88e3933}.brand span{color:#e7af5f}.edition,.atelier-link{color:#e5cfae}
.masthead>.brand,.masthead>.edition{display:inline-flex;align-items:center;line-height:1;min-height:1.1em}
.masthead>.brand span{display:inline-flex;align-items:center;line-height:1;margin-top:0}
.introduction{min-height:400px;padding:28px 30px 32px;background:#190f15;border:3px solid #bd8c42;outline:1px solid #f4d28a;outline-offset:-8px;box-shadow:0 9px 0 #080608,0 12px 30px #0008;isolation:isolate}
.introduction::before{content:'';position:absolute;inset:0;pointer-events:none;z-index:1;background:linear-gradient(120deg,#681c2555,transparent 44%),linear-gradient(0deg,#e16b1728,transparent 25%);box-shadow:inset 0 0 55px #0008}
.intro-copy{width:67%}.introduction .eyebrow{color:#ffcf79;letter-spacing:.22em;font-weight:900}
.introduction h1{font-family:'Yu Mincho','Hiragino Mincho ProN',serif;font-size:clamp(52px,6.8vw,94px);font-weight:900;line-height:1.08;letter-spacing:-.055em;color:#ffe9b0;text-shadow:1px 1px 0 #fff4ce,2px 3px 0 #8b521f,4px 5px 0 #320c0f,0 0 23px #d05c2959}
.introduction h1>span{color:#ffd78b;text-shadow:1px 1px 0 #fff4cb,2px 3px 0 #ab5e22,4px 5px 0 #30070e,0 0 23px #f92f3f55}
.introduction p.battle-lead{color:#fff0d5;font-size:21px;letter-spacing:.12em;text-shadow:0 2px 3px #000}
.battle-art{width:66%;background-image:linear-gradient(90deg,#190f15 0,#190f15bb 12%,transparent 45%),linear-gradient(0deg,#3b091bd9,transparent 60%),url('./cast/moonlit-assembly.jpg');background-position:center,center,center 8%}
.battle-art::after{background:linear-gradient(130deg,transparent 60%,#d399423d);border-right:7px solid #792335}
.battle-art>span{right:23px;top:25px;color:#ffdda1;font-size:43px;text-shadow:2px 2px 0 #511820,0 0 10px #000;letter-spacing:.17em}
.battle-links .battle-jump{background:linear-gradient(#bf4851 0,#8d1629 44%,#630e22 52%,#992b37);border:2px solid #ebc37c;box-shadow:inset 0 0 0 2px #551323,inset 0 2px 2px #ffd8a866,0 4px 0 #34101c,0 0 20px #a420394d;color:#fff0c8;font-size:22px;text-shadow:0 2px 1px #2e0b13;min-height:58px}
.battle-links .battle-jump:hover{background:linear-gradient(#da5f5b,#a42b3b 50%,#6a1022)}
.battle-links>a:not(.battle-jump){background:linear-gradient(#33212a,#160f18);border:1px solid #bc945e;color:#ffe1a6;box-shadow:inset 0 0 0 2px #09080a;font-size:15px}
.room-tabs button{background:linear-gradient(#35232b,#191119);border:2px solid #ae8953;color:#f1d7a8;box-shadow:inset 0 0 0 1px #090608;border-radius:3px}
.room-tabs strong{display:inline-flex;align-items:center;padding:8px 18px;background:linear-gradient(#a23547,#541025);color:#fff1c8;border:2px solid #e6bc6a;box-shadow:inset 0 1px 1px #ffcf9177,0 3px 0 #080508;font-weight:900;letter-spacing:.08em}
.room-tabs button[aria-pressed=true]{background:linear-gradient(#a23547,#541025);color:#fff1c8;border-color:#e6bc6a;box-shadow:inset 0 1px 1px #ffcf9177,0 3px 0 #080508}
.room-tabs button:hover:not(:disabled){background:#602838}.room-tabs span{color:#dfb974;font-size:18px;line-height:1.5;letter-spacing:.12em}.room-tabs #quick-gallery{color:#ffe2a0;border-color:#ae8953}
.board-card{border:4px solid #b78b48;outline:1px solid #f3d290;outline-offset:-7px;box-shadow:0 0 0 3px #28141a,0 10px 28px #0009;border-radius:5px}
.board-caption{background:linear-gradient(110deg,#240e18,#67142b 50%,#240e18);border-bottom:4px double #d7b071;color:#ffe6a9;font-family:'Yu Mincho',serif;font-size:30px;text-shadow:1px 2px 0 #451320;letter-spacing:.17em}
.board-caption small{color:#deb174}.board-caption button{background:#200f1b;border-color:#bc9155;color:#ffe2ab;text-shadow:none}
.view-switch button[aria-pressed=true]{background:linear-gradient(#ffdfa0,#c99446);border-color:#f6d18e;color:#381b18;box-shadow:inset 0 0 0 2px #ba813a}
.game-toolbar{background:linear-gradient(100deg,#fffdf7,#f5e6d0)}
.game-toolbar .npc-choice{background:linear-gradient(#362129,#1b1319);color:#ffdda2;border:2px solid #997243;box-shadow:inset 0 0 0 1px #110a10,0 3px 0 #9d826155;gap:6px;padding:7px 4px 10px}
.npc-mini-face{width:76px;height:76px;border:2px solid #bf995b;box-shadow:0 0 0 2px #160c13;filter:contrast(1.08)}
.npc-choice[aria-pressed=true]{background:linear-gradient(#872c3f,#3e1224)!important;color:#fff0b9;outline:2px solid #f3c873;box-shadow:0 0 12px #dba04855}
.stage[data-npc=true]{--npc-rail:126px}
.opponent-card{background:radial-gradient(ellipse at 86% 50%,#8b2338,#32101e 58%,#170e15 100%);border-block:3px double #d6a958;box-shadow:inset 0 0 30px #08040bbb}
.opponent-rival{font-size:37px;color:#f5d38e;letter-spacing:.3em;border-left:5px solid #c9a562;text-shadow:2px 3px 0 #3b0e1d;white-space:nowrap}
.opponent-copy strong{font-size:37px;letter-spacing:.18em;color:#ffe3a1;text-shadow:2px 3px 0 #521422}.opponent-copy small{color:#efbd7d}.opponent-copy span{color:#f5ddbf}
.npc-face{box-sizing:border-box;height:94px;width:94px;overflow:hidden;border:0;outline:0;box-shadow:inset 0 0 0 2px #f1c773,inset 0 0 0 5px #170a12,0 0 18px #e8914144;border-radius:4px;background-clip:border-box}
.opponent-music{position:relative;box-sizing:border-box;pointer-events:auto;display:flex;align-items:stretch;gap:0;flex:0 1 225px;min-width:0;height:38px;padding:1px;border:0;border-radius:0;background:linear-gradient(100deg,#2b101a,#130c12 55%,#21121a);box-shadow:inset 0 1px #f5cb7d33,inset 0 -1px #070305,0 5px 14px #05030766;color:#f4d69d;overflow:hidden}
.opponent-music::after{content:"";position:absolute;z-index:2;inset:0;border:1px solid #a97a3d;pointer-events:none}
.opponent-music button{position:relative;flex:0 0 37px;width:37px;height:100%;padding:0;border:0;border-right:1px solid #9b6b34;border-radius:0;background:linear-gradient(90deg,#741f35aa,#3a121f55);box-shadow:none;color:#f4c76f;font:900 10px/1 sans-serif;cursor:pointer}
.opponent-music button:hover{color:#fff0bd;background:linear-gradient(90deg,#8e2944cc,#4a172777)}.opponent-music button:focus-visible{outline:2px solid #ffe09b;outline-offset:-3px}.opponent-music select{min-width:0;width:100%;height:100%;padding:3px 27px 3px 12px;color:#f4d69d;background:transparent;border:0;border-radius:0;font:800 11px/1.3 var(--shogi-ui);letter-spacing:.035em;text-overflow:ellipsis;cursor:pointer}.opponent-music select:focus-visible{outline:2px solid #ffe09b;outline-offset:-3px}
.position-label{background:linear-gradient(#591d25,#220e17);border:1px solid #c99c57;color:#ffe5a4;padding:5px 15px;box-shadow:0 2px 8px #0008}
.stage-corners{display:none}
#move-form button,#new-game{background:linear-gradient(#ae3643,#731329);border:2px solid #ae8247;box-shadow:inset 0 1px 0 #e8997866,0 2px 0 #622331;color:#fff3d2}
.score-panel,.music-card{border:3px solid #b79257;border-top:8px double #5d1d2c;box-shadow:0 6px 20px #0006;background:#fff8e9}
.music-card{border-top-color:#aa3247;background:linear-gradient(120deg,#fff2d9,#fffaf0)}.music-card h2{color:#801d31;text-shadow:1px 1px 0 #d8ae69}
.assembly{border-color:#a8834c}.assembly summary,footer{color:#e2c99f}.assembly img{border:3px double #bf9a5c}
@media(max-width:950px){.introduction{min-height:350px;padding-left:20px}.introduction h1{font-size:65px}.battle-art{width:70%}}
@media(max-width:720px){
 .masthead>.edition{display:none}
 .introduction{min-height:238px;padding:20px 10px 20px;border-width:2px;outline-offset:-5px;margin-bottom:20px}
 .intro-copy{width:88%}.introduction .eyebrow{font-size:10px;letter-spacing:.08em}
 .introduction h1{font-size:clamp(37px,9.6vw,62px);letter-spacing:-.06em;text-shadow:1px 1px 0 #fff1c4,2px 3px 0 #82451d,3px 4px 0 #290a12}
 .introduction p.battle-lead{font-size:12px;letter-spacing:.015em;margin:14px 0}
 .battle-art{width:76%;background-position:center,center,61% top}.battle-art>span{right:12px;top:17px;font-size:23px;letter-spacing:.13em}
 .battle-links{gap:9px}.battle-links .battle-jump{min-height:48px;font-size:17px;padding:8px 12px;gap:12px}.battle-links>a:not(.battle-jump){font-size:12px;padding:6px 8px}
 .board-card{border-width:2px;outline-offset:-4px}.board-caption{font-size:21px;letter-spacing:.1em;padding:10px 11px}.board-caption button{min-width:44px}
 .game-toolbar .npc-choice{font-size:11px;padding:6px 1px 8px}.npc-mini-face{width:clamp(36px,10.5vw,62px);height:clamp(36px,10.5vw,62px);border-width:1px}
 .stage[data-npc=true]{--npc-rail:106px}.opponent-card{gap:11px;padding:8px 12px}.npc-face{width:78px;height:78px;box-shadow:inset 0 0 0 2px #f1c773,inset 0 0 0 4px #170a12,0 0 14px #e8914138}
 .opponent-rival{font-size:25px;letter-spacing:.12em;padding-left:9px;border-left-width:3px}.opponent-copy strong{font-size:29px}.opponent-copy span{font-size:11px}.opponent-copy small{font-size:10px;letter-spacing:.06em}
 .opponent-music{flex:0 1 136px;height:34px}.opponent-music button{flex-basis:31px;width:31px;height:32px}.opponent-music select{width:104px;height:32px;padding-left:8px;padding-right:17px;font-size:10px}.opponent-copy small,.opponent-copy span{display:none}.opponent-copy strong{font-size:23px}
 .score-panel,.music-card{border-width:2px;border-top-width:6px}.music-card h2{font-size:25px}
}

/* Unified battle palette: black lacquer, deep crimson and one warm gold. */
.game-toolbar{color-scheme:dark;background:repeating-linear-gradient(125deg,#d6a75a0a 0 1px,transparent 1px 22px),radial-gradient(ellipse at 88% 0,#721f3838,transparent 43%),linear-gradient(115deg,#160d14,#28101b 55%,#120b12);border-bottom:2px solid #a5793d;box-shadow:inset 0 0 34px #0009}
.game-toolbar>.turn-readout{padding:15px 18px;border-left:5px solid #c99a4f;background:linear-gradient(90deg,#5f193233,transparent);text-shadow:0 2px 2px #000}
#game-turn{color:#ffe0a0;font-size:23px}#game-ply{color:#d2af78}
.game-toolbar label,.game-settings-fields label{color:#e2bd82;font-weight:800}
.game-toolbar select,.game-toolbar #npc-level{color-scheme:dark;background:#21131b;color:#fff3d5;border:2px solid #906b3d;box-shadow:inset 0 0 0 1px #080609,0 2px 0 #080609;font-weight:800}
.game-toolbar select:focus-visible,.game-toolbar button:focus-visible{outline:3px solid #f3c86e;outline-offset:2px}
.game-toolbar .npc-choice{background:linear-gradient(#2c1b23,#100b10);border-color:#876438;color:#f2ce8d;box-shadow:inset 0 0 0 1px #050405,0 3px 0 #080609}
.game-toolbar .npc-choice:hover:not(:disabled){background:linear-gradient(#522034,#1b0d17);border-color:#d2a052}
.npc-choice[aria-pressed=true]{background:linear-gradient(#761f3b,#2a0d1c)!important;color:#ffe5a2;outline:2px solid #e9bb61;box-shadow:inset 0 0 18px #b1244144,0 0 15px #db9e4355}
.npc-mini-face{border-color:#b98a47;box-shadow:0 0 0 2px #080609;filter:contrast(1.1) saturate(.82)}
#new-game{background:linear-gradient(#9d2a41,#5b1026);border-color:#c39750;color:#fff0c7;box-shadow:inset 0 1px 0 #f2b88755,0 3px 0 #210a13}
#new-game:hover:not(:disabled){background:linear-gradient(#c13a4d,#72152c)}
.hand-row{background:linear-gradient(100deg,#1b1017,#2b121e 55%,#130c12);border-color:#8d6839;color:#f5d89e;box-shadow:inset 0 1px 0 #c99a4933}
.hand-row>span{color:#e1bd82}.hand-row button{background:#351723;color:#ffe1a4;border-color:#9f7541}.hand-row button small{color:#dcb978}.hand-row button[aria-pressed=true]{background:#771f3a;border-color:#efc469;box-shadow:0 0 12px #d99b4355}
.game-settings summary{background:#25131c;color:#f3d397;border-color:#9e763f}
.game-actions{background:repeating-linear-gradient(125deg,#d6a75a08 0 1px,transparent 1px 20px),linear-gradient(110deg,#170d14,#26101b);border-top-color:#936b39!important;color:#f7dfad}
.game-actions input{color-scheme:dark;background:#110b10;color:#fff0d0;border:2px solid #806039}.game-actions input::placeholder{color:#b99870}.game-actions input:focus-visible{outline:3px solid #efc36a;outline-offset:2px}
#game-notice{color:#f2d69f}#game-notice.error{color:#ff9ca8}.game-actions #resign-game{color:#f0aab1;border-color:#805064}.game-actions #undo-move{color:#ecd09a;border-color:#87663c}
.move-entry summary{background:#24131c;color:#f1d294;border-color:#936d3e}.move-entry summary small{color:#d3ac70}
.event-readout{background:radial-gradient(ellipse at 15% 50%,#701d3538,transparent 48%),linear-gradient(110deg,#180e15,#29111d);border-color:#a77b40;color:#f8dfaa}.event-readout>span{color:#e8b75f}.event-readout strong{color:#ffe8b6}.event-readout small{color:#c9ac82}
.demo-character,.cue-controls,.board-options{background:linear-gradient(110deg,#160d14,#231019);color:#edcf96;border-color:#89663b}
.demo-character select{color-scheme:dark;background:#21131b;color:#fff0d1;border-color:#8d683c}
.cue-controls button,.board-options button{background:#25131c;color:#f4d9a1;border-color:#806039}.cue-controls small,.board-options label,.board-options output{color:#d2b27d}.cue-controls button[aria-pressed=true],.board-options button[aria-pressed=true]{background:#741f39;color:#ffe8ac;border-color:#e4b75d}
@media(max-width:720px){
 .game-toolbar>.turn-readout{padding:8px 9px;border-left-width:3px}#game-turn{font-size:17px}
 .game-settings-fields{padding:13px 8px 5px;background:#130c12;border-top:1px solid #74502f}
 .game-settings[open]>summary{background:#43182a;color:#ffe0a1}
 .room-tabs strong{padding:8px 10px;font-size:13px;justify-content:center}
}

/* The utility deck belongs to the same battlefield, not a separate pale document. */
.sound-style{color-scheme:dark;padding:14px 22px;background:repeating-linear-gradient(125deg,#d6a75a08 0 1px,transparent 1px 20px),linear-gradient(110deg,#170d14,#28101b);border-top:1px solid #805d35;color:#d9b982}
.sound-style label,.sound-style span{color:#dfc08b;font-weight:800}.sound-style select{color-scheme:dark;background:#21131b;color:#fff1d1;border:2px solid #8d683c;box-shadow:inset 0 0 0 1px #080609;font-weight:800}.sound-style a{color:#f4bd62}
#audio-status{margin:0;padding:0 22px 17px;background:linear-gradient(110deg,#170d14,#28101b);color:#cdb083;border-bottom:1px solid #805d35}
.score-panel,.music-card{color-scheme:dark;background:repeating-linear-gradient(125deg,#d6a75a0b 0 1px,transparent 1px 23px),radial-gradient(ellipse at 92% 0,#741d373d,transparent 42%),linear-gradient(120deg,#160d14,#28101b 62%,#120b11);border:3px solid #a77b40;border-top:8px double #7a2138;box-shadow:0 0 0 2px #28131a,0 9px 27px #000a;color:#ecd09b}
.score-panel .eyebrow,.music-card .eyebrow{color:#ebb85d}.score-heading h2,.music-card h2{color:#ffe2a1;text-shadow:1px 2px 0 #4d1320,0 0 13px #d08a3f2b}
.score-panel .minor,.music-card .minor,.music-intro>p:not(.eyebrow),#music-name,#music-status{color:#cdb083}.score-panel a,.music-card a{color:#f2bd65}
.score-heading button,.file-picker,.music-options button{background:linear-gradient(#342029,#171017);color:#f5d79e;border:2px solid #906a3b;box-shadow:inset 0 0 0 1px #080609,0 2px 0 #080609;border-radius:3px;font-weight:800}
#save-kif{background:linear-gradient(#a83245,#641227);color:#fff0c8;border-color:#c69a50}.score-heading button:hover:not(:disabled),.file-picker:hover,.music-options button:hover:not(:disabled){background:linear-gradient(#672239,#24111d);border-color:#d4a552}
.track-picker{color:#e5c58f;font-weight:800}.track-picker select,.music-options select{color-scheme:dark;background:#21131b;color:#fff1d1;border:2px solid #8d683c;border-radius:3px;padding:9px 12px;font-weight:800}.music-options{color:#d8b984}.music-options input{accent-color:#b52e46}.music-controls audio{color-scheme:dark;background:#171016;border:1px solid #745432;border-radius:999px}
.move-list{background:#6e4d2e;scrollbar-color:#a97c40 #150d13}.move-list li{background:#1a1017;color:#efd39f}.move-list li:nth-child(2n){background:#28121d}.move-list li small{color:#d3ad70}
.score-panel button:focus-visible,.music-card button:focus-visible,.music-card select:focus-visible,.file-picker:focus-within,.sound-style select:focus-visible{outline:3px solid #f3c86e;outline-offset:3px}
@media(max-width:720px){
 .sound-style{padding:13px 12px}.sound-style label,.sound-style>span{color:#dfc08b}#audio-status{padding:0 12px 15px;color:#cdb083}
 .score-panel,.music-card{padding:20px 14px;box-shadow:0 0 0 1px #28131a,0 7px 20px #0009}.score-panel .minor,.minor{color:#cdb083}
}

/* Final scorebook/footer pass: quiet, compact, and consistent with the chamber. */
.shogi-score-head,.move-list li{grid-template-columns:34px minmax(0,1fr) minmax(0,1fr)}
.move-list li{font-size:12px;padding:7px 9px;font-weight:700}
.move-list li small{font-size:10px}
footer .footer-meta{color:#c4a878}footer a,footer a:hover{color:inherit;text-decoration:none}
@media(max-width:720px){.move-list li{font-size:12px;padding:8px 6px}.shogi-score-head,.move-list li{grid-template-columns:28px minmax(0,1fr) minmax(0,1fr)}}
