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

:root {
  --blue-deep:    #0B2447;
  --blue-primary: #1A4F8C;
  --blue-medium:  #2563A8;
  --blue-light:   #4A8FD4;
  --blue-pale:    #C8DFF5;
  --blue-ghost:   #EBF4FF;
  --orange:       #E87809;
  --orange-light: #F5A32B;
  --orange-deep:  #C66000;
  --orange-pale:  #FFF3E0;
  --white:        #FFFFFF;
  --off-white:    #F7FAFF;
  --text-dark:    #081830;
  --text-mid:     #2A4870;
  --text-light:   #567AAC;
  --font-display: 'Cormorant Garamond', Georgia, serif;
  --font-body:    'Jost', system-ui, sans-serif;
}

html {
  scroll-behavior: smooth;
}

body {
  font-family: var(--font-body);
  color: var(--text-dark);
  background: var(--white);
  line-height: 1.6;
  overflow-x: hidden;
}

/* ── Shared section utilities ── */
.section-label {
  display: inline-flex;
  align-items: center;
  gap: 0.75rem;
  font-size: 0.7rem;
  font-weight: 700;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--orange);
  margin-bottom: 1.125rem;
}
.section-label::before {
  content: '';
  display: inline-block;
  width: 28px;
  height: 1.5px;
  background: var(--orange);
  flex-shrink: 0;
}
.section-label.light {
  color: var(--orange-light);
}
.section-label.light::before {
  background: var(--orange-light);
}
.section-label.centered {
  justify-content: center;
  margin-bottom: 1.25rem;
}

.section-title {
  font-family: var(--font-display);
  font-size: clamp(1.85rem, 4vw, 3.25rem);
  font-weight: 600;
  line-height: 1.12;
  color: var(--blue-deep);
}
.section-title.light {
  color: var(--white);
}

.section-body {
  font-size: 0.975rem;
  font-weight: 300;
  color: var(--text-mid);
  line-height: 1.85;
}
.section-body.light {
  color: rgba(255, 255, 255, 0.58);
}

/* Adjacent element spacing — eliminates inline margin hacks */
.section-title + .section-body {
  margin-top: 1.125rem;
}
.section-body + .section-body {
  margin-top: 0.875rem;
}

/* Inline text utility */
.text-brand {
  color: var(--blue-primary);
  font-weight: 600;
}

/* ── Buttons ── */
.btn-solid {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  background: var(--orange);
  color: var(--white);
  text-decoration: none;
  padding: 0.875rem 2rem;
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 700;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border-radius: 2px;
  transition: background 0.25s, transform 0.2s;
}
.btn-solid:hover {
  background: var(--orange-light);
  transform: translateY(-2px);
}

.btn-ghost {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  border: 1.5px solid rgba(255, 255, 255, 0.3);
  color: rgba(255, 255, 255, 0.85);
  text-decoration: none;
  padding: 0.875rem 2rem;
  font-family: var(--font-body);
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  border-radius: 2px;
  transition: border-color 0.25s, background 0.25s;
}
.btn-ghost:hover {
  border-color: rgba(255, 255, 255, 0.7);
  background: rgba(255, 255, 255, 0.06);
}

/* ── Scroll-reveal ── */
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.75s cubic-bezier(0.22, 1, 0.36, 1),
              transform 0.75s cubic-bezier(0.22, 1, 0.36, 1);
}
.reveal.in {
  opacity: 1;
  transform: none;
}
.d1 { transition-delay: 0.08s; }
.d2 { transition-delay: 0.16s; }
.d3 { transition-delay: 0.24s; }
.d4 { transition-delay: 0.32s; }
.d5 { transition-delay: 0.40s; }

/* ── Keyframes ── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(22px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes scrollPulse {
  0%, 100% { opacity: 0.35; }
  50%       { opacity: 1; }
}
