/* ============================================================
   Base — resets, typography defaults, accessibility, layout
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; }
html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    transition-duration: 0.001ms !important;
  }
}

body {
  font-family: var(--font-body);
  font-size: var(--t-base);
  line-height: 1.65;
  color: var(--c-ink);
  background: var(--c-cream);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img, svg, video { display: block; max-width: 100%; height: auto; }
img { background: var(--c-sage-50); }

a { color: var(--c-navy-800); text-decoration-thickness: 1px; text-underline-offset: 3px; }
a:hover { color: var(--c-gold-600); }

/* Visible, accessible focus ring */
:focus-visible {
  outline: 3px solid var(--c-gold-500);
  outline-offset: 2px;
  border-radius: 3px;
}

/* Skip link */
.skip-link {
  position: absolute; top: -40px; left: 1rem;
  background: var(--c-navy-900); color: #fff;
  padding: 0.5rem 0.875rem; border-radius: var(--radius-sm);
  font-size: var(--t-sm); z-index: 100;
}
.skip-link:focus { top: 0.75rem; }

/* Headings — display serif */
h1, h2, h3, h4 {
  font-family: var(--font-display);
  font-weight: 500;
  letter-spacing: -0.01em;
  line-height: 1.15;
  color: var(--c-navy-900);
}
h1 { font-size: var(--t-3xl); line-height: 1.05; letter-spacing: -0.02em; }
h2 { font-size: var(--t-2xl); }
h3 { font-size: var(--t-xl); }
h4 { font-size: var(--t-lg); font-weight: 600; }

p, li { color: var(--c-ink); }
small, .meta { font-size: var(--t-xs); color: var(--c-ink-mute); }

/* Layout helpers */
.container { width: 100%; max-width: var(--container); margin-inline: auto; padding-inline: clamp(1.25rem, 4vw, 2.5rem); }
.container-narrow { width: 100%; max-width: var(--container-narrow); margin-inline: auto; padding-inline: clamp(1.25rem, 4vw, 2rem); }
.section { padding-block: clamp(var(--s-10), 8vw, var(--s-16)); }

/* Buttons */
.btn {
  display: inline-flex; align-items: center; gap: 0.5rem;
  padding: 0.85rem 1.4rem;
  font: 600 var(--t-sm)/1 var(--font-body);
  border-radius: 999px;
  text-decoration: none;
  border: 1px solid transparent;
  transition: transform 0.18s var(--ease), background-color 0.18s var(--ease), color 0.18s var(--ease), box-shadow 0.18s var(--ease);
  cursor: pointer;
}
.btn:hover { transform: translateY(-1px); }
.btn:active { transform: translateY(0); }

.btn-primary {
  background: var(--c-gold-600); color: var(--c-navy-900);
  box-shadow: var(--shadow-sm);
}
.btn-primary:hover { background: var(--c-gold-500); color: var(--c-navy-900); }

.btn-secondary {
  background: var(--c-navy-900); color: #fff;
}
.btn-secondary:hover { background: var(--c-navy-800); color: #fff; }

.btn-ghost {
  background: transparent; color: var(--c-navy-900);
  border-color: var(--c-navy-900);
}
.btn-ghost:hover { background: var(--c-navy-900); color: #fff; }

/* Visually hidden (for screen readers) */
.sr-only {
  position: absolute; width: 1px; height: 1px;
  padding: 0; margin: -1px; overflow: hidden;
  clip: rect(0,0,0,0); white-space: nowrap; border: 0;
}

/* Section labels — small caps eyebrow */
.eyebrow {
  display: inline-block;
  font: 600 var(--t-xs)/1 var(--font-body);
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--c-sage-700);
}
