/* ============================================================
   base.css — typography, body, theme transition
   ============================================================ */

body {
  font-family: var(--font-body);
  font-size: var(--fs-base);
  font-weight: 400;
  line-height: var(--lh-base);
  color: var(--text-secondary);
  background-color: var(--bg-page);
  background-image:
    radial-gradient(ellipse at 20% 0%, rgba(26, 58, 143, 0.08), transparent 55%),
    radial-gradient(ellipse at 95% 100%, rgba(201, 169, 110, 0.05), transparent 55%);
  background-attachment: fixed;
  -webkit-tap-highlight-color: transparent;
  /* Mobile-first overflow safety net — cuts horizontal page scroll. */
  overflow-x: clip;
  max-width: 100%;
}

html {
  overflow-x: clip;
}

[data-theme="light"] body {
  background-image:
    radial-gradient(ellipse at 10% 0%, rgba(140, 107, 58, 0.06), transparent 55%),
    radial-gradient(ellipse at 95% 100%, rgba(26, 58, 143, 0.04), transparent 55%);
}

/* Lock scroll while mobile menu open (B2 defense) */
body.is-locked {
  overflow: hidden;
  touch-action: none;
}

/* Theme transition window — applied for ~420ms on toggle */
.is-theme-transitioning,
.is-theme-transitioning *,
.is-theme-transitioning *::before,
.is-theme-transitioning *::after {
  transition:
    background-color 420ms var(--ease-out),
    color 420ms var(--ease-out),
    border-color 420ms var(--ease-out),
    box-shadow 420ms var(--ease-out),
    fill 420ms var(--ease-out),
    stroke 420ms var(--ease-out) !important;
}

/* ---------- HEADINGS ---------- */
h1, h2, h3, h4, h5, h6 {
  font-family: var(--font-display);
  font-weight: 600;
  line-height: var(--lh-tight);
  color: var(--text-primary);
  text-wrap: balance;
}

h1 { font-size: var(--fs-4xl); letter-spacing: var(--tracking-tight); }
h2 { font-size: var(--fs-3xl); letter-spacing: var(--tracking-tight); }
h3 { font-size: var(--fs-xl);  letter-spacing: var(--tracking-base); }
h4 { font-size: var(--fs-lg);  letter-spacing: var(--tracking-base); }

p { line-height: var(--lh-base); text-wrap: pretty; }

a {
  color: var(--text-secondary);
  transition: color var(--dur-fast) var(--ease-out);
}
a:hover { color: var(--brand-accent); }

strong, b { color: var(--text-primary); font-weight: 600; }

/* Inline accent — used for the gold underline word */
.accent {
  position: relative;
  color: var(--brand-accent);
  font-style: normal;
}
.accent::after {
  content: '';
  position: absolute;
  left: 0; right: 0; bottom: -0.06em;
  height: 0.08em;
  background: linear-gradient(90deg, transparent, var(--brand-accent), transparent);
  border-radius: 2px;
}

/* Eyebrow / kicker text */
.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: var(--sp-3);
  font-family: var(--font-body);
  font-size: var(--fs-xs);
  font-weight: 600;
  letter-spacing: var(--tracking-widest);
  text-transform: uppercase;
  color: var(--brand-accent);
}
.eyebrow::before {
  content: '';
  width: 28px;
  height: 1px;
  background: var(--brand-accent);
  display: inline-block;
}

/* ---------- UTILITY HELPERS ---------- */
.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;
}

.skip-link {
  position: absolute;
  top: -40px; left: 0;
  padding: var(--sp-3) var(--sp-5);
  background: var(--brand-accent);
  color: var(--c-black);
  font-weight: 600;
  z-index: 9999;
  transform: translateY(0);
  transition: top var(--dur-fast) var(--ease-out);
}
.skip-link:focus { top: 0; }
