:root {
  --ink: #10192E;
  --paper: #F7F5F0;
  --signal: #E63946;
  --slate: #5B6472;
  --charcoal: #1F2430;
  --gold: #D4A24C;
}

body {
  background: var(--paper);
  color: var(--charcoal);
  font-family: 'Inter', system-ui, sans-serif;
}

.font-display { font-family: 'Fraunces', Georgia, serif; }
.font-mono { font-family: 'IBM Plex Mono', ui-monospace, monospace; }

/* Ticker marquee */
.ticker-track {
  display: inline-flex;
  white-space: nowrap;
  animation: ticker-scroll 32s linear infinite;
}
.ticker-wrap:hover .ticker-track { animation-play-state: paused; }
@keyframes ticker-scroll {
  0% { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
  .ticker-track { animation: none; }
}

/* Visible keyboard focus */
a:focus-visible, button:focus-visible, input:focus-visible, textarea:focus-visible, select:focus-visible {
  outline: 2px solid var(--signal);
  outline-offset: 2px;
}

/* Article body typography */
.prose-article {
  font-size: 1.125rem;
  line-height: 1.85;
  color: var(--charcoal);
}
.prose-article p { margin-bottom: 1.25em; }
.prose-article p:first-of-type::first-letter {
  font-family: 'Fraunces', serif;
  font-size: 3.4rem;
  font-weight: 600;
  float: left;
  line-height: 0.85;
  padding-right: 0.12em;
  padding-top: 0.05em;
  color: var(--signal);
}

.line-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.line-clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.category-tag {
  font-family: 'IBM Plex Mono', monospace;
  letter-spacing: 0.06em;
  text-transform: uppercase;
  font-size: 0.68rem;
}

.rank-num {
  font-family: 'Fraunces', serif;
  font-weight: 600;
  color: var(--signal);
  font-size: 2rem;
  line-height: 1;
  opacity: 0.9;
}
