/* ============================================================
   Advanced section animations — RSM
   ============================================================ */

:root {
  --motion-duration: 0.9s;
  --motion-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* ----- Enhanced reveal variants ----- */
.reveal,
.reveal-left,
.reveal-right,
.reveal-scale {
  will-change: transform, opacity, filter;
}

.reveal {
  transform: translateY(48px);
  filter: blur(4px);
  transition:
    opacity var(--motion-duration) var(--motion-ease),
    transform var(--motion-duration) var(--motion-ease),
    filter calc(var(--motion-duration) * 0.85) var(--motion-ease);
}

.reveal.revealed {
  filter: blur(0);
}

.reveal-left {
  transform: translateX(-64px) rotate(-0.6deg);
  filter: blur(3px);
}

.reveal-right {
  transform: translateX(64px) rotate(0.6deg);
  filter: blur(3px);
}

.reveal-left.revealed,
.reveal-right.revealed {
  filter: blur(0);
  transform: none;
}

.reveal-scale {
  transform: scale(0.92) translateY(24px);
  filter: blur(2px);
}

.reveal-scale.revealed {
  filter: blur(0);
}

/* Clip reveal for media blocks */
.reveal-clip {
  opacity: 0;
  clip-path: inset(12% 12% 12% 12% round 18px);
  transform: scale(1.04);
  transition:
    opacity 1s var(--motion-ease),
    clip-path 1.1s var(--motion-ease),
    transform 1.1s var(--motion-ease);
}

.reveal-clip.revealed {
  opacity: 1;
  clip-path: inset(0 0 0 0 round 18px);
  transform: scale(1);
}

/* Stagger container: children animate in sequence */
.stagger-children > * {
  opacity: 0;
  transform: translateY(28px);
  transition:
    opacity 0.7s var(--motion-ease),
    transform 0.7s var(--motion-ease);
}

.stagger-children.is-inview > *:nth-child(1) { transition-delay: 0.05s; }
.stagger-children.is-inview > *:nth-child(2) { transition-delay: 0.12s; }
.stagger-children.is-inview > *:nth-child(3) { transition-delay: 0.19s; }
.stagger-children.is-inview > *:nth-child(4) { transition-delay: 0.26s; }
.stagger-children.is-inview > *:nth-child(5) { transition-delay: 0.33s; }
.stagger-children.is-inview > *:nth-child(6) { transition-delay: 0.4s; }
.stagger-children.is-inview > *:nth-child(7) { transition-delay: 0.47s; }
.stagger-children.is-inview > *:nth-child(8) { transition-delay: 0.54s; }
.stagger-children.is-inview > *:nth-child(9) { transition-delay: 0.61s; }
.stagger-children.is-inview > *:nth-child(10) { transition-delay: 0.68s; }
.stagger-children.is-inview > *:nth-child(11) { transition-delay: 0.75s; }
.stagger-children.is-inview > *:nth-child(12) { transition-delay: 0.82s; }

.stagger-children.is-inview > * {
  opacity: 1;
  transform: none;
}

/* Section ambient enter */
.section-motion {
  position: relative;
}

.section-motion::before {
  content: '';
  position: absolute;
  left: 50%;
  top: 0;
  width: min(180px, 40%);
  height: 2px;
  background: linear-gradient(90deg, transparent, var(--clr-accent), transparent);
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  transition: transform 1s var(--motion-ease);
  opacity: 0.85;
  pointer-events: none;
  z-index: 2;
}

.section-motion.is-inview::before {
  transform: translateX(-50%) scaleX(1);
}

/* Hero text line cascade */
.hero-title.split-ready .line {
  display: block;
  overflow: hidden;
}

.hero-title.split-ready .line > span {
  display: inline-block;
  transform: translateY(110%);
  opacity: 0;
  transition:
    transform 0.95s var(--motion-ease),
    opacity 0.7s ease;
}

.hero-title.split-ready.is-shown .line > span {
  transform: translateY(0);
  opacity: 1;
}

.hero-title.split-ready .line:nth-child(1) > span { transition-delay: 0.1s; }
.hero-title.split-ready .line:nth-child(2) > span { transition-delay: 0.22s; }

/* Floating decorative orbs in dark sections */
.motion-orb {
  position: absolute;
  border-radius: 50%;
  pointer-events: none;
  filter: blur(40px);
  opacity: 0.35;
  animation: orb-drift 14s ease-in-out infinite alternate;
  z-index: 0;
}

.motion-orb--a {
  width: 220px;
  height: 220px;
  background: #c96a3c;
  top: 10%;
  left: -40px;
}

.motion-orb--b {
  width: 280px;
  height: 280px;
  background: #2f8f7b;
  bottom: 5%;
  right: -60px;
  animation-delay: -4s;
}

@keyframes orb-drift {
  from { transform: translate3d(0, 0, 0) scale(1); }
  to   { transform: translate3d(24px, -30px, 0) scale(1.08); }
}

/* Card tilt */
.tilt-card {
  transform-style: preserve-3d;
  transition: transform 0.35s var(--motion-ease), box-shadow 0.35s ease;
}

.tilt-card:hover {
  box-shadow: 0 20px 48px rgba(18, 36, 31, 0.14);
}

/* Image ken / slow zoom when in view */
.media-zoom {
  overflow: hidden;
  border-radius: inherit;
}

.media-zoom img,
.media-zoom video {
  transition: transform 1.4s var(--motion-ease);
  transform: scale(1.04);
}

.media-zoom.is-inview img,
.media-zoom.is-inview video {
  transform: scale(1);
}

/* Process step pulse when active */
.process-step.revealed {
  animation: step-pop 0.7s var(--ease-spring);
}

@keyframes step-pop {
  0%   { transform: translateY(20px) scale(0.96); }
  70%  { transform: translateY(-4px) scale(1.02); }
  100% { transform: none; }
}

/* Industry tiles cascade */
.industries-grid.stagger-children.is-inview .industry-tile {
  animation: tile-rise 0.7s var(--motion-ease) both;
}

@keyframes tile-rise {
  from { opacity: 0; transform: translateY(24px) scale(0.96); }
  to   { opacity: 1; transform: none; }
}

/* CTA shimmer sweep */
.cta-section.is-inview .btn--primary {
  position: relative;
  overflow: hidden;
}

.cta-section.is-inview .btn--primary::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(110deg, transparent 30%, rgba(255,255,255,0.35) 50%, transparent 70%);
  transform: translateX(-120%);
  animation: shimmer-sweep 2.4s ease 0.6s 1;
}

@keyframes shimmer-sweep {
  to { transform: translateX(120%); }
}

/* Scroll-linked parallax helpers */
[data-parallax] {
  will-change: transform;
  transition: transform 0.1s linear;
}

/* Magnetic buttons */
.btn.magnetic {
  transition: transform 0.25s var(--motion-ease);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-scale,
  .reveal-clip,
  .stagger-children > *,
  .hero-title.split-ready .line > span {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    clip-path: none !important;
    transition: none !important;
  }

  .motion-orb,
  .cta-section.is-inview .btn--primary::after {
    animation: none !important;
  }
}

@media (max-width: 768px) {
  .reveal,
  .reveal-left,
  .reveal-right,
  .reveal-scale {
    filter: none;
    transition-duration: 0.5s !important;
  }

  .reveal { transform: translateY(20px); }
  .reveal-left { transform: translateX(-16px) rotate(0); }
  .reveal-right { transform: translateX(16px) rotate(0); }
}
