/**
 * Homepage motion — scoped to body.home .sn-homepage
 * Transform/opacity only. No layout property animations.
 */

:root {
  --sn-motion-fast: 180ms;
  --sn-motion-normal: 420ms;
  --sn-motion-slow: 700ms;
  --sn-motion-ease: cubic-bezier(0.22, 1, 0.36, 1);
  --sn-perspective: 1200px;
  --sn-hero-tilt-x: 0deg;
  --sn-hero-tilt-y: 0deg;
  --sn-hero-glow-x: 50%;
  --sn-hero-glow-y: 50%;
  --sn-card-tilt-x: 0deg;
  --sn-card-tilt-y: 0deg;
  --sn-card-glow-x: 50%;
  --sn-card-glow-y: 50%;
  --sn-eco-glow-x: 50%;
  --sn-eco-glow-y: 50%;
}

/* -------------------------------------------------------------------------- */
/* Reveal system (progressive enhancement)                                     */
/* -------------------------------------------------------------------------- */
.js-enabled body.home .sn-homepage .sn-reveal {
  opacity: 0;
  transform: translate3d(var(--sn-reveal-x, 0), var(--sn-reveal-y, 24px), 0) scale(var(--sn-reveal-scale, 1));
  transition:
    opacity 650ms var(--sn-motion-ease),
    transform 650ms var(--sn-motion-ease);
  will-change: opacity, transform;
}

.js-enabled body.home .sn-homepage .sn-reveal-up { --sn-reveal-y: 24px; }
.js-enabled body.home .sn-homepage .sn-reveal-left { --sn-reveal-x: -24px; --sn-reveal-y: 0; }
.js-enabled body.home .sn-homepage .sn-reveal-right { --sn-reveal-x: 24px; --sn-reveal-y: 0; }
.js-enabled body.home .sn-homepage .sn-reveal-scale { --sn-reveal-y: 12px; --sn-reveal-scale: 0.96; }

.js-enabled body.home .sn-homepage .sn-reveal-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0) scale(1);
  will-change: auto;
}

/* -------------------------------------------------------------------------- */
/* Hero 3D stage                                                               */
/* -------------------------------------------------------------------------- */
body.home .sn-home-hero {
  perspective: var(--sn-perspective);
}

body.home .sn-home-hero__media {
  transform-style: preserve-3d;
}

body.home .sn-home-hero__content {
  transition: transform var(--sn-motion-normal) var(--sn-motion-ease);
}

body.home .sn-home-hero__frame {
  transform-style: preserve-3d;
  transition: transform var(--sn-motion-normal) var(--sn-motion-ease);
  position: relative;
}

body.home .sn-home-hero__frame::before {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--sn-motion-normal) var(--sn-motion-ease);
  background: radial-gradient(
    circle at var(--sn-hero-glow-x) var(--sn-hero-glow-y),
    rgba(255, 255, 255, 0.22) 0%,
    rgba(255, 255, 255, 0) 58%
  );
  z-index: 2;
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__frame::before {
  opacity: 1;
}

