/* Shared motion: atmosphere, spatial scene changes and automatic explanations. */
.cloud-one{animation:blue-light 14s ease-in-out infinite alternate}.cloud-two{animation:coral-light 11s ease-in-out infinite alternate}
@keyframes blue-light{0%{transform:translate(-10vw,-7vh) scale(.85) rotate(-20deg)}100%{transform:translate(15vw,15vh) scale(1.15) rotate(20deg)}}
@keyframes coral-light{0%{transform:translate(8vw,10vh) scale(1.05)}100%{transform:translate(-25vw,-20vh) scale(.85)}}
.scene{--arrival:translate3d(0,70px,-80px) scale(.97);--departure:translate3d(0,-65px,60px) scale(1.03);transform:var(--arrival);transition:opacity .65s,transform .95s cubic-bezier(.16,1,.3,1),filter .65s,visibility .95s}
.scene:is([data-id=cover],[data-id=proposition],[data-id=forecast],[data-id=closing]){--arrival:translate3d(0,0,-200px) scale(.9);--departure:translate3d(0,0,160px) scale(1.1)}
.scene:is([data-id=world],[data-id=gesture],[data-id=date]){--arrival:translate3d(150px,20px,-150px) rotateY(-10deg);--departure:translate3d(-120px,-15px,90px) rotateY(7deg)}
.scene:is([data-id=algorithm],[data-id=signals],[data-id=experiments]){--arrival:translate3d(150px,0,-40px);--departure:translate3d(-150px,0,30px)}
.scene.before{transform:var(--departure)}.scene.active{transform:translate3d(0,0,0) rotateY(0) scale(1)}.scene:focus{outline:none}.scene:not(.active) *{animation-play-state:paused!important}
#chapter-lenses{position:fixed;inset:0;z-index:20;pointer-events:none;overflow:hidden;visibility:hidden}#chapter-lenses i{position:absolute;top:-30vh;width:90vh;height:150vh;border-radius:50%;filter:blur(50px);opacity:0}#chapter-lenses i:first-child{left:-80vh;background:var(--blue)}#chapter-lenses i:last-child{right:-80vh;background:var(--coral)}#chapter-lenses.crossing{visibility:visible}#chapter-lenses.crossing i:first-child{animation:lens-left 1.25s cubic-bezier(.3,0,.15,1) both}#chapter-lenses.crossing i:last-child{animation:lens-right 1.25s cubic-bezier(.3,0,.15,1) both}
@keyframes lens-left{0%{transform:translateX(0);opacity:0}30%{opacity:.3}100%{transform:translateX(135vw);opacity:0}}@keyframes lens-right{0%{transform:translateX(0);opacity:0}30%{opacity:.2}100%{transform:translateX(-135vw);opacity:0}}
body.motion-paused *,body.motion-paused *:before,body.motion-paused *:after{animation-play-state:paused!important;transition-duration:.01s!important}body.motion-paused #chapter-lenses{display:none}
@media(prefers-reduced-motion:reduce){.scene{transition-duration:.01s!important}}

/* Snappier slide changes: the old slide clears quickly instead of lingering blurred over the new one,
   and the active slide carries no filter at all (cheaper, and it keeps 3D scenes crisp). */
.scene{transition:opacity .5s ease,transform .85s cubic-bezier(.16,1,.3,1),filter .45s ease,visibility .85s}
.scene:not(.active){filter:blur(4px);transition:opacity .26s ease,transform .6s cubic-bezier(.4,0,.2,1),filter .26s ease,visibility .26s}
.scene.active{filter:none}
.scene.active{overflow:visible}
