/* ==========================================================================
   The Alternatives — Base
   Body layers the page gradient + a near-invisible cross-hatch texture,
   background-attachment: fixed. [web]
   ========================================================================== */

* { box-sizing: border-box; }

body {
  margin: 0;
  font-family: var(--font-sans);
  color: var(--text-primary);
  background-color: var(--surface-page);
  background-image:
    repeating-linear-gradient(45deg, var(--texture-line) 0 1px, transparent 1px 8px),
    repeating-linear-gradient(-45deg, var(--texture-line) 0 1px, transparent 1px 8px),
    var(--gradient-page);
  background-attachment: fixed;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* Links */
a { color: var(--accent-primary-bright); text-decoration: none; transition: var(--transition-colors); }
a:hover { color: var(--accent-primary); text-decoration: underline; text-underline-offset: 3px; }

/* Tabular numerals for in-app numeric readouts */
.tabular-nums { font-variant-numeric: tabular-nums; }

/* Heading helpers (optional convenience) */
.text-display { font-size: var(--text-display); line-height: var(--text-display-lh); letter-spacing: var(--text-display-tracking); font-weight: var(--fw-bold); margin: 0; }
.text-h1 { font-size: var(--text-h1); line-height: var(--text-h1-lh); letter-spacing: var(--text-h1-tracking); font-weight: var(--fw-bold); margin: 0; }
.text-h2 { font-size: var(--text-h2); line-height: var(--text-h2-lh); font-weight: var(--fw-semibold); margin: 0; }
.text-h3 { font-size: var(--text-h3); line-height: var(--text-h3-lh); font-weight: var(--fw-semibold); margin: 0; }
.text-h4 { font-size: var(--text-h4); line-height: var(--text-h4-lh); font-weight: var(--fw-medium); margin: 0; }
