:root {
  --paper: #faf9f6;
  --ink: #1a1a1a;
  --muted: #6b6b6b;
  --rule: #1a1a1a;
  --accent: #8b1a1a;
}

body {
  background: var(--paper);
  color: var(--ink);
  font-family: "Source Serif 4", Georgia, serif;
}
.bg-paper { background: var(--paper) !important; }

h1, h2, h3, .h1, .h2, .h3, .h4, .h5 {
  font-family: "Playfair Display", Georgia, serif;
  font-weight: 700;
}

a { color: var(--ink); }
a:hover { color: var(--accent); }

.topbar { font-size: .8rem; color: var(--muted); }

.masthead { max-height: 160px; }
.masthead-sm { max-height: 80px; }

.navbar .nav-link {
  color: var(--ink);
  text-transform: uppercase;
  letter-spacing: .08em;
  font-size: .85rem;
  font-weight: 600;
  padding: .6rem 1rem !important;
}
.navbar .nav-link:hover,
.navbar .nav-link.active { color: var(--accent); }
.navbar-toggler { border: 1px solid var(--ink); font-size: .85rem; text-transform: uppercase; }

.launch {
  border-top: 3px double var(--rule);
  border-bottom: 3px double var(--rule);
}

.section-head {
  border-bottom: 2px solid var(--rule);
  padding-bottom: .35rem;
  margin-bottom: .75rem;
  text-transform: uppercase;
  letter-spacing: .05em;
}

/* Article cards */
.story-card img, .lead-story img {
  width: 100%;
  aspect-ratio: 16 / 9;
  object-fit: cover;
  background: #e6e3dc;
}
.story-card h3 { font-size: 1.2rem; margin: .5rem 0 .3rem; }
.story-card h3 a, .lead-story h2 a { text-decoration: none; }
.kicker {
  color: var(--accent);
  text-transform: uppercase;
  font-size: .75rem;
  font-weight: 600;
  letter-spacing: .08em;
}
.byline { color: var(--muted); font-size: .85rem; }
.lead-story { border-bottom: 1px solid var(--rule); padding-bottom: 1.25rem; }
.lead-story h2 { font-size: clamp(1.6rem, 4vw, 2.4rem); font-weight: 900; }

/* Single article */
#story h1 { font-size: clamp(1.8rem, 5vw, 2.8rem); font-weight: 900; }
#story .body { font-size: 1.15rem; line-height: 1.75; }
#story .body p:first-of-type::first-letter {
  float: left;
  font-family: "Playfair Display", serif;
  font-size: 3.6rem;
  line-height: .9;
  padding: .25rem .5rem 0 0;
}

.sidebar-box { border: 1px solid var(--rule); }

/* Ad slots: placeholders until AdSense is live */
.ad-slot {
  display: flex;
  align-items: center;
  justify-content: center;
  border: 1px dashed #bbb;
  color: #aaa;
  font-size: .7rem;
  text-transform: uppercase;
  letter-spacing: .1em;
}
.ad-leaderboard { min-height: 90px; max-width: 728px; margin-left: auto; margin-right: auto; }
.ad-rect { min-height: 250px; }

footer a { text-decoration: none; }
