/* ---------- premium motion layer (stateofaidesign-style, light-slate adapted) ---------- */

/* masked line reveals */
.mask-line { display: block; overflow: hidden; }
.mask-line > span, .mask-line > em { display: inline-block; transform: translateY(110%); opacity: 0; transition: transform .9s var(--ease), opacity .9s ease; }
.mask-line.in > span, .mask-line.in > em { transform: translateY(0); opacity: 1; }
h2.mask-line > em { font-style: normal; color: var(--accent); }

/* directional slide-ins */
.slide { opacity: 0; transform: translateY(34px); transition: opacity .85s var(--ease), transform .85s var(--ease); transition-delay: var(--delay, 0s); }
.slide.in { opacity: 1; transform: translateY(0); }

/* kicker fade */
.kicker { opacity: 0; transform: translateY(12px); transition: opacity .7s ease, transform .7s var(--ease); }
.kicker.in { opacity: 1; transform: translateY(0); }

/* hero bg drift */
.hero-bg i { animation: drift 16s ease-in-out infinite alternate; }
.hero-bg .b2 { animation-delay: -5s; }
.hero-bg .b3 { animation-delay: -10s; }
@keyframes drift {
  from { transform: translate(0, 0) scale(1); }
  to { transform: translate(46px, 34px) scale(1.12); }
}

/* preloader bar */
#preloader .pl-bar i { animation: loadbar 1.1s var(--ease) forwards; }
@keyframes loadbar { from { width: 6%; } to { width: 92%; } }

/* shine sweep on primary CTAs */
.cta.big { position: relative; overflow: hidden; }
.cta.big::after {
  content: ""; position: absolute; top: 0; left: -80%; width: 45%; height: 100%;
  background: linear-gradient(105deg, transparent, rgba(255,255,255,.5), transparent);
  transform: skewX(-20deg); transition: left .6s var(--ease);
}
.cta.big:hover::after { left: 130%; }

/* card spotlight (cursor-follow) */
@media (pointer: fine) {
  .card, .deck-card { position: relative; }
  .card::before, .deck-card::before {
    content: ""; position: absolute; inset: 0; border-radius: inherit; opacity: 0;
    background: radial-gradient(340px circle at var(--mx, 50%) var(--my, 50%), rgba(79, 70, 229, .08), transparent 65%);
    transition: opacity .3s; pointer-events: none;
  }
  .card:hover::before, .deck-card:hover::before { opacity: 1; }
}

/* reduced motion: kill everything */
@media (prefers-reduced-motion: reduce) {
  .mask-line > span, .mask-line > em, .slide, .kicker { transform: none; opacity: 1; transition: none; }
  .hero-bg i, #preloader .pl-bar i { animation: none; }
  #preloader { display: none; }
}
