/* GP Kit core: runtime styles shared by every site (smooth scroll, reveals, editor). Site look lives in the pack. */

/* Lenis (smooth scroll, desktop only) */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-scrolling iframe { pointer-events: none; }

/* Reveal on scroll (B4). Put `reveal` in Advanced → CSS Classes; `reveal-1` … `reveal-5` stagger it (the CSS
   Classes field can't set data attributes). Never use Elementor's own entrance animations: they ignore the gate. */
.reveal { opacity: 1; transform: none; }
html.js-loaded .reveal { opacity: 0; transform: translateY(24px); transition: opacity .8s var(--ease-out, cubic-bezier(.22,1,.36,1)), transform .8s var(--ease-out, cubic-bezier(.22,1,.36,1)); }
html.js-loaded .reveal.is-visible { opacity: 1; transform: none; }
.reveal-1, .reveal[data-stagger="1"] { transition-delay: 80ms !important; }
.reveal-2, .reveal[data-stagger="2"] { transition-delay: 160ms !important; }
.reveal-3, .reveal[data-stagger="3"] { transition-delay: 240ms !important; }
.reveal-4, .reveal[data-stagger="4"] { transition-delay: 320ms !important; }
.reveal-5, .reveal[data-stagger="5"] { transition-delay: 400ms !important; }
@media (prefers-reduced-motion: reduce) { html.js-loaded .reveal { transition: opacity .3s; transform: none; } }

/* In the Elementor editor everything shows at once, and nothing covers the canvas */
html.gp-editor .reveal { opacity: 1 !important; transform: none !important; }
html.gp-editor .gp-cover, html.gp-editor .gp-intro { display: none !important; }

/* Page cover (D3). The arriving page starts under the sheet: html.gp-covered is set by the head script before
   first paint, so whatever element carries [data-gp-cover] is fully down at once, without a transition. */
html.gp-covered [data-gp-cover] { visibility: visible !important; pointer-events: auto !important; clip-path: inset(0 0 0 0) !important; transition: none !important; }
/* Cross-document View Transitions where supported: the old page (sheet down) and the new one (sheet down)
   swap without a flash; the browser's own cross-fade is off, the sheet is the transition. */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation: none; mix-blend-mode: normal; }
/* Preloader: hidden when skipped (home page, repeat visit, editor) */
html.gp-intro-skip [data-gp-intro] { display: none !important; }
html.gp-intro-open { scrollbar-gutter: stable; }
