:root{--stage-ease:cubic-bezier(.16,1,.3,1);--parallax:0px;--pointer-x:0px;--pointer-y:0px}
.reading-progress{position:fixed;inset:0 0 auto;height:2px;z-index:80;background:transparent;pointer-events:none}.reading-progress span{display:block;height:100%;background:linear-gradient(90deg,#876e38,#f2dab0);transform:scaleX(0);transform-origin:left;box-shadow:0 0 14px #d5ba7988}
.hero-wordmark{position:absolute;bottom:60px;left:5%;font:400 clamp(100px,19vw,310px)/1 Georgia,serif;letter-spacing:.08em;color:#d5ba7908;z-index:-1;white-space:nowrap;transform:translate3d(0,calc(var(--parallax) * -.5),0);pointer-events:none}
.stage-dust{position:absolute;inset:0;width:100%;height:100%;z-index:0;pointer-events:none;opacity:.75}.hero-art{transform:translate3d(var(--pointer-x),calc(var(--pointer-y) + var(--parallax)),0)}
.motion-ready .site-header{animation:header-enter 1.1s var(--stage-ease) both}
.motion-ready .hero-copy>.eyebrow{animation:text-enter 1.2s var(--stage-ease) .05s both}
.motion-ready .hero-copy h1{animation:title-enter 1.6s var(--stage-ease) .15s both}
.motion-ready .hero-copy .latin-title{animation:text-enter 1.6s var(--stage-ease) .32s both}
.motion-ready .hero-rule{transform-origin:left;animation:rule-enter 1.3s var(--stage-ease) .7s both}
.motion-ready .hero-lead{animation:text-enter 1.2s var(--stage-ease) .57s both}
.motion-ready .hero-description{animation:text-enter 1.2s var(--stage-ease) .69s both}
.motion-ready .hero-copy .button{animation:text-enter 1.2s var(--stage-ease) .8s both}
.motion-ready .hero-credit{animation:text-enter 1.2s var(--stage-ease) .94s both}
.motion-ready .hero-art{animation:art-enter 1.8s var(--stage-ease) .25s backwards}
.motion-ready .hero-art img{animation:stage-breathe 7s ease-in-out 2s infinite;transform-origin:50% 55%}
.motion-ready .art-halo{animation:halo-breathe 9s ease-in-out infinite}.art-halo:after{content:'';position:absolute;inset:-12%;border-radius:50%;background:radial-gradient(ellipse,#d5ba7914,transparent 67%);filter:blur(20px)}
.motion-ready .hero-bottom{animation:text-enter 1.4s var(--stage-ease) 1s both}
.motion-ready [data-reveal]{opacity:0;transform:translate3d(0,36px,0);filter:blur(5px);transition:opacity 1s var(--stage-ease),transform 1.25s var(--stage-ease),filter 1s var(--stage-ease);transition-delay:var(--reveal-delay,0ms)}
.motion-ready [data-reveal].is-revealed{opacity:1;transform:translate3d(0,0,0);filter:blur(0)}
.profile{position:relative}.profile:before{content:'';height:1px;position:absolute;top:0;left:4vw;right:4vw;background:linear-gradient(90deg,transparent,#d5ba7959,transparent);transform-origin:left;transform:scaleX(0);transition:transform 1.6s var(--stage-ease)}.profile.is-revealed:before{transform:scaleX(1)}
.site-header nav a{position:relative}.site-header nav a:after{content:'';position:absolute;left:0;right:0;bottom:1px;height:1px;transform:scaleX(0);transform-origin:left;background:var(--gold);transition:transform .45s var(--stage-ease)}.site-header nav a:hover:after,.site-header nav a[aria-current=true]:after{transform:scaleX(1)}.site-header nav a[aria-current=true]{color:var(--gold)}
.button-gold{box-shadow:0 0 0 #d5ba7900;transition:background .35s,box-shadow .5s,transform .45s var(--stage-ease)}.button-gold:hover{box-shadow:0 6px 35px #d5ba791f;transform:translateY(-3px)}
.text-link{position:relative;transition:color .25s,border-color .3s}.text-link:hover{color:#f0d99e}
.portrait-stage{--portrait-shift:0px}.portrait-watermark{transform:translateX(-50%) translateY(var(--portrait-shift));will-change:transform}.gallery-image-button img{transition:transform 1.1s var(--stage-ease),filter .8s var(--stage-ease)}.gallery-image-button:hover img{transform:scale(1.025);filter:drop-shadow(0 22px 38px #0008)}.portrait-stage:after{content:'';position:absolute;inset:10% 3%;border-top:1px solid #d5ba7923;border-bottom:1px solid #d5ba7913;pointer-events:none}
.gallery-switch button{transition:background .4s,color .4s}.gallery-switch button[aria-pressed=true]{box-shadow:inset 0 -1px #d5ba7966}
.movement{transition:background .6s}.movement[open]{background:linear-gradient(90deg,transparent,#d5ba7906)}.movement summary:hover .movement-number{color:#f0dca4}.movement summary>span:nth-child(2){transition:transform .5s var(--stage-ease)}.movement summary:hover>span:nth-child(2){transform:translateX(5px)}.movement-content{transform-origin:top}
.relationship-grid article{transition:border-color .4s}.relationship-grid article:hover{border-top-color:#d5ba79}.relationship-grid h4{transition:color .4s}.relationship-grid article:hover h4{color:#e3cca0}
.art-dialog[open]::backdrop{animation:backdrop-enter .5s ease both}.dialog-art img{animation:art-enter .85s var(--stage-ease) both}
.music-spectrum{display:block;width:100%;height:72px;margin-top:22px;opacity:.85}.music-player #music-audio{margin-top:8px}.music-section{position:relative;overflow:hidden}.music-section:before{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 12% 65%,#d5ba7912,transparent 60%);transition:opacity 1s;opacity:.3}.music-section.is-playing:before{opacity:1;animation:music-glow 5s ease-in-out infinite}
.music-section .section-shell{position:relative;z-index:1}.music-select-label{transition:color .4s}.is-playing .music-select-label{color:var(--gold)}.closing .closing-signature{display:inline-block}.closing:before{content:'';display:block;width:1px;height:50px;margin:0 auto 25px;background:linear-gradient(transparent,#d5ba7980)}
@keyframes header-enter{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
@keyframes text-enter{from{opacity:0;transform:translateY(24px);filter:blur(5px)}to{opacity:1;transform:translateY(0);filter:blur(0)}}
@keyframes title-enter{from{opacity:0;transform:translateY(45px);clip-path:inset(0 0 100% 0)}to{opacity:1;transform:translateY(0);clip-path:inset(0 0 0 0)}}
@keyframes rule-enter{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes art-enter{from{opacity:0;filter:blur(10px);transform:translate3d(28px,24px,0) scale(1.035)}to{opacity:1;filter:blur(0);transform:translate3d(0,0,0) scale(1)}}
@keyframes stage-breathe{0%,100%{transform:translateY(0) rotate(-.1deg)}50%{transform:translateY(-12px) rotate(.35deg)}}
@keyframes halo-breathe{0%,100%{opacity:.5;transform:scale(.97)}50%{opacity:1;transform:scale(1.04)}}
@keyframes backdrop-enter{from{opacity:0}to{opacity:1}}
@keyframes music-glow{0%,100%{opacity:.65}50%{opacity:1}}
.hero.hero-outside .hero-art img,.hero.hero-outside .art-halo{animation-play-state:paused}
@media(max-width:650px){.hero-wordmark{font-size:110px;bottom:125px;left:-10px}.stage-dust{opacity:.45}.motion-ready [data-reveal]{transform:translateY(22px);filter:blur(2px)}.motion-ready .hero-art img{animation-duration:9s}.portrait-stage:after{inset:10% 24px}.music-spectrum{height:58px}.motion-ready .hero-copy .button{animation-delay:.65s}}
@media(prefers-reduced-motion:reduce){.motion-ready [data-reveal]{opacity:1;transform:none;filter:none;transition:none}.stage-dust{display:none}.hero-art{transform:none}.hero-wordmark{transform:none}.portrait-watermark{transform:translateX(-50%)}.music-spectrum{display:none}.motion-ready .hero-copy>*{opacity:1;clip-path:none;filter:none}.button-gold:hover{transform:none}.movement summary:hover>span:nth-child(2){transform:none}.gallery-image-button:hover img{transform:none}}
