/* Extra motion layer, loaded on every public page */
.fx-progress{position:fixed;left:0;top:0;z-index:200;height:3px;width:100%;transform-origin:0 50%;transform:scaleX(var(--p,0));background:linear-gradient(90deg,var(--g),#d6ff9e);box-shadow:0 0 12px rgba(124,255,46,.7);pointer-events:none}

/* Headings: words rise one after another */
.fx-split .fw{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.fx-split .fw>span{display:inline-block;transform:translateY(105%) rotate(4deg);opacity:0;transition:transform .9s cubic-bezier(.2,.8,.2,1),opacity .6s;transition-delay:calc(var(--d)*55ms)}
.fx-split.fx-in .fw>span{transform:none;opacity:1}

/* Images wipe in */
.fx-wipe{clip-path:inset(0 0 100% 0 round 24px);transition:clip-path 1.2s cubic-bezier(.7,0,.2,1)}
.fx-wipe.fx-in{clip-path:inset(0 0 0 0 round 24px)}
.fx-wipe img{transform:scale(1.18);transition:transform 1.6s cubic-bezier(.2,.8,.2,1)}
.fx-wipe.fx-in img{transform:scale(1)}

/* Cards pop in */
.fx-pop{opacity:0;transform:translateY(26px) scale(.96);transition:opacity .7s,transform .8s cubic-bezier(.34,1.3,.5,1);transition-delay:calc(var(--d,0)*70ms)}
.fx-pop.fx-in{opacity:1;transform:none}

/* Light that follows the finger or the mouse */
.fx-glow{position:absolute;inset:0;z-index:3;mix-blend-mode:screen;border-radius:inherit;pointer-events:none;opacity:0;transition:opacity .4s;background:radial-gradient(320px circle at var(--gx,50%) var(--gy,50%),rgba(124,255,46,.14),transparent 60%)}
.fx-spot:hover>.fx-glow,.fx-spot.fx-touch>.fx-glow{opacity:1}

/* Buttons: shine and tap ripple */
.btn{position:relative;overflow:hidden;isolation:isolate;translate:var(--tx,0) var(--ty,0)}
.btn::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.5) 50%,transparent 65%);transform:translateX(-120%);transition:transform .8s cubic-bezier(.2,.8,.2,1);pointer-events:none}
.btn:hover::before{transform:translateX(120%)}
.btn--ghost::before{background:linear-gradient(110deg,transparent 35%,rgba(124,255,46,.25) 50%,transparent 65%)}
.fx-ripple{position:absolute;z-index:-1;border-radius:50%;background:rgba(255,255,255,.35);transform:scale(0);animation:fxRipple .65s ease-out forwards;pointer-events:none}
.btn--ghost .fx-ripple{background:rgba(124,255,46,.3)}
@keyframes fxRipple{to{transform:scale(1);opacity:0}}
.btn:not(.btn--ghost){animation:fxBreath 3.2s ease-in-out infinite}
@keyframes fxBreath{0%,100%{box-shadow:0 0 0 0 rgba(124,255,46,0)}50%{box-shadow:0 0 26px -2px rgba(124,255,46,.45)}}
.nav .btn,.stickybuy .btn,.cart .btn{animation:none}

/* Product page: zoom on photo */
@media (hover:hover) and (pointer:fine){
  .gal__main{cursor:zoom-in}
  .gal__track img{transition:transform .45s cubic-bezier(.2,.8,.2,1)}
  .gal__main.fx-zoom .gal__track img{transform:scale(1.7);transform-origin:var(--zx,50%) var(--zy,50%)}
}

/* Floating scooter in the empty cart and section icons */
.cart__empty svg{animation:fxFloat 3s ease-in-out infinite}
@keyframes fxFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}

/* Price tick when a card shows */
.fx-in .sprice,.fx-in .prod__price{animation:fxPrice .9s cubic-bezier(.34,1.5,.5,1) both;animation-delay:.25s}
@keyframes fxPrice{from{opacity:0;transform:translateY(10px) scale(.9)}to{opacity:1;transform:none}}

/* Back to top / nav underline */
.nav__links a{position:relative}
.nav__links a::after{content:"";position:absolute;left:0;right:0;bottom:-6px;height:2px;border-radius:2px;background:var(--g);transform:scaleX(0);transform-origin:left;transition:transform .35s cubic-bezier(.2,.8,.2,1)}
.nav__links a:hover::after,.nav__links a.is-on::after{transform:scaleX(1)}
.nav__links a.is-on{color:var(--ink)}

@media (prefers-reduced-motion:reduce){
  .fx-split .fw>span,.fx-pop{transform:none!important;opacity:1!important;transition:none!important}
  .fx-wipe{clip-path:none!important;transition:none}
  .fx-wipe img{transform:none!important}
  .btn,.cart__empty svg,.fx-in .sprice,.fx-in .prod__price{animation:none!important}
  .fx-progress{display:none}
}

/* Netlify badge hidden so it never covers the cart buttons */
#nl-badge-frame{display:none!important}
