/* =========================================================
   WA Cushion — Atelier Motion Lux (last-sheet)
   Restores scroll reveals killed by readability locks,
   then adds cinematic presence: hero entrance, clip wipes,
   stagger, parallax hooks, section breath.
   Respects html.nofx / prefers-reduced-motion.
   ========================================================= */

html.has-motion:not(.nofx) {
  --lux-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --lux-ease-out: cubic-bezier(0.16, 1, 0.3, 1);
  --lux-dur: 1.05s;
  --lux-dur-fast: 0.7s;
}

/* ---------- Reveal restore (beat opacity/transform !important locks) ---------- */
html.has-motion:not(.nofx) .reveal:not(.is-visible),
html.has-motion:not(.nofx) h1.reveal:not(.is-visible),
html.has-motion:not(.nofx) h2.reveal:not(.is-visible),
html.has-motion:not(.nofx) h3.reveal:not(.is-visible),
html.has-motion:not(.nofx) h4.reveal:not(.is-visible),
html.has-motion:not(.nofx) p.reveal:not(.is-visible),
html.has-motion:not(.nofx) .lead.reveal:not(.is-visible),
html.has-motion:not(.nofx) .eyebrow.reveal:not(.is-visible),
html.has-motion:not(.nofx) a.reveal:not(.is-visible),
html.has-motion:not(.nofx) a.col-item.reveal:not(.is-visible),
html.has-motion:not(.nofx) a.pcat-cat.reveal:not(.is-visible),
html.has-motion:not(.nofx) .feat-card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .pcat-card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .pcat-feat-card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .gallery-item.reveal:not(.is-visible),
html.has-motion:not(.nofx) .pcat-gallery__item.reveal:not(.is-visible),
html.has-motion:not(.nofx) .why-strip__item.reveal:not(.is-visible),
html.has-motion:not(.nofx) .dl-feat-card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .news-journal__card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .news-launch__card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .about-mv__card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .about-custom__card.reveal:not(.is-visible),
html.has-motion:not(.nofx) .faq-item.reveal:not(.is-visible),
html.has-motion:not(.nofx) .home-stats__item.reveal:not(.is-visible),
html.has-motion:not(.nofx) li.reveal:not(.is-visible) {
  opacity: 0 !important;
  transform: translate3d(0, 2.4rem, 0) !important;
  filter: none !important;
  transition:
    opacity var(--lux-dur) var(--lux-ease),
    transform var(--lux-dur) var(--lux-ease) !important;
  transition-delay: var(--delay, 0ms) !important;
  will-change: opacity, transform;
}

html.has-motion:not(.nofx) .reveal--scale:not(.is-visible),
html.has-motion:not(.nofx) .feat-card.reveal--scale:not(.is-visible),
html.has-motion:not(.nofx) .pcat-card.reveal--scale:not(.is-visible) {
  transform: translate3d(0, 1.8rem, 0) scale(0.96) !important;
}

html.has-motion:not(.nofx) .reveal--fade:not(.is-visible) {
  transform: none !important;
  opacity: 0 !important;
}

html.has-motion:not(.nofx) .reveal--clip:not(.is-visible),
html.has-motion:not(.nofx) [data-reveal-media]:not(.is-in):not(.is-visible) {
  opacity: 1 !important;
  transform: scale(1.08) !important;
  clip-path: inset(12% 9% 12% 9%) !important;
  filter: brightness(0.88) !important;
  transition:
    clip-path 1.25s var(--lux-ease),
    transform 1.25s var(--lux-ease),
    filter 1.25s var(--lux-ease) !important;
  transition-delay: var(--delay, 0ms) !important;
}

