/* Féerie de Saison — styles communs. Tout est préfixé fds- pour ne jamais gêner le thème. */
.fds-root{position:fixed;inset:0;z-index:9990;pointer-events:none;overflow:hidden;--fds-u:clamp(38px,5.2vw,78px)}
.fds-cv{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.fds-top{position:absolute;top:0;left:0;width:100%;z-index:9991;pointer-events:none;overflow:visible}
.fds-top.fds-fixed{position:fixed}
.fds-top canvas{position:absolute;left:0;top:0;filter:drop-shadow(0 5px 4px rgba(0,0,0,.4))}
.fds-top svg{display:block;position:relative;overflow:visible}
.fds-side{position:absolute;bottom:0;display:flex;align-items:flex-end;gap:.4vw;isolation:isolate;padding-bottom:calc(var(--fds-u)*.16)}
.fds-left{left:1.2vw}
.fds-right{right:1.6vw}
.fds-mound{position:absolute;left:-1.6vw;right:-1.6vw;bottom:-2px;height:calc(var(--fds-u)*.62);z-index:-1}
.fds-mound svg{width:100%;height:100%;display:block}
.fds-fig{flex:none;width:calc(var(--fds-u)*var(--k,1))}
.fds-fig svg{display:block;width:100%;height:auto;overflow:visible}
.fds-flyer{position:absolute;left:0;top:0;opacity:0;will-change:transform;display:flex;align-items:center}
.fds-flyer>svg{display:block;width:100%;height:auto;overflow:visible}
.fds-flyer .fds-flip{width:100%}
.fds-flyer .fds-flip svg{display:block;width:100%;height:auto;overflow:visible}
.fds-flyer[data-dir="1"] .fds-flip{transform:scaleX(-1)}
.fds-flyer.fds-col{flex-direction:column}
.fds-plane{flex:0 0 36%}
.fds-rope{flex:0 0 3%;height:2px;background:#5a1a26}
.fds-flyer[data-dir="1"]:not(.fds-col){flex-direction:row-reverse}
.fds-banner{flex:1;min-width:0;background:linear-gradient(90deg,#e0314c 0 5%,#fff 5% 95%,#22a1c4 95%);color:#1d2236;font:800 clamp(11px,1.7vw,24px)/1.1 system-ui,-apple-system,"Segoe UI",sans-serif;text-align:center;padding:.55em 1.1em;clip-path:polygon(0 0,100% 0,96.5% 50%,100% 100%,0 100%,3.5% 50%);transform-origin:left center;animation:fds-bwave 1.6s ease-in-out infinite;white-space:nowrap}
.fds-flyer[data-dir="1"] .fds-banner{transform-origin:right center}
.fds-sign{position:relative;margin-top:-4px;padding:.55em 1em;background:#12204a;color:#ffd96a;border:2px solid #ffd24a;border-radius:6px;font:700 clamp(11px,1.5vw,21px)/1.15 Georgia,"Times New Roman",serif;letter-spacing:.04em;text-align:center;white-space:nowrap;transform-origin:50% 0;animation:fds-sway 3.6s ease-in-out infinite;box-shadow:0 3px 8px rgba(0,0,0,.35)}
.fds-sign::before,.fds-sign::after{content:"";position:absolute;top:-14px;width:2px;height:14px;background:#6b4a2a}
.fds-sign::before{left:22%}
.fds-sign::after{right:22%}
.fds-toggle{position:fixed;left:50%;bottom:8px;transform:translateX(-50%);z-index:9992;display:inline-flex;align-items:center;gap:6px;padding:5px 11px;border:0;border-radius:99px;background:rgba(20,24,40,.62);color:#fff;font:600 12px/1 system-ui,-apple-system,"Segoe UI",sans-serif;cursor:pointer;opacity:.55;transition:opacity .2s;pointer-events:auto}
.fds-toggle:hover,.fds-toggle:focus-visible{opacity:1}
.fds-toggle:focus-visible{outline:2px solid #ffd24a;outline-offset:2px}
.fds-calm *{animation-play-state:paused!important}

@keyframes fds-swing{from{transform:rotate(7deg)}to{transform:rotate(-7deg)}}
@keyframes fds-twinkle{0%,100%{opacity:.3}50%{opacity:1}}
@keyframes fds-gallop{from{transform:rotate(-26deg)}to{transform:rotate(28deg)}}
@keyframes fds-glow{0%,100%{opacity:.25}50%{opacity:.85}}
@keyframes fds-wavy{0%,100%{transform:rotate(0)}30%{transform:rotate(-14deg)}60%{transform:rotate(6deg)}}
@keyframes fds-waddle{0%,100%{transform:rotate(-3.5deg)}50%{transform:rotate(3.5deg)}}
@keyframes fds-hop{0%,100%{transform:translateY(0)}35%,55%{transform:translateY(-10%)}}
@keyframes fds-flapL{0%,100%{transform:rotate(0)}50%{transform:rotate(-16deg)}}
@keyframes fds-flapR{0%,100%{transform:rotate(0)}50%{transform:rotate(16deg)}}
@keyframes fds-blink{0%,93%,100%{transform:scaleY(1)}96%{transform:scaleY(.08)}}
@keyframes fds-sway{0%,100%{transform:rotate(-1.3deg)}50%{transform:rotate(1.3deg)}}
@keyframes fds-flutter{0%,100%{transform:rotate(-5deg)}50%{transform:rotate(7deg)}}
@keyframes fds-starpulse{0%,100%{opacity:.35}50%{opacity:.9}}
@keyframes fds-float{from{transform:translateY(0) rotate(-2deg)}to{transform:translateY(-9%) rotate(2deg)}}
@keyframes fds-gsh{from{transform:scaleX(1);opacity:.9}to{transform:scaleX(.8);opacity:.6}}
@keyframes fds-flick{0%,100%{opacity:.82}18%{opacity:1}34%{opacity:.7}52%{opacity:.98}70%{opacity:.78}}
@keyframes fds-tail{0%,100%{transform:rotate(-9deg)}50%{transform:rotate(11deg)}}
@keyframes fds-hair{0%,100%{transform:skewY(0)}50%{transform:skewY(5deg)}}
@keyframes fds-bounce{from{transform:translateY(0)}to{transform:translateY(-3%)}}
@keyframes fds-bowa{0%,62%,100%{transform:rotate(0)}70%,82%{transform:rotate(24deg)}}
@keyframes fds-kick{0%,56%,100%{transform:rotate(0)}64%,74%{transform:rotate(-62deg)}}
@keyframes fds-punch{0%,52%,100%{transform:rotate(0)}58%{transform:rotate(-40deg)}66%{transform:rotate(0)}74%{transform:rotate(-40deg)}}
@keyframes fds-guard{0%,100%{transform:rotate(0)}50%{transform:rotate(-4deg)}}
@keyframes fds-shine{0%,60%{transform:translateX(-30px) skewX(-20deg)}100%{transform:translateX(150px) skewX(-20deg)}}
@keyframes fds-ball{from{transform:rotate(-5deg)}to{transform:rotate(5deg)}}
@keyframes fds-bwave{0%,100%{transform:skewY(-2.2deg)}50%{transform:skewY(2.2deg)}}
@keyframes fds-prop{0%,100%{transform:scaleX(1)}50%{transform:scaleX(.25)}}
@keyframes fds-flag{from{transform:rotate(5deg)}to{transform:rotate(-5deg)}}
@keyframes fds-flame{0%,100%{transform:scale(1,1)}50%{transform:scale(.88,1.12)}}
@keyframes fds-sweep{to{transform:rotate(360deg)}}
@keyframes fds-bub{0%{transform:translateY(0);opacity:0}20%{opacity:.9}100%{transform:translateY(-9px);opacity:0}}
@keyframes fds-cork{0%,48%{transform:translate(0,0) rotate(0);opacity:1}52%{transform:translate(2px,-30px) rotate(60deg);opacity:1}62%{transform:translate(8px,-92px) rotate(190deg);opacity:1}76%{transform:translate(16px,-120px) rotate(300deg);opacity:.9}88%{transform:translate(22px,-60px) rotate(380deg);opacity:0}100%{transform:translate(0,0) rotate(0);opacity:0}}
@keyframes fds-foam{0%,48%{transform:scale(0);opacity:0}54%{transform:scale(1);opacity:1}72%{transform:scale(1.9) translateY(-6px);opacity:0}100%{transform:scale(0);opacity:0}}

.fds-bb{transform-box:fill-box;transform-origin:50% 0;animation:fds-swing 3.2s ease-in-out infinite alternate}
.fds-lt{animation:fds-twinkle 1.7s ease-in-out infinite}
.fds-tl{animation:fds-twinkle 1.5s ease-in-out infinite}
.fds-tstar{animation:fds-starpulse 2.2s ease-in-out infinite}
.fds-leg{animation:fds-gallop .46s ease-in-out infinite alternate}
.fds-rglow{animation:fds-glow 1.1s ease-in-out infinite}
.fds-wave{animation:fds-wavy 2.4s ease-in-out infinite}
.fds-pg{transform-origin:50% 95%;animation:fds-waddle 1.9s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-pg.fds-hop{animation:fds-hop 1.15s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-fl{transform-origin:9px 36px;animation:fds-flapL 1.9s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-fr{transform-origin:51px 36px;animation:fds-flapR 1.9s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-eyes{transform-origin:30px 24px;animation:fds-blink 5.4s infinite;animation-delay:var(--d,0s)}
.fds-sway{transform-origin:62px 186px;animation:fds-sway 4.2s ease-in-out infinite}
.fds-armR{transform-origin:91px 88px;animation:fds-wavy 2.2s ease-in-out infinite}
.fds-scarf{transform-origin:76px 82px;animation:fds-flutter 2.4s ease-in-out infinite}
.fds-eyeS{transform-box:fill-box;transform-origin:center;animation:fds-blink 6s infinite}
.fds-bub{animation:fds-bub 1.8s ease-in infinite}
.fds-ghb{animation:fds-float 3s ease-in-out infinite alternate;animation-delay:var(--d,0s)}
.fds-gsh{transform-box:fill-box;transform-origin:center;animation:fds-gsh 3s ease-in-out infinite alternate;animation-delay:var(--d,0s)}
.fds-flick{animation:fds-flick 2.2s linear infinite}
.fds-tail{animation:fds-tail 2.6s ease-in-out infinite}
.fds-hair{transform-box:fill-box;transform-origin:0 50%;animation:fds-hair .7s ease-in-out infinite}
.fds-kid{transform-origin:50% 100%;animation:fds-bounce .62s ease-in-out infinite alternate;animation-delay:var(--d,0s)}
.fds-bowa{animation:fds-bowa 5.2s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-kick{animation:fds-kick 4.2s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-punch{animation:fds-punch 3.4s ease-in-out infinite;animation-delay:var(--d,0s)}
.fds-gl,.fds-gr{animation:fds-guard 1.3s ease-in-out infinite}
.fds-shine{animation:fds-shine 4.4s ease-in-out infinite}
.fds-ball{animation:fds-ball 2.6s ease-in-out infinite alternate}
.fds-prop{animation:fds-prop .12s linear infinite}
.fds-flag{animation:fds-flag 2.2s ease-in-out infinite alternate;transform-origin:0 0}
.fds-flame{transform-box:fill-box;transform-origin:50% 100%;animation:fds-flame .45s ease-in-out infinite}
.fds-sweep{transform-origin:60px 58px;animation:fds-sweep 12s linear infinite}
.fds-cork,.fds-foam{transform-box:fill-box;transform-origin:center;animation:fds-cork 7s ease-out infinite}
.fds-foam{animation-name:fds-foam}
