/**
 * 🔱 RBN Core - Framework [v0.9.7]
 * 🏛️ ARCHITECTURE  : RBN Asset Engine
 * ---------------------------------------
 * 🛰️ COMPONENT     : RbnKit v1.0
 * ⚓ RESOURCE      : rbnReveal.css [Core]
 * 🛡️ STATUS        : Verified & Proxied
 * ---------------------------------------
 */

/* RBN REVEAL (components/rbnReveal.css) - scroll-in animation, no library; same effects and options as AOS 2.3.4.
   Hiding starts at first paint: <html> gets `rbn-js` in head_state (inline, before this CSS paints) so first-screen items never flash.
   No JS = no `rbn-js` = content visible. Slow JS: head_state adds `rbn-reveal-safe` after 1.5 s = content visible.
   Per-item delay / duration / easing are set by rbnDom.js as --rbn-reveal-delay / --rbn-reveal-duration / --rbn-reveal-ease. */
:root {
    --rbn-reveal-duration: 800ms;
    --rbn-reveal-ease: ease-in-out;
    --rbn-reveal-distance: 6.25rem;
    --rbn-reveal-perspective: 156.25rem;
}

@media (prefers-reduced-motion: no-preference) {
    /* Horizontal offsets never widen the page: root hidden stops the viewport scroll, body clip keeps sticky/fixed working. */
    html.rbn-js:not(.rbn-reveal-safe) { overflow-x: hidden; }
    .rbn-js:not(.rbn-reveal-safe) body { overflow-x: clip; }

    /* Effect geometry: --rbn-rv-d distance, x/y direction, s scale, f full transform override (flip). */
    .rbn-js [data-rbn-reveal] { --rbn-rv-d: var(--rbn-reveal-distance); --rbn-rv-x: 0rem; --rbn-rv-y: 0rem; --rbn-rv-s: 1; }
    .rbn-js [data-rbn-reveal^="slide"] { --rbn-rv-d: 100%; }
    .rbn-js [data-rbn-reveal*="-up"] { --rbn-rv-y: var(--rbn-rv-d); }
    .rbn-js [data-rbn-reveal*="-down"] { --rbn-rv-y: calc(var(--rbn-rv-d) * -1); }
    .rbn-js [data-rbn-reveal*="-left"] { --rbn-rv-x: var(--rbn-rv-d); }
    .rbn-js [data-rbn-reveal*="-right"] { --rbn-rv-x: calc(var(--rbn-rv-d) * -1); }
    .rbn-js [data-rbn-reveal^="zoom-in"] { --rbn-rv-s: 0.6; }
    .rbn-js [data-rbn-reveal^="zoom-out"] { --rbn-rv-s: 1.2; }
    .rbn-js [data-rbn-reveal="flip-left"] { --rbn-rv-f: perspective(var(--rbn-reveal-perspective)) rotateY(-100deg); --rbn-rv-f0: perspective(var(--rbn-reveal-perspective)) rotateY(0); }
    .rbn-js [data-rbn-reveal="flip-right"] { --rbn-rv-f: perspective(var(--rbn-reveal-perspective)) rotateY(100deg); --rbn-rv-f0: perspective(var(--rbn-reveal-perspective)) rotateY(0); }
    .rbn-js [data-rbn-reveal="flip-up"] { --rbn-rv-f: perspective(var(--rbn-reveal-perspective)) rotateX(-100deg); --rbn-rv-f0: perspective(var(--rbn-reveal-perspective)) rotateX(0); }
    .rbn-js [data-rbn-reveal="flip-down"] { --rbn-rv-f: perspective(var(--rbn-reveal-perspective)) rotateX(100deg); --rbn-rv-f0: perspective(var(--rbn-reveal-perspective)) rotateX(0); }

    /* Armed items: transition on (until `rbn-reveal-done` hands the element's own transitions back). */
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal]:not([data-rbn-reveal-lcp], .rbn-reveal-done) {
        transition-property: opacity, transform;
        transition-duration: var(--rbn-reveal-duration);
        transition-timing-function: var(--rbn-reveal-ease);
    }
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal^="slide"]:not([data-rbn-reveal-lcp], .rbn-reveal-done) { transition-property: transform; }
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal^="flip"]:not([data-rbn-reveal-lcp], .rbn-reveal-done) { transition-property: transform; backface-visibility: hidden; }
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal].rbn-revealed:not([data-rbn-reveal-lcp], .rbn-reveal-done) { transition-delay: var(--rbn-reveal-delay, 0ms); }

    /* Hidden start state (known effect names only: a typo stays visible). */
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal^="fade"]:not(.rbn-revealed, [data-rbn-reveal-lcp]),
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal^="zoom"]:not(.rbn-revealed, [data-rbn-reveal-lcp]) { opacity: 0; }
    html.rbn-js:not(.rbn-reveal-safe) :is([data-rbn-reveal^="fade"], [data-rbn-reveal^="zoom"], [data-rbn-reveal^="slide"]):not(.rbn-revealed, [data-rbn-reveal-lcp]) {
        transform: translate3d(var(--rbn-rv-x), var(--rbn-rv-y), 0) scale(var(--rbn-rv-s));
    }
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal^="flip"]:not(.rbn-revealed, [data-rbn-reveal-lcp]) { transform: var(--rbn-rv-f, none); }
    html.rbn-js:not(.rbn-reveal-safe) [data-rbn-reveal^="flip"].rbn-revealed:not([data-rbn-reveal-lcp], .rbn-reveal-done) { transform: var(--rbn-rv-f0, none); }
}
