/* ═══════════════════════════════════════════════════════════════════════
   HOME PAGE MOTION (index.html)
   assets/js/motion.js tags elements below the hero and reveals them once as
   they scroll into view. Nothing here applies until the script adds
   html.mo, so the page is fully visible without JS or with reduced motion.
   Entrance classes are removed when each animation ends, so existing hover
   effects keep working.
   ═══════════════════════════════════════════════════════════════════════ */

/* Generic rise */
.mo .mo-item {
  opacity: 0; transform: translate3d(var(--mo-x, 0), var(--mo-y, 28px), 0) rotate(var(--mo-r, 0deg)) scale(var(--mo-s, 1));
}
.mo .mo-item.mo-in {
  opacity: 1; transform: none;
  transition: opacity .8s var(--ease-out, cubic-bezier(.16,1,.3,1)) var(--mo-d, 0s),
              transform 1s var(--ease-out, cubic-bezier(.16,1,.3,1)) var(--mo-d, 0s);
}
.mo .mo-left  { --mo-x: -48px; --mo-y: 0; }
.mo .mo-right { --mo-x: 48px;  --mo-y: 0; }
.mo .mo-settle { --mo-y: 36px; --mo-r: -1.5deg; --mo-s: .97; }
.mo .mo-pop { --mo-y: 14px; --mo-s: .9; }

/* Photo wipe */
.mo .mo-wipe { clip-path: inset(0 100% 0 0 round var(--r-xl)); }
.mo .mo-wipe.mo-in {
  clip-path: inset(0 0 0 0 round var(--r-xl));
  transition: clip-path 1.25s cubic-bezier(.77,0,.18,1) var(--mo-d, 0s);
}

/* Photo drift on scroll (set by JS; scaled so edges never show) */
.mo-drift img { transform: translate3d(0, var(--py, 0px), 0) scale(1.1); will-change: transform; }

/* Stat rules draw across */
.mo .statband .rule { transform: scaleX(0); transform-origin: left; }
.mo .statband .rule.mo-in { transform: scaleX(1); transition: transform .9s var(--ease-out, cubic-bezier(.16,1,.3,1)) var(--mo-d, 0s); }

/* Quote: word by word */
.mo .mo-word { display: inline-block; opacity: 0; transform: translateY(.45em); filter: blur(4px); }
.mo .mo-words.mo-in .mo-word {
  opacity: 1; transform: none; filter: none;
  transition: opacity .6s ease var(--wd), transform .7s var(--ease-out, cubic-bezier(.16,1,.3,1)) var(--wd), filter .6s ease var(--wd);
}

/* Hand-drawn underlines draw across */
.mo .scribble path { stroke-dasharray: 1; stroke-dashoffset: 1; }
.mo .scribble.mo-in path { stroke-dashoffset: 0; transition: stroke-dashoffset 1.1s cubic-bezier(.65,0,.35,1) var(--mo-d, 0s); }

/* Team cards: tilt toward the pointer (desktop) */
.tcard.mo-tilt { transform-style: preserve-3d; }

@media (max-width: 700px) {
  .mo .mo-left, .mo .mo-right { --mo-x: 0; --mo-y: 26px; }
}
