*,
*::before,
*::after {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  padding: 0;
  overflow-x: hidden;
  background-color: var(--bg-light);
}

:root {
  /* Colors */
  --charcoal-black: #161616;
  --primary: #FF7704;
  --primary-black: #161616;
  --primary-gradient: linear-gradient(-90deg, #FF7704, #F7B272);
  --bg-light: #FAFBFD;
  --gray-muted: #6B7280;

  /* Fonts */
  --font-heading: 'Fira Sans', sans-serif;
  --font-body: 'Roboto', sans-serif;

  /* Standard Sizes */
  --font-size-h1: clamp(2rem, 5vw, 4rem);
  --font-size-h2: clamp(1.5rem, 4vw, 2rem);
  --font-size-h3: 1.25rem;
  --font-size-label: 1.25rem; /* 20px */
  --font-size-body: 1rem;
  --font-size-small: 0.875rem;

  /* Layout */
  --app-bar-height: 80px;
  --container-max-width: 1140px;
  --section-padding-x: 150px;

  /* Animations */
  --transition-slow: 1.2s cubic-bezier(0.2, 0.8, 0.2, 1);
  --transition-medium: 0.8s cubic-bezier(0.2, 0.8, 0.2, 1);
  --transition-fast: 0.4s cubic-bezier(0.2, 0.8, 0.2, 1);
}

/* ─── Scroll Reveal Animations ───────────────────────────────── */
/* Base reveal class */
.reveal {
  opacity: 0;
  transition: var(--transition-medium);
}

.reveal-up {
  transform: translateY(40px);
}

.reveal-left {
  transform: translateX(-40px);
}

.reveal-right {
  transform: translateX(40px);
}

.reveal-scale {
  transform: scale(0.9);
}

.reveal.active {
  opacity: 1;
  transform: translate(0, 0) scale(1);
}

/* Staggered Animations for grids/cards */
.reveal-stagger > * {
  opacity: 0;
  transform: translateY(30px);
  transition: var(--transition-medium);
}

.reveal-stagger.active > * {
  opacity: 1;
  transform: translateY(0);
}

/* Stagger delays - more elements supported */
.reveal-stagger.active > *:nth-child(1) { transition-delay: 0.08s; }
.reveal-stagger.active > *:nth-child(2) { transition-delay: 0.16s; }
.reveal-stagger.active > *:nth-child(3) { transition-delay: 0.24s; }
.reveal-stagger.active > *:nth-child(4) { transition-delay: 0.32s; }
.reveal-stagger.active > *:nth-child(5) { transition-delay: 0.40s; }
.reveal-stagger.active > *:nth-child(6) { transition-delay: 0.48s; }
.reveal-stagger.active > *:nth-child(7) { transition-delay: 0.56s; }
.reveal-stagger.active > *:nth-child(8) { transition-delay: 0.64s; }
.reveal-stagger.active > *:nth-child(9) { transition-delay: 0.72s; }
.reveal-stagger.active > *:nth-child(10) { transition-delay: 0.80s; }
.reveal-stagger.active > *:nth-child(11) { transition-delay: 0.88s; }
.reveal-stagger.active > *:nth-child(12) { transition-delay: 0.96s; }