html.has-motion:not(.nofx) .reveal.is-visible,
html.has-motion:not(.nofx) h1.reveal.is-visible,
html.has-motion:not(.nofx) h2.reveal.is-visible,
html.has-motion:not(.nofx) h3.reveal.is-visible,
html.has-motion:not(.nofx) h4.reveal.is-visible,
html.has-motion:not(.nofx) p.reveal.is-visible,
html.has-motion:not(.nofx) .lead.reveal.is-visible,
html.has-motion:not(.nofx) .eyebrow.reveal.is-visible,
html.has-motion:not(.nofx) a.reveal.is-visible,
html.has-motion:not(.nofx) a.col-item.reveal.is-visible,
html.has-motion:not(.nofx) a.pcat-cat.reveal.is-visible,
html.has-motion:not(.nofx) .feat-card.reveal.is-visible,
html.has-motion:not(.nofx) .pcat-card.reveal.is-visible,
html.has-motion:not(.nofx) .pcat-feat-card.reveal.is-visible,
html.has-motion:not(.nofx) .gallery-item.reveal.is-visible,
html.has-motion:not(.nofx) .pcat-gallery__item.reveal.is-visible,
html.has-motion:not(.nofx) .why-strip__item.reveal.is-visible,
html.has-motion:not(.nofx) .dl-feat-card.reveal.is-visible,
html.has-motion:not(.nofx) .news-journal__card.reveal.is-visible,
html.has-motion:not(.nofx) .news-launch__card.reveal.is-visible,
html.has-motion:not(.nofx) .about-mv__card.reveal.is-visible,
html.has-motion:not(.nofx) .about-custom__card.reveal.is-visible,
html.has-motion:not(.nofx) .faq-item.reveal.is-visible,
html.has-motion:not(.nofx) .home-stats__item.reveal.is-visible,
html.has-motion:not(.nofx) li.reveal.is-visible {
  opacity: 1 !important;
  transform: none !important;
  filter: none !important;
  clip-path: none;
  will-change: auto;
}

html.has-motion:not(.nofx) .reveal--clip.is-visible,
html.has-motion:not(.nofx) [data-reveal-media].is-in,
html.has-motion:not(.nofx) [data-reveal-media].is-visible {
  opacity: 1 !important;
  transform: none !important;
  clip-path: inset(0 0 0 0) !important;
  filter: none !important;
}

/* ---------- Split words ---------- */
html.has-motion:not(.nofx) .split-word {
  display: inline-block !important;
  overflow: hidden !important;
  vertical-align: bottom !important;
  margin-right: 0.16em !important;
}

html.has-motion:not(.nofx) .split-word__inner {
  display: inline-block !important;
  transform: translate3d(0, 115%, 0) !important;
  transition: transform 0.95s var(--lux-ease) !important;
  transition-delay: var(--wdelay, 0ms) !important;
}

html.has-motion:not(.nofx) .split-word.is-in .split-word__inner {
  transform: none !important;
}

/* ---------- Hero cinematic entrance ---------- */
html.has-motion:not(.nofx) .home-hero:not(.is-ready) .home-hero__copy > *,
html.has-motion:not(.nofx) .about-hero:not(.is-ready) .about-hero__content > *,
html.has-motion:not(.nofx) .product-hero:not(.is-ready) .product-hero__content > *,
html.has-motion:not(.nofx) .craft-hero:not(.is-ready) .craft-hero__content > *,
html.has-motion:not(.nofx) .news-hero:not(.is-ready) .news-hero__content > *,
html.has-motion:not(.nofx) .faq-hero:not(.is-ready) .faq-hero__content > *,
html.has-motion:not(.nofx) .dl-hero:not(.is-ready) .dl-hero__content > *,
html.has-motion:not(.nofx) .contact-hero:not(.is-ready) .contact-hero__content > *,
html.has-motion:not(.nofx) .pcat-hero:not(.is-ready) .pcat-hero__content > *,
html.has-motion:not(.nofx) [data-hero-content]:not(.is-hero-in) > * {
  opacity: 0 !important;
  transform: translate3d(0, 1.6rem, 0) !important;
}

