/*
Level-3 scroll reveals — hand-rolled, page-agnostic, 2026-09-14 (v3).

Replaces an earlier attempt that used Elementor's native Entrance
Animation setting (_animation/_elementor_data) — that mechanism silently
failed to trigger for real users (its own scroll-watcher lives in a
lazy-loaded webpack chunk that isn't auditable from outside a live
browser), leaving every non-hero section on Home V2 permanently
invisible. Rolled back; see context/14-change-log.md.

This version is safe by construction, specifically to prevent a repeat
of that failure mode: elements are VISIBLE BY DEFAULT. Nothing in this
file hides anything on its own. scroll-reveal.js opts elements INTO a
hidden pre-reveal state (by adding .rkt-reveal--pending) only once it has
confirmed it is actually running, then removes that class on scroll
intersection. If the script fails to load, throws, or IntersectionObserver
isn't supported, elements simply never receive the class and render
exactly as if this file didn't exist — full visibility, no animation,
enhancement rather than dependency.

No _elementor_data write is needed at all — scroll-reveal.js targets
every top-level Elementor section generically (`section.e-parent`,
excluding `.rkt-hero`) rather than a hardcoded per-page ID list; see its
own header comment for why that generalization happened when a second
page (Our Fleet) needed the same treatment.
*/

.rkt-reveal--pending {
    opacity: 0;
    transform: translateY(24px);
    /* Duration/easing from the site's motion tokens (child theme
       style.css). Started on --rkt-dur-slower (600ms) — the owner
       checked it live, on a real scroll, and it read as too quick for
       a full-width surface; --rkt-dur-reveal (900ms) is the documented
       exception this fed back into the token file, not a one-off number
       invented just for this rule. Declared on the PENDING class itself,
       not a separate "revealed" class: per spec, removing this class
       still animates the opacity/transform change, because the
       transition property active at the moment of the change is what
       the browser uses to decide whether and how to animate — a
       well-established pattern, not a shortcut. */
    transition: opacity var(--rkt-dur-reveal, 900ms) var(--rkt-ease-out, ease-out),
                transform var(--rkt-dur-reveal, 900ms) var(--rkt-ease-out, ease-out);
}