body.home .sn-home-hero__badge {
  transition: transform var(--sn-motion-normal) var(--sn-motion-ease);
  transform-style: preserve-3d;
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__content {
  transform: translate3d(var(--sn-hero-content-x, 0px), var(--sn-hero-content-y, 0px), 0);
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__frame {
  transform: rotateX(var(--sn-hero-tilt-x, 0deg)) rotateY(var(--sn-hero-tilt-y, 0deg));
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__badge--facilities {
  transform: translate3d(var(--sn-hero-badge-facilities-x, 0px), var(--sn-hero-badge-facilities-y, 0px), 12px);
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__badge--support {
  transform: translate3d(var(--sn-hero-badge-support-x, 0px), var(--sn-hero-badge-support-y, 0px), 16px);
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__badge--coverage {
  transform: translate3d(var(--sn-hero-badge-coverage-x, 0px), var(--sn-hero-badge-coverage-y, 0px), 10px);
}

body.home .sn-home-hero.is-parallax-active .sn-home-hero__badge--partners {
  transform: translate3d(var(--sn-hero-badge-partners-x, 0px), var(--sn-hero-badge-partners-y, 0px), 14px);
}

/* -------------------------------------------------------------------------- */
/* Card tilt                                                                   */
/* -------------------------------------------------------------------------- */
body.home .sn-homepage .sn-tilt {
  transform-style: preserve-3d;
  perspective: 1100px;
  transition: transform var(--sn-motion-normal) var(--sn-motion-ease);
  position: relative;
  overflow: hidden;
}

body.home .sn-homepage .sn-tilt.is-tilting {
  transform: rotateX(var(--sn-card-tilt-x)) rotateY(var(--sn-card-tilt-y)) translateZ(4px) scale(1.008);
  will-change: transform;
}

body.home .sn-homepage .sn-tilt::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--sn-motion-fast) ease;
  background: radial-gradient(
    circle at var(--sn-card-glow-x) var(--sn-card-glow-y),
    rgba(255, 255, 255, 0.16) 0%,
    rgba(255, 255, 255, 0) 55%
  );
  z-index: 3;
}

body.home .sn-homepage .sn-tilt.is-tilting::after {
  opacity: 1;
}

body.home .sn-homepage .sn-tilt__layer-bg,
body.home .sn-homepage .sn-env-card__bg,
body.home .sn-homepage .sn-portfolio-card__media img,
body.home .sn-homepage .sn-case-card__media img,
body.home .sn-homepage .sn-article-card__media img {
  transition: transform var(--sn-motion-slow) var(--sn-motion-ease), filter var(--sn-motion-slow) ease;
}

body.home .sn-homepage .sn-tilt:hover .sn-env-card__bg,
body.home .sn-homepage .sn-tilt:hover .sn-portfolio-card__media img {
  transform: scale(1.035);
  filter: brightness(0.97);
}

body.home .sn-homepage .sn-tilt:hover .sn-article-card__media img {
  transform: scale(1.025);
}

body.home .sn-homepage .sn-tilt:hover .sn-case-card__media img {
  transform: scale(1.015);
}

body.home .sn-homepage .sn-tilt .sn-env-card__content,
body.home .sn-homepage .sn-tilt .sn-portfolio-card__body,
body.home .sn-homepage .sn-tilt .sn-case-card__body,
body.home .sn-homepage .sn-tilt .sn-article-card__body {
  transform: translateZ(16px);
  transform-style: preserve-3d;
}

body.home .sn-homepage .sn-tilt .sn-env-card__dot,
body.home .sn-homepage .sn-tilt .sn-portfolio-card__icon {
  transform: translateZ(22px);
}

body.home .sn-homepage .sn-article-card:hover .sn-link svg,
body.home .sn-homepage .sn-article-card:hover .sn-link {
  transform: translateX(3px);
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease);
}

/* -------------------------------------------------------------------------- */
/* Ecosystem orbit motion                                                      */
/* -------------------------------------------------------------------------- */
body.home .sn-eco-orbit__hub-pulse {
  animation: sn-eco-breathe 4.5s ease-in-out infinite;
}

body.home .sn-eco-orbit__hub-icon {
  animation: sn-eco-icon-shield 3.2s ease-in-out infinite;
}

body.home .sn-eco-orbit:hover .sn-eco-orbit__spinner,
body.home .sn-eco-orbit:hover .sn-eco-orbit__node-upright,
body.home .sn-eco-orbit.is-paused .sn-eco-orbit__spinner,
body.home .sn-eco-orbit.is-paused .sn-eco-orbit__node-upright {
  animation-play-state: paused;
}

body.home .sn-eco-orbit__arm--wind .sn-eco-orbit__node-icon svg { animation: sn-eco-icon-wind 3.4s ease-in-out infinite; }
body.home .sn-eco-orbit__arm--shield .sn-eco-orbit__node-icon svg { animation: sn-eco-icon-shield 3.2s ease-in-out infinite; }
body.home .sn-eco-orbit__arm--droplet .sn-eco-orbit__node-icon svg { animation: sn-eco-icon-droplet 2.8s ease-in-out infinite; }
body.home .sn-eco-orbit__arm--robot .sn-eco-orbit__node-icon svg { animation: sn-eco-icon-robot 2.6s ease-in-out infinite; }
body.home .sn-eco-orbit__arm--sparkle .sn-eco-orbit__node-icon svg { animation: sn-eco-icon-sparkle 2.4s ease-in-out infinite; }
body.home .sn-eco-orbit__arm--bolt .sn-eco-orbit__node-icon svg { animation: sn-eco-icon-bolt 2.2s ease-in-out infinite; }

body.home .sn-eco-orbit__arm[data-eco-node="1"] .sn-eco-orbit__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out infinite; }
body.home .sn-eco-orbit__arm[data-eco-node="2"] .sn-eco-orbit__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 0.4s infinite; }
body.home .sn-eco-orbit__arm[data-eco-node="3"] .sn-eco-orbit__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 0.8s infinite; }
body.home .sn-eco-orbit__arm[data-eco-node="4"] .sn-eco-orbit__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 1.2s infinite; }
body.home .sn-eco-orbit__arm[data-eco-node="5"] .sn-eco-orbit__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 1.6s infinite; }

/* Legacy SVG motion (fallback) */
body.home .sn-eco-map__connectors path {
  stroke-dasharray: 6 4;
  animation: sn-eco-flow 12s linear infinite;
}

