/* ═══════════════════════════════════════════
   BEVRIM — app.css
   Complements Tailwind v4 CDN from base.html.twig
   Only custom CSS that Tailwind can't handle
   ═══════════════════════════════════════════ */

/* ── Grain overlay ── */
body::after {
  content: '';
  position: fixed;
  inset: 0;
  z-index: 50;
  pointer-events: none;
  opacity: 0.015;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.8' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  background-size: 128px;
}

/* ── Scroll reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(12px);
  transition:
    opacity 0.5s cubic-bezier(0.16, 1, 0.3, 1),
    transform 0.5s cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal.visible {
  opacity: 1;
  transform: translateY(0);
}
.reveal.stagger-1 { transition-delay: 0.06s; }
.reveal.stagger-2 { transition-delay: 0.12s; }
.reveal.stagger-3 { transition-delay: 0.18s; }
.reveal.stagger-4 { transition-delay: 0.24s; }

@media (prefers-reduced-motion: reduce) {
  .reveal {
    transition: none;
    opacity: 1;
    transform: none;
  }
  .hero-glow { animation: none; }
}

/* ── Gradient text ── */
.gradient-text {
  background: linear-gradient(135deg, #00dda0 0%, #5bdfbc 50%, #00b882 100%);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  background-clip: text;
}

/* ── Hero glow ── */
@keyframes heroGlow {
  0% { opacity: 0.15; transform: translate(0, 0) scale(1); }
  100% { opacity: 0.25; transform: translate(-30px, 20px) scale(1.05); }
}
.hero-glow { animation: heroGlow 10s ease-in-out infinite alternate; }

/* ── Shimmer (button hover) ── */
@keyframes shimmer {
  0% { transform: translateX(-100%); }
  100% { transform: translateX(100%); }
}

/* ── Hero height — vh fallback for browsers without svh support ── */
.hero-min-h {
  min-height: calc(100vh - 64px);
  min-height: calc(100svh - 64px);
}

/* ── Nav scroll state ── */
.nav-scrolled {
  background: rgba(8, 9, 10, 0.92);
  border-bottom-color: rgba(255, 255, 255, 0.08);
}

/* ── Scrollbar ── */
::-webkit-scrollbar { width: 5px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, 0.06); border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: rgba(255, 255, 255, 0.12); }
