/* SAFARI-MKT-2026-10-06 (WI 862): pre-login marketing paint fixes for Safari.
   Linked from marketing HTML. Keep selectors specific enough to override page CSS. */

/* Gradient clipped text: Safari often leaves it invisible inside transformed
   ancestors (fp-reveal) or when the fill is transparent but clip fails.
   Force inline-block + a solid fallback color, then re-apply clip. */
.fp-gradient-text,
.fp-gradient-shimmer {
  display: inline-block;
  color: #60a5fa;
  -webkit-box-decoration-break: clone;
  box-decoration-break: clone;
  -webkit-transform: translateZ(0);
  transform: translateZ(0);
}

@supports (-webkit-background-clip: text) or (background-clip: text) {
  .fp-gradient-text,
  .fp-gradient-shimmer {
    color: transparent;
    -webkit-text-fill-color: transparent;
  }
}

/* Scroll-reveal: never leave whole sections stuck at opacity:0 if the
   IntersectionObserver never fires (Safari quirk with rootMargin / threshold). */
@media (prefers-reduced-motion: reduce) {
  .fp-reveal,
  .fp-reveal-left,
  .fp-reveal-right,
  .fp-stagger > *,
  .fp-comparison-table tbody tr {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

html.fp-mkt-reveal-ready .fp-reveal:not(.visible),
html.fp-mkt-reveal-ready .fp-reveal-left:not(.visible),
html.fp-mkt-reveal-ready .fp-reveal-right:not(.visible) {
  /* Soft fallback after JS timeout — still allow .visible transitions first */
  opacity: 1;
  transform: none;
}

html.fp-mkt-reveal-ready .fp-stagger:not(.visible) > *,
html.fp-mkt-reveal-ready .fp-comparison-table tbody tr:not(.visible) {
  opacity: 1;
  transform: none;
}
