/* Agrythm lightweight motion system — performance-first, no animation library. */
:root{
  --motion-fast:160ms;
  --motion-base:260ms;
  --motion-slow:520ms;
  --motion-ease:cubic-bezier(.22,.61,.36,1);
}

/* Reveal system. Elements remain visible without JS; JS only opts them into motion. */
.motion-ready [data-reveal]{
  opacity:0;
  transform:translate3d(0,18px,0);
  transition:
    opacity var(--motion-slow) var(--motion-ease),
    transform var(--motion-slow) var(--motion-ease);
  transition-delay:var(--reveal-delay,0ms);
  will-change:opacity,transform;
}
.motion-ready [data-reveal].is-visible{
  opacity:1;
  transform:translate3d(0,0,0);
  will-change:auto;
}
.motion-ready [data-reveal="soft"]{transform:translate3d(0,12px,0);}
.motion-ready [data-reveal="left"]{transform:translate3d(-18px,0,0);}
.motion-ready [data-reveal="right"]{transform:translate3d(18px,0,0);}
.motion-ready [data-reveal].is-visible{transform:translate3d(0,0,0);}

/* Hero must never be re-hidden after first paint. This avoids a load-time flash/FOUC. */
.hero .pill,
.hero h1,
.hero .hero-copy,
.hero .hero-actions,
.hero .signal-card{
  opacity:1;
  transform:none;
}

/* Functional hover feedback. */
.button,
.platform-links a,
.journey-grid article,
.impact-grid article,
.mission-grid article,
.person-card,
.advisor-card,
.support-logo{
  transition:
    transform var(--motion-base) var(--motion-ease),
    border-color var(--motion-base) var(--motion-ease),
    background-color var(--motion-base) var(--motion-ease),
    box-shadow var(--motion-base) var(--motion-ease),
    opacity var(--motion-base) var(--motion-ease);
}
@media (hover:hover) and (pointer:fine){
  .button:hover{transform:translate3d(0,-2px,0);}
  .platform-links a:hover,
  .journey-grid article:hover,
  .impact-grid article:hover,
  .mission-grid article:hover,
  .person-card:hover,
  .advisor-card:hover{transform:translate3d(0,-3px,0);}
  .button span,
  .platform-links a>i,
  .text-link span{display:inline-block;transition:transform var(--motion-fast) var(--motion-ease);}
  .button:hover span,
  .platform-links a:hover>i,
  .text-link:hover span{transform:translate3d(3px,0,0);}
  .support-logo:hover{transform:translate3d(0,-2px,0);}
}

/* Product journey: directional emphasis without continuous animation. */
.ownership-strip span,
.ownership-strip i{transition:opacity var(--motion-base) var(--motion-ease),transform var(--motion-base) var(--motion-ease);}
.motion-ready .ownership-strip:not(.is-visible) span,
.motion-ready .ownership-strip:not(.is-visible) i{opacity:.35;transform:translate3d(-5px,0,0);}
.motion-ready .ownership-strip.is-visible span,
.motion-ready .ownership-strip.is-visible i{opacity:1;transform:translate3d(0,0,0);}

/* Marquee remains smooth but visually calm. */
.logo-track{animation-timing-function:linear!important;}
.logo-marquee:hover .logo-track{animation-play-state:paused;}

/* Mobile/touch: keep reveal motion minimal. */
@media (max-width:960px), (hover:none){
  .motion-ready [data-reveal]{transform:translate3d(0,10px,0);transition-duration:380ms;}
}

/* Accessibility and battery-sensitive behavior. */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important;}
  .motion-ready [data-reveal]{opacity:1!important;transform:none!important;}
}
