/* PISC motion — scroll reveal, hero sequence, stagger, CTA */

:root {
  --pisc-motion-duration: 0.95s;
  --pisc-motion-duration-hero: 1.05s;
  --pisc-motion-duration-cta: 1.1s;
  --pisc-motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --pisc-motion-ease-out: cubic-bezier(0.16, 1, 0.48, 1);
  --pisc-motion-distance: 40px;
  --pisc-motion-distance-hero: 32px;
  --pisc-motion-stagger: 140ms;
}

/* No-JS: content stays visible */
html:not(.pisc-motion-js) :where(.pisc-grc-page, .pisc-service-page) .reveal {
  opacity: 1;
  transform: none;
  filter: none;
}

html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal:not(.visible) {
  opacity: 0;
  transform: translate3d(0, var(--pisc-motion-distance), 0);
  filter: blur(4px);
  transition:
    opacity var(--pisc-motion-duration) var(--pisc-motion-ease),
    transform var(--pisc-motion-duration) var(--pisc-motion-ease-out),
    filter calc(var(--pisc-motion-duration) * 0.85) var(--pisc-motion-ease);
  will-change: opacity, transform, filter;
}

html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal.visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
  filter: blur(0);
}

/* Hero — slower, clearer sequence */
html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-hero:not(.visible) {
  transform: translate3d(0, var(--pisc-motion-distance-hero), 0);
  filter: blur(3px);
}

html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-hero.visible {
  transition-duration: var(--pisc-motion-duration-hero);
}

/* Section header bits (eyebrow → title → line → intro) */
html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-header:not(.visible) {
  transform: translate3d(0, 24px, 0);
  filter: blur(2px);
}

html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-header.visible {
  transition-duration: 0.8s;
}

/* Cards inside sections */
html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-card:not(.visible) {
  transform: translate3d(0, 28px, 0) scale(0.98);
  filter: blur(2px);
}

html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-card.visible {
  transition-duration: 0.85s;
  transform: translate3d(0, 0, 0) scale(1);
}

/* CTA banner */
html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .cta-banner.reveal:not(.visible) {
  opacity: 0;
  transform: translate3d(0, 28px, 0) scale(0.96);
  filter: blur(3px);
}

html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .cta-banner.reveal.visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  filter: blur(0);
  transition:
    opacity var(--pisc-motion-duration-cta) var(--pisc-motion-ease),
    transform var(--pisc-motion-duration-cta) var(--pisc-motion-ease-out),
    filter 0.75s var(--pisc-motion-ease);
}

/* Hero accent — gentle pulse */
html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .hero__accent-bar {
  animation: pisc-hero-accent 10s ease-in-out infinite alternate;
}

@keyframes pisc-hero-accent {
  from { opacity: 0.3; }
  to { opacity: 0.7; }
}

/* FAQ */
html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .faq-item[open] .faq-item__answer {
  animation: pisc-faq-open 0.55s var(--pisc-motion-ease);
}

@keyframes pisc-faq-open {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal,
  html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-hero,
  html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-header,
  html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .reveal-card,
  html.pisc-motion-ready :where(.pisc-grc-page, .pisc-service-page) .cta-banner.reveal {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    transition: none !important;
    animation: none !important;
  }

  :where(.pisc-grc-page, .pisc-service-page) .hero__accent-bar {
    animation: none !important;
  }
}
