.scr-anim .ly-jw{left:45.312%;top:27.269%;width:17.943%}
.scr-anim .ly-ow{left:83.516%;top:44.306%;width:14.870%}
.scr-anim .ly-tw{left:79.505%;top:18.704%;width:13.620%}
.scr-anim .ly-ball{left:80.391%;top:25.463%;width:2.266%}
.scr-anim .ly-drone{left:70.365%;top:31.435%;width:12.604%}
.scr-anim .ly-ring{left:91.354%;top:20.833%;width:2.396%}
.scr-anim .ly-yring{left:49.792%;top:22.546%;width:1.458%}
.scr-anim .ly-sit{left:60.130%;top:48.056%;width:14.427%}
.scr-anim .ly-plant{left:93.490%;top:56.944%;width:6.615%}
.scr-anim{position:relative;aspect-ratio:16/9;overflow:hidden;container-type:inline-size;background:#f6f3fa}
.scr-anim>img,.scr-anim>svg{position:absolute;display:block}
.scr-anim .scr-base{inset:0;width:100%;height:100%}
.scr-anim>svg{inset:0;width:100%;height:100%;overflow:visible}
.scr-anim .ly{height:auto;will-change:transform}
/* Boucles douces, raccordées (aller-retour), mises en pause hors écran */
.scr-anim.loop .ly{animation:var(--a) var(--d) ease-in-out infinite alternate}
.scr-anim.paused .ly{animation-play-state:paused}
.ly-jw{--a:sway;--d:7s;transform-origin:85.6% 9.1%}
.ly-ow{--a:sway2;--d:6.4s;transform-origin:37% 64%}
.ly-tw{--a:bob;--d:5.2s}
.ly-ball{--a:bob2;--d:4.1s}
.ly-drone{--a:hover;--d:3.6s;transform-origin:50% 40%}
.ly-ring{--a:drift;--d:6.2s}
.ly-yring{--a:drift2;--d:5.4s}
.ly-sit{--a:breathe;--d:4.6s;transform-origin:50% 65%}
@keyframes sway{from{transform:rotate(-.8deg)}to{transform:rotate(.8deg)}}
@keyframes sway2{from{transform:rotate(.5deg)}to{transform:rotate(-.5deg)}}
@keyframes bob{from{transform:translateY(0)}to{transform:translateY(-.32cqw)}}
@keyframes bob2{from{transform:translate(0,0)}to{transform:translate(.2cqw,-.55cqw)}}
@keyframes hover{from{transform:translateY(.25cqw) rotate(-1.2deg)}to{transform:translateY(-.25cqw) rotate(1deg)}}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(-.3cqw,.35cqw)}}
@keyframes drift2{from{transform:translate(0,0)}to{transform:translate(.25cqw,-.3cqw)}}
@keyframes breathe{from{transform:scale(1)}to{transform:scale(1.004,1.008)}}
/* Introduction jouée une fois : le logo se découvre, le nom monte ligne à ligne, la date file dans sa ligne de code */
.js .scr-anim:not(.in) .sym,.js .scr-anim:not(.in) .date{clip-path:inset(0 100% 0 0)}
.js .scr-anim:not(.in) .word path{transform:translateY(1.4%);opacity:0}
.js .scr-anim:not(.in) .l42,.js .scr-anim:not(.in) .hash{opacity:0}
.scr-anim.in .sym{clip-path:inset(0 0 0 0);transition:clip-path 1.3s var(--ease-io) .1s}
.scr-anim.in .word path{transition:transform .8s var(--ease),opacity .8s var(--ease);transition-delay:calc(.75s + var(--l) * .1s)}
.scr-anim.in .date{clip-path:inset(0 0 0 0);transition:clip-path 1.1s var(--ease-io) 1.3s}
.scr-anim.in .l42{transition:opacity .8s var(--ease) .2s}
.scr-anim.in .hash{transition:opacity .8s var(--ease) 1.9s}
@media (prefers-reduced-motion:reduce){.scr-anim .ly{animation:none!important}.js .scr-anim .sym,.js .scr-anim .date{clip-path:none}.js .scr-anim .word path,.js .scr-anim .l42,.js .scr-anim .hash{opacity:1;transform:none}}

.scr-anim .ly-jw{left:45.312%;top:27.269%;width:17.943%}
.scr-anim .ly-ow{left:83.516%;top:44.306%;width:14.870%}
.scr-anim .ly-tw{left:79.505%;top:18.704%;width:13.620%}
.scr-anim .ly-ball{left:80.391%;top:25.463%;width:2.266%}
.scr-anim .ly-drone{left:70.365%;top:31.435%;width:12.604%}
.scr-anim .ly-ring{left:91.354%;top:20.833%;width:2.396%}
.scr-anim .ly-yring{left:49.792%;top:22.546%;width:1.458%}
.scr-anim .ly-sit{left:60.130%;top:48.056%;width:14.427%}
.scr-anim .ly-plant{left:93.490%;top:56.944%;width:6.615%}