/* RD Studio — enhancement layer styles (smooth scroll, WebGL background, hero 3D, GSAP splits, footer physics).
   Loaded after the inline <style> in index.html so it can override it. */

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

/* ---------- WebGL background: replaces the CSS glows when it is running ---------- */
#bgGL { position: fixed; inset: 0; width: 100%; height: 100%; z-index: -1; pointer-events: none; display: block; }
html.gl-bg .atmos { display: none; }

/* ---------- Hero 3D orb (desktop only; phones keep the static hero) ---------- */
.hero__gl { position: absolute; inset: 0; z-index: 0; pointer-events: none; opacity: 0; transition: opacity 1.8s ease; }
.hero__gl.on { opacity: 1; }
.hero__gl canvas { display: block; width: 100%; height: 100%; }
.hero__title, .hero__foot { position: relative; z-index: 1; }
@media (max-width: 820px), (hover: none) { .hero__gl { display: none; } }

/* ---------- GSAP SplitText line masks (a little breathing room so caps never clip) ---------- */
.sl-line-mask { padding: .09em 0; margin: -.09em 0; }

/* ---------- Process: the step in the middle of the screen lights up ---------- */
.step.cur .step__n { color: var(--r); -webkit-text-stroke-color: var(--r); }

/* ---------- Footer physics ---------- */
.contact__h.phys { user-select: none; -webkit-user-select: none; }
html body .contact__h.phys .line { overflow: visible; }
html body .contact__h.phys .ch { transition: none !important; transform: none !important; opacity: 0; will-change: translate, rotate; }
.phys-hint {
  position: absolute; top: 30vh; right: var(--pad); z-index: 2; margin: 0;
  font: 500 13px/1 var(--body); letter-spacing: .08em; text-transform: uppercase; color: var(--k);
  opacity: 0; transform: translateY(8px); transition: opacity .8s var(--out), transform .8s var(--out); pointer-events: none;
}
.contact.phys-on .phys-hint { opacity: .7; transform: none; }
.contact.phys-drag .phys-hint { opacity: 0; }
@media (max-width: 820px), (hover: none) { .phys-hint { display: none; } }
