/* Opening and content animations, without 3D models. */
/* Openings keep their original layout. Independent layers follow the scroll. */
.motion-opening{--motion-x:0;--motion-y:0;--motion-scroll:0;position:relative;isolation:isolate;perspective:1200px}
.motion-atmosphere{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:2;contain:paint;opacity:.6}.motion-atmosphere i{position:absolute;left:calc(5% + var(--i)*12%);top:14%;width:3px;height:3px;background:var(--accent,var(--world-accent));border-radius:50%;animation:motion-spark calc(3s + var(--i)*.3s) ease-in-out infinite alternate;animation-delay:calc(var(--i)*-.7s);animation-play-state:paused}
.motion-visible .motion-atmosphere i{animation-play-state:running}.motion-opening .hero-photo,.motion-opening .world-visual>img{transition:translate .3s ease-out,rotate .3s ease-out,scale .5s ease-out}
.motion-opening .motion-title{animation:motion-copy .8s cubic-bezier(.18,.7,.2,1) both;animation-delay:calc(var(--motion-order,0)*70ms);animation-play-state:paused}.motion-entered .motion-title{animation-play-state:running}
.motion-gloss .hero-photo,.motion-gloss .world-visual>img{scale:calc(1.015 + var(--motion-scroll)*.025);translate:0 calc(var(--motion-scroll)*-18px)}
.motion-gloss .motion-atmosphere:after{content:'';position:absolute;inset:-50%;background:linear-gradient(115deg,transparent 46%,#fff2 50%,transparent 54%);translate:calc(var(--motion-x)*80px) 0;animation:motion-sheen 9s ease-in-out infinite;animation-play-state:paused}.motion-gloss.motion-visible .motion-atmosphere:after{animation-play-state:running}
.motion-play .hero-photo,.motion-play .world-visual>img{rotate:calc(var(--motion-x)*3deg + var(--motion-scroll)*-2deg);translate:calc(var(--motion-x)*9px) calc(var(--motion-scroll)*-18px)}
.motion-play .motion-atmosphere i{width:9px;height:9px;border-radius:2px;rotate:calc(var(--i)*30deg);background:var(--accent,var(--world-accent));animation-name:motion-confetti;opacity:.5}
.motion-future .hero-photo,.motion-future .world-visual>img{rotate:y calc(var(--motion-x)*5deg);translate:calc(var(--motion-x)*8px) calc(var(--motion-scroll)*-12px)}
.motion-future .motion-atmosphere{background:radial-gradient(circle at calc(50% + var(--motion-x)*60%) calc(50% + var(--motion-y)*60%),color-mix(in srgb,var(--accent,var(--world-accent)) 15%,transparent),transparent 38%)}.motion-future .motion-atmosphere i{height:26px;width:1px;box-shadow:0 0 12px var(--accent,var(--world-accent));animation-name:motion-data}
.motion-organic .hero-photo,.motion-organic .world-visual>img{translate:calc(var(--motion-x)*-6px) calc(var(--motion-scroll)*20px);rotate:calc(var(--motion-scroll)*.6deg)}
.motion-organic .motion-atmosphere i{width:14px;height:20px;border-radius:80% 0 80% 0;background:var(--accent,var(--world-accent));opacity:.2;animation-name:motion-leaf}
.motion-cinema .hero-photo,.motion-cinema .world-visual>img{scale:calc(1.03 + var(--motion-scroll)*.025);translate:calc(var(--motion-x)*-8px) calc(var(--motion-scroll)*-24px)}.motion-cinema .motion-atmosphere i{width:2px;height:2px;background:currentColor;opacity:.2}.motion-cinema .motion-title{animation-name:motion-cinema-copy}
.motion-editorial .hero-photo,.motion-editorial .world-visual>img{translate:0 calc(var(--motion-scroll)*-12px)}.motion-editorial .motion-atmosphere{display:none}.motion-editorial .motion-title{animation-name:motion-editorial-copy}
@keyframes motion-copy{from{opacity:0;translate:0 22px}to{opacity:1;translate:0 0}}@keyframes motion-cinema-copy{from{opacity:0;filter:blur(6px);translate:0 14px}to{opacity:1;filter:blur(0);translate:0 0}}@keyframes motion-editorial-copy{from{opacity:0;clip-path:inset(0 0 100% 0)}to{opacity:1;clip-path:inset(0 0 0 0)}}
@keyframes motion-spark{from{opacity:.12;scale:.6}to{opacity:.9;scale:1.4}}@keyframes motion-confetti{from{translate:0 -10px;rotate:-10deg}to{translate:8px 12px;rotate:35deg}}@keyframes motion-data{from{opacity:.1;translate:0 -12px}to{opacity:.6;translate:0 15px}}@keyframes motion-leaf{from{translate:0 -12px;rotate:-20deg}to{translate:12px 8px;rotate:20deg}}@keyframes motion-sheen{0%,30%{translate:-30% 0;opacity:0}50%{opacity:.6}80%,100%{translate:30% 0;opacity:0}}
@media(max-width:700px){.motion-atmosphere i:nth-child(n+5){display:none}.motion-opening{overflow:hidden}}
@media(prefers-reduced-motion:reduce){.motion-opening *,.motion-atmosphere:after{animation:none!important;transition:none!important}.motion-title{opacity:1!important;translate:none!important;filter:none!important;clip-path:none!important}.motion-opening .hero-photo,.motion-opening .world-visual>img{translate:none!important;rotate:none!important;scale:1!important}.motion-atmosphere{display:none}}

.motion-card-reveal{opacity:0;translate:0 24px;transition:opacity .7s ease,translate .8s ease;transition-delay:calc(var(--motion-card-order,0)*70ms)}.motion-card-arrived{opacity:1;translate:0 0}@media(prefers-reduced-motion:reduce){.motion-card-reveal{opacity:1;translate:none;transition:none}}
