:root{--ink:#080f17;--paper:#f1e9dc;--muted:#b7aea2;--gold:#d2ad7a}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:90px}body{margin:0;background:var(--ink);color:var(--paper);font:18px/1.7 Georgia,'Times New Roman',serif}button,a,input{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-decoration:none}button{background:none;border:0}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:6px}.skip{position:fixed;top:-90px;z-index:10;background:var(--ink);padding:12px}.skip:focus{top:0}header{position:absolute;top:0;left:0;right:0;z-index:3;display:flex;align-items:flex-start;justify-content:space-between;padding:18px 4vw}.brand :is(img,.source-visual){width:125px;height:125px;object-fit:contain;mix-blend-mode:screen}nav{display:flex;gap:30px;padding-top:24px}nav a,.eyebrow,.credit,.play-caption{font-size:12px;letter-spacing:.19em}nav a{padding:6px 0;border-bottom:1px solid transparent}nav a:hover{border-color:var(--gold)}.hero{min-height:760px;height:100svh;max-height:1200px;position:relative;display:flex;align-items:flex-start;justify-content:center;isolation:isolate}.landscape{position:absolute;inset:0;z-index:-2;background-size:cover;background-position:center}.hero:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,#050b1330,transparent 50%,#080f1700 75%,var(--ink))}.hero-content{text-align:center;width:100%;padding:20vh 24px 100px;text-shadow:0 2px 20px #000c}.artist{letter-spacing:.32em;text-transform:uppercase;font-size:16px;margin:0 0 14px}h1{font-weight:400;font-size:clamp(48px,5.2vw,88px);line-height:1.05;letter-spacing:.12em;text-transform:uppercase;max-width:850px;margin:0 auto 20px;text-wrap:balance}.signature{display:flex;justify-content:center;gap:24px;font-size:clamp(12px,1.05vw,16px);letter-spacing:.2em}.signature span+span:before{content:'·';margin-right:24px}.hero-play{width:88px;height:88px;border:1.5px solid var(--paper);border-radius:50%;margin:26px 0 4px;display:inline-grid;place-items:center;box-shadow:0 0 28px #f0ae6630;background:#10172222;transition:background .3s,transform .3s;font-size:27px}.hero-play:hover{background:#e4bf7920;transform:scale(1.04)}.play-icon{padding-left:3px}.play-caption{display:flex;justify-content:center;gap:12px;font-size:12px}.invitation{font-size:clamp(18px,1.45vw,24px);font-style:italic;max-width:530px;line-height:1.5;margin:20px auto}
@media(min-width:701px){.invitation{white-space:pre-line}}.credit{margin:24px auto 0;display:table}.credit:before{content:'';display:block;width:80px;border-top:1px solid #d5c3a780;margin:0 auto 16px}.hero-controls{position:absolute;bottom:30px;left:4vw;width:350px}.player-controls{display:flex;align-items:center;gap:14px;font-family:Arial,sans-serif;font-size:12px}.player-controls button{min-width:44px;min-height:44px;font-size:17px}.seek{flex:1;min-width:50px;accent-color:var(--paper);height:3px;cursor:pointer}.times{white-space:nowrap;font-variant-numeric:tabular-nums}.mini{position:fixed;bottom:0;left:0;right:0;z-index:5;padding:12px 5vw;display:flex;align-items:center;justify-content:space-between;gap:24px;background:#080f17ed;border-top:1px solid #cdb38b30;backdrop-filter:blur(18px)}.mini[hidden]{display:none}.mini-title{font-size:16px;line-height:1.3}.mini-title small{display:block;color:var(--muted);font-size:12px;margin-top:5px}.mini .player-controls{width:min(430px,50%)}.section{max-width:1120px;margin:auto;padding:110px 40px;border-bottom:1px solid #e8dac21c}.eyebrow{color:var(--gold);text-transform:uppercase;margin:0 0 30px}h2{font-size:clamp(32px,4vw,54px);font-weight:400;line-height:1.2;margin:0 0 30px}p{margin:0 0 24px}.song-copy{max-width:700px;font-size:25px;line-height:1.7}.working{font-family:Arial,sans-serif;text-transform:uppercase;font-size:12px;letter-spacing:.12em;color:#b7aea2;margin-top:24px;display:block}details summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;font-size:28px}details summary::-webkit-details-marker{display:none}summary:after{content:'+';font-size:30px;color:var(--gold)}details[open] summary:after{content:'−'}.lyrics-text{white-space:pre-wrap;font-size:20px;line-height:1.9;margin:40px 0 0;max-width:860px}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:80px}.about-grid h3{font-size:20px;letter-spacing:.05em;font-weight:400}.about-grid p{font-size:18px;color:#d3c9bc}.about-logo{width:120px;mix-blend-mode:screen;margin:0 0 10px}.collaborate{max-width:760px}.collaborate p{font-size:22px}.cta{display:inline-block;border-bottom:1px solid var(--gold);padding:8px 0;font-size:17px}.cta:after{content:' ↗';color:var(--gold);margin-left:12px}footer{max-width:1120px;margin:auto;padding:50px 40px 120px;display:flex;justify-content:space-between;gap:20px;color:var(--muted);font:12px/1.6 Arial,sans-serif}footer button{font-size:12px;padding:0 0 0 20px}dialog{background:#101a24;color:var(--paper);border:1px solid #a78e6550;padding:50px;max-width:530px;width:calc(100% - 40px)}dialog::backdrop{background:#000a;backdrop-filter:blur(6px)}dialog h2{font-size:30px}.close{position:absolute;right:12px;top:8px;font-size:28px}.audio-error{position:fixed;bottom:100px;left:20px;right:20px;background:#201b19;padding:15px;z-index:6}.playing .hero-content>.artist,.playing .hero-content>.signature,.playing .hero-content>.credit{opacity:.6;transition:opacity 1.5s}.additional-image{display:block;width:100%;margin:40px auto;border-radius:2px}
@media(max-width:700px){header{padding:10px 18px;align-items:center;flex-direction:column}.brand :is(img,.source-visual){width:78px;height:78px}nav{gap:17px;padding:0;width:100%;justify-content:center}nav a{font-size:12px;letter-spacing:.09em;padding:8px 0}.hero{height:auto;min-height:900px}.landscape{background-size:auto 740px;background-position:27% 150px;background-repeat:no-repeat;background-color:#080f17}.hero:after{background:linear-gradient(180deg,#080f17 3%,#080f17b0 20%,transparent 55%,#080f1730 78%,#080f17 100%)}.hero-content{padding:160px 20px 100px}.artist{font-size:12px;letter-spacing:.24em;margin-bottom:16px}h1{font-size:43px;letter-spacing:.07em;max-width:390px;margin-bottom:24px}.signature{flex-direction:column;gap:3px;font-size:12px;letter-spacing:.21em}.signature span+span:before{display:none}.hero-play{margin-top:30px;width:82px;height:82px}.invitation{font-size:19px;max-width:320px;margin-top:28px}.credit{margin-top:32px;font-size:12px}.hero-controls{width:calc(100% - 36px);left:18px;bottom:20px}.section{padding:72px 25px}.song-copy{font-size:22px}.about-grid{grid-template-columns:1fr;gap:35px}.lyrics-text{font-size:17px;line-height:1.85}details summary{font-size:23px}.mini{padding:9px 15px;gap:10px}.mini-title{font-size:12px;max-width:100px}.mini-title small{font-size:12px}.mini .player-controls{width:auto;flex:1;gap:7px}.times{font-size:12px}footer{padding:40px 25px 120px;flex-direction:column}footer button{padding:0 24px 0 0}.collaborate p{font-size:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}

@media(max-width:370px){nav{gap:10px}nav a{font-size:11px;letter-spacing:.03em}.hero-content{padding-top:160px}h1{font-size:38px}}

/* Atmosphere: one slow camera drift and two quiet groups of stars. */
.hero{overflow:hidden}
.landscape{animation:landscape-drift 38s ease-in-out infinite alternate;transform-origin:50% 60%;will-change:transform}
.landscape::before,.landscape::after{content:'';position:absolute;inset:0;pointer-events:none;background-repeat:no-repeat;animation:star-breathe 7s ease-in-out infinite alternate;opacity:.18}
.landscape::before{background-image:radial-gradient(circle at 24% 12%,#f7e7c7 0 1px,transparent 2px),radial-gradient(circle at 47% 8%,#f7e7c7 0 1px,transparent 2px),radial-gradient(circle at 71% 20%,#e3ebff 0 1px,transparent 2px),radial-gradient(circle at 86% 10%,#e3ebff 0 1px,transparent 2px)}
.landscape::after{animation-delay:-4s;animation-duration:9s;background-image:radial-gradient(circle at 36% 19%,#e3ebff 0 1px,transparent 2px),radial-gradient(circle at 60% 13%,#f7e7c7 0 1px,transparent 2px),radial-gradient(circle at 79% 5%,#e3ebff 0 1px,transparent 2px)}
@keyframes landscape-drift{from{transform:scale(1.012) translateX(-.15%)}to{transform:scale(1.027) translateX(.15%)}}
@keyframes star-breathe{from{opacity:.08}to{opacity:.5}}
.playing .landscape{animation-play-state:paused}
.playing .landscape::before,.playing .landscape::after{animation-play-state:paused;opacity:.08;transition:opacity 2s}
@media(prefers-reduced-motion:reduce){.landscape,.landscape::before,.landscape::after{animation:none!important;transform:none!important}.landscape::before,.landscape::after{display:none}}

/* V2: two rooms, one listening session. Existing song artwork remains unchanged. */
[hidden]{display:none!important}
.world{outline:none}
.hero-content h1{margin-bottom:15px}
.hero-content .artist{margin:0 0 6px}
.hero-content .credit{margin:0 auto 8px}
.hero-content .credit:before{display:none}
.hero-content .signature{margin-top:24px}
.song-context{font-size:21px;max-width:680px;color:var(--muted);margin-top:28px}
.about-copy{max-width:760px}
.about-copy p{font-size:20px;line-height:1.8;margin-bottom:32px}
.about-copy strong{font-weight:600}
.about-copy p:last-child{font-size:18px;color:var(--muted);margin-top:38px}
.house-world{min-height:760px;height:100svh;position:relative;isolation:isolate;overflow:hidden;display:flex;align-items:center;flex-direction:column;justify-content:center;gap:65px;padding:100px 24px 130px;background:#080f17}
.house-background{position:absolute;inset:0;z-index:-2;background-position:center;background-size:cover}
.house-identity{width:min(370px,36vw);object-fit:contain;mix-blend-mode:screen}
.song-entry{display:flex;align-items:center;gap:26px;padding:15px 24px;border:1px solid #d2ad7a65;background:#080f17b8;border-radius:5px;max-width:610px;z-index:1}
.song-entry a{display:flex;flex-direction:column;padding:8px 0}
.song-entry strong{font-size:21px;font-weight:400;text-transform:uppercase;letter-spacing:.14em}
.song-entry span{font-size:13px;letter-spacing:.15em;text-transform:uppercase;color:var(--muted)}
.house-play{width:60px;height:60px;border:1px solid var(--paper);border-radius:50%;flex-shrink:0}
.house-ripples{position:absolute;left:5%;right:5%;height:34%;top:61%;pointer-events:none;z-index:-1;opacity:.2}
.house-ripples i{position:absolute;inset:10%;border:1px solid #d4c4a8;border-radius:50%;animation:water-ring 18s ease-out infinite;opacity:0}
.house-ripples i:nth-child(2){animation-delay:-6s}.house-ripples i:nth-child(3){animation-delay:-12s}
@keyframes water-ring{0%{transform:scale(.72);opacity:0}30%{opacity:.42}100%{transform:scale(1.14);opacity:0}}
/* No claim of a landscape replacement: clean approved parent plate is still needed. */
.house-world:not(.has-artwork) .house-ripples{opacity:.1}
nav a,.brand,.song-entry a,button{transition:opacity 180ms,color 180ms,border-color 180ms,background 180ms}
.brand:hover,.brand:focus-visible{opacity:.8}.song-entry a:hover,.song-entry a:focus-visible{color:var(--gold)}
button:active,.brand:active,.song-entry a:active{opacity:.6}button.pending-play{opacity:.6}
nav a[aria-current]{border-bottom-color:var(--gold)}
.hero-play:hover{transform:none}
/* Atmosphere stays local to the landscape; no whole-background zoom. */
.landscape{animation:none;transform:none;will-change:auto}
.landscape::before{animation-duration:13s}.landscape::after{animation-duration:17s}
@media(max-width:700px){.hero-content{padding-top:160px}.hero-content h1{font-size:40px}.hero-content .signature{margin-top:25px}.hero-content .credit{font-size:12px}.house-world{min-height:780px;height:100svh;gap:70px;padding:145px 20px 125px}.house-identity{width:min(300px,80vw)}.song-entry{gap:15px;padding:12px 16px;width:min(100%,430px)}.song-entry strong{font-size:16px;letter-spacing:.08em}.song-entry span{font-size:11px;letter-spacing:.08em}.house-play{width:48px;height:48px}.house-background{background-position:center}.house-ripples{left:-25%;right:-25%;top:58%}.about-copy p{font-size:18px}nav a{min-height:44px;display:flex;align-items:center;font-size:11px;letter-spacing:.04em}nav{gap:15px}.song-context{font-size:19px}}
@media(prefers-reduced-motion:reduce){.house-ripples i{animation:none;opacity:.12}.house-ripples i:nth-child(2){transform:scale(.85)}.house-ripples i:nth-child(3){transform:scale(1.1)}}

/* Living song: lightweight light layers preserve the untouched painting. */
.song-weather{position:absolute;inset:0;pointer-events:none;z-index:-1;overflow:hidden}
.song-weather i{position:absolute;inset:0;transition:opacity var(--atmosphere-transition,.7s) linear;pointer-events:none}
.song-weather .warmth{background:radial-gradient(ellipse at 73% 59%,#d99d65,transparent 55%);opacity:var(--song-warmth,.015)}
.song-weather .reflection{background:radial-gradient(ellipse at 67% 76%,#c4d3df,transparent 45%);opacity:var(--song-reflection,.025)}
.song-weather .mist{background:linear-gradient(170deg,transparent 40%,#b0c0cf80 65%,transparent 85%);opacity:var(--song-mist,.025);animation:breath-of-mist var(--living-mistDuration,41s) ease-in-out infinite alternate}
.song-weather .weight{background:radial-gradient(ellipse at 50% 55%,transparent,#040b15);opacity:var(--song-weight,.065)}
.house-world .song-weather .warmth{background-position:center;opacity:calc(var(--song-warmth,.015) * .7)}
.house-ripples{opacity:calc(.07 + var(--song-activity,.055))!important;transition:opacity var(--atmosphere-transition,.7s)}
.landscape::before,.playing .landscape::before{animation:quiet-stars-a var(--living-starsADuration,19s) ease-in-out infinite;animation-play-state:running;opacity:.1}
.landscape::after,.playing .landscape::after{animation:quiet-stars-b var(--living-starsBDuration,29s) ease-in-out infinite;animation-play-state:running;opacity:.1}
@keyframes quiet-stars-a{0%,100%{opacity:.05}23%{opacity:.18}47%{opacity:.07}81%{opacity:.12}}
@keyframes quiet-stars-b{0%,100%{opacity:.08}39%{opacity:.14}66%{opacity:.04}89%{opacity:.11}}
@keyframes breath-of-mist{from{transform:translateX(-.4%)}to{transform:translateX(.4%)}}
.world-lyric{position:fixed;z-index:4;pointer-events:none;left:50%;top:75%;transform:translate(-50%,-50%);font:400 clamp(17px,1.5vw,24px)/1.55 Georgia,serif;letter-spacing:.13em;text-align:center;color:#f0e5d4;text-shadow:0 1px 8px #000,0 0 18px #080f17;opacity:0;transition:opacity var(--living-lyricTransition,.12s) linear;white-space:normal;text-wrap:balance}
.world-lyric[data-zone="sky"]{letter-spacing:.2em;color:#e0e6f0}
.ambient-sleep .landscape::before,.ambient-sleep .landscape::after,.ambient-sleep .house-ripples i,.ambient-sleep .mist{animation-play-state:paused!important}
@media(max-width:700px){.world-lyric{font-size:17px;letter-spacing:.07em}.world-lyric[data-zone="sky"]{letter-spacing:.13em}}
@media(prefers-reduced-motion:reduce){.song-weather .mist{animation:none}.song-weather i{transition:opacity .3s linear}.world-lyric{transition:opacity .15s linear!important}}

/* Reserve celestial breathing room on phones; no controls enter this band. */
@media(max-width:700px){.hero-content{padding-top:210px}.hero{min-height:960px}}

.house-ripples i{animation-duration:var(--living-ringDuration,18s)}

/* Calibration: composite the actual logo against the landscape, including hover. */
header{mix-blend-mode:screen}
.brand :is(img,.source-visual){mix-blend-mode:normal}
.world-lyric{max-width:calc(100vw - 32px);font-weight:400}
.song-paused .song-weather .mist,.song-paused .house-ripples i{animation-play-state:paused}
.song-weather .reflection{animation:reflected-light var(--living-reflectionDuration,31s) ease-in-out infinite alternate}
@keyframes reflected-light{from{transform:translateX(-.2%)}to{transform:translateX(.3%)}}
.song-paused .song-weather .reflection,.ambient-sleep .song-weather .reflection{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.song-weather .reflection{animation:none}}

.hero-content .artist,.hero-content .play-caption,.hero-content .signature{width:fit-content;margin-left:auto;margin-right:auto}

/* Approved parent landscape with real, independently usable controls. */
.house-world.has-artwork .house-identity{position:absolute;top:0;width:min(560px,55vh);max-width:76vw}
.house-world.has-artwork .song-entry{position:absolute;top:80%;transform:translateY(-50%)}
.house-world.has-artwork .house-ripples{top:60%;height:30%;left:2%;right:2%}
.house-world .song-weather .warmth{background:radial-gradient(ellipse at 50% 59%,#d99d65,transparent 50%)}
.house-world .song-weather .reflection{background:radial-gradient(ellipse at 50% 77%,#c4d3df,transparent 43%)}
@media(max-width:700px){.house-world.has-artwork .house-identity{top:13%;width:min(380px,90vw);max-width:90vw}.house-world.has-artwork .song-entry{top:79%}.house-background{background-size:auto 100%;background-position:center}.house-world.has-artwork .house-ripples{left:-40%;right:-40%}}

@media(max-width:700px){
 .playing .hero-content .signature,.playing .hero-content .invitation{visibility:hidden;opacity:0}
 .house-world.has-artwork .house-identity{top:17%}
 .house-world .song-entry{max-width:calc(100% - 36px)}
}

.house-background::before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 26% 15%,#e3ebff 0 1px,transparent 3px),radial-gradient(circle at 59% 3%,#e3ebff 0 1px,transparent 2px);animation:quiet-stars-b var(--living-starsBDuration,29s) ease-in-out infinite;opacity:.08}
.ambient-sleep .house-background::before{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.house-background::before{animation:none;opacity:.05}}

/* Give the main emblem its dark physical body; retain the supplied mark. */
.house-identity{aspect-ratio:1;position:relative;mix-blend-mode:normal}
.house-identity::before{content:'';position:absolute;left:22.1%;top:13.6%;width:55.8%;height:55.8%;border-radius:50%;background:radial-gradient(ellipse at 50% 0%,#79634b 0%,#1a2025 29%,#060e15 60%,#030a10 100%)}
.house-identity img{position:relative;display:block;width:100%;height:100%;object-fit:contain;mix-blend-mode:screen;filter:sepia(.18)}
.brand{opacity:.86}
.brand:hover,.brand:focus-visible{opacity:1}
.brand:active{opacity:.65}

/* September calibration. Original artwork, lockups and ring geometry retained. */
body[data-view="house"] header{justify-content:flex-end}
.brand{opacity:1;filter:drop-shadow(0 1px 2px #07101a)}
.brand:hover,.brand:focus-visible{opacity:.88}
.brand:active{opacity:.65}
/* Local separation under the original vertical wordmark; illumination remains. */
.house-identity::after{content:'';position:absolute;z-index:-1;left:2%;right:2%;top:72%;height:15%;background:radial-gradient(ellipse,#030a16a0,transparent 72%);filter:blur(8px)}
.house-identity{isolation:auto}
.house-identity::before{box-shadow:0 -10px 34px -10px #efbd7880,0 4px 16px #02081155}
.house-identity img{filter:sepia(.28) drop-shadow(0 1px 1px #080f1780)}
/* Enhance existing painted ridges/troughs only: no new ring geometry. */
.house-background::after{content:'';position:absolute;inset:0;pointer-events:none;backdrop-filter:contrast(1.16) saturate(1.08);mask-image:linear-gradient(transparent 57%,#000 67%);-webkit-mask-image:linear-gradient(transparent 57%,#000 67%)}
.house-world .song-weather .warmth{opacity:calc(.025 + var(--song-warmth,.015) * .85);background:radial-gradient(ellipse 38% 20% at 50% 57%,#efb16e,transparent 90%)}
.house-world .song-weather .reflection{opacity:calc(.025 + var(--song-reflection,.025) * .38);background:radial-gradient(ellipse 15% 35% at 49% 81%,#efc58b,transparent 80%);animation:deep-reflection 23s ease-in-out infinite alternate}
.house-world .song-weather .mist{opacity:calc(.07 + var(--song-mist,.025) * .8);background:radial-gradient(ellipse 60% 7% at 50% 58%,#d5dce3,transparent 80%);animation:deep-mist 37s ease-in-out infinite alternate}
.house-ripples{opacity:calc(.24 + var(--song-activity,.055) * 1.4)!important}
.house-ripples i{border-color:#f3d4a2;box-shadow:0 2px 2px #02091666,0 -1px 2px #edc48a33;animation-duration:23s}
.house-ripples i:nth-child(2){animation-delay:-8s}.house-ripples i:nth-child(3){animation-delay:-15s}
.hero .song-weather .mist{opacity:calc(.13 + var(--song-mist,.025) * 1.4);background:radial-gradient(ellipse 50% 9% at 28% 65%,#b6c4d4aa,transparent 85%),radial-gradient(ellipse 43% 12% at 76% 54%,#d6d0c399,transparent 80%);animation:song-wind 27s ease-in-out infinite alternate}
.hero .song-weather .reflection{opacity:calc(.045 + var(--song-reflection,.025) * 1.1);background:radial-gradient(ellipse 9% 26% at 75% 76%,#e9bc7d,transparent 85%);animation:song-reflection 17s ease-in-out infinite alternate}
.hero .song-weather .warmth{opacity:calc(.018 + var(--song-warmth,.015) * 1.8)}
.landscape::before,.playing .landscape::before{animation:air-stars 17s ease-in-out infinite}
.landscape::after,.playing .landscape::after{animation:air-stars 29s ease-in-out -11s infinite}
.house-background::before{animation:deep-stars 31s ease-in-out -9s infinite;z-index:1}
@keyframes song-wind{0%{transform:translate(-3%,.2%)}55%{transform:translate(.7%,-.5%)}100%{transform:translate(3.2%,.3%)}}
@keyframes deep-mist{from{transform:translateX(-1.8%)}to{transform:translateX(2.1%)}}
@keyframes song-reflection{from{transform:translate(-.7%,.3%);filter:brightness(.85)}to{transform:translate(.8%,-.3%);filter:brightness(1.2)}}
@keyframes deep-reflection{0%{transform:translate(-.4%,.25%);filter:brightness(.8)}60%{filter:brightness(1.15)}100%{transform:translate(.5%,-.25%);filter:brightness(.95)}}
@keyframes air-stars{0%,25%,47%,100%{opacity:.12}33%{opacity:.7}72%{opacity:.25}81%{opacity:.48}}
@keyframes deep-stars{0%,28%,60%,100%{opacity:.1}41%{opacity:.65}82%{opacity:.3}}
/* Ambient life exists before Play. Musical progression still follows only audio. */
.song-paused .song-weather .mist,.song-paused .song-weather .reflection,.song-paused .house-ripples i{animation-play-state:running}
.ambient-sleep .song-weather i,.ambient-sleep .house-ripples i,.ambient-sleep .house-background::before{animation-play-state:paused!important}
@media(min-width:1450px){body[data-view="song"] .brand{position:fixed;top:18px;left:4vw;mix-blend-mode:screen}}
@media(max-width:700px){body[data-view="house"] header{align-items:flex-end}.house-world .song-weather .mist{opacity:calc(.055 + var(--song-mist,.025) * .6)}.hero .song-weather .mist{opacity:calc(.10 + var(--song-mist,.025))}.house-background::after{backdrop-filter:contrast(1.22) saturate(1.05)}}
@media(prefers-reduced-motion:reduce){.song-weather .mist,.song-weather .reflection,.landscape::before,.landscape::after,.house-background::before,.house-ripples i{animation:none!important;transform:none!important}.house-background::before{opacity:.08}.house-ripples i{opacity:.12}}
@media(min-width:1450px){body[data-view="song"] header nav{margin-left:auto}}

/* Final perceptibility pass: larger soft glistens, moving mist, textured light.
   Playback changes their strength gradually; ambient motion exists at rest. */
.landscape::before{background-image:radial-gradient(ellipse 3px 7px at 24% 12%,#fff5e4 8%,#e8d8b955 32%,transparent 100%),radial-gradient(ellipse 7px 2px at 24% 12%,#fff3db99,transparent 100%),radial-gradient(circle 4px at 71% 20%,#f5f4ffcc,transparent 100%)}
.landscape::after{background-image:radial-gradient(ellipse 3px 6px at 60% 13%,#f9edda,transparent 100%),radial-gradient(ellipse 6px 2px at 60% 13%,#fff3dbaa,transparent 100%),radial-gradient(circle 3px at 79% 5%,#dce7ff,transparent 100%)}
.landscape::before,.playing .landscape::before{animation:air-glisten 13s ease-in-out -3s infinite}
.landscape::after,.playing .landscape::after{animation:air-glisten 21s ease-in-out -11s infinite}
.house-background::before{background:radial-gradient(ellipse 3px 7px at 26% 15%,#edf4ff,transparent 100%),radial-gradient(ellipse 7px 2px at 26% 15%,#e7f0ffaa,transparent 100%),radial-gradient(circle 4px at 59% 3%,#f6e8d7dd,transparent 100%);animation:deep-glisten 19s ease-in-out -4s infinite}
@keyframes air-glisten{0%,19%,46%,100%{opacity:.08}28%{opacity:.95}34%{opacity:.35}69%{opacity:.15}78%{opacity:.75}87%{opacity:.12}}
@keyframes deep-glisten{0%,21%,58%,100%{opacity:.06}36%{opacity:.85}44%{opacity:.22}78%{opacity:.55}88%{opacity:.1}}
.hero .song-weather .mist{opacity:calc(.23 + var(--song-mist,.025) * 1.5);animation:song-wind 22s ease-in-out infinite alternate}
@keyframes song-wind{0%{transform:translate(-6%,1%)}48%{transform:translate(.5%,-.8%)}100%{transform:translate(6%,.4%)}}
.hero .song-weather .reflection{opacity:calc(.10 + var(--song-reflection,.025) * 1.3);animation:song-reflection 13s ease-in-out infinite alternate}
@keyframes song-reflection{from{transform:translate(-1.2%,.4%);filter:brightness(.65)}to{transform:translate(1.1%,-.4%);filter:brightness(1.3)}}
.house-world .song-weather .mist{opacity:calc(.17 + var(--song-mist,.025));animation:deep-mist 29s ease-in-out infinite alternate}
@keyframes deep-mist{from{transform:translate(-3.5%,.25%)}to{transform:translate(3.5%,-.25%)}}
.house-world .song-weather .reflection{opacity:calc(.075 + var(--song-reflection,.025) * .45);animation:deep-reflection 19s ease-in-out infinite alternate}
.house-ripples{opacity:calc(.36 + var(--song-activity,.055) * 1.5)!important}
.song-weather .glints{background:radial-gradient(ellipse 12px 2px at 72% 76%,#f9d9a4,transparent 100%),radial-gradient(ellipse 7px 2px at 68% 82%,#edcf9b,transparent 100%);animation:water-glints 17s ease-in-out -5s infinite;opacity:0}
.house-world .song-weather .glints{background:radial-gradient(ellipse 18px 2px at 34% 71%,#ffe5b5,transparent 100%),radial-gradient(ellipse 12px 2px at 67% 84%,#f1d5a5,transparent 100%),radial-gradient(ellipse 8px 2px at 54% 66%,#eed5b0,transparent 100%);animation-duration:23s;animation-delay:-13s}
@keyframes water-glints{0%,22%,57%,100%{opacity:.03;transform:translateX(-.3%)}36%{opacity:.6}43%{opacity:.2}77%{opacity:.4;transform:translateX(.4%)}}
.ambient-sleep .song-weather .glints{animation-play-state:paused!important}
@media(max-width:700px){.hero .song-weather .mist{opacity:calc(.19 + var(--song-mist,.025))}.house-world .song-weather .mist{opacity:calc(.13 + var(--song-mist,.025))}}
@media(prefers-reduced-motion:reduce){.song-weather .glints{animation:none!important;opacity:.08}}

/* Surgical mobile repair: explicitly mask the JPEG's black field, so Safari
   does not depend on screen blending through a filtered compositing layer. */
/* Intrinsic SVG alpha removes the JPEG canvas, including on mobile WebKit. */
.house-identity img{mask:none;-webkit-mask:none;filter:sepia(.28);}
/* The approved plate's sun/reflection origin is slightly left of frame center. */
.house-world.has-artwork .house-identity{margin-left:-2.8vw}
@media(max-width:700px){
 .house-world.has-artwork .house-identity{margin-left:-8vw}
 .mini{padding:8px 14px calc(8px + env(safe-area-inset-bottom));min-height:68px}
 .mini-title{max-width:94px;font-size:11px}.mini-title small{font-size:10px}
 .mini .player-controls{gap:6px}.mini .player-controls button{min-width:38px}
 .hero-controls{visibility:hidden}
 .world-lyric{font-size:16px;line-height:1.5}
}
/* Air: drifting veils. Water: slower layered surface light. No artwork motion. */
.hero .song-weather .mist{opacity:calc(.48 + var(--song-mist,.025));background:radial-gradient(ellipse 36% 6% at 23% 60%,#cad9e8c0,transparent 85%),radial-gradient(ellipse 45% 9% at 76% 51%,#d6d0c3b0,transparent 80%);animation:surgical-wind 24s ease-in-out -7s infinite alternate}
@keyframes surgical-wind{from{transform:translate(-12%,1.3%)}to{transform:translate(12%,-1.3%)}}
.house-world .song-weather .mist{opacity:calc(.36 + var(--song-mist,.025));background:radial-gradient(ellipse 42% 5% at 42% 58%,#d5dce3d0,transparent 85%);animation:surgical-depth 33s ease-in-out -11s infinite alternate}
@keyframes surgical-depth{from{transform:translate(-8%,.6%)}to{transform:translate(8%,-.6%)}}
.hero .song-weather .reflection{opacity:calc(.23 + var(--song-reflection,.025));animation:song-reflection 11s ease-in-out -4s infinite alternate}
.house-world .song-weather .reflection{opacity:calc(.14 + var(--song-reflection,.025)*.45);animation:deep-reflection 17s ease-in-out -6s infinite alternate}
.house-ripples i{border-width:1.5px;animation-duration:19s}
.house-ripples i:nth-child(2){inset:4%;animation-duration:27s;animation-delay:-17s}
.house-ripples i:nth-child(3){inset:19%;animation-duration:31s;animation-delay:-8s}
.landscape::before,.playing .landscape::before{filter:drop-shadow(0 0 3px #fff1d9);animation-duration:11s;animation-delay:-2s}
.landscape::after,.playing .landscape::after{filter:drop-shadow(0 0 2px #ddeaff);animation-duration:17s;animation-delay:-9s}
.house-background::before{filter:drop-shadow(0 0 3px #f5e9d1);animation-duration:13s;animation-delay:-3s}
.song-weather .glints{background-size:100% 100%;filter:drop-shadow(0 0 3px #efd6af);animation:surface-glints 13s ease-in-out -3s infinite}
.house-world .song-weather .glints{animation:surface-glints 19s ease-in-out -7s infinite}
@keyframes surface-glints{0%,16%,52%,100%{opacity:.08;transform:translateX(-1%)}29%{opacity:.95}39%{opacity:.3}73%{opacity:.8;transform:translateX(1.2%)}86%{opacity:.12}}
@media(prefers-reduced-motion:reduce){.song-weather .mist,.song-weather .reflection,.song-weather .glints,.landscape::before,.landscape::after,.house-background::before,.house-ripples i{animation:none!important;transform:none!important}.song-weather .glints{opacity:.08}}

/* Organic atmosphere repair: the old full-width translated mist plane is gone.
   Stationary overscan prevents any moving element boundary entering the world. */
.hero .song-weather .mist,.house-world .song-weather .mist{inset:-25%;background:none;animation:none;transform:none;filter:none}
.song-weather .mist::before,.song-weather .mist::after{content:'';position:absolute;inset:0;pointer-events:none;filter:blur(22px);background-repeat:no-repeat}
.hero .song-weather .mist::before{background:radial-gradient(ellipse 17% 3% at 34% 59%,#b9c9d9a0,transparent 100%),radial-gradient(ellipse 11% 5% at 44% 58%,#b9c9d950,transparent 100%);animation:air-dissolve 37s linear -13s infinite}
.hero .song-weather .mist::after{background:radial-gradient(ellipse 19% 4% at 65% 53%,#d8d1c580,transparent 100%),radial-gradient(ellipse 9% 3% at 56% 56%,#c5cfd650,transparent 100%);animation:air-dissolve 49s linear -31s infinite reverse}
@keyframes air-dissolve{0%{transform:translate(-4%,.6%);opacity:0}18%{opacity:.65}52%{transform:translate(.4%,-.5%);opacity:1}82%{opacity:.55}100%{transform:translate(5%,.4%);opacity:0}}
.house-world .song-weather .mist::before{background:radial-gradient(ellipse 22% 2% at 46% 55%,#d5dce3b0,transparent 100%);animation:air-dissolve 57s linear -22s infinite}
.house-world .song-weather .mist::after{background:radial-gradient(ellipse 12% 3% at 66% 56%,#bacbda90,transparent 100%);animation:air-dissolve 71s linear -46s infinite reverse}
/* Preserve the three expanding water contours, but break their continuous
   outlines into soft reflected segments, each with a different phase/radius. */
.house-ripples i{border-width:2px;filter:blur(.55px);mask-image:conic-gradient(from 17deg,transparent,#0009 12%,transparent 25%,#000 38%,transparent 51%,#0008 70%,transparent 85%,#0005 93%,transparent);animation-name:water-disturbance}
.house-ripples i:nth-child(2){mask-image:conic-gradient(from 71deg,#0008,transparent 13%,#000 28%,transparent 40%,#0008 63%,transparent 79%,#0008)}
.house-ripples i:nth-child(3){mask-image:conic-gradient(from 142deg,transparent,#0009 18%,transparent 31%,#000 57%,transparent 78%,#0006 92%,transparent)}
@keyframes water-disturbance{0%{transform:scale(.76);opacity:0}19%{opacity:.32}42%{opacity:.58}66%{opacity:.27}83%{opacity:.37}100%{transform:scale(1.17);opacity:0}}
/* Between disturbances: broken, feathered horizontal reflected-light texture. */
.house-ripples::before,.house-ripples::after{content:'';position:absolute;inset:-12%;pointer-events:none;background:repeating-linear-gradient(176deg,transparent 0 9px,#f2d5a549 10px,transparent 12px 23px);mask-image:radial-gradient(ellipse 8% 44% at 29% 51%,#000,transparent),radial-gradient(ellipse 5% 37% at 69% 58%,#000,transparent);filter:blur(.7px);animation:water-grain 17s ease-in-out -5s infinite;opacity:.42}
.house-ripples::after{background:repeating-linear-gradient(184deg,transparent 0 15px,#dae4ed44 16px,transparent 19px 31px);mask-image:radial-gradient(ellipse 14% 40% at 49% 59%,#0009,transparent);animation-duration:29s;animation-delay:-18s}
@keyframes water-grain{0%,100%{background-position:0 0;opacity:.28}34%{opacity:.62}67%{background-position:9px 11px;opacity:.43}}
.ambient-sleep .mist::before,.ambient-sleep .mist::after,.ambient-sleep .house-ripples::before,.ambient-sleep .house-ripples::after{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.song-weather .mist::before,.song-weather .mist::after,.house-ripples::before,.house-ripples::after{animation:none!important;transform:none!important;opacity:.2}}

/* Phone framing remains visible only while paused; local contrast, not darker art. */
@media(max-width:700px){
 .hero-content .signature,.hero-content .invitation{text-shadow:0 1px 3px #030811,0 0 10px #030811,0 0 22px #030811;transition:opacity .45s ease,visibility .45s}
}
/* A short phone viewport needs its own composition, not the desktop min-height. */
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 header{padding:8px 22px;flex-direction:row;align-items:flex-start}
 .brand :is(img,.source-visual){width:66px;height:66px}nav{padding-top:8px;gap:19px;width:auto}
 nav a{font-size:10px;letter-spacing:.06em;min-height:38px;display:flex;align-items:center}
 .hero{height:100svh;min-height:360px;max-height:none}
 .hero-content{padding:68px 24px 64px}
 .hero-content h1{font-size:34px;max-width:580px;margin-bottom:5px}
 .hero-content .artist{font-size:11px;margin-bottom:2px}.hero-content .credit{font-size:9px;margin-bottom:0}
 .hero-play{width:48px;height:48px;font-size:19px;margin:10px 0 0}.play-caption{font-size:9px}
 .hero-content .signature{margin-top:9px;font-size:10px;gap:14px;flex-direction:row}.signature span+span:before{display:inline;margin-right:14px}
 .hero-content .invitation{font-size:14px;max-width:520px;margin:8px auto}
 .playing .hero-content .signature,.playing .hero-content .invitation{visibility:hidden;opacity:0}
 .hero-controls{visibility:hidden}
 .house-world{height:100svh;min-height:0;padding:0;gap:0}
 .house-world.has-artwork .house-identity{top:5px;width:min(235px,60svh);max-width:32vw;margin-left:-2.8vw}
 .house-world.has-artwork .song-entry{top:auto;bottom:68px;transform:none;padding:5px 15px;gap:14px;width:auto;max-width:440px}
 .song-entry strong{font-size:14px;letter-spacing:.1em}.song-entry span{font-size:10px}.house-play{width:38px;height:38px}
 .mini{padding:5px 22px calc(5px + env(safe-area-inset-bottom));min-height:50px;gap:16px}
 .mini-title{font-size:12px;max-width:200px}.mini-title small{font-size:10px;margin-top:0}
 .mini .player-controls{width:min(430px,58%)}
 .world-lyric{font-size:15px;line-height:1.45;letter-spacing:.07em}
}

/* Equal side tracks center Play independently of text/progress widths. */
.mini-timeline{display:contents}
@media(max-width:700px) and (orientation:portrait){
 body[data-view="house"] .house-world.has-artwork .house-identity{margin-left:0;left:50%;transform:translateX(-50%)}
 body[data-view="house"] .mini{display:grid;grid-template-columns:minmax(0,1fr) 44px minmax(0,1fr);column-gap:12px}
 body[data-view="house"] .mini[hidden]{display:none}
 body[data-view="house"] .mini .player-controls{display:contents}
 body[data-view="house"] .mini-title{grid-column:1;max-width:none;min-width:0}
 body[data-view="house"] .mini .player-controls>button{grid-column:2;width:44px;padding:0;justify-self:center}
 body[data-view="house"] .mini-timeline{grid-column:3;display:flex;flex-direction:column;gap:7px;min-width:0;align-items:stretch}
 body[data-view="house"] .mini-timeline .seek{width:100%;min-width:0;flex:none;margin:0}
 body[data-view="house"] .mini-timeline .times{font-size:10px;text-align:center}
}

/* Route focus remains available to assistive technology without framing the non-interactive hero. */
#listen[tabindex="-1"]:focus{outline:none}

/* Listen is a complete viewport; context is an intentional, scrollable route. */
body[data-mode="listen"]{overflow:hidden}
body[data-mode="listen"] #sections,body[data-mode="listen"] footer{display:none}
body[data-mode="listen"] .hero{height:100svh;min-height:0;max-height:none}
/* Mobile Listen may scroll its own complete composition, never the context document. */
@media(max-width:700px){
 body[data-mode="listen"]{overflow-x:hidden;overflow-y:auto}
 body[data-mode="listen"] .hero{height:auto;min-height:100svh;max-height:none}
}
body[data-mode="context"] .hero{display:none}
body[data-mode="context"] header{position:fixed;background:linear-gradient(#080f17ed,#080f1700);padding-bottom:22px}
body[data-mode="context"] #sections{padding-top:120px}
.hero-content>.artist,.hero-content>.signature,.hero-content>.invitation,.hero-play,.play-caption,header nav{transition:opacity .42s ease,filter .42s ease,transform .42s ease,visibility .42s}
body[data-mode="listen"].playing .hero-content>.credit{opacity:1}
body[data-mode="listen"].playing .hero-content>.signature,body[data-mode="listen"].playing .hero-content>.invitation{visibility:hidden;opacity:0;pointer-events:none}
body[data-mode="listen"].immersion-idle .hero-content>.artist,body[data-mode="listen"].immersion-idle .hero-content>.signature,body[data-mode="listen"].immersion-idle .hero-content>.invitation,body[data-mode="listen"].immersion-idle .hero-play,body[data-mode="listen"].immersion-idle .play-caption{opacity:0;visibility:hidden;pointer-events:none;filter:blur(3px);transform:translateY(-5px)}
/* Extend the existing main-page idle fade; neither bottom player is a target. */
body[data-mode="listen"] :is(.hero-content>.artist,.hero-play,.play-caption),body[data-mode="listen"] header nav{transition:opacity var(--immersion-wake,450ms) ease,filter .42s ease,transform .42s ease,background .3s ease,visibility 0s}
body[data-mode="listen"].immersion-idle :is(.hero-content>.artist,.hero-play,.play-caption){opacity:0;visibility:hidden;pointer-events:none;filter:none;transform:none;transition:opacity var(--immersion-secondary-fade,4s) ease,visibility 0s var(--immersion-secondary-fade,4s)}
body[data-mode="listen"].immersion-nav-idle header nav{opacity:0;visibility:hidden;pointer-events:none;transition:opacity var(--immersion-navigation-fade,5s) ease,visibility 0s var(--immersion-navigation-fade,5s)}
body[data-mode="listen"] header nav:has(:focus-visible),body[data-mode="listen"] .hero-play:focus-visible{opacity:1;visibility:visible;pointer-events:auto;transition:opacity var(--immersion-wake,450ms) ease,visibility 0s}
@media(min-width:1001px){.hero-content .invitation{white-space:normal;max-width:1100px;margin:54px auto 0;padding:0 16px}}
@media(max-width:1000px){.hero-content .invitation{white-space:normal;margin-top:32px}}
/* The primary button owns the center track; song information occupies its own row. */
.house-world.has-artwork .song-entry{display:grid;grid-template-columns:1fr;justify-items:center;gap:6px;text-align:center;left:var(--well-x,50%);transform:translate(-50%,-50%);width:min(420px,calc(100% - 36px));padding:8px 18px;background:#080f17a3;border-color:#d2ad7a50}
.song-entry .house-play{justify-self:center}
.house-world.has-artwork .song-entry a{padding:4px 0}
@media(max-width:700px){.house-world.has-artwork .song-entry{width:min(320px,calc(100% - 44px));padding:8px 14px}}
.house-world .house-identity{cursor:default}
@media(max-width:1000px) and (max-height:500px){.house-world.has-artwork .song-entry{transform:translateX(-50%);gap:3px;padding:5px 15px;width:min(300px,calc(100% - 44px))}.house-world.has-artwork .song-entry a{padding:0}}
@media(prefers-reduced-motion:reduce){.hero-content>* ,header nav{transition:opacity .15s;filter:none!important;transform:none!important}}

/* The central song doorway recedes during playback; persistent transport stays available. */
.house-world .song-entry{transition:opacity .25s ease,visibility .25s ease}
body.playing .house-world .song-entry{opacity:0;visibility:hidden;pointer-events:none}

body[data-view="house"] .mini-title{cursor:pointer}
.mini-title:focus-visible{outline:2px solid var(--gold);outline-offset:4px}

/* Both mobile artwork routes end at their own composition, above the fixed player. */
@media(max-width:700px),(max-width:1000px) and (max-height:500px){
 body:is([data-mode="listen"],[data-mode="house"]){overflow-x:hidden;overflow-y:auto;padding-bottom:var(--mobile-player-height,68px)}
 body[data-mode="listen"] .hero{height:auto;min-height:max(calc(var(--mobile-view-height,100dvh) - var(--mobile-player-height,68px)),890px);max-height:none}
 body[data-mode="house"] .house-world,.house-world.portal-destination-layout{height:max(780px,var(--mobile-view-height,100dvh));min-height:0;max-height:none}
 .mini{position:fixed;bottom:0;left:0;right:0}
}
@media(max-width:1000px) and (max-height:500px) and (orientation:landscape){
 body[data-mode="listen"] .hero{min-height:max(calc(var(--mobile-view-height,100dvh) - var(--mobile-player-height,50px)),56.28vw)}
 body[data-mode="house"] .house-world,.house-world.portal-destination-layout{height:max(calc(var(--mobile-view-height,100dvh) - var(--mobile-player-height,50px)),56.25vw)}
 .landscape,.world-crossfade{background-size:cover;background-repeat:no-repeat}
}

@media(pointer:coarse){
 body[data-mode="listen"] .hero{touch-action:pan-y pinch-zoom}
 .brand,.well-touch,.house-identity{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
 .brand,.well-touch{touch-action:pan-y pinch-zoom}
}

/* Portal destination measurement uses the final room, not an estimated camera. */
.house-world.portal-destination-layout[hidden]{display:flex!important;position:fixed;top:0;left:0;right:0;visibility:hidden;pointer-events:none}
.house-world.portal-arrival .house-identity,.house-world.portal-arrival .song-entry{opacity:0}

.house-scroll{display:contents}
/* An arrival-only optical resolve; the final identity and transport are unchanged. */
.house-world.arrival-pending .house-identity,.house-world.arrival-pending .song-entry{opacity:0}
.house-world.arrival-resolving .house-identity>img:not(.arrival-name){clip-path:inset(0 0 28% 0);opacity:var(--arrival-symbol,0);filter:sepia(.28) blur(var(--arrival-symbol-blur,5px));scale:var(--arrival-symbol-scale,1);transform-origin:50% 42%}
.house-world.arrival-resolving .house-identity>img.arrival-name{position:absolute;inset:0;clip-path:inset(72% 0 0 0);opacity:var(--arrival-name,0);filter:sepia(.28) blur(var(--arrival-name-blur,4px));scale:var(--arrival-name-scale,1);transform-origin:50% 79%;pointer-events:none}
.house-world.arrival-resolving .house-identity::before{opacity:var(--arrival-symbol,0)}
.house-world.arrival-resolving .house-identity::after{opacity:var(--arrival-name,0)}
.arrival-haze{position:absolute;left:16%;top:8%;width:68%;height:68%;border-radius:50%;background:radial-gradient(ellipse,transparent 36%,#c9bfa940 53%,transparent 72%);filter:blur(5px);opacity:var(--arrival-haze,0);scale:var(--arrival-symbol-scale,1);pointer-events:none}
.house-world.arrival-resolving .song-entry{opacity:var(--arrival-invitation,0);transition:none}
body.playing .house-world.arrival-resolving .song-entry{opacity:0}
@media(max-width:700px),(max-width:1000px) and (max-height:500px){
 html[data-mode="house"]{height:100%;overflow:hidden;overscroll-behavior:none;scroll-padding-top:0}
 body[data-mode="house"]{position:fixed;inset:0;width:100%;height:100%;overflow:hidden;padding-bottom:0;overscroll-behavior:none}
 /* Keep the existing LISTEN / COLLABORATE links above the bounded room.
    The header itself passes touches through; only navigation is interactive. */
 body[data-mode="house"] header{position:fixed;top:0;bottom:auto;visibility:visible;pointer-events:none;padding-top:max(10px,env(safe-area-inset-top,0px));padding-left:max(18px,env(safe-area-inset-left,0px));padding-right:max(18px,env(safe-area-inset-right,0px))}
 body[data-mode="house"] header nav{pointer-events:auto}
 body[data-mode="house"] .house-scroll{display:block;position:fixed;inset:0 0 auto;height:var(--mobile-window-height,100dvh);overflow-x:hidden;overflow-y:auto;overscroll-behavior-y:none;-webkit-overflow-scrolling:touch;padding-bottom:var(--mobile-player-height,68px);scroll-padding-top:0;touch-action:pan-y pinch-zoom}
 body[data-mode="house"] .mini{top:calc(var(--mobile-window-height,100dvh) - var(--mobile-player-height,68px));bottom:auto}
}
@media(max-width:700px),(max-width:1000px) and (max-height:500px){
 body[data-mode="house"] .house-scroll{scrollbar-width:none}
 body[data-mode="house"] .house-scroll::-webkit-scrollbar{display:none}
}

.house-world.arrival-pending .song-entry,.house-world.arrival-resolving:not([data-invitation-ready]) .song-entry{pointer-events:none}
.house-world.arrival-resolving .song-entry:focus-within{opacity:1;pointer-events:auto}
/* Summer's white cloud rims need local lettering contrast, not a darker painting. */
.hero:has(.landscape[data-world="9"]) .hero-content{ text-shadow:0 1px 2px #081827,0 2px 7px #081827b8,0 2px 20px #0009; }

/* Native scrolling owns the bounded Listen range. It has no scroll anchor/focus
   restoration target at its top when mobile browser chrome changes. */
@media(max-width:700px),(max-width:1000px) and (max-height:500px){
 body[data-mode="listen"],body[data-mode="listen"] #listen{overflow-anchor:none}
 body[data-mode="house"] header.nav-flanks nav{width:100%;justify-content:space-between}
 body[data-mode="house"] header{transform:translateY(var(--deepwell-nav-offset,0px));transition:transform 180ms ease}
}

@media(max-width:700px),(max-width:1000px) and (max-height:500px){
 html[data-mode="listen"]{overscroll-behavior-y:none;scroll-behavior:auto}
 body[data-mode="house"] header.nav-flanks nav{justify-content:space-between;gap:0}
 body[data-mode="house"] header nav a{transition:transform 220ms ease,opacity 180ms ease}
}

@media(max-width:700px),(max-width:1000px) and (max-height:500px){
 body[data-mode="house"] header nav{position:relative;width:100%;height:40px;display:block}
 body[data-mode="house"] header nav a{position:absolute;top:0;transition:left 220ms ease,opacity 180ms ease}
 body[data-mode="house"] header nav a:first-child{left:var(--nav-listen-x,calc(50% - 92px))}
 body[data-mode="house"] header nav a:last-child{left:var(--nav-collaborate-x,calc(50% - 20px))}
}

/* Portrait Listen: the world's air continues behind the existing source/menu.
   The feathered field overlaps the sky onset; no replicated landscape geometry. */
@media(max-width:700px) and (orientation:portrait){
 body[data-mode="listen"] header{mix-blend-mode:normal;background:none}
 body[data-mode="listen"] header nav{text-shadow:0 1px 3px #020812,0 0 9px #020812b3}
 body[data-mode="listen"] .hero::before{content:'';position:absolute;inset:0 0 auto;height:300px;z-index:-1;pointer-events:none;
  background:radial-gradient(ellipse 110% 78% at 18% 5%,rgb(var(--world-atmosphere,75 47 76) / .78),transparent 83%),radial-gradient(ellipse 100% 70% at 89% 40%,rgb(var(--world-atmosphere,75 47 76) / .54),transparent 88%),linear-gradient(180deg,#050b13b3 0%,#0b1721 145px,#0b1721 151px,#0b172100 280px);
  mask-image:linear-gradient(#000 0 54%,#000c 72%,transparent 100%)}
 body[data-mode="listen"] .hero::after{background:linear-gradient(180deg,#050b1326,transparent 48%,#080f1730 78%,#080f17 100%)}
}

/* Dedicated source only: the custom press owns image/callout conflicts. */
@media(pointer:coarse){
 body[data-view="house"] .house-identity img{-webkit-user-drag:none;-webkit-touch-callout:none;user-select:none;pointer-events:none}
 body[data-view="house"] .well-touch{touch-action:none;-webkit-tap-highlight-color:transparent}
}
