/* Smooth scroll (Lenis) — all pages */

html.lenis,
html.lenis body {
  height: auto;
}

.lenis.lenis-smooth {
  scroll-behavior: auto !important;
}

.lenis.lenis-smooth [data-lenis-prevent] {
  overscroll-behavior: contain;
}

.lenis.lenis-stopped {
  overflow: hidden;
}

.lenis.lenis-smooth iframe {
  pointer-events: none;
}

body.is-intro-active .page-shell {
  opacity: 0;
  transition: opacity 0.35s ease;
}

body:not(.is-intro-active) .page-shell {
  opacity: 1;
  transition: opacity 0.35s ease;
}

@media (prefers-reduced-motion: reduce) {
  body.is-intro-active .page-shell {
    opacity: 1;
    transition: none;
  }
}

/* Scroll reveal — unified fade-up (cards, sections, legacy .reveal) */
.reveal-stagger,
.reveal,
.motion-fade-up {
  opacity: 0;
  transform: translate3d(0, 28px, 0);
  transition:
    opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1) calc(var(--stagger-index, 0) * 0.07s),
    transform 0.65s cubic-bezier(0.22, 1, 0.36, 1) calc(var(--stagger-index, 0) * 0.07s);
}

.reveal-stagger.is-visible,
.reveal.is-visible,
.motion-fade-up.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.reveal,
.motion-fade-up {
  --stagger-index: 0;
}

.motion-page-hero .motion-hero-media.reveal-stagger {
  transform: translate3d(40px, 20px, 0) scale(0.92);
  transition-duration: 0.85s;
}

.motion-page-hero .motion-hero-media.reveal-stagger.is-visible {
  transform: translate3d(0, 0, 0) scale(1);
}

.motion-interactive.is-visible {
  transition:
    opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1) calc(var(--stagger-index, 0) * 0.07s),
    transform 0.65s cubic-bezier(0.22, 1, 0.36, 1) calc(var(--stagger-index, 0) * 0.07s),
    box-shadow 0.35s ease,
    border-color 0.35s ease;
}

.motion-card.is-visible:hover,
.motion-interactive.is-visible.motion-card:hover {
  transform: translate3d(0, -6px, 0);
}

.capability-card--showcase.motion-card.is-visible {
  overflow: hidden;
}

.capability-card--showcase.motion-card.is-visible::after {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 2;
  pointer-events: none;
  background: linear-gradient(
    105deg,
    transparent 40%,
    rgba(255, 255, 255, 0.12) 50%,
    transparent 60%
  );
  transform: translateX(-120%);
  transition: transform 0.65s ease;
}

.capability-card--showcase.motion-card.is-visible:hover::after {
  transform: translateX(120%);
}

.visual-strip figure.motion-interactive.is-visible:hover {
  transform: translate3d(0, -5px, 0);
}

/* === Card / tile image hover zoom (all pages, same as Content Lab strip) === */
:root {
  --card-media-zoom: 1.14;
  --card-media-zoom-press: 1.06;
  --card-media-zoom-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --card-media-zoom-duration: 0.65s;
}

.brand-image-card,
.journal-card-media,
.featured-card-media,
.brand-spotlight__media,
.cap-partners__media,
.visual-strip figure {
  overflow: hidden;
}

.brand-image-card,
.visual-strip figure,
.journal-card-media,
.featured-card-media {
  cursor: pointer;
}

.card-media-zoom-target,
.visual-strip figure img,
.brand-image-card img,
.journal-card-media img,
.featured-card-media img,
.brand-spotlight__media img,
.cap-partners__media img {
  transform: scale(1);
  transition: transform var(--card-media-zoom-duration) var(--card-media-zoom-ease);
  will-change: transform;
}

.capability-card--showcase .capability-card__bg {
  transform: scale(1);
  transform-origin: center center;
  transition: transform var(--card-media-zoom-duration) var(--card-media-zoom-ease);
}

.visual-strip figure:hover img,
.brand-image-card:hover img,
.journal-card:hover .journal-card-media img,
.featured-card:hover .featured-card-media img,
.brand-spotlight:hover .brand-spotlight__media img,
.cap-partners__media:hover img,
.capability-card--showcase:hover .capability-card__bg {
  transform: scale(var(--card-media-zoom));
}

.visual-strip figure:active img,
.brand-image-card:active img,
.journal-card:active .journal-card-media img,
.featured-card:active .featured-card-media img,
.brand-spotlight:active .brand-spotlight__media img,
.cap-partners__media:active img,
.capability-card--showcase:active .capability-card__bg {
  transform: scale(var(--card-media-zoom-press));
  transition-duration: 0.2s;
}

