/* Tiny display subsets; UI text uses the device's native Japanese sans font. */
@font-face{font-family:'Astra Dela';font-style:normal;font-weight:400;font-display:swap;src:url('./fonts/DelaGothicOne-display.ttf') format('truetype')}
@font-face{font-family:'Astra Brush';font-style:normal;font-weight:400;font-display:swap;src:url('./fonts/YujiBoku-display.ttf') format('truetype')}
:root{--shogi-ui:'Yu Gothic UI','Hiragino Kaku Gothic ProN',Meiryo,system-ui,sans-serif;--shogi-display:'Astra Dela','Yu Gothic UI',Meiryo,sans-serif;--shogi-brush:'Astra Brush','Yu Mincho',serif}
body,button,input,select,label,summary{font-family:var(--shogi-ui)}
.game-toolbar select,.game-toolbar #npc-level,.sound-style select,.music-options select,input:not([type=range]):not([type=checkbox]):not([type=file]){font-family:var(--shogi-ui)}
.introduction h1,.battle-art>span,.opponent-rival{font-family:var(--shogi-brush);font-weight:400;font-synthesis:none}
.opponent-copy strong,.brand{font-family:var(--shogi-display);font-weight:400;font-synthesis:none}
.introduction h1{letter-spacing:.015em;font-size:clamp(54px,6.7vw,94px);line-height:1.17;text-shadow:0 2px 0 #7e451d,0 4px 0 #2c0b14,0 0 24px #d05c2944}
.introduction h1>span{text-shadow:0 2px 0 #85471c,0 4px 0 #2c0b14,0 0 24px #f92f3f33}
.battle-art>span{font-size:39px;letter-spacing:.12em;line-height:1.5}
.opponent-copy strong{font-size:31px;letter-spacing:.05em}.opponent-rival{font-size:31px;letter-spacing:.16em}
.brand{font-size:23px;letter-spacing:.09em}.brand span{font-family:var(--shogi-ui);font-weight:800;letter-spacing:.2em}
.board-caption,.event-readout strong,.cue-controls b,.score-heading h2,.music-card h2,.gallery-copy h2,#gallery-title,#gallery-line,.gallery-header,.gallery-roster button,dialog h2,.character-line,.cutin-copy>strong{font-family:var(--shogi-ui);font-weight:800}
.board-caption{letter-spacing:.09em}.music-card h2{font-size:29px}
.eyebrow,.edition,.preview-note,.board-caption small,.opponent-copy small,.event-readout>span,.position-label,.room-tabs span,footer{font-family:var(--shogi-ui);font-weight:700}
.tile-piece,.hand-row button{font-family:var(--shogi-ui);font-weight:700}
.heisei-crest{position:absolute;z-index:1;left:20px;top:18px;width:min(22vw,230px);height:auto;translate:0 0;opacity:.18;mix-blend-mode:screen;pointer-events:none;filter:drop-shadow(0 0 9px #f0a84b55);animation:heisei-crest-turn 26s linear infinite,heisei-crest-breathe 3.4s ease-in-out infinite}
.introduction::after{content:'';position:absolute;z-index:1;left:-12%;top:58%;width:72%;height:4px;pointer-events:none;background:linear-gradient(90deg,transparent,#fff3bb 28%,#dd3229 55%,transparent);box-shadow:0 0 8px #ffb44d,0 0 22px #c91f2d;transform:rotate(-7deg) scaleX(.15);transform-origin:left center;animation:heisei-slash 5.2s cubic-bezier(.2,.75,.15,1) infinite}
.opponent-card{isolation:isolate;overflow:hidden}.opponent-card::after{content:'';position:absolute;z-index:-1;inset:-70% -20%;pointer-events:none;background:linear-gradient(110deg,transparent 42%,#ffe4a71d 48%,#fff0b54a 50%,#ffe4a71d 52%,transparent 58%);translate:-45% 0;animation:heisei-card-shine 7s ease-in-out infinite}
.battle-jump{position:relative;overflow:hidden}.battle-jump::after{content:'';position:absolute;inset:-20% auto -20% -38%;width:24%;background:#fff8d777;transform:skewX(-22deg);animation:heisei-button-glint 4.5s ease-in-out infinite}
@keyframes heisei-crest-turn{to{rotate:360deg}}
@keyframes heisei-crest-breathe{50%{opacity:.42;filter:drop-shadow(0 0 19px #f3b34f99)}}
@keyframes heisei-slash{0%,58%{opacity:0;transform:rotate(-7deg) scaleX(.12)}64%{opacity:1}78%{opacity:.9;transform:rotate(-7deg) scaleX(1)}90%,100%{opacity:0;transform:rotate(-7deg) scaleX(1)}}
@keyframes heisei-card-shine{0%,62%{translate:-45% 0}78%,100%{translate:45% 0}}
@keyframes heisei-button-glint{0%,67%{translate:0 0}86%,100%{translate:620% 0}}
@media(max-width:950px){.introduction h1{font-size:64px}}
@media(max-width:720px){
 .introduction h1{font-size:clamp(36px,10vw,55px);line-height:1.2;letter-spacing:.01em}
 .battle-art>span{font-size:22px}.brand{font-size:18px}
 .opponent-copy strong{font-size:25px}.opponent-rival{font-size:23px;letter-spacing:.08em}
 .music-card h2{font-size:23px}.board-caption{font-size:19px;letter-spacing:.08em}
 .heisei-crest{left:10px;top:10px;width:min(36vw,138px);opacity:.15}.introduction::after{width:92%;top:64%}
}
@media(prefers-reduced-motion:reduce){.heisei-crest,.introduction::after,.opponent-card::after,.battle-jump::after{animation:none!important}.heisei-crest{opacity:.22}}
