/* Party Room is a presentation preference, independent of theme and gameplay. */
#room-toggle { border:1px solid #bfd5dd66; border-radius:5px; background:#091722a8; color:#eaf3f5; min-height:44px; padding:9px 14px; font:inherit; font-size:14px; white-space:nowrap; }
#room-toggle[aria-pressed=true] { background:#d7e7e5; border-color:#d7e7e5; color:#0b1922; }
.room-type-layer { display:none; position:absolute; inset:0 4%; place-items:center; overflow:hidden; pointer-events:none; user-select:none; }
.room-type-layer span { display:block; max-width:100%; margin:0; color:#e4edec; text-align:center; white-space:pre; font-family:"Arial Narrow","Helvetica Neue",Arial,sans-serif; font-weight:900; line-height:.92; letter-spacing:-.045em; }
.room-type-behind { z-index:1; }
.room-type-outline { z-index:3; }
.room-type-outline span { color:transparent; -webkit-text-stroke:1px #f1faf957; }
.room-navigation-note, .game-room-artist { display:none; }

html[data-room-view=true] body[data-phase=catalogue] { --browse-inset-left:max(24px,3vw); --browse-inset-right:max(24px,3vw); }
html[data-room-view=true] body[data-phase=catalogue] .player-header { height:clamp(74px,7.5vh,108px); gap:clamp(16px,1.7vw,48px); }
html[data-room-view=true] body[data-phase=catalogue] .player-edition { display:none; }
html[data-room-view=true] body[data-phase=catalogue] :is(#room-toggle,#open-rewards,#browse-settings :is(summary,.browse-settings-toggle)) { font-size:clamp(16px,1.8vh,28px); padding:12px 20px; }
html[data-room-view=true] body[data-phase=catalogue] .player-brand { font-size:clamp(28px,3.4vh,48px); }
html[data-room-view=true] body[data-phase=catalogue] #song-selection { grid-template-columns:minmax(0,1fr); grid-template-rows:auto auto minmax(180px,1fr) auto auto; gap:clamp(4px,.65vh,12px); padding:8px 0 16px; overflow:auto; }
html[data-room-view=true] body[data-phase=catalogue] .selection-title :is(h1,#catalogue-kind) { display:none; }
html[data-room-view=true] body[data-phase=catalogue] .selection-title:has(#catalogue-status:empty) { display:none; }
html[data-room-view=true] body[data-phase=catalogue] .selection-title { grid-row:1; }
html[data-room-view=true] body[data-phase=catalogue] .collection-switcher { grid-row:2; grid-column:1; gap:24px; }
html[data-room-view=true] body[data-phase=catalogue] .collection-picker { max-width:80vw; padding:4px 32px; }
html[data-room-view=true] body[data-phase=catalogue] #collection-position { font-size:clamp(12px,1.2vh,18px); letter-spacing:.2em; }
html[data-room-view=true] body[data-phase=catalogue] #collection-title { font-size:clamp(25px,3vh,46px); }
html[data-room-view=true] body[data-phase=catalogue] .song-carousel { grid-row:3; grid-column:1; isolation:isolate; overflow:hidden; }
html[data-room-view=true] body[data-phase=catalogue] .room-type-layer { display:grid; align-items:start; align-content:start; padding-top:var(--room-title-top,8px); }
html[data-room-view=true] body[data-phase=catalogue] #carousel-cards { z-index:2; }
html[data-room-view=true] body[data-phase=catalogue] .song-card { top:62%; width:min(68cqh,43vw,620px); border-radius:6px; }
html[data-room-view=true] body[data-phase=catalogue] .song-card[data-selected=true] { border:1px solid #d6e9e57a; box-shadow:0 24px 70px #0008; }
html[data-room-view=true] body[data-phase=catalogue] .song-card[data-selected=false] { opacity:var(--opacity); }
html[data-room-view=true] body[data-phase=catalogue] .song-card .cover-tag { font-size:clamp(10px,1.2vh,18px); letter-spacing:.16em; }
html[data-room-view=true] body[data-phase=catalogue] .cover-type { padding:clamp(16px,5cqh,40px); }
html[data-room-view=true] body[data-phase=catalogue] .cover-type span { font-size:clamp(20px,4cqh,40px); }
html[data-room-view=true] body[data-phase=catalogue] .cover-type small { font-size:clamp(14px,2.5cqh,26px); }
html[data-room-view=true] body[data-phase=catalogue] .song-details { grid-row:4; grid-column:1; width:100%; padding-inline:6vw; }
html[data-room-view=true] body[data-phase=catalogue] .song-choice h2 { font-size:clamp(32px,4.5vh,76px); font-weight:750; line-height:1.05; letter-spacing:-.035em; display:block; overflow:visible; overflow-wrap:anywhere; text-wrap:balance; max-width:2400px; margin:5px auto; -webkit-line-clamp:unset; }
/* Reserve two title lines so ordinary song changes don't resize the artwork
   halfway through its glide. Exceptional titles can still grow and scroll. */
html[data-room-view=true] body[data-phase=catalogue] .song-choice h2 { display:grid; align-content:center; min-height:2.1em; }
html[data-room-view=true] body[data-phase=catalogue] #selected-artist { font-size:clamp(22px,2.7vh,42px); color:#d2ede6; white-space:normal; overflow:visible; }
html[data-room-view=true] body[data-phase=catalogue] #selected-artist-link { max-width:100%; overflow:visible; overflow-wrap:anywhere; border:0; }
html[data-room-view=true] body[data-phase=catalogue] #selected-meta { font-size:clamp(16px,1.8vh,28px); color:#c9d5dc; margin-top:6px; }
html[data-room-view=true] body[data-phase=catalogue] #selected-preview { font-size:clamp(14px,1.5vh,24px); }
html[data-room-view=true] body[data-phase=catalogue] .selection-actions { margin:0; gap:20px; }
html[data-room-view=true] body[data-phase=catalogue] .song-length { width:clamp(190px,16vw,290px); }
html[data-room-view=true] body[data-phase=catalogue] .song-length select { font-size:clamp(20px,2.2vh,32px); min-height:52px; padding-inline:32px; }
html[data-room-view=true] body[data-phase=catalogue] .song-length svg { width:22px; height:22px; }


html[data-room-view=true] body[data-phase=catalogue] .selection-actions .button { font-size:clamp(24px,2.6vh,40px); min-height:64px; padding:12px 30px; }
html[data-room-view=true] body[data-phase=catalogue] .browse-navigation-hint { grid-row:5; grid-column:1; font-size:clamp(16px,1.8vh,28px); gap:28px; padding-block:8px; }
html[data-room-view=true] body[data-phase=catalogue] .room-navigation-note { display:inline; color:#d2ede6; }
html[data-room-view=true] body[data-phase=catalogue] .gesture-main { width:max-content; max-width:94vw; font-size:clamp(23px,2.65vh,42px); padding:12px 24px; gap:20px; margin:0 auto 16px; border-radius:5px; background:#081722ed; color:#ecf7f6; box-shadow:0 8px 32px #0006; }
html[data-room-view=true] body[data-phase=catalogue] .gesture-main progress { width:clamp(140px,14vw,300px); height:10px; }
html[data-room-view=true] body[data-phase=catalogue] .gesture-main button { font-size:clamp(16px,1.6vh,26px); padding:12px 18px; }
html[data-room-view=true] body[data-phase=catalogue] #song-selection :is(.carousel-arrow,.collection-switcher>button) { width:64px; height:64px; }
html[data-room-view=true] body[data-phase=catalogue] #song-selection :is(.carousel-arrow,.collection-switcher>button) svg { width:32px; height:32px; }
html[data-room-view=true] body[data-phase=catalogue] .carousel-arrow { top:calc(50% - 32px); }
html[data-room-view=true] body[data-phase=catalogue] #favourite-song { width:60px; height:60px; padding:15px; }
html[data-room-view=true] body[data-phase=catalogue] #favourite-song .favourite-icon { width:30px; height:30px; }
html[data-room-view=true] body[data-phase=catalogue] #collection-empty h2 { font-size:clamp(30px,4vh,64px); }
html[data-room-view=true] body[data-phase=catalogue] #collection-empty p { font-size:clamp(20px,2.5vh,36px); max-width:1000px; -webkit-line-clamp:unset; }

/* Keep performance text large without changing chart time or scoring. */
html[data-room-view=true] .game-preview #game-title { font-size:clamp(26px,3.4vh,58px); white-space:normal; overflow-wrap:anywhere; text-overflow:clip; line-height:1.08; }
html[data-room-view=true] .game-preview .game-heading { display:block; }
html[data-room-view=true] .game-preview .game-heading>.eyebrow { display:none; }
html[data-room-view=true] .game-preview .game-room-artist { display:block; font-size:clamp(16px,2vh,30px); color:#c8e3df; overflow-wrap:anywhere; margin:4px 0 0; }
.game-room-artist:empty { display:none!important; }
html[data-room-view=true] .game-preview .game-topbar { min-height:88px; padding-block:14px; gap:24px; }
html[data-room-view=true] .game-preview .game-input-status { font-size:clamp(14px,1.5vh,22px); max-width:340px; }
html[data-room-view=true] .game-preview :is(#game-close,.game-settings>summary) { font-size:clamp(16px,1.8vh,26px); padding:13px 18px; }
html[data-room-view=true] .game-preview .game-lyrics-band { --lyric-size:clamp(30px,4.1vh,66px); --lyric-preview-scale:.8; padding-block:14px 8px; }
html[data-room-view=true] .game-preview .game-lyric-window { max-width:2400px; }
html[data-room-view=true] .game-preview #game-time { font-size:clamp(16px,1.9vh,28px); }
html[data-room-view=true] .game-preview .game-bottom button { font-size:clamp(18px,2vh,30px); min-height:56px; }
html[data-room-view=true] .game-preview .game-party-score { font-size:clamp(34px,4vh,60px); }
html[data-room-view=true] .game-preview .game-score { font-size:clamp(26px,3vh,44px); }
html[data-room-view=true] .game-preview :is(.game-player-name,.game-score-label) { font-size:clamp(14px,1.5vh,24px); }

@media(max-width:900px), (max-height:650px) {
  html[data-room-view=true] body[data-phase=catalogue] .room-type-layer { display:none; }
  html[data-room-view=true] body[data-phase=catalogue] .player-header { height:64px; gap:8px; padding-inline:12px; }
  html[data-room-view=true] body[data-phase=catalogue] :is(#room-toggle,#open-rewards,#browse-settings :is(summary,.browse-settings-toggle)) { font-size:13px; padding:9px; }
  html[data-room-view=true] body[data-phase=catalogue] .player-brand { font-size:24px; }
  html[data-room-view=true] body[data-phase=catalogue] #song-selection { grid-template-rows:auto auto minmax(180px,1fr) auto auto; }
  html[data-room-view=true] body[data-phase=catalogue] .song-card { width:min(68cqh,64vw,370px); }
  html[data-room-view=true] body[data-phase=catalogue] .song-choice h2 { font-size:clamp(28px,5vw,42px); }
  html[data-room-view=true] body[data-phase=catalogue] #selected-artist { font-size:22px; }
  html[data-room-view=true] body[data-phase=catalogue] .selection-actions { flex-wrap:wrap; gap:10px; }
  html[data-room-view=true] body[data-phase=catalogue] .selection-actions .button { font-size:23px; padding:12px 20px; }
  html[data-room-view=true] body[data-phase=catalogue] .browse-navigation-hint { font-size:15px; gap:12px; }
  html[data-room-view=true] body[data-phase=catalogue] .room-navigation-note { display:none; }
  html[data-room-view=true] body[data-phase=catalogue] .gesture-main { font-size:20px; flex-wrap:wrap; justify-content:center; gap:10px; padding:10px; margin-bottom:8px; }
  html[data-room-view=true] .game-preview .game-lyrics-band { --lyric-size:clamp(24px,4vh,34px); }
  html[data-room-view=true] .game-preview .game-topbar { gap:10px; }
  html[data-room-view=true] .game-preview .game-input-status { display:none; }
}
@media(max-width:700px) { #room-toggle { display:none; } html[data-room-view=true] body[data-phase=catalogue] .player-brand { font-size:20px; } }
@media(prefers-reduced-motion:reduce) { .room-type-layer span { transform:none!important; } }

/* All header controls share an outer height, including the level wells. */
.player-header{--header-control-height:50px}
html[data-room-view=true] .player-header{--header-control-height:clamp(50px,5.5vh,64px)}
html body .player-header :is(#open-rewards,#room-toggle,#browse-settings>.browse-settings-toggle,.header-music-deck,.header-mic){box-sizing:border-box;height:var(--header-control-height);min-height:var(--header-control-height);max-height:var(--header-control-height);align-content:center;margin-block:0}
html body .player-header :is(#open-rewards,#browse-settings>.browse-settings-toggle){display:flex;align-items:center;justify-content:center}
html body .player-header .header-music-deck{padding-block:0}
html body .player-header .header-music-deck #menu-music-toggle{height:100%;min-height:0;padding-block:5px;align-content:center}
@media(max-width:900px),(max-height:650px){html[data-room-view] .player-header{--header-control-height:50px}}
.room-type-layer[data-title-flair=noel] span{font-family:Georgia,"Times New Roman",serif;font-weight:700;letter-spacing:0}
.room-type-behind[data-title-flair=noel] #room-type-back{visibility:hidden;grid-area:1/1}
.room-type-behind canvas{grid-area:1/1;width:100%;max-width:100%;pointer-events:none;display:block}
.room-type-behind canvas[hidden]{display:none}
.room-type-outline[data-title-flair=noel] span{-webkit-text-stroke:1px #f0d8a460}
html body .player-header .header-menu-fader{height:100%}
html body .player-header #header-menu-volume{height:calc(var(--header-control-height) - 12px)}