.visual-strip figcaption {
  transition:
    color 0.35s ease,
    transform 0.35s var(--card-media-zoom-ease);
}

.visual-strip figure:hover figcaption {
  transform: translateY(3px);
}

/* Parallax heroes use inline transform on img — zoom the frame instead */
.motion-parallax-wrap:not(.motion-hero-media):hover {
  transform: scale(1.03);
  transition: transform var(--card-media-zoom-duration) var(--card-media-zoom-ease);
}

.story-media,
.founder-image,
.founder-dark-media {
  overflow: hidden;
  transition: transform var(--card-media-zoom-duration) var(--card-media-zoom-ease);
}

.method-flow .motion-interactive.is-visible.step:hover {
  transform: translate3d(0, -4px, 0) scale(1.05);
}

/* Flow arrows — step connectors */
.candi-step__arrow,
.method-flow b,
.cap-process__arrow {
  opacity: 0;
  transform: scale(0.6);
  transition:
    opacity 0.4s ease,
    transform 0.45s cubic-bezier(0.22, 1, 0.36, 1);
}

.is-flow-active .candi-step__arrow,
.is-flow-active .method-flow b,
.is-flow-active .cap-process__arrow {
  opacity: 1;
  transform: scale(1);
}

.is-flow-active .candi-step__arrow:nth-of-type(1),
.is-flow-active .method-flow b:nth-of-type(1),
.is-flow-active .cap-process__arrow:nth-of-type(1) {
  transition-delay: 0.35s;
}

.is-flow-active .candi-step__arrow:nth-of-type(2),
.is-flow-active .method-flow b:nth-of-type(2),
.is-flow-active .cap-process__arrow:nth-of-type(2) {
  transition-delay: 0.55s;
}

.is-flow-active .candi-step__arrow:nth-of-type(3),
.is-flow-active .method-flow b:nth-of-type(3),
.is-flow-active .cap-process__arrow:nth-of-type(3) {
  transition-delay: 0.75s;
}

.is-flow-active .candi-step__arrow:nth-of-type(4),
.is-flow-active .method-flow b:nth-of-type(4),
.is-flow-active .cap-process__arrow:nth-of-type(4) {
  transition-delay: 0.95s;
}

.is-flow-active .candi-step__arrow:nth-of-type(5),
.is-flow-active .method-flow b:nth-of-type(5),
.is-flow-active .cap-process__arrow:nth-of-type(5) {
  transition-delay: 1.15s;
}

@keyframes flow-arrow-nudge {
  0%,
  100% {
    transform: translateX(0) scale(1);
  }
  50% {
    transform: translateX(4px) scale(1.05);
  }
}

.is-flow-active .method-flow b,
.is-flow-active .candi-step__arrow,
.is-flow-active .cap-process__arrow {
  animation: flow-arrow-nudge 2.4s ease-in-out infinite;
}

/* Capabilities bands + icon tiles — zoom icons like image cards */
.cap-expertise__item .line-icon,
.cap-process__step .line-icon,
.brands-values__item .line-icon,
.cap-segment .line-icon,
.candi-step .line-icon,
.academy-why-card .line-icon,
.mvv-card .line-icon {
  transform: scale(1);
  transform-origin: center;
  transition: transform var(--card-media-zoom-duration) var(--card-media-zoom-ease);
}

.cap-expertise__item:hover .line-icon,
.cap-process__step:hover .line-icon,
.brands-values__item:hover .line-icon,
.cap-segment:hover .line-icon,
.candi-step:hover .line-icon,
.academy-why-card:hover .line-icon,
.mvv-card:hover .line-icon {
  transform: scale(var(--card-media-zoom));
}

.cap-expertise__item:active .line-icon,
.cap-process__step:active .line-icon,
.brands-values__item:active .line-icon,
.cap-segment:active .line-icon,
.candi-step:active .line-icon,
.academy-why-card:active .line-icon,
.mvv-card:active .line-icon {
  transform: scale(var(--card-media-zoom-press));
  transition-duration: 0.2s;
}

.cap-process__step.motion-card.is-visible:hover,
.cap-expertise__item.motion-card.is-visible:hover {
  transform: translate3d(0, -6px, 0);
}

.cap-band.is-section-visible .cap-process,
.cap-band.is-section-visible .cap-expertise {
  animation: build-grid-settle 0.85s cubic-bezier(0.22, 1, 0.36, 1) 0.12s both;
}

