/* Shared capacity rules: display type has a height budget; content keeps a floor.
   First-screen content takes priority over display type and decorative spacing. */
@media(min-width:651px){
 body[data-theme=cinema]:is(.is-artist-menu,.is-events){--menu-top:clamp(64px,8svh,80px);--menu-bottom:clamp(64px,10svh,100px)}
 body[data-theme=cinema].is-artist-menu .artist-poster-title,
 .de-opening .de-heading h1{font-size:clamp(42px,min(15.3vw,calc(42svh - 150px),var(--menu-title-budget,255px)),255px)}
 body[data-theme=cinema].is-artist-menu .artist-selection,
 body.is-events .de-opening{height:var(--artist-viewport-height,100svh)}
 body[data-theme=cinema].is-artist-menu .artist-choice h2,
 .de-dj h2{font-size:min(4.6vw,6svh,80px);line-height:.94}
 body[data-theme=cinema].is-artist-menu .artist-micro p,
 body.is-events .de-dj .de-bio{font-size:clamp(6.5px,min(.76vw,1.5svh),11px);line-height:.84}
 body[data-theme=cinema].is-artist-menu .artist-poster-subtitle,
 body.is-events .de-subtitle{margin-top:-.82237em;line-height:.84}
 /* Keep the producer's introduction in the first screen when space permits.
    Intrinsic rows can still grow for translations or increased text size. */
 body.is-producer .mp-page{--producer-top:clamp(64px,10svh,112px);--producer-hero-height:calc(100svh - var(--producer-top) - 88px);padding-top:var(--producer-top)}
 .mp-page[data-layout=editorial] .mp-hero{min-height:0;min-width:0;grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) 44px;height:var(--producer-hero-height)}
 .mp-page[data-layout=editorial] .mp-hero-type{padding-top:clamp(0px,calc(12svh - 78px),30px);min-width:0}
 .mp-page[data-layout=editorial] .mp-discipline{font-size:clamp(15px,min(2.5vw,3.5svh),40px);margin-bottom:clamp(8px,2svh,22px)!important}
 .mp-page[data-layout=editorial] .mp-hero h1{font-size:clamp(36px,min(10.5vw,calc(27svh - 100px)),180px)}
 .mp-page[data-layout=editorial] .mp-roles{margin-top:clamp(10px,2.8svh,25px);column-gap:clamp(12px,2vw,64px);row-gap:5px;font-size:clamp(9px,1.5svh,12px)}
 .mp-page[data-layout=editorial] .mp-hero-photo{height:100%;min-height:0}
 .mp-page[data-layout=editorial] .mp-hero-photo img{object-fit:cover;object-position:center 30%}
 .mp-page[data-layout=editorial] .mp-hero-intro{padding:clamp(4px,calc(8svh - 35px),48px) 0;min-width:0}
 .mp-page[data-layout=editorial] .mp-hero-intro h2{font-size:clamp(20px,min(3.2vw,calc(9svh - 20px)),54px)}
 .mp-page[data-layout=editorial] .mp-hero-intro p{margin:clamp(8px,2svh,24px) 0;line-height:1.6}
 .mp-page[data-layout=editorial] .mp-social{margin-bottom:0}
}
/* The game header shares the board's column width, not the entire viewport. */
/* Fade only the logo area: page headings must retain their original green. */
body[data-theme=cinema]:is(.is-artist-menu,.is-events) header:before{height:calc(var(--menu-top) - 12px);background:linear-gradient(to bottom,#0e0e0e 0%,#0e0e0e99 30%,transparent 100%)}
body[data-theme=cinema].is-artist-menu .artist-caption h2,
body.is-events .de-dj h2{margin:-3px 0 0;padding-top:4px;padding-bottom:0;line-height:.94}
body[data-theme=cinema].is-artist-menu .artist-caption .artist-micro,
body[data-theme=cinema].is-artist-menu .artist-choice:first-child .artist-caption .artist-micro,
body.is-events .de-dj .de-bio{font-size:clamp(6.5px,min(.76vw,1.5svh),11px);margin-top:-1.07936em}
body[data-theme=cinema].is-artist-menu .artist-micro p{margin:0}
@media(max-width:650px){
 body[data-theme=cinema].is-artist-menu .artist-caption h2,body.is-events .de-dj h2{margin:0;padding-top:5px;line-height:1.1}
 body[data-theme=cinema].is-artist-menu .artist-caption .artist-micro,
 body[data-theme=cinema].is-artist-menu .artist-choice:first-child .artist-caption .artist-micro,
 body.is-events .de-dj .de-bio{margin-top:-1.5px}
 body[data-theme=cinema].is-artist-menu .artist-poster-subtitle,body.is-events .de-subtitle{margin-top:-4px;line-height:.96}
}
.game-page .title{display:grid;grid-template-columns:minmax(0,calc(var(--game-side) + 2px)) 250px;column-gap:22px;align-items:end;padding-right:0}
.game-page header{height:clamp(40px,8svh,58px)}
.game-page main{padding-top:clamp(6px,1svh,14px);padding-bottom:12px}
.game-page .title .game-heading{grid-column:1;grid-row:1;min-width:0;flex-wrap:wrap;gap:4px 10px;padding-right:46px;align-items:baseline}
.game-page .title h1{font-size:clamp(16px,calc(var(--game-side) * .075),40px);white-space:nowrap}
.game-page .title .game-credit{align-self:auto;margin:0;flex-basis:auto}
.game-page .title .game-credit :is(.version,.designer){font-size:clamp(8px,calc(var(--game-side) * .022),11px)}
.game-page .title-actions{display:contents}
.game-page .title-actions>p{grid-column:2;grid-row:1;justify-self:end}
.game-page .game-share-top{top:auto;bottom:0;left:calc(var(--game-side) - 38px)}
.game-page .legend{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:4px;padding-block:clamp(5px,1svh,10px);font-size:clamp(6.5px,2cqw,9px)}
.game-page .legend button{min-width:0;justify-self:start}
.game-page .leaderboard{max-height:none;overflow:visible}
.game-page .leaderboard li{min-height:clamp(24px,5svh,38px)}
.game-page .leaderboard{padding:clamp(10px,1.5svh,16px)}
.game-page .status{padding-block:clamp(4px,1svh,8px);row-gap:3px}
.game-page .game-column footer{margin-top:5px}
.game-page .game-column footer #reset{padding-block:5px}
.game-page .game-column footer span{font-size:7px}
@media(max-width:800px){.game-page .title{grid-template-columns:minmax(0,calc(var(--game-side) + 2px))}.game-page .game-share-top{left:calc(var(--game-side) - 34px)}}
@container(max-width:460px){
 .game-page .status .beat-track{grid-column:1/-1;grid-row:2;flex-wrap:wrap;gap:2px}
 .game-page .status #beat-label{grid-column:1/-1;grid-row:3;justify-self:end;font-size:8px}
 .game-page .legend button:before{width:6px;height:6px;margin-right:3px}
}
/* The border matches the wordmark's visible height; the hit area stays 44px. */
body .language-switcher{top:calc(var(--language-center-y,39px) - 22px)!important;bottom:auto!important}
body .language-switcher #language-toggle{position:relative;min-height:44px;min-width:max(60px,calc(var(--language-frame-height,28px) * 2.5));border:0;padding:5px 7px;gap:5px;font-size:clamp(9px,calc(var(--language-frame-height,28px) * .38),11px);line-height:1}
body .language-switcher #language-toggle:before{content:'';position:absolute;inset:calc((44px - var(--language-frame-height,28px))/2) 0;border:1px solid #ffffff80;pointer-events:none}
body .language-switcher #language-toggle svg{width:clamp(9px,calc(var(--language-frame-height,28px) * .45),13px);height:clamp(9px,calc(var(--language-frame-height,28px) * .45),13px)}
body .language-switcher #language-toggle:is(:hover,[aria-expanded=true]):before{border-color:#00ff18}
/* Short, wide viewports use spare horizontal space for secondary controls. */
@media(min-width:801px) and (max-height:600px){
 .game-page{--game-control-rail:158px}
 .game-page .game-layout{padding-left:var(--game-control-rail)}
 .game-page .game-column{position:relative}
 .game-page .instrument{margin-left:calc(-1 * var(--game-control-rail));width:calc(100% + var(--game-control-rail));display:grid;grid-template-columns:140px minmax(0,1fr);grid-template-rows:minmax(0,1fr) auto;column-gap:16px;border:0}
 .game-page .stage{grid-column:2;grid-row:1/3;container-type:inline-size;border:1px solid #ffffff28}
 .game-page .status{grid-column:1;grid-row:1;grid-template-columns:1fr 1fr;grid-template-rows:auto auto auto auto;align-content:start;align-items:start;min-height:0;border:1px solid #ffffff28;padding:6px;gap:6px 4px}
 .game-page .status #mute{grid-column:1;grid-row:1}
 .game-page .status #pause{grid-column:2;grid-row:1}
 .game-page .status .scoreboard{grid-column:1/-1;grid-row:2;flex-direction:column;gap:3px;font-size:10px;line-height:1.1;justify-self:start;align-items:start}
 .game-page .status .beat-track{grid-column:1/-1;grid-row:3;display:grid;grid-template-columns:1fr 1fr;gap:3px;width:100%}
 .game-page .status .beat-track span{font-size:7.5px;line-height:1.1;padding:2px 3px}
 .game-page .status #beat-label{grid-column:1/-1;grid-row:4;font-size:9px;justify-self:start}
 .game-page .legend{grid-column:1;grid-row:2;grid-template-columns:1fr;gap:5px;font-size:8px;line-height:1.1;padding:8px;border:1px solid #ffffff28}
 .game-page .legend button:before{width:8px;height:8px;margin-right:5px}
 .game-page .game-column footer{position:absolute;bottom:100%;right:-272px;width:250px;margin:0 0 6px}
 .game-page .game-column footer span,.game-page .title-actions>p{display:none}
 .game-page .title{margin-left:calc(var(--game-inset,0px) - var(--game-control-rail));grid-template-columns:minmax(0,calc(var(--game-side) + var(--game-control-rail) + 2px)) 250px}
 .game-page .title .game-heading{min-height:28px;flex-wrap:nowrap;align-items:center;padding-right:36px;gap:10px}
 .game-page .title .game-credit{align-self:center;margin:0}
 .game-page .title h1{font-size:24px}
 .game-page .game-share-top{left:calc(var(--game-side) + var(--game-control-rail) - 26px);width:28px;height:28px;padding:5px}
 .game-page .game-share-top svg{width:16px;height:16px}
 .game-page .leaderboard li{min-height:clamp(18px,4.4svh,30px)}
 .game-page #board-message{margin:8px 0 12px}
 .game-page .leaderboard-invite{margin-top:12px;font-size:11px}
}
.game-page .language-switcher{--language-frame-height:28px}
.game-page .language-switcher #language-toggle{min-width:72px;font-size:11px}
