/* Stable geometry and compositor-friendly light. No scroll-driven layout. */
html{scrollbar-gutter:stable}
.hero-shell{height:var(--rovno-hero-height,100svh)}
.motion-reveal.is-revealed:not(:has(.line-inner)){animation:rovno-reveal .55s ease-out both}
@keyframes rovno-reveal{from{opacity:.65;transform:translate3d(0,6px,0)}to{opacity:1;transform:none}}
.card-reflection .card-sheen{inset:0 -50%;background-size:100% 100%;background-position:center;animation:rovno-reflection 8s ease-in-out infinite alternate;transform:translate3d(-35%,0,0)}
.card-artwork[data-material=graphite] .card-sheen{animation-duration:9s}
.card-artwork[data-material=champagne] .card-sheen{animation-duration:10s}
.card-reflection .card-lustre{background:radial-gradient(ellipse 76% 110% at 50% 25%,#e5f5ffbd,transparent 75%)}
.atelier-reflection:before{inset:0 -50%;animation:rovno-reflection 8s ease-in-out infinite alternate}
@keyframes rovno-reflection{from{transform:translate3d(-35%,0,0)}to{transform:translate3d(35%,0,0)}}
.motion-surface[data-motion=off],.motion-surface[data-motion=off] *,.motion-surface[data-motion=off]::before,.motion-surface[data-motion=off]::after,.motion-surface[data-motion=off] *::before,.motion-surface[data-motion=off] *::after{animation-play-state:paused!important}
.motion-surface[data-motion=on],.motion-surface[data-motion=on] *,.motion-surface[data-motion=on]::before,.motion-surface[data-motion=on]::after,.motion-surface[data-motion=on] *::before,.motion-surface[data-motion=on] *::after{animation-play-state:running!important}
.atelier-dashboard,.enroll-content{animation:none}
.drawer:not([hidden]) .sheet{animation:rovno-sheet .22s ease-out both}
@keyframes rovno-sheet{from{opacity:.75;transform:translate3d(0,8px,0)}to{opacity:1;transform:none}}
.rhythm-panel{animation:rovno-panel .3s ease-out both}
@keyframes rovno-panel{from{opacity:.6}to{opacity:1}}
/* Phones keep native momentum; heavy photo + blur combinations are static. */
@media(max-width:800px),(hover:none),(pointer:coarse){
 html{scroll-behavior:auto}
 .hero-shell{height:var(--rovno-hero-height,100svh)}
 .site-hero .hero-photo,.wallet-photo,.scene-people .people-photo,.rhythm-photo{animation:none;transform:none;will-change:auto}
 .hero-light,.wallet-light,.scene-scan,.scene-ledger>div:before,.scene-ledger .flow-icon svg,.end-section:before,.review-window .review-result strong,.review-confirm,.route-finish{animation:none}
 .scene-ledger>div:before{opacity:0}
 .motion-reveal.is-revealed,.motion-reveal.is-revealed:not(:has(.line-inner)),.scene.is-revealed .balance-label,.scene.is-revealed .scene-balance,.scene.is-revealed .scene-account{animation:none;transform:none;opacity:1}
 .wallet-surface,.recipient-panel,.glass-panel,.review-window,.nav{backdrop-filter:none;-webkit-backdrop-filter:none}
 .nav{background:#101b15}
 .app-shell,.sidebar{min-height:calc(100svh - 27px)}
 .page{min-height:calc(100svh - 186px)}
 body.is-enrolling .app-shell,.enroll-shell{min-height:100svh}
 .atelier-actions button:hover>svg{transform:none}
 .site-button:active,.header-cta:active{transform:none}
 .site-button:after,.header-cta:after{display:none}
 .scene-people:hover .recipient-panel{box-shadow:0 20px 45px #0004}
}
@media(prefers-reduced-motion:reduce){
 .motion-reveal,.rhythm-panel,.card-reflection .card-sheen,.atelier-reflection:before{animation:none!important;transform:none!important;opacity:1}
 .card-reflection,.atelier-reflection{display:none}
}
