*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--bg);
  color: var(--text);
  font-family: var(--font-body);
  font-size: var(--fs-body);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, h4, p, ul, ol, figure { margin: 0; }
ul, ol { padding: 0; list-style: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; }
a { color: var(--text); text-decoration-color: var(--border-strong); text-underline-offset: 3px; transition: color var(--dur-hover) var(--ease); }
a:hover { color: var(--accent); }
:focus-visible { outline: 2px solid var(--focus-ring); outline-offset: 3px; }
::selection { background: var(--accent); color: var(--on-accent); }

.fa-hero { font-family: var(--font-display); font-weight: 400; font-size: var(--fs-hero); line-height: var(--lh-display); letter-spacing: var(--ls-display); text-wrap: balance; }
.fa-h1 { font-family: var(--font-display); font-weight: 400; font-size: var(--fs-h1-game); line-height: 1; letter-spacing: var(--ls-display); text-wrap: balance; }
.fa-h2 { font-family: var(--font-heading); font-weight: 800; font-size: var(--fs-h2); line-height: var(--lh-heading); letter-spacing: -0.015em; text-wrap: balance; }
.fa-h3 { font-family: var(--font-heading); font-weight: 800; font-size: var(--fs-h3); line-height: 1.2; letter-spacing: -0.01em; }
.fa-lead { font-size: var(--fs-body-lg); line-height: 1.55; color: var(--text-secondary); text-wrap: pretty; }
.fa-body { font-size: var(--fs-body); line-height: var(--lh-body); color: var(--text-secondary); text-wrap: pretty; }
.fa-small { font-size: var(--fs-small); line-height: 1.5; color: var(--text-secondary); }
.fa-label { font-family: var(--font-body); font-size: var(--fs-label); font-weight: var(--fw-label); line-height: 1.2; letter-spacing: var(--ls-label); text-transform: uppercase; color: var(--text-muted); }
.fa-label--accent { color: var(--accent); }
.fa-label--strong { color: var(--text); }
.fa-num { font-family: var(--font-display); font-weight: 400; font-variant-numeric: tabular-nums; line-height: 1; }
.fa-tabular { font-variant-numeric: tabular-nums; }
.fa-container { max-width: var(--max-global); margin: 0 auto; padding-inline: var(--pad-page); }
.fa-screen { animation: fa-screen var(--dur-screen) var(--ease) both; }
@keyframes fa-screen { from { opacity: 0; } to { opacity: 1; } }
@keyframes fa-reveal { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; }
}
