/* base.css — reset, document defaults, background layers, shared utilities */

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

html {
  scroll-behavior: smooth;
  /* anchors land below the fixed nav instead of under it */
  scroll-padding-top: var(--nav-h);
  -webkit-text-size-adjust: 100%;
}

body {
  background: var(--bg);
  color: var(--text);
  font-family: var(--sans);
  font-size: var(--fs-body);
  line-height: 1.6;
  overflow-x: hidden;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* ── Background layers ── */
.bg-grid {
  position: fixed; inset: 0; z-index: 0; pointer-events: none;
  background-image:
    linear-gradient(rgba(21,32,53,.55) 1px, transparent 1px),
    linear-gradient(90deg, rgba(21,32,53,.55) 1px, transparent 1px);
  background-size: clamp(32px, 6vw, 44px) clamp(32px, 6vw, 44px);
  -webkit-mask-image: radial-gradient(ellipse 120% 90% at 50% 0%, #000 55%, transparent 100%);
          mask-image: radial-gradient(ellipse 120% 90% at 50% 0%, #000 55%, transparent 100%);
}
.bg-glow { position: fixed; pointer-events: none; z-index: 0; border-radius: 50%; filter: blur(130px); }
.bg-glow-1 { width: min(60vw,700px); height: min(45vw,500px); top: -150px; right: -100px; background: rgba(200,168,72,.045); }
.bg-glow-2 { width: min(55vw,600px); height: min(55vw,600px); bottom: -100px; left: -150px; background: rgba(0,212,255,.03); }

/* ── Layout primitives ── */
section { position: relative; z-index: 1; scroll-margin-top: var(--nav-h); }
.container { width: 100%; max-width: var(--maxw); margin: 0 auto; padding: 0 var(--gutter); }

/* ── Scroll-reveal utility (toggled by reveal.js) ── */
.reveal { opacity: 0; transform: translateY(22px); transition: opacity .7s var(--ease), transform .7s var(--ease); }
.reveal.in { opacity: 1; transform: translateY(0); }
.reveal-d1 { transition-delay: .07s; }
.reveal-d2 { transition-delay: .14s; }
.reveal-d3 { transition-delay: .21s; }
.reveal-d4 { transition-delay: .28s; }
.reveal-d5 { transition-delay: .35s; }
.reveal-d6 { transition-delay: .42s; }

/* ── Accessibility: visible keyboard focus ── */
a:focus-visible,
button:focus-visible {
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: 2px;
}

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