/* =====================================================================
   GSAP site motion — support styles.
   - .gs-pending (set by a tiny inline script in <head>, only when motion is
     allowed) hides the hero until its entrance timeline takes over. A safety
     timer in the same inline script removes it after 2.5s no matter what.
   - Without JS / with reduced motion none of this applies.
   ===================================================================== */
.gs-pending .hero-copy,
.gs-pending .hero-media,
.gs-pending .solution-strip { visibility: hidden; }

/* heading lines for the mask reveal (created by JS only where <br> is visible) */
.gs-line { display: block; overflow: hidden; padding: .12em 0; margin: -.12em 0; }
.gs-line-inner { display: inline-block; will-change: transform; }

/* kicker line draws in from the right (RTL start) */
.kicker::before { transform-origin: right center; transform: scaleX(var(--gs-k, 1)); }

/* one-time light sweep across cards on entry (right → left, reading direction) */
.gs-card { position: relative; }
.gs-card::after {
  content: ''; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: linear-gradient(105deg, transparent 35%, rgba(255, 196, 127, .16) 50%, transparent 65%);
  background-size: 250% 100%; background-position: -60% 0; opacity: 0;
}
.gs-card.gs-swept::after { animation: gs-sweep 1.1s ease-out .15s 1 both; }
@keyframes gs-sweep {
  0% { background-position: -60% 0; opacity: 1; }
  100% { background-position: 160% 0; opacity: 0; }
}

/* hover tilt glare (desktop, fine pointer) */
.gs-tilt { transform-style: preserve-3d; }
.gs-tilt .gs-glare {
  position: absolute; inset: 0; border-radius: inherit; pointer-events: none; opacity: 0;
  background: radial-gradient(420px circle at var(--gx, 50%) var(--gy, 50%), rgba(255, 170, 80, .14), transparent 60%);
  transition: opacity 300ms ease;
}
.gs-tilt:hover .gs-glare { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  .gs-pending .hero-copy, .gs-pending .hero-media, .gs-pending .solution-strip { visibility: visible; }
  .gs-card.gs-swept::after { animation: none; }
}