/* Section accents */
.cap-band.is-section-visible .cap-band__intro,
.academy-band.is-section-visible .academy-band-inner,
.story-section.is-section-visible,
.mvv-section.is-section-visible,
.capabilities-section--showcase.is-section-visible .capabilities-header {
  animation: section-intro-settle 0.8s cubic-bezier(0.22, 1, 0.36, 1) both;
}

@keyframes section-intro-settle {
  from {
    opacity: 0.85;
    transform: translate3d(0, 12px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

.footer-cta.is-section-visible {
  animation: footer-cta-glow 1.2s ease both;
}

@keyframes footer-cta-glow {
  from {
    opacity: 0.88;
    transform: translate3d(0, 16px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

.home-candi-method.is-section-visible .home-candi-method__flow {
  animation: build-grid-settle 0.85s cubic-bezier(0.22, 1, 0.36, 1) 0.1s both;
}

.method--brand-journey.is-section-visible .method-flow {
  animation: build-grid-settle 0.85s cubic-bezier(0.22, 1, 0.36, 1) 0.12s both;
}

@keyframes build-grid-settle {
  from {
    opacity: 0.9;
    transform: translate3d(0, 10px, 0);
  }
  to {
    opacity: 1;
    transform: translate3d(0, 0, 0);
  }
}

/* Buttons & CTAs */
.motion-pressable {
  transition:
    transform 0.25s cubic-bezier(0.22, 1, 0.36, 1),
    box-shadow 0.25s ease,
    background-color 0.25s ease,
    border-color 0.25s ease,
    color 0.25s ease;
}

.motion-pressable:hover {
  transform: translate3d(0, -2px, 0);
}

.motion-pressable:active {
  transform: translate3d(0, 0, 0) scale(0.98);
}

.motion-pressable[class*="cta"]:hover::after,
.inline-cta.motion-pressable:hover,
.capability-card__cta.motion-pressable:hover {
  letter-spacing: 0.02em;
}

.contact-item.motion-interactive.is-visible:hover .contact-icon {
  transform: scale(1.08);
  transition: transform 0.3s ease;
}

.contact-icon {
  transition: transform 0.3s ease;
}

@media (prefers-reduced-motion: reduce) {
  .reveal-stagger,
  .reveal,
  .motion-fade-up {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .motion-interactive.is-visible:hover,
  .motion-pressable:hover,
  .motion-pressable:active {
    transform: none;
  }

  .visual-strip figure:hover img,
  .visual-strip figure:active img,
  .brand-image-card:hover img,
  .brand-image-card:active img,
  .journal-card:hover .journal-card-media img,
  .journal-card:active .journal-card-media img,
  .featured-card:hover .featured-card-media img,
  .featured-card:active .featured-card-media img,
  .brand-spotlight:hover .brand-spotlight__media img,
  .brand-spotlight:active .brand-spotlight__media img,
  .cap-partners__media:hover img,
  .cap-partners__media:active img,
  .capability-card--showcase:hover .capability-card__bg,
  .capability-card--showcase:active .capability-card__bg,
  .cap-expertise__item:hover .line-icon,
  .cap-expertise__item:active .line-icon,
  .cap-process__step:hover .line-icon,
  .cap-process__step:active .line-icon,
  .brands-values__item:hover .line-icon,
  .brands-values__item:active .line-icon,
  .cap-segment:hover .line-icon,
  .cap-segment:active .line-icon,
  .motion-parallax-wrap:hover,
  .story-media:hover,
  .founder-image:hover,
  .founder-dark-media:hover {
    transform: none;
  }

  .candi-step__arrow,
  .method-flow b,
  .cap-process__arrow {
    opacity: 1;
    transform: none;
    animation: none;
    transition: none;
  }

  .cap-band.is-section-visible .cap-band__intro,
  .academy-band.is-section-visible .academy-band-inner,
  .story-section.is-section-visible,
  .mvv-section.is-section-visible,
  .capabilities-section--showcase.is-section-visible .capabilities-header,
  .cap-band.is-section-visible .cap-process,
  .cap-band.is-section-visible .cap-expertise,
  .footer-cta.is-section-visible,
  .home-candi-method.is-section-visible .home-candi-method__flow,
  .method--brand-journey.is-section-visible .method-flow {
    animation: none;
  }

  .capability-card--showcase.motion-card.is-visible::after {
    display: none;
  }
}
