/* ============================================================
   DODO STUDIO · V4 — scroll motion (sections 2+)
   Minimal, purposeful: rise reveals, line reveals, counters.
   ============================================================ */

@media (prefers-reduced-motion: no-preference){

  /* generic rise reveal */
  [data-rev]{
    opacity: 0;
    transform: translateY(30px);
    transition: opacity .8s var(--ease), transform .8s var(--ease);
    transition-delay: var(--d, 0s);
  }
  [data-rev].in{ opacity: 1; transform: none; }

  /* stagger groups: children rise one by one */
  [data-rev-group] > *{
    opacity: 0;
    transform: translateY(28px);
    transition: opacity .75s var(--ease), transform .75s var(--ease);
  }
  [data-rev-group].in > *{ opacity: 1; transform: none; }
  [data-rev-group].in > *:nth-child(1){ transition-delay: .0s; }
  [data-rev-group].in > *:nth-child(2){ transition-delay: .09s; }
  [data-rev-group].in > *:nth-child(3){ transition-delay: .18s; }
  [data-rev-group].in > *:nth-child(4){ transition-delay: .27s; }
  [data-rev-group].in > *:nth-child(5){ transition-delay: .36s; }
  [data-rev-group].in > *:nth-child(6){ transition-delay: .45s; }

  /* display heading: line mask reveal */
  .rl{ display:block; overflow:hidden; }
  .rl > span{
    display:block;
    transform: translateY(115%);
    transition: transform .9s var(--ease);
    transition-delay: var(--d, 0s);
  }
  [data-rev-lines].in .rl > span{ transform: none; }
  [data-rev-lines] .rl:nth-child(2) > span{ transition-delay: .1s; }
  [data-rev-lines] .rl:nth-child(3) > span{ transition-delay: .2s; }

  /* hairline draw for rows */
  [data-rev-line]{
    position: relative;
  }
  [data-rev-line]::before{
    content:""; position:absolute; top:-1px; inset-inline:0; height:1px;
    background: var(--hair-2);
    transform: scaleX(0); transform-origin: 0 50%;
    transition: transform 1.1s var(--ease);
  }
  [dir="rtl"] [data-rev-line]::before{ transform-origin: 100% 50%; }
  [data-rev-line].in::before{ transform: scaleX(1); }

  /* stat value pop */
  .stat .val{ transition: transform .9s var(--ease), opacity .9s var(--ease); }
  .stat:not(.in) .val{ transform: translateY(20px) scale(.96); opacity: 0; }

}

/* reduced motion: everything visible, marquee stopped */
@media (prefers-reduced-motion: reduce){
  .tape-row{ animation: none; }
  .hero-giant, .hero-plant, .hero-hash, .hero-name, .hero-meta, .hero-foot > *{ animation: none !important; }
  .hero-sprout{ display:none; }
}
