/* ==========================================================================
   Base styles shared by every page.
   Load this before the Tailwind CDN script so Tailwind utilities can override it.
   ========================================================================== */

@layer base {
  html, body { margin: 0; padding: 0; }
  body { overscroll-behavior: none; }
  main > :first-child { margin-top: 0 !important; }
  main > :last-child { margin-bottom: 0 !important; }
}

::-webkit-scrollbar { display: none; }

/* Solid (filled) variant of a Material Symbols icon */
.icon-filled { font-variation-settings: 'FILL' 1; }

/* Keep above .reveal so the reveal transition wins on elements that use both */
.transition-smooth { transition: all 0.35s cubic-bezier(0.16, 1, 0.3, 1); }

/* Scroll reveal — .active is added by assets/js/reveal.js */
.reveal {
  opacity: 0;
  transform: translateY(45px);
  transition: opacity 1.6s cubic-bezier(0.22, 1, 0.36, 1), transform 1.6s cubic-bezier(0.22, 1, 0.36, 1);
  will-change: opacity, transform;
}
.reveal.active {
  opacity: 1;
  transform: translateY(0);
}
.reveal-delay-1 { transition-delay: 0.25s; }
.reveal-delay-2 { transition-delay: 0.5s; }
.reveal-delay-3 { transition-delay: 0.75s; }
.reveal-delay-4 { transition-delay: 1s; }

@media (prefers-reduced-motion: reduce) {
  *, ::before, ::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1; transform: none; }
}
