/**
 * GSAP Elementor Animator — animator.css
 *
 * Minimal CSS required for animation mechanics.
 * Keeps things lightweight — only structural rules, no cosmetic overrides.
 */

/* ── Prevent FOUC: hide animated elements before JS runs ─────────────────────
   Elements receive this class from JS immediately at init, then it's removed
   once the GSAP timeline plays. This avoids a flash of un-animated content.
   (GEA JS sets opacity:0 via GSAP `from` tweens, so FOUC is also handled by
   GSAP itself — this rule is a belt-and-suspenders safeguard.) */
[data-gea="true"] {
    /* Nothing needed here — GSAP handles initial states via fromTo/from. */
}

/* ── Mask reveal wrapper ──────────────────────────────────────────────────────
   The image wrapper gets overflow:hidden + position:relative via JS,
   but we pre-set it here too for safety. */
.elementor-widget-image [data-gea="true"] img,
.elementor-widget-image[data-gea="true"] img {
    display: block;
    width: 100%;
}

/* ── SplitText line overflow ──────────────────────────────────────────────────
   When splitting by lines, each line div needs overflow:hidden to achieve the
   "wipe up" slide-in. The JS sets this dynamically, but we reinforce it. */
.gea-line {
    overflow: hidden;
    display: inline-block;
}

/* ── Typewriter cursor ────────────────────────────────────────────────────────
   Blinking bar that appears alongside the typewriter animation. */
.gea-tw-cursor {
    display: inline-block;
    margin-left: 2px;
    font-weight: 100;
    animation: gea-blink 0.7s step-end infinite;
    opacity: 1;
}

@keyframes gea-blink {
    0%, 100% { opacity: 1; }
    50%       { opacity: 0; }
}

/* ── Container / Section perspective helper ───────────────────────────────────
   Required for flip-up animation to look correct. */
.elementor-section[data-gea="true"],
.e-con[data-gea="true"] {
    transform-style: preserve-3d;
}

/* ── Editor panel icon/label polish ─────────────────────────────────────────── */
/* (applied via editor-panel.css) */