body.home .sn-eco-map__connectors path:nth-child(1) { animation-delay: 0s; }
body.home .sn-eco-map__connectors path:nth-child(2) { animation-delay: -2.4s; }
body.home .sn-eco-map__connectors path:nth-child(3) { animation-delay: -4.8s; }
body.home .sn-eco-map__connectors path:nth-child(4) { animation-delay: -7.2s; }
body.home .sn-eco-map__connectors path:nth-child(5) { animation-delay: -9.6s; }

body.home .sn-eco-map__hub-pulse {
  transform-origin: 720px 4271.55px;
  animation: sn-eco-breathe 4.5s ease-in-out infinite;
}

body.home .sn-eco-map__hub-icon {
  transform-origin: 720px 4251.3px;
  animation: sn-eco-icon-shield 3.2s ease-in-out infinite;
}

body.home .sn-eco-map__group {
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease), filter var(--sn-motion-fast) ease;
}

body.home .sn-eco-map__group:hover {
  transform: translateY(-4px);
}

body.home .sn-eco-map__group:hover .sn-eco-map__node-badge {
  transform: scale(1.08);
}

body.home .sn-eco-map__node-badge {
  transform-origin: center;
  transform-box: fill-box;
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease);
}

body.home .sn-eco-map__node-icon svg {
  transform-origin: center;
}

body.home .sn-eco-map__group--wind .sn-eco-map__node-icon svg {
  animation: sn-eco-icon-wind 3.4s ease-in-out infinite;
}

body.home .sn-eco-map__group--shield .sn-eco-map__node-icon svg {
  animation: sn-eco-icon-shield 3.2s ease-in-out infinite;
}

body.home .sn-eco-map__group--droplet .sn-eco-map__node-icon svg {
  animation: sn-eco-icon-droplet 2.8s ease-in-out infinite;
}

body.home .sn-eco-map__group--robot .sn-eco-map__node-icon svg {
  animation: sn-eco-icon-robot 2.6s ease-in-out infinite;
}

body.home .sn-eco-map__group--sparkle .sn-eco-map__node-icon svg {
  animation: sn-eco-icon-sparkle 2.4s ease-in-out infinite;
}

body.home .sn-eco-map__group--bolt .sn-eco-map__node-icon svg {
  animation: sn-eco-icon-bolt 2.2s ease-in-out infinite;
}

body.home .sn-eco-map__group[data-eco-node="1"] .sn-eco-map__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out infinite; }
body.home .sn-eco-map__group[data-eco-node="2"] .sn-eco-map__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 0.4s infinite; }
body.home .sn-eco-map__group[data-eco-node="3"] .sn-eco-map__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 0.8s infinite; }
body.home .sn-eco-map__group[data-eco-node="4"] .sn-eco-map__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 1.2s infinite; }
body.home .sn-eco-map__group[data-eco-node="5"] .sn-eco-map__node-badge { animation: sn-eco-badge-pulse 4.2s ease-in-out 1.6s infinite; }

body.home .sn-eco-mobile__node-icon--wind svg { animation: sn-eco-icon-wind 3.4s ease-in-out infinite; }
body.home .sn-eco-mobile__node-icon--shield svg { animation: sn-eco-icon-shield 3.2s ease-in-out infinite; }
body.home .sn-eco-mobile__node-icon--droplet svg { animation: sn-eco-icon-droplet 2.8s ease-in-out infinite; }
body.home .sn-eco-mobile__node-icon--robot svg { animation: sn-eco-icon-robot 2.6s ease-in-out infinite; }
body.home .sn-eco-mobile__node-icon--sparkle svg { animation: sn-eco-icon-sparkle 2.4s ease-in-out infinite; }
body.home .sn-eco-mobile__node-icon--bolt svg { animation: sn-eco-icon-bolt 2.2s ease-in-out infinite; }

body.home .sn-home-ecosystem {
  position: relative;
}

body.home .sn-home-ecosystem::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--sn-motion-normal) ease;
  background: radial-gradient(
    circle at var(--sn-eco-glow-x) var(--sn-eco-glow-y),
    rgba(96, 165, 250, 0.08) 0%,
    rgba(96, 165, 250, 0) 48%
  );
  z-index: 0;
}

body.home .sn-home-ecosystem.is-glow-active::before {
  opacity: 1;
}

@keyframes sn-eco-flow {
  from { stroke-dashoffset: 0; }
  to { stroke-dashoffset: -40; }
}

@keyframes sn-eco-breathe {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.015); }
}

@keyframes sn-eco-badge-pulse {
  0%, 100% { opacity: 0.88; filter: drop-shadow(0 0 0 rgba(255, 255, 255, 0)); }
  50% { opacity: 1; filter: drop-shadow(0 0 10px rgba(255, 255, 255, 0.22)); }
}