html.has-motion:not(.nofx) .home-hero.is-ready .home-hero__copy > *,
html.has-motion:not(.nofx) .about-hero.is-ready .about-hero__content > *,
html.has-motion:not(.nofx) .product-hero.is-ready .product-hero__content > *,
html.has-motion:not(.nofx) .craft-hero.is-ready .craft-hero__content > *,
html.has-motion:not(.nofx) .news-hero.is-ready .news-hero__content > *,
html.has-motion:not(.nofx) .faq-hero.is-ready .faq-hero__content > *,
html.has-motion:not(.nofx) .dl-hero.is-ready .dl-hero__content > *,
html.has-motion:not(.nofx) .contact-hero.is-ready .contact-hero__content > *,
html.has-motion:not(.nofx) .pcat-hero.is-ready .pcat-hero__content > *,
html.has-motion:not(.nofx) [data-hero-content].is-hero-in > * {
  opacity: 1 !important;
  transform: none !important;
  transition:
    opacity 1s var(--lux-ease),
    transform 1s var(--lux-ease) !important;
}

html.has-motion:not(.nofx) .home-hero.is-ready .home-hero__copy > *:nth-child(1),
html.has-motion:not(.nofx) [data-hero-content].is-hero-in > *:nth-child(1) { transition-delay: 0.08s !important; }
html.has-motion:not(.nofx) .home-hero.is-ready .home-hero__copy > *:nth-child(2),
html.has-motion:not(.nofx) [data-hero-content].is-hero-in > *:nth-child(2) { transition-delay: 0.22s !important; }
html.has-motion:not(.nofx) .home-hero.is-ready .home-hero__copy > *:nth-child(3),
html.has-motion:not(.nofx) [data-hero-content].is-hero-in > *:nth-child(3) { transition-delay: 0.38s !important; }
html.has-motion:not(.nofx) .home-hero.is-ready .home-hero__copy > *:nth-child(4),
html.has-motion:not(.nofx) [data-hero-content].is-hero-in > *:nth-child(4) { transition-delay: 0.52s !important; }
html.has-motion:not(.nofx) .home-hero.is-ready .home-hero__copy > *:nth-child(5),
html.has-motion:not(.nofx) [data-hero-content].is-hero-in > *:nth-child(5) { transition-delay: 0.64s !important; }

html.has-motion:not(.nofx) .about-hero.is-ready .about-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .product-hero.is-ready .product-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .craft-hero.is-ready .craft-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .news-hero.is-ready .news-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .faq-hero.is-ready .faq-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .dl-hero.is-ready .dl-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .contact-hero.is-ready .contact-hero__content > *:nth-child(1),
html.has-motion:not(.nofx) .pcat-hero.is-ready .pcat-hero__content > *:nth-child(1) { transition-delay: 0.12s !important; }

html.has-motion:not(.nofx) .about-hero.is-ready .about-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .product-hero.is-ready .product-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .craft-hero.is-ready .craft-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .news-hero.is-ready .news-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .faq-hero.is-ready .faq-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .dl-hero.is-ready .dl-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .contact-hero.is-ready .contact-hero__content > *:nth-child(2),
html.has-motion:not(.nofx) .pcat-hero.is-ready .pcat-hero__content > *:nth-child(2) { transition-delay: 0.28s !important; }

html.has-motion:not(.nofx) .about-hero.is-ready .about-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .product-hero.is-ready .product-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .craft-hero.is-ready .craft-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .news-hero.is-ready .news-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .faq-hero.is-ready .faq-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .dl-hero.is-ready .dl-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .contact-hero.is-ready .contact-hero__content > *:nth-child(3),
html.has-motion:not(.nofx) .pcat-hero.is-ready .pcat-hero__content > *:nth-child(3) { transition-delay: 0.44s !important; }

