:root {
  --bg-0: #05070D; --bg-1: #0A0F1C; --bg-2: #121a2e; --bg-3: #1a2440;
  --line: rgba(255,255,255,0.09); --line-strong: rgba(255,255,255,0.18);
  --ink: #F3F5FA; --muted: #9AA6C6; --muted-2: #5E6B8C;
  --gold: #F0B24B; --gold-2: #FCD97A; --violet: #9B7BF7; --blue: #5A7BFF; --teal: #2FD9BE; --danger: #F87171;
  --grad-gold: linear-gradient(120deg, var(--gold-2), var(--gold) 70%);
  --grad-brand: linear-gradient(120deg, var(--violet), var(--blue));
  --radius-sm: 12px; --radius-md: 16px; --radius-lg: 22px; --radius-xl: 30px;
  --ease: cubic-bezier(.16,1,.3,1);
  --font-ticket: 'Courier Prime', monospace;
}
/* Ticket-stock type: reserved for genuine boarding-pass-style data (fares, route
   codes, order/tracking numbers) -- never badges, nav, or headings. Courier Prime
   traces back to the impact/dot-matrix printers real ATB tickets and boarding
   passes were printed on, so it's doing a specific job here, not standing in for
   "this is a number." */
.ticket-mono { font-family: var(--font-ticket); font-variant-numeric: tabular-nums; letter-spacing: 0.01em; }
* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
a { color: var(--gold-2); text-decoration: none; }
a:hover { text-decoration: underline; }
a:focus-visible, button:focus-visible, input:focus-visible { outline: 2px solid var(--gold); outline-offset: 3px; border-radius: 6px; }
.serif { font-family: 'Frank Ruhl Libre', serif; }
.nav-logo { font-family: 'Frank Ruhl Libre', serif; font-weight: 700; font-size: 19px; }
.nav-logo span { background: var(--grad-gold); -webkit-background-clip: text; background-clip: text; color: transparent; }
footer { color: var(--muted-2); font-size: 12.5px; text-align: center; }
footer a { color: var(--gold-2); font-weight: 700; }
