/* 布局与交互承载层。可与独立美术主题组合。 */
/* 基础高度不依赖 :has 或动态视口单位，避免旧 WebView 中 flex 主区塌为 0。 */
html{height:100%;overflow:hidden}
body[data-page]{height:100vh;height:100dvh;min-height:0;display:flex;flex-direction:column;overflow:hidden}
.site-header{position:relative;flex:0 0 auto;height:calc(var(--ui-header-height) + env(safe-area-inset-top));min-height:0;flex-wrap:nowrap;padding:env(safe-area-inset-top) max(16px,env(safe-area-inset-right)) 0 max(16px,env(safe-area-inset-left));gap:12px}
.brand{flex:0 1 auto;justify-content:flex-start;white-space:nowrap;font-size:16px;letter-spacing:0}.brand small{display:none}
.site-nav{flex:0 0 auto;width:auto;flex-wrap:nowrap;border:0;gap:4px;overflow:visible}.site-nav a,.site-nav button{flex:0 0 auto;font-size:13px;min-height:44px;padding:8px 12px;white-space:nowrap}.site-nav :is(a,button){flex:0 0 auto;font-size:13px;min-height:44px;padding:8px 12px;white-space:nowrap}.site-nav [aria-current=page]{border-bottom-color:var(--gold-light);color:var(--gold-light)}
.site-main,body[data-page=game] .site-main{flex:1 1 0;min-height:0;height:0;width:100%;margin:0;padding:0;overflow:hidden;position:relative}
.site-main>.panel-card.empty-state{height:100%;overflow:auto}
.home-scene{height:100%;min-height:0;border:0}.home-scene .hero-copy-panel{padding:max(24px, min(5vw, 72px));padding:clamp(24px,5vw,72px)}.home-scene .hero-companion{width:min(40%,480px)}
.map-viewport{width:100%;height:100%;overflow:auto;overflow-x:hidden;overscroll-behavior:contain;touch-action:pan-y;scrollbar-color:var(--gold) #293b44;scrollbar-width:thin}
.map-viewport:focus-visible{outline-offset:-4px}.journey-map{width:100%;max-width:none;margin:0;border:0;border-radius:0;min-height:1900px;isolation:isolate}.map-region{min-height:172px;padding-left:max(20px,calc((100vw - 820px)/2));padding-right:max(20px,calc((100vw - 820px)/2));}
#site-dialog{width:min(var(--ui-dialog-width),calc(100vw - 32px));max-height:calc(100vh - 48px);max-height:calc(100dvh - 48px);padding:28px;overscroll-behavior:contain;touch-action:pan-y;scrollbar-width:thin}
#site-dialog[data-panel=region],#site-dialog[data-panel=songbook]{width:min(var(--ui-dialog-width),calc(100vw - 32px))}
.dialog-close{position:sticky;top:0;float:right;z-index:4;margin:-12px -12px 0 12px;background:var(--paper)}
.songbook-heading{display:flex;align-items:center;gap:14px;margin:0 45px 20px 0}.songbook-heading h2{margin:4px 0!important}.songbook-tools{display:grid;grid-gap:12px;gap:12px}.songbook-results{padding-top:10px}.songbook-count{margin:6px 0;font-size:12px;color:var(--ink-soft)}.songbook-results .song-grid{grid-template-columns:1fr}.songbook-results .song-card{min-height:150px}.filter-tabs{flex-wrap:wrap;overflow:visible}.filter-tabs button{flex:0 1 auto;font-size:13px}.menu-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-gap:10px;gap:10px}.menu-grid button{padding:12px;border:1px solid var(--line);background:transparent;color:var(--ink)}
.dex-scene{height:100%;overflow:auto;padding:24px;max-width:900px;margin:auto}.dex-scene>h2{margin-top:0}.archive-content{min-height:340px}
.leaderboard{display:flex;flex-direction:column;min-height:0;overflow:hidden}.leaderboard>header{flex:0 0 auto}.board-scroll{flex:1 1 auto;min-height:100px;overflow:auto;overscroll-behavior:contain}.board-note{flex:0 0 auto;margin:12px 0 0}.online-board-empty{padding:20px 4px;margin-top:14px;border-top:1px dashed var(--line);font-size:12px;line-height:1.7;color:var(--ink-soft)}.online-board-empty p{margin:6px 0}.leaderboard .record-row{min-height:80px}
body[data-page=game] .site-main{overflow:auto;overscroll-behavior:contain;padding:8px 10px}.game-heading{max-width:980px;margin-left:auto!important;margin-right:auto!important}.scoped-game{font-family:var(--font-ui)}
body[data-scene=result] .site-header{display:flex}body[data-scene=result] .site-main{padding:20px;overflow:auto}
.result-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(320px,.9fr);grid-gap:var(--ui-panel-gap);gap:var(--ui-panel-gap);width:min(100%,var(--ui-result-width));height:100%;min-height:0;margin:0 auto}
.result-summary{width:100%;max-width:none;margin:0;padding:24px;display:flex;flex-direction:column;justify-content:center;min-height:0;overflow:auto}.result-summary h1{font-size:28px;margin:4px 0}.result-summary header>p:last-child{margin:8px 0}.result-score p{margin:12px 0 0}.result-accuracy{font-size:max(48px, min(7vh, 76px));font-size:clamp(48px,7vh,76px);margin:10px 0 0;letter-spacing:-.04em}.result-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));margin:16px 0;gap:6px}.result-stat-grid>div{padding:10px 5px}.result-stat-grid strong{font-size:22px}.result-stat-grid span{font-size:11px}.result-actions{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.result-actions>a,.result-actions>button{width:100%;min-height:48px}.result-actions>:is(a,button){width:100%;min-height:48px}.result-summary>.muted{font-size:11px;margin:12px 0 0}.result-side{min-height:0;display:flex;flex-direction:column;gap:14px}.result-board{flex:1 1 0;min-height:0}.result-board>.leaderboard{height:100%;padding:24px}.result-source{flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:14px;color:var(--ink);text-decoration:none}.result-source span{margin-left:auto}.result-source img{width:90px;height:64px;object-fit:cover}.result-source b,.result-source small{display:block}.result-source small{font-size:11px;color:var(--ink-soft);margin-top:5px}.result-grade{color:var(--gold);font-size:28px;line-height:1.2;margin-top:8px}.result-trivia{grid-column:1/-1;margin:0;padding:16px}
.share-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-gap:24px;gap:24px;align-items:start}.share-preview{display:block;width:100%;height:auto;max-height:calc(100vh - 170px);max-height:calc(100dvh - 170px);object-fit:contain;margin:0 auto}.share-tools{display:grid;grid-template-columns:1fr 1fr;grid-gap:8px;gap:8px}.share-tools button{padding:12px;border:1px solid var(--line);color:var(--ink);background:transparent}.share-tools .primary{color:var(--paper);background:var(--navy)}.share-copy{margin-top:18px}.share-copy summary{cursor:pointer;padding:12px 0}.share-copy textarea{width:100%;min-height:120px;padding:12px;font:14px/1.6 var(--font-ui);resize:vertical;color:var(--ink);background:#fffdf8;border:1px solid var(--line)}.share-controls>.muted{font-size:12px}
@media(max-width:680px){:root{--ui-header-height:56px}.site-header{padding-left:10px;padding-right:10px;gap:6px}.brand{font-size:12px;flex:1;gap:5px}.brand>span{width:24px;height:24px}.site-nav{gap:0}.site-nav a,.site-nav button{padding:8px 7px;font-size:11px}.site-nav :is(a,button){padding:8px 7px;font-size:11px}.home-scene .hero-copy-panel{justify-content:flex-end;padding:24px 20px 36px}.home-scene .hero-companion{bottom:28%;width:min(60%,300px)}.home-scene h1{font-size:42px}.journey-map{min-height:1870px}.map-region{min-height:168px;padding:8px 18px}#site-dialog,#site-dialog[data-panel=region],#site-dialog[data-panel=songbook]{width:100%;max-width:100%;margin:auto 0 0;max-height:88vh;max-height:88dvh;padding:22px 16px calc(22px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0}.songbook-heading h2{font-size:24px!important}.songbook-results .song-card{grid-template-columns:92px minmax(0,1fr)}.dex-scene{padding:16px}.result-layout{display:flex;flex-direction:column;height:auto}.result-summary{flex:0 0 auto;min-height:calc(100vh - 96px);min-height:calc(100dvh - 96px);padding:20px 14px}.result-side{flex:0 0 auto;min-height:450px}.result-board{min-height:350px;flex:auto}.result-board>.leaderboard{height:350px}.result-source img{width:76px;height:58px}body[data-scene=result] .site-main{padding:12px}.result-stat-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.share-preview{width:min(100%,350px)}}
@media(min-width:681px) and (max-height:620px){:root{--ui-header-height:50px;--ui-panel-gap:12px}body[data-scene=result] .site-main{padding:10px}.result-summary{padding:14px;justify-content:flex-start}.result-summary h1{font-size:20px}.result-summary header>p:last-child{font-size:11px;margin:4px 0}.result-grade{font-size:20px}.result-accuracy{font-size:46px;margin-top:4px}.result-score p{margin:4px 0;font-size:12px}.result-stat-grid{margin:8px 0}.result-stat-grid>div{padding:6px 3px}.result-stat-grid strong{font-size:18px}.result-actions>a,.result-actions>button{min-height:44px;padding:6px}.result-actions>:is(a,button){min-height:44px;padding:6px}.result-summary>.muted{margin:6px 0 0}.result-board>.leaderboard{padding:14px}.leaderboard h2{font-size:24px}.result-source{padding:9px}.result-source img{width:68px;height:46px}}

@media(max-width:680px){.share-layout{display:flex;flex-direction:column;gap:12px}.share-preview{width:auto;max-width:100%;max-height:calc(88vh - 260px);max-height:calc(88dvh - 260px)}.share-controls{width:100%}.share-controls>p:first-child{margin:0 0 12px;font-size:12px}.share-copy{margin-top:8px}.share-controls>.muted{font-size:11px;margin-bottom:0}}
.difficulty-list{display:grid;grid-gap:12px;gap:12px;margin:18px 0}.difficulty-list>.panel-card{padding:18px}.difficulty-list h3{margin:0 0 10px}.difficulty-list p{margin:8px 0}.chart-author{overflow-wrap:anywhere}
.journal-host{height:100%;min-height:0;overflow:hidden}.journal-host>.adventure-journal{height:100%}
[data-theme=dark]{--ink:#e5e4db;--ink-soft:#b8c0c2;--navy:#4c7084;--navy-dark:#365768;--paper:#26343f;--paper-deep:#1e2a34;--gold:#d8bc78;--line:#8e805d;--csstools-color-scheme--light: ;color-scheme:dark}[data-theme=dark] body[data-page]{color:var(--ink);background-color:#192731;background-image:linear-gradient(115deg,#192d35,#273139 72%)}[data-theme=dark] .site-header{background:rgba(24,39,51,0.96078);background:#182733f5}[data-theme=dark] .share-copy textarea{color:var(--ink);background:#1e2a34}[data-theme=dark] .song-details,[data-theme=dark] .result-summary,[data-theme=dark] .menu-grid,[data-theme=dark] .songbook-heading,[data-theme=dark] .songbook-tools{color:var(--ink)}[data-theme=dark] :is(.song-details,.result-summary,.menu-grid,.songbook-heading,.songbook-tools){color:var(--ink)}
.anniversary-dex{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-gap:12px;gap:12px;margin:16px 0}.anniversary-dex figure{margin:0;text-align:center}.anniversary-dex img{width:100%;height:170px;object-fit:contain}.anniversary-dex figcaption{font-size:13px}.anniversary-dex small{display:block;color:var(--ink-soft);font-size:11px;margin:6px 0}.anniversary-dex[hidden]{display:none}
.anniversary-entry{position:fixed;right:20px;bottom:18px;z-index:10;display:grid;justify-items:center;border:0;padding:0;background:transparent;color:var(--ink);cursor:pointer;filter:drop-shadow(0 4px 8px rgba(28,49,67,0.33333));filter:drop-shadow(0 4px 8px #1c314355)}.anniversary-entry img{width:110px;height:120px;object-fit:contain}.anniversary-entry span{background:var(--paper);border:1px solid var(--line);border-radius:18px;padding:5px 14px;font-size:13px}@media(max-width:600px){.anniversary-entry{right:10px;bottom:14px}.anniversary-entry img{width:84px;height:94px}}
.cinematic-host{flex:1;min-height:0;height:100%;position:relative}.cinematic-host>.rt-c4k{width:100%;height:100%;min-height:0}body[data-scene=game] .site-main{display:flex;flex-direction:column;overflow:hidden}.game-heading{flex:0 0 auto;margin:8px 0}.game-heading h1{font-size:22px;margin:0}.game-heading p{display:none}.game-heading small{font-size:14px}.game-heading .tool-row{flex-shrink:0}
.share-variants{display:grid;grid-template-columns:1fr 1fr;grid-gap:6px;gap:6px;margin:8px 0 12px}.share-variants button{min-height:44px;background:var(--paper);color:var(--ink);border:1px solid var(--line);font:inherit;font-size:13px}.share-variants [aria-pressed=true]{border:2px solid var(--gold);background:var(--paper-deep)}canvas.share-preview{width:100%;height:auto}.share-image{min-width:0;display:grid;align-items:center;justify-items:center;place-items:center}
.chart-preview-controls{flex:0 0 auto;display:flex;align-items:center;gap:14px;padding:8px 14px;background:var(--paper);font-size:12px}.chart-preview-controls input{flex:1;min-width:40px}
@media(max-width:390px){.site-nav a,.site-nav button{padding-left:6px;padding-right:6px;font-size:10px}.site-nav :is(a,button){padding-left:6px;padding-right:6px;font-size:10px}.brand{font-size:11px}.site-header{gap:3px}}

/* 横版封面与信息并排，操作不再撑满整行。 */
.songbook-results .song-card{grid-template-columns:280px minmax(0,1fr);align-items:start;gap:22px;padding:16px;min-height:0}
.songbook-results .song-cover{width:100%;aspect-ratio:16/9;min-height:0;height:auto;display:grid;align-items:center;justify-items:center;place-items:center;border:0;background:#344c59}
.songbook-results .song-cover::before{content:none}.songbook-results .song-cover>img{width:100%;height:100%;position:absolute;top:0;right:0;bottom:0;left:0;object-fit:cover;filter:none}.songbook-results .song-cover>span{font-size:13px;color:#eee6cf}.songbook-results .song-cover small{left:10px;right:auto;bottom:9px;padding:4px 8px;font-size:10px;letter-spacing:0;background:rgba(32,49,59,0.87843);background:#20313be0}
.songbook-results .song-details{align-self:stretch;gap:4px}.songbook-results .song-details h3{white-space:normal;overflow-wrap:anywhere;font-size:23px;margin:2px 0 4px;line-height:1.3}.songbook-results .song-details p{white-space:pre-line;font-size:13px;line-height:1.5;margin:0 0 4px;color:var(--ink-soft)}.songbook-results .song-details>small{font-size:12px;color:var(--ink-soft)}.songbook-results .eyebrow{font-size:10px}.songbook-results .card-actions{justify-content:flex-start;gap:8px;padding-top:10px}.songbook-results .card-actions .primary{flex:0 1 auto;min-height:44px;padding:8px 18px;box-shadow:none}.song-coming-note{font-size:12px;color:var(--ink-soft)}
@media(max-width:900px){.songbook-results .song-card{grid-template-columns:220px minmax(0,1fr);gap:16px}.songbook-results .song-details h3{font-size:21px}}
@media(max-width:680px){.region-node{width:176px;min-height:200px;gap:14px;padding:8px}.region-node::after{top:8px;width:96px;height:96px}.region-emblem{width:96px;height:96px;flex-basis:96px;padding:3px}.region-node-copy{width:162px;padding:10px;gap:5px}.region-node strong{font-size:22px}.region-node small{font-size:10px}.songbook-results .song-card{grid-template-columns:minmax(0,1fr);gap:12px;padding:12px}.songbook-results .song-details h3{font-size:22px}.songbook-results .song-details p,.songbook-results .song-details>small{font-size:12px}.songbook-results .card-actions{padding-top:8px}.songbook-results .card-actions .primary{flex:1 1 auto}}
.journey-board .board-tabs{display:flex;gap:10px;flex-wrap:wrap}.journey-board .board-tabs button{padding:8px 18px;border:1px solid var(--line);border-radius:24px;background:transparent;color:var(--ink);font:inherit}.journey-board .board-tabs button[aria-pressed=true]{background:var(--ink);color:var(--paper)}.journey-board .board-total{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:16px 0;border-bottom:1px solid var(--line)}.journey-board .board-total strong{font-size:max(20px, min(3vw, 30px));font-size:clamp(20px,3vw,30px)}.journey-board .board-scroll{max-height:min(48vh,460px)}.song-cross-region{margin:0;color:#e9d39d;font-weight:700;font-size:13px;letter-spacing:.02em}
.anniversary-dex figure.locked img{filter:grayscale(1) brightness(.82);opacity:.65}.anniversary-dex figure.locked figcaption{opacity:.7}