html.has-motion:not(.nofx) .about-hero.is-ready .about-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .product-hero.is-ready .product-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .craft-hero.is-ready .craft-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .news-hero.is-ready .news-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .faq-hero.is-ready .faq-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .dl-hero.is-ready .dl-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .contact-hero.is-ready .contact-hero__content > *:nth-child(4),
html.has-motion:not(.nofx) .pcat-hero.is-ready .pcat-hero__content > *:nth-child(4) { transition-delay: 0.58s !important; }

/* Hero media slow drift */
html.has-motion:not(.nofx) .home-hero__media,
html.has-motion:not(.nofx) .about-hero__media,
html.has-motion:not(.nofx) .product-hero__media,
html.has-motion:not(.nofx) .craft-hero__media,
html.has-motion:not(.nofx) .news-hero__media,
html.has-motion:not(.nofx) .faq-hero__media,
html.has-motion:not(.nofx) .dl-hero__media,
html.has-motion:not(.nofx) .contact-hero__media,
html.has-motion:not(.nofx) .pcat-hero__media {
  animation: wa-lux-ken 22s var(--lux-ease-out) both !important;
  transform-origin: center center !important;
}

@keyframes wa-lux-ken {
  0% { transform: scale(1.12) translate3d(0, 1.5%, 0); }
  100% { transform: scale(1) translate3d(0, 0, 0); }
}

/* ---------- Eyebrow line draw ---------- */
html.has-motion:not(.nofx) .eyebrow::after {
  transform: scaleX(0) !important;
  transform-origin: left center !important;
  transition: transform 0.9s var(--lux-ease) 0.15s !important;
}

html.has-motion:not(.nofx) .reveal.is-visible .eyebrow::after,
html.has-motion:not(.nofx) .eyebrow.reveal.is-visible::after,
html.has-motion:not(.nofx) .home-section-head.is-visible .eyebrow::after,
html.has-motion:not(.nofx) .is-ready .eyebrow::after,
html.has-motion:not(.nofx) [data-hero-content].is-hero-in .eyebrow::after {
  transform: scaleX(1) !important;
}

/* ---------- Section head underline breath ---------- */
html.has-motion:not(.nofx) .home-section-head h2,
html.has-motion:not(.nofx) .pcat-head h2,
html.has-motion:not(.nofx) .block-head h2 {
  background-image: linear-gradient(currentColor, currentColor) !important;
  background-size: 0% 1px !important;
  background-position: left calc(100% - 0.08em) !important;
  background-repeat: no-repeat !important;
  transition: background-size 1.1s var(--lux-ease) 0.2s !important;
}

html.has-motion:not(.nofx) .home-section-head.is-visible h2,
html.has-motion:not(.nofx) .pcat-head.is-visible h2,
html.has-motion:not(.nofx) .block-head.is-visible h2,
html.has-motion:not(.nofx) h2.reveal.is-visible {
  background-size: min(4.5rem, 28%) 1px !important;
}

/* ---------- Soft parallax target ---------- */
html.has-motion:not(.nofx) [data-parallax],
html.has-motion:not(.nofx) .lux-parallax {
  will-change: transform;
  transition: transform 0.15s linear !important;
}

/* ---------- CTA band rise ---------- */
html.has-motion:not(.nofx) .home-cta:not(.is-in-view),
html.has-motion:not(.nofx) .about-cta:not(.is-in-view),
html.has-motion:not(.nofx) .craft-cta:not(.is-in-view),
html.has-motion:not(.nofx) .pcat-cta:not(.is-in-view),
html.has-motion:not(.nofx) .dl-cta:not(.is-in-view),
html.has-motion:not(.nofx) .faq-help:not(.is-in-view),
html.has-motion:not(.nofx) .site-cta:not(.is-in-view) {
  opacity: 0.35 !important;
  transform: translate3d(0, 1.5rem, 0) !important;
  transition: opacity 1s var(--lux-ease), transform 1s var(--lux-ease) !important;
}

