/* ─── §15  Scroll-reveal animations (IntersectionObserver targets) ─────── */

.lp-reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.7s var(--ease-soft), transform 0.7s var(--ease-soft);
}
.lp-reveal.is-in {
  opacity: 1;
  transform: translateY(0);
}
.lp-reveal[data-delay="1"] { transition-delay: 0.08s; }
.lp-reveal[data-delay="2"] { transition-delay: 0.16s; }
.lp-reveal[data-delay="3"] { transition-delay: 0.24s; }
.lp-reveal[data-delay="4"] { transition-delay: 0.32s; }
.lp-reveal[data-delay="5"] { transition-delay: 0.40s; }
.lp-reveal[data-delay="6"] { transition-delay: 0.48s; }


/* ─── §16  Hero entry animations ───────────────────────────────────────── */

@keyframes lpFadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes lpFadeIn {
  from { opacity: 0; transform: scale(0.96); }
  to   { opacity: 1; transform: scale(1); }
}


/* ─── §17  Reduced motion ──────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    transition-delay: 0ms !important;
  }
  .lp-reveal { opacity: 1; transform: none; }
  .lp-orb, .lp-particles { display: none; }
  .lp-bg::before { animation: none; }
}


/* ─── §18  Selection + scrollbar polish ────────────────────────────────── */

::selection { background: color-mix(in oklab, var(--primary) 35%, transparent); color: var(--text-1); }
::-webkit-scrollbar { width: 10px; height: 10px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb {
  background: var(--hairline-2);
  border-radius: 99px;
  border: 2px solid var(--bg-page);
}
::-webkit-scrollbar-thumb:hover { background: var(--primary); }


/* ════════════════════════════════════════════════════════════════════════════
