/* Toolbelt Motion Engine Phase 1 — viewport entrance effects.
   Progressive enhancement: elements are visible unless JavaScript explicitly
   adds .tb-motion-pending after the engine has successfully initialised. */
[data-tb-motion="entrance"]{
  --tb-motion-duration:850ms;
  --tb-motion-delay:0ms;
  --tb-motion-distance:24px;
  --tb-motion-ease:cubic-bezier(.25,.46,.45,.94);
}
[data-tb-motion-speed="fast"]{--tb-motion-duration:600ms}
[data-tb-motion-speed="standard"]{--tb-motion-duration:850ms}
[data-tb-motion-speed="slow"]{--tb-motion-duration:1100ms}
[data-tb-motion-delay="none"]{--tb-motion-delay:0ms}
[data-tb-motion-delay="short"]{--tb-motion-delay:80ms}
[data-tb-motion-delay="medium"]{--tb-motion-delay:160ms}
[data-tb-motion-delay="long"]{--tb-motion-delay:240ms}

[data-tb-motion="entrance"].tb-motion-pending{
  opacity:0;
  will-change:opacity;
}
[data-tb-motion="entrance"][data-tb-motion-effect="fade-up"].tb-motion-pending{
  transform:translate3d(0,var(--tb-motion-distance),0);
  will-change:opacity,transform;
}
[data-tb-motion="entrance"].tb-motion-pending.is-motion-visible{
  opacity:1;
  transform:none;
  transition-property:opacity,transform;
  transition-duration:var(--tb-motion-duration),var(--tb-motion-duration);
  transition-delay:var(--tb-motion-delay),var(--tb-motion-delay);
  transition-timing-function:var(--tb-motion-ease),var(--tb-motion-ease);
}

@media(max-width:1023px){
  [data-tb-motion="entrance"]{--tb-motion-distance:18px}
}

@media(max-width:767px){
  [data-tb-motion="entrance"]{--tb-motion-distance:14px}
}

@media(prefers-reduced-motion:reduce){
  [data-tb-motion="entrance"],
  [data-tb-motion="entrance"].tb-motion-pending,
  [data-tb-motion="entrance"].tb-motion-pending.is-motion-visible{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
    animation:none!important;
    will-change:auto!important;
  }
}

/* v2.13.2 device overrides. JavaScript avoids initialising motion on disabled
   viewports; these rules are a defensive fallback so content cannot remain
   hidden if a viewport/device preference changes mid-session. */
@media(min-width:768px) and (max-width:1023px){
  body[data-tb-motion-tablet="off"] [data-tb-motion="entrance"],
  body[data-tb-motion-tablet="off"] [data-tb-motion="entrance"].tb-motion-pending,
  body[data-tb-motion-tablet="off"] [data-tb-motion="entrance"].tb-motion-pending.is-motion-visible{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
    animation:none!important;
    will-change:auto!important;
  }
}

@media(max-width:767px){
  body[data-tb-motion-mobile="off"] [data-tb-motion="entrance"],
  body[data-tb-motion-mobile="off"] [data-tb-motion="entrance"].tb-motion-pending,
  body[data-tb-motion-mobile="off"] [data-tb-motion="entrance"].tb-motion-pending.is-motion-visible{
    opacity:1!important;
    transform:none!important;
    transition:none!important;
    animation:none!important;
    will-change:auto!important;
  }
}

/* v2.16.23 — Image Parallax.
   Progressive enhancement: the crop/scale/transform is only applied after
   motion.js successfully initialises the target. */
[data-tb-parallax].tb-parallax-active .tb-parallax-image{
  transform:translate3d(0,var(--tb-parallax-y,0px),0) scale(var(--tb-parallax-scale,1.07));
  transform-origin:center center;
  backface-visibility:hidden;
  transition:none!important;
}
[data-tb-parallax="subtle"].tb-parallax-active{--tb-parallax-scale:1.08}
[data-tb-parallax="medium"].tb-parallax-active{--tb-parallax-scale:1.13}
[data-tb-parallax="strong"].tb-parallax-active{--tb-parallax-scale:1.16}
[data-tb-parallax].tb-parallax-near .tb-parallax-image{will-change:transform}

@media(max-width:1023px){
  [data-tb-parallax="subtle"].tb-parallax-active{--tb-parallax-scale:1.05}
  [data-tb-parallax="medium"].tb-parallax-active{--tb-parallax-scale:1.07}
  [data-tb-parallax="strong"].tb-parallax-active{--tb-parallax-scale:1.10}
}

@media(max-width:767px){
  [data-tb-parallax].tb-parallax-active{--tb-parallax-scale:1.035}
  [data-tb-parallax="strong"].tb-parallax-active{--tb-parallax-scale:1.05}
}

@media(prefers-reduced-motion:reduce){
  [data-tb-parallax].tb-parallax-active .tb-parallax-image{
    transform:none!important;
    transition:none!important;
    will-change:auto!important;
  }
}