html.has-motion:not(.nofx) .home-cta.is-in-view,
html.has-motion:not(.nofx) .about-cta.is-in-view,
html.has-motion:not(.nofx) .craft-cta.is-in-view,
html.has-motion:not(.nofx) .pcat-cta.is-in-view,
html.has-motion:not(.nofx) .dl-cta.is-in-view,
html.has-motion:not(.nofx) .faq-help.is-in-view,
html.has-motion:not(.nofx) .site-cta.is-in-view {
  opacity: 1 !important;
  transform: none !important;
}

/* ---------- Stats pop ---------- */
html.has-motion:not(.nofx) .home-stats__item.reveal.is-visible strong,
html.has-motion:not(.nofx) .ed-figures__item.is-visible strong,
html.has-motion:not(.nofx) [data-count].is-counted {
  animation: wa-lux-num 0.85s var(--lux-ease) both !important;
}

@keyframes wa-lux-num {
  0% { transform: translate3d(0, 0.55rem, 0); opacity: 0.35; }
  60% { transform: translate3d(0, -0.12rem, 0); opacity: 1; }
  100% { transform: none; opacity: 1; }
}

/* ---------- Footer soft enter ---------- */
html.has-motion:not(.nofx) .site-footer {
  transition: opacity 0.8s var(--lux-ease), transform 0.8s var(--lux-ease) !important;
}

html.has-motion:not(.nofx) .site-footer:not(.is-in-view) {
  opacity: 0.55 !important;
  transform: translate3d(0, 1rem, 0) !important;
}

html.has-motion:not(.nofx) .site-footer.is-in-view {
  opacity: 1 !important;
  transform: none !important;
}

/* ---------- Scroll progress polish ---------- */
html.has-motion:not(.nofx) .scroll-progress {
  transition: opacity 0.45s ease, transform 0.45s var(--lux-ease) !important;
}

html.has-motion:not(.nofx) .scroll-progress.is-visible {
  transform: translate3d(0, 0, 0) scale(1) !important;
}

/* ---------- Link arrow micro-presence ---------- */
html.has-motion:not(.nofx) .link-arrow,
html.has-motion:not(.nofx) .hero-cta {
  transition:
    transform 0.45s var(--lux-ease),
    letter-spacing 0.45s var(--lux-ease),
    color 0.35s ease,
    background-color 0.35s ease,
    border-color 0.35s ease,
    box-shadow 0.45s var(--lux-ease) !important;
}

@media (hover: hover) and (pointer: fine) {
  html.has-motion:not(.nofx) .link-arrow:hover {
    letter-spacing: 0.04em !important;
  }
}

/* ---------- Quote / craft media alive ---------- */
html.has-motion:not(.nofx) .quote-band__media.is-alive,
html.has-motion:not(.nofx) .home-craft-band__media.is-alive {
  animation: wa-lux-ken-slow 28s ease-out both !important;
}

@keyframes wa-lux-ken-slow {
  0% { transform: scale(1.1); }
  100% { transform: scale(1); }
}

/* ---------- Reduced motion / nofx ---------- */
@media (prefers-reduced-motion: reduce) {
  html.has-motion:not(.fx-force) .reveal,
  html.has-motion:not(.fx-force) .reveal:not(.is-visible),
  html.has-motion:not(.fx-force) [data-reveal-media],
  html.has-motion:not(.fx-force) .home-hero__copy > *,
  html.has-motion:not(.fx-force) .site-footer,
  html.has-motion:not(.fx-force) .home-cta,
  html.has-motion:not(.fx-force) .about-cta,
  html.has-motion:not(.fx-force) .home-hero__media {
    opacity: 1 !important;
    transform: none !important;
    clip-path: none !important;
    filter: none !important;
    animation: none !important;
    transition: none !important;
  }
}

html.nofx .reveal,
html.nofx .reveal:not(.is-visible),
html.nofx [data-reveal-media],
html.nofx .home-hero__copy > *,
html.nofx .home-hero__media,
html.nofx .site-footer {
  opacity: 1 !important;
  transform: none !important;
  clip-path: none !important;
  filter: none !important;
  animation: none !important;
}
