/* Fiscor — homepage scroll + hero-intro animations (own code, no Framer runtime).
 * Hidden states apply only under html.fi-anim. Scroll reveals are driven by
 * fiscor-anim.js (it owns opacity/transform inline to beat Framer's inline styles);
 * this file provides the transition timing, the hero intro, and safety nets. */

/* ---------- Hero intro (pure CSS, plays on load) ---------- */
/* Replicates the saved Framer appear params (fade + slight rise / scale-settle).
 * CSS animations override the elements' inline opacity:1/transform:none while playing. */
@keyframes fi-blur-in { from { opacity: .2; transform: scale(1.15); } to { opacity: 1; transform: none; } }
@keyframes fi-rise-30 { from { opacity: 0;  transform: translateY(30px); } to { opacity: 1; transform: none; } }
@keyframes fi-rise-10 { from { opacity: 0;  transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes fi-scale-in{ from { opacity: 0;  transform: scale(1.1); } to { opacity: 1; transform: none; } }
@keyframes fi-fade    { from { opacity: 0; } to { opacity: 1; } }
/* Framer global referenced but never defined here (venus button spin). */
@keyframes spin { to { transform: rotate(360deg); } }

html.fi-anim [data-framer-appear-id="z1my18"],
html.fi-anim [data-framer-appear-id="erbjq6"] { animation: fi-blur-in 2.2s cubic-bezier(.16,1,.3,1) .7s both; }
html.fi-anim [data-framer-appear-id="s696he"] { animation: fi-fade 1.4s cubic-bezier(.16,1,.3,1) .6s both; }
html.fi-anim [data-framer-appear-id="1ipf8bw"] { animation: fi-rise-30 1.1s cubic-bezier(.16,1,.3,1) .4s both; }
html.fi-anim [data-framer-appear-id="loiqgw"],
html.fi-anim [data-framer-appear-id="1lw4p1j"] { animation: fi-rise-10 1s cubic-bezier(.16,1,.3,1) .2s both; }
html.fi-anim [data-framer-appear-id="7ovdhk"],
html.fi-anim [data-framer-appear-id="1e8hho5"] { animation: fi-scale-in 1.2s cubic-bezier(.16,1,.3,1) .2s both; }

/* ---------- Scroll reveals ---------- */
/* fiscor-anim.js adds .fi-reveal and drives opacity/transform inline; this only
 * supplies the transition curve + per-item stagger delay. */
html.fi-anim .fi-reveal {
  transition: opacity .9s cubic-bezier(.16,1,.3,1), transform .9s cubic-bezier(.16,1,.3,1);
  transition-delay: var(--fi-delay, 0s);
  will-change: opacity, transform;
}

/* ---------- Safety net ---------- */
/* One Framer scroll-element ("Content") is left inline opacity:0 + will-change:transform
 * and has no appear-id; without the runtime it must simply show. Decorative gradient
 * overlays (opacity:0, no will-change) are intentionally transparent and left alone. */
html.fi-anim [style*="will-change: transform"][style*="opacity: 0"]:not([data-framer-appear-id]):not(.fi-reveal),
html.fi-anim [style*="will-change: transform"][style*="opacity:0"]:not([data-framer-appear-id]):not(.fi-reveal) {
  opacity: 1 !important;
  transform: none !important;
}

/* ---------- Accessibility: honor reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  html.fi-anim [data-framer-appear-id],
  html.fi-anim .fi-reveal {
    animation: none !important;
    transition: none !important;
    opacity: 1 !important;
    transform: none !important;
  }
}