@keyframes sn-eco-icon-wind {
  0%, 100% { transform: translateX(0); opacity: 1; }
  50% { transform: translateX(2px); opacity: 0.88; }
}

@keyframes sn-eco-icon-droplet {
  0%, 100% { transform: translateY(0) scale(1); }
  45% { transform: translateY(2px) scale(0.96); }
  70% { transform: translateY(-1px) scale(1.04); }
}

@keyframes sn-eco-icon-shield {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.08); }
}

@keyframes sn-eco-icon-robot {
  0%, 100% { transform: translateY(0); }
  35% { transform: translateY(-1.5px); }
  70% { transform: translateY(1px); }
}

@keyframes sn-eco-icon-sparkle {
  0%, 100% { transform: rotate(0deg) scale(1); opacity: 1; }
  50% { transform: rotate(8deg) scale(1.1); opacity: 0.82; }
}

@keyframes sn-eco-icon-bolt {
  0%, 100% { transform: scale(1); filter: drop-shadow(0 0 0 rgba(255, 255, 255, 0)); }
  40% { transform: scale(1.12); filter: drop-shadow(0 0 6px rgba(255, 255, 255, 0.35)); }
  55% { transform: scale(0.96); }
}

/* -------------------------------------------------------------------------- */
/* Magnetic buttons                                                            */
/* -------------------------------------------------------------------------- */
body.home .sn-magnetic {
  position: relative;
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease);
}

body.home .sn-magnetic__inner {
  display: inline-flex;
  align-items: center;
  gap: inherit;
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease);
}

body.home .sn-magnetic:active {
  transform: scale(0.985);
}

body.home .sn-magnetic:hover .sn-magnetic__inner svg {
  transform: translateX(2px);
}

/* -------------------------------------------------------------------------- */
/* Header scroll state                                                         */
/* -------------------------------------------------------------------------- */
body.home .sn-header.is-scrolled {
  background: rgba(255, 255, 255, 0.96);
  border-bottom-color: rgba(226, 232, 240, 0.95);
  box-shadow: 0 8px 24px rgba(15, 23, 42, 0.06);
  transition:
    background var(--sn-motion-normal) var(--sn-motion-ease),
    border-color var(--sn-motion-normal) var(--sn-motion-ease),
    box-shadow var(--sn-motion-normal) var(--sn-motion-ease);
}

body.home .sn-menu > li > a {
  position: relative;
}

body.home .sn-menu > li > a::after {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: -6px;
  height: 2px;
  background: var(--sn-orange);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease);
}

body.home .sn-menu > li > a:hover::after,
body.home .sn-menu > li.current-menu-item > a::after {
  transform: scaleX(1);
}

body.home .sn-header .sn-btn--primary:hover,
body.home .sn-header .sn-btn--outline:hover {
  transform: translateY(-1px);
  transition: transform var(--sn-motion-fast) var(--sn-motion-ease);
}

/* -------------------------------------------------------------------------- */
/* Reduced motion                                                              */
/* -------------------------------------------------------------------------- */
body.sn-motion-paused .sn-eco-orbit__spinner,
body.sn-motion-paused .sn-eco-orbit__node-upright,
body.sn-motion-paused .sn-eco-orbit__hub-pulse,
body.sn-motion-paused .sn-eco-orbit__hub-icon,
body.sn-motion-paused .sn-eco-orbit__node-badge,
body.sn-motion-paused .sn-eco-orbit__node-icon svg,
body.sn-motion-paused .sn-eco-orbit__connector::after,
body.sn-motion-paused .sn-eco-map__connectors path,
body.sn-motion-paused .sn-eco-map__hub-pulse,
body.sn-motion-paused .sn-eco-map__hub-icon,
body.sn-motion-paused .sn-eco-map__node-badge,
body.sn-motion-paused .sn-eco-map__node-icon svg,
body.sn-motion-paused .sn-eco-mobile__node-icon svg {
  animation-play-state: paused;
}

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    scroll-behavior: auto !important;
    transition-duration: 0.01ms !important;
  }

  .js-enabled body.home .sn-homepage .sn-reveal {
    opacity: 1 !important;
    transform: none !important;
  }
}

@media (max-width: 767px), (pointer: coarse) {
  body.home .sn-home-hero.is-parallax-active .sn-home-hero__content,
  body.home .sn-home-hero.is-parallax-active .sn-home-hero__frame,
  body.home .sn-home-hero.is-parallax-active .sn-home-hero__badge,
  body.home .sn-homepage .sn-tilt.is-tilting,
  body.home .sn-magnetic {
    transform: none !important;
  }

  body.home .sn-home-hero__frame::before,
  body.home .sn-home-ecosystem::before,
  body.home .sn-homepage .sn-tilt::after {
    display: none;
  }
}
