/* ──────────────────────────────────────────────────────────────────────────
   Policy Friday — The Newsroom
   Editorial broadsheet with a glass-wall reveal of editorial machinery.

   Palette: cream paper · ink black · oxblood masthead accent · 4 signal hues
   Type:    Source Serif 4 (everything textual) · IBM Plex Mono (data accents)
   ────────────────────────────────────────────────────────────────────────── */

:root {
  /* Paper */
  --paper:        #f4ede0;
  --paper-deep:   #ebe0c9;
  --ink:          #1a1714;
  --ink-soft:     #4a423b;
  --ink-mute:     #8a8378;
  --rule:         #1a1714;

  /* Editorial accent */
  --accent:       #8a2727;       /* oxblood */
  --accent-warm:  #b04a3a;
  --gold:         #b08a3e;

  /* Signal stamps */
  --sig-opening:    #4d6a3a;
  --sig-tightening: #8a2727;
  --sig-mixed:      #b08a3e;
  --sig-watchlist:  #5a5e63;

  /* Workshop / machinery */
  --shop-bg:      #161412;
  --shop-deep:    #0c0b0a;
  --shop-fg:      #d6cfc1;
  --shop-mute:    #8a8378;
  --shop-line:    #2c2723;
  --shop-warn:    #d2a04a;
  --shop-ok:      #7eb46a;
  --shop-fail:    #c25a4a;

  /* Type — one serif (Source Serif 4) does display + body via opsz axis */
  --serif:         'Source Serif 4', 'Source Serif Pro', Georgia, 'Times New Roman', serif;
  --serif-display: var(--serif);
  --serif-body:    var(--serif);
  --mono:          'IBM Plex Mono', ui-monospace, 'SF Mono', Menlo, monospace;

  /* Measure */
  --column:        70ch;
  --shoulder:      clamp(1.5rem, 4vw, 4rem);
}

* { box-sizing: border-box; }

html, body { margin: 0; padding: 0; }

html {
  font-size: 17px;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}

body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--serif-body);
  font-weight: 400;
  line-height: 1.55;
  font-feature-settings: "kern", "liga", "onum";
}

a { color: inherit; }

/* ── Paper grain texture overlay ──────────────────────────────────────── */
.paper {
  position: relative;
  padding: 0 var(--shoulder) 6rem;
  background:
    /* faint cream gradient toward edges */
    radial-gradient(ellipse at top, rgba(255,251,240,.6), transparent 60%),
    var(--paper);
}
.paper::before {
  content: "";
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 1;
  opacity: .35;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240' viewBox='0 0 240 240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 .12  0 0 0 0 .09  0 0 0 0 .07  0 0 0 .07 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* ── Masthead ─────────────────────────────────────────────────────────── */
.masthead {
  padding: 4rem 0 1.5rem;
  position: relative;
}
.masthead-inner {
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: end;
  gap: 1.5rem;
  max-width: 1200px;
  margin: 0 auto;
}
.masthead-meta {
  font-family: var(--mono);
  font-size: .75rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-soft);
  display: flex;
  gap: .55em;
  align-items: center;
  padding-bottom: .85rem;
}
.masthead-meta.left  { justify-content: flex-start; }
.masthead-meta.right { justify-content: flex-end; }
.rule-tag {
  border: 1px solid var(--ink);
  padding: .15em .55em;
  text-decoration: none;
  font-weight: 500;
}
.dot { color: var(--ink-mute); }

.masthead-title {
  font-family: var(--serif-display);
  font-weight: 900;
  font-stretch: 100%;
  font-style: normal;
  font-size: clamp(3rem, 9vw, 7rem);
  line-height: 1;
  letter-spacing: -0.025em;
  text-align: center;
  margin: 0;
  color: var(--ink);
  font-feature-settings: "kern", "liga";
  font-variation-settings: "opsz" 60;
}
.masthead-title br { content: " "; }

.standfirst {
  max-width: 38rem;
  margin: 1.4rem auto 0;
  text-align: center;
  font-size: 1.05rem;
  color: var(--ink-soft);
  line-height: 1.5;
}

.masthead-rule {
  margin-top: 2rem;
  height: 4px;
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  background: var(--paper);
  position: relative;
}
.masthead-rule::after {
  content: "";
  display: block;
  height: 1px;
  background: var(--ink);
  margin-top: 1px;
}

/* ── Section heads ────────────────────────────────────────────────────── */
.section-head {
  max-width: 1200px;
  margin: 5rem auto 2rem;
  text-align: left;
  padding-top: 2rem;
  border-top: 1px solid var(--ink);
}
.section-kicker {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent);
}
.section-title {
  font-family: var(--serif-display);
  font-weight: 700;
  font-size: clamp(2rem, 4vw, 3.2rem);
  line-height: 1;
  margin: .35rem 0 .75rem;
  letter-spacing: -0.02em;
}
.section-blurb {
  max-width: 38rem;
  font-style: italic;
  color: var(--ink-soft);
  margin: 0;
}

/* ── HERO — this week's edition ───────────────────────────────────────── */
.hero {
  max-width: 1200px;
  margin: 3rem auto 0;
  position: relative;
  z-index: 2;
}

.hero-banner {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding-bottom: .9rem;
  border-bottom: 1px solid var(--ink);
  margin-bottom: 2.4rem;
}
.kicker {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ink-soft);
  flex: 0 0 auto;
}
.banner-rule {
  flex: 1 1 auto;
  height: 1px;
  background: var(--ink-mute);
}

.hero-body {
  display: grid;
  grid-template-columns: minmax(0, 1.5fr) minmax(280px, 1fr);
  gap: 3rem;
  align-items: start;
}
@media (max-width: 800px) {
  .hero-body { grid-template-columns: 1fr; gap: 2rem; }
}

.hero-deck { order: 1; }
.hero-stamp { order: 2; }
@media (max-width: 800px) {
  .hero-deck { order: 2; }
  .hero-stamp { order: 1; }
}

.deck-headline {
  font-family: var(--serif-display);
  font-size: clamp(2rem, 4.5vw, 3.6rem);
  line-height: 1.05;
  font-weight: 700;
  letter-spacing: -0.02em;
  margin: 0 0 1.4rem;
  font-variation-settings: "opsz" 60;
}
.deck-lede {
  font-size: 1.15rem;
  line-height: 1.55;
  margin: 0 0 2rem;
  color: var(--ink-soft);
  max-width: 38rem;
}
.deck-lede strong { color: var(--ink); font-weight: 600; }

/* The signal stamp — looks like an inked editorial stamp. */
.stamp {
  border: 2px solid currentColor;
  padding: 1rem 1.2rem 1.1rem;
  position: relative;
  transform: rotate(-1.2deg);
  background: var(--paper);
  box-shadow: inset 0 0 0 4px var(--paper), 0 0 0 1px currentColor;
  font-family: var(--mono);
  margin-bottom: 2rem;
}
.stamp::before, .stamp::after {
  content: "";
  position: absolute;
  height: 6px;
  background: currentColor;
  opacity: .25;
}
.stamp::before { top: -3px; left: 12px; right: 12px; }
.stamp::after  { bottom: -3px; left: 12px; right: 12px; }
.stamp-mark {
  font-size: .65rem;
  letter-spacing: .25em;
  text-transform: uppercase;
  color: currentColor;
  opacity: .85;
}
.stamp-value {
  font-family: var(--serif-display);
  font-weight: 900;
  font-size: 2.2rem;
  line-height: 1;
  margin: .25rem 0 .35rem;
  color: currentColor;
  letter-spacing: -0.01em;
  font-variation-settings: "opsz" 60;
  text-transform: uppercase;
}
.stamp-blurb {
  font-family: var(--serif-body);
  font-style: italic;
  font-size: .9rem;
  color: var(--ink);
  line-height: 1.35;
}
.stamp.sig-opening    { color: var(--sig-opening); }
.stamp.sig-tightening { color: var(--sig-tightening); }
.stamp.sig-mixed      { color: var(--sig-mixed); }
.stamp.sig-watchlist  { color: var(--sig-watchlist); }

.hero-tally {
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  padding: .9rem 0;
}
.tally-row {
  display: flex;
  align-items: baseline;
  gap: .8rem;
  padding: .25rem 0;
  border-bottom: 1px dotted var(--ink-mute);
}
.tally-row:last-child { border-bottom: 0; }
.tally-num {
  font-family: var(--serif-display);
  font-weight: 700;
  font-size: 1.6rem;
  min-width: 3ch;
  font-variation-settings: "opsz" 60, "wght" 700;
  font-feature-settings: "tnum", "lnum";
}
.tally-lbl {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--ink-soft);
}

/* ── Downloads bar ────────────────────────────────────────────────────── */
.downloads {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: .6rem .8rem;
  padding: 1rem 1.1rem;
  background: var(--paper-deep);
  border: 1px solid var(--ink);
}
.downloads-label {
  font-family: var(--mono);
  font-size: .7rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ink);
  margin-right: .8rem;
  border-right: 1px solid var(--ink);
  padding-right: .8rem;
}
.download-btn {
  display: inline-flex;
  align-items: center;
  gap: .4em;
  font-family: var(--serif-body);
  font-size: 1rem;
  text-decoration: none;
  color: var(--ink);
  border-bottom: 1px solid transparent;
  padding-bottom: 1px;
  transition: border-color .15s, color .15s;
}
.download-btn:hover {
  color: var(--accent);
  border-bottom-color: var(--accent);
}
.download-arrow {
  font-family: var(--mono);
  font-size: .8em;
  color: var(--accent);
}

/* ── Signal cards (the dispatches) ────────────────────────────────────── */
.signals {
  list-style: none;
  margin: 4rem 0 3rem;
  padding: 0;
  border-top: 1px solid var(--ink);
}
.signal {
  display: grid;
  grid-template-columns: 5rem minmax(0, 1fr);
  gap: 1.5rem;
  padding: 2rem 0;
  border-bottom: 1px solid var(--ink);
  position: relative;
}
.signal-num {
  font-family: var(--serif-display);
  font-size: clamp(2.5rem, 5vw, 4rem);
  font-weight: 700;
  line-height: 1;
  color: var(--accent);
  font-variation-settings: "opsz" 60;
  font-feature-settings: "lnum", "onum" off;
  padding-top: .25rem;
}
.signal-body { padding-top: .35rem; }
.signal-meta {
  display: flex;
  align-items: center;
  gap: .55rem;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: 1rem;
  flex-wrap: wrap;
}
.agency-tag {
  border: 1px solid var(--ink);
  padding: .12em .55em;
  font-weight: 600;
  color: var(--ink);
  letter-spacing: .14em;
}
.src-link {
  margin-left: auto;
  display: inline-flex;
  align-items: center;
  gap: .35em;
  text-decoration: none;
  color: var(--ink);
  border-bottom: 1px solid var(--ink);
  padding-bottom: 1px;
}
.src-link:hover { color: var(--accent); border-color: var(--accent); }
.src-arrow { font-family: var(--mono); font-size: .9em; }

.signal-hook {
  font-family: var(--serif-display);
  font-size: clamp(1.4rem, 2.3vw, 1.85rem);
  line-height: 1.18;
  margin: 0 0 .9rem;
  font-weight: 500;
  letter-spacing: -0.005em;
  font-variation-settings: "opsz" 60;
}
.signal-why {
  font-size: 1.05rem;
  line-height: 1.55;
  margin: 0;
  color: var(--ink-soft);
  max-width: 62ch;
}
.signal-why strong { color: var(--ink); font-weight: 600; }

/* Drop cap on the first signal */
.signal:first-child .signal-hook::first-letter {
  font-family: var(--serif-display);
  font-weight: 900;
  font-size: 4em;
  line-height: 0.85;
  float: left;
  padding: .08em .12em 0 0;
  color: var(--accent);
  font-variation-settings: "opsz" 60;
}

/* ── Ornament & CTA ───────────────────────────────────────────────────── */
.ornament {
  text-align: center;
  font-family: var(--serif-display);
  font-size: 1.5rem;
  color: var(--accent);
  margin: 2rem 0 0;
  letter-spacing: .8em;
  padding-left: .8em;
}
.cta {
  text-align: center;
  margin: 1rem auto 4rem;
  padding: 2.5rem 1rem 0;
  max-width: 38rem;
}
.cta p {
  font-style: italic;
  color: var(--ink-soft);
  margin: 0 0 .8rem;
}
.cta-link {
  display: inline-flex;
  align-items: baseline;
  gap: .55em;
  font-family: var(--serif-display);
  font-weight: 700;
  font-size: 1.5rem;
  text-decoration: none;
  color: var(--accent);
  border-bottom: 2px solid var(--accent);
  padding-bottom: 4px;
  font-variation-settings: "opsz" 60;
}
.cta-link:hover {
  color: var(--ink);
  border-color: var(--ink);
}
.cta-arrow { font-family: var(--mono); font-size: .8em; }

/* ── Empty state ──────────────────────────────────────────────────────── */
.empty-state {
  max-width: 1200px;
  margin: 6rem auto;
  text-align: center;
  font-family: var(--serif-display);
}
.empty-state h2 { font-size: 2.6rem; margin: 0 0 .6rem; font-weight: 500; }
.empty-state p  { color: var(--ink-soft); font-style: italic; }

/* ── ARCHIVE ──────────────────────────────────────────────────────────── */
.archive {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}
.archive-table {
  width: 100%;
  border-collapse: collapse;
  margin: 1rem 0 4rem;
  font-size: .98rem;
}
.archive-table thead th {
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--ink-soft);
  font-weight: 500;
  text-align: left;
  padding: .6rem .8rem .6rem 0;
  border-bottom: 1px solid var(--ink);
}
.archive-table tbody td {
  padding: 1rem .8rem 1rem 0;
  border-bottom: 1px dotted var(--ink-mute);
  vertical-align: top;
}
.archive-table tbody tr:hover {
  background: rgba(0,0,0,0.025);
}
.col-issue   { width: 13rem; }
.col-date    { width: 9rem; white-space: nowrap; }
.col-signal  { width: 8.5rem; }
.col-counts  { width: 9rem; font-family: var(--mono); font-size: .85rem; white-space: nowrap; }

.run-id {
  font-family: var(--mono);
  font-size: .85rem;
  color: var(--ink);
}
.col-headline {
  font-family: var(--serif-body);
  font-style: italic;
  color: var(--ink);
  line-height: 1.4;
}
.col-headline a {
  color: inherit;
  text-decoration: none;
  border-bottom: 1px solid var(--ink-mute);
  padding-bottom: 1px;
}
.col-headline a:hover {
  color: var(--accent);
  border-color: var(--accent);
}
.num {
  font-family: var(--mono);
  font-feature-settings: "tnum";
  color: var(--ink);
  font-weight: 500;
}

.signal-pill {
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  font-weight: 600;
  border: 1px solid currentColor;
  padding: .25em .65em;
  display: inline-block;
}
.signal-pill.sig-opening    { color: var(--sig-opening); }
.signal-pill.sig-tightening { color: var(--sig-tightening); }
.signal-pill.sig-mixed      { color: var(--sig-mixed); }
.signal-pill.sig-watchlist  { color: var(--sig-watchlist); }

.archive-empty {
  font-style: italic;
  color: var(--ink-soft);
  margin: 1rem 0 4rem;
}

/* ── ZONE 3 — MACHINERY (the glass wall) ──────────────────────────────── */
.machinery {
  background:
    /* dark workshop with subtle grid */
    linear-gradient(var(--shop-deep), var(--shop-bg) 30%, var(--shop-bg) 70%, var(--shop-deep)),
    repeating-linear-gradient(0deg, transparent 0 40px,
                              rgba(255,255,255,.018) 40px 41px),
    repeating-linear-gradient(90deg, transparent 0 40px,
                              rgba(255,255,255,.018) 40px 41px);
  color: var(--shop-fg);
  padding: 6rem var(--shoulder) 5rem;
  position: relative;
  overflow: hidden;
  z-index: 1;
  margin-top: 4rem;
  box-shadow:
    inset 0 30px 30px -20px rgba(0,0,0,.6),
    inset 0 -30px 30px -20px rgba(0,0,0,.6);
}
.machinery::before {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: .25;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.4' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 1  0 0 0 0 1  0 0 0 0 1  0 0 0 .045 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  mix-blend-mode: screen;
}
.machinery-inner {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
}

.mach-head { margin-bottom: 3rem; }
.mach-mark {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--shop-warn);
  margin-bottom: .8rem;
}
.mach-title {
  font-family: var(--serif-display);
  font-weight: 500;
  font-style: italic;
  font-size: clamp(2.2rem, 4.5vw, 3.6rem);
  line-height: 1;
  margin: 0 0 1rem;
  letter-spacing: -0.01em;
  color: var(--shop-fg);
  font-variation-settings: "opsz" 60;
}
.mach-blurb {
  max-width: 42rem;
  font-family: var(--serif-body);
  font-style: italic;
  color: var(--shop-mute);
  margin: 0;
  line-height: 1.55;
}

.mach-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 1.5rem;
}
@media (max-width: 800px) {
  .mach-grid { grid-template-columns: 1fr; }
}

.mach-card {
  background: var(--shop-deep);
  border: 1px solid var(--shop-line);
  padding: 1.6rem 1.6rem 1.4rem;
  position: relative;
}
.mach-card::before {
  content: "";
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 2px;
  background: linear-gradient(90deg, var(--shop-warn), transparent 70%);
}
.mach-card-head {
  display: flex;
  align-items: center;
  gap: .9rem;
  margin-bottom: 1.4rem;
  padding-bottom: 1rem;
  border-bottom: 1px dashed var(--shop-line);
}
.mach-card-tag {
  display: inline-block;
  width: 1.7rem; height: 1.7rem;
  border: 1px solid var(--shop-warn);
  color: var(--shop-warn);
  font-family: var(--mono);
  font-size: .8rem;
  text-align: center;
  line-height: 1.55rem;
  letter-spacing: 0;
}
.mach-card-head h3 {
  font-family: var(--mono);
  font-size: .85rem;
  letter-spacing: .15em;
  text-transform: uppercase;
  color: var(--shop-fg);
  margin: 0;
  font-weight: 500;
}

.param-list { margin: 0; padding: 0; }
.param {
  display: grid;
  grid-template-columns: 1fr auto;
  gap: 1rem;
  padding: .55rem 0;
  border-bottom: 1px dashed var(--shop-line);
  font-family: var(--mono);
  font-size: .92rem;
  align-items: baseline;
}
.param:last-child { border-bottom: 0; }
.param dt {
  color: var(--shop-mute);
  font-size: .82rem;
}
.param dd {
  margin: 0;
  color: var(--shop-fg);
  font-weight: 500;
  letter-spacing: .03em;
}

.agency-list { list-style: none; margin: 0; padding: 0; }
.agency-row {
  display: grid;
  grid-template-columns: 1.2rem 3.5rem 4rem 1fr 3rem;
  gap: .8rem;
  align-items: center;
  padding: .55rem 0;
  border-bottom: 1px dashed var(--shop-line);
  font-family: var(--mono);
  font-size: .85rem;
}
.agency-row:last-child { border-bottom: 0; }
.dot-status {
  width: 9px; height: 9px;
  border-radius: 50%;
  background: var(--shop-mute);
  display: inline-block;
  box-shadow: 0 0 0 1px rgba(0,0,0,.5);
}
.agency-row.ok .dot-status   {
  background: var(--shop-ok);
  box-shadow: 0 0 0 1px rgba(0,0,0,.5), 0 0 7px var(--shop-ok);
}
.agency-row.fail .dot-status {
  background: var(--shop-fail);
  box-shadow: 0 0 0 1px rgba(0,0,0,.5), 0 0 7px var(--shop-fail);
}
.agency-id {
  font-weight: 600;
  color: var(--shop-fg);
}
.agency-tier {
  color: var(--shop-warn);
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.agency-label {
  color: var(--shop-mute);
  font-family: var(--serif-body);
  font-style: italic;
  font-size: .92rem;
  letter-spacing: 0;
  text-transform: none;
}
.agency-count {
  text-align: right;
  color: var(--shop-fg);
  font-feature-settings: "tnum";
}

.mach-foot {
  margin: 1.2rem 0 0;
  font-family: var(--serif-body);
  font-style: italic;
  font-size: .88rem;
  color: var(--shop-mute);
  line-height: 1.5;
}

.mach-foot-bar {
  margin-top: 3rem;
  padding-top: 1.2rem;
  border-top: 1px dashed var(--shop-line);
  display: flex;
  flex-wrap: wrap;
  gap: .8rem;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--shop-mute);
  align-items: center;
}
.mach-foot-bar a {
  color: var(--shop-fg);
  text-decoration: none;
  border-bottom: 1px solid var(--shop-line);
  padding-bottom: 1px;
}
.mach-foot-bar a:hover { color: var(--shop-warn); border-color: var(--shop-warn); }

/* ── Colophon ─────────────────────────────────────────────────────────── */
.colophon {
  background: var(--paper);
  padding: 3rem var(--shoulder);
  border-top: 4px double var(--ink);
  position: relative;
  z-index: 2;
}
.colophon-inner {
  max-width: 1200px;
  margin: 0 auto;
  font-family: var(--serif-body);
  color: var(--ink-soft);
  font-size: .95rem;
  line-height: 1.55;
}
.colophon a { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--ink-mute); }
.colophon a:hover { color: var(--accent); border-color: var(--accent); }
.colophon-meta {
  margin-top: 1rem;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-mute);
}

/* ── Top nav (above masthead on per-week and catalog pages) ──────────── */
.topnav {
  background: var(--paper-deep);
  border-bottom: 1px solid var(--ink);
  padding: .55rem var(--shoulder);
  position: relative;
  z-index: 3;
}
.topnav-inner {
  max-width: 1200px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: .5rem .8rem;
  flex-wrap: wrap;
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-soft);
}
.topnav-link {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  padding-bottom: 1px;
}
.topnav-link:hover { color: var(--accent); border-color: var(--accent); }
.topnav-current {
  color: var(--accent);
  font-weight: 600;
}
.topnav-sep { color: var(--ink-mute); }
.topnav-spacer { flex: 1 1 auto; }
.topnav-meta {
  color: var(--ink-mute);
  text-decoration: none;
}

.masthead-home-link {
  color: inherit;
  text-decoration: none;
  border: 0;
}
.masthead-home-link:hover { color: var(--accent); }

.masthead-compact .masthead-title {
  font-size: clamp(2.4rem, 6vw, 4.5rem);
}

/* ── Section head — tight variant for the latest issue feature ───────── */
.section-head-tight {
  margin-top: 3rem;
  padding-top: 1.5rem;
}

/* ── Latest-issue feature on home ─────────────────────────────────────── */
.latest-feature {
  max-width: 1200px;
  margin: 0 auto 1rem;
  position: relative;
  z-index: 2;
}
.latest-signal {
  font-style: normal;
  text-transform: uppercase;
  letter-spacing: .08em;
  font-weight: 700;
}
.latest-signal.sig-opening    { color: var(--sig-opening); }
.latest-signal.sig-tightening { color: var(--sig-tightening); }
.latest-signal.sig-mixed      { color: var(--sig-mixed); }
.latest-signal.sig-watchlist  { color: var(--sig-watchlist); }

.latest-grid {
  display: grid;
  grid-template-columns: minmax(220px, 320px) minmax(0, 1fr);
  gap: 2.5rem;
  align-items: start;
  padding-top: 1.5rem;
  border-top: 1px solid var(--ink-mute);
}
@media (max-width: 800px) {
  .latest-grid { grid-template-columns: 1fr; gap: 1.5rem; }
}
.latest-stats {
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--ink);
  padding: .5rem 0;
}
.latest-headlines-title {
  font-family: var(--serif-display);
  font-weight: 700;
  font-size: 1.4rem;
  margin: 0 0 .9rem;
  letter-spacing: -0.005em;
}
.latest-headlines-list {
  list-style: none;
  margin: 0 0 1.4rem;
  padding: 0;
}
.latest-headline-row {
  display: grid;
  grid-template-columns: 4rem 1fr;
  gap: .8rem;
  padding: .55rem 0;
  border-bottom: 1px dotted var(--ink-mute);
  align-items: baseline;
}
.latest-headline-row:last-child { border-bottom: 0; }
.latest-headline-text {
  font-size: 1rem;
  line-height: 1.45;
  color: var(--ink);
}
.cta-link-tight {
  font-size: 1.1rem;
  border-bottom-width: 1px;
  padding-bottom: 2px;
}

/* ── Week grid (home) ─────────────────────────────────────────────────── */
.weeks {
  max-width: 1200px;
  margin: 0 auto;
  position: relative;
  z-index: 2;
}
.week-grid {
  list-style: none;
  margin: 1rem 0 4rem;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 1rem;
}
.week-card {
  border: 1px solid var(--ink);
  background: var(--paper);
  position: relative;
  transition: transform .15s, box-shadow .15s;
}
.week-card:hover {
  transform: translate(-2px, -2px);
  box-shadow: 4px 4px 0 var(--ink);
}
.week-card-link {
  display: block;
  padding: 1.1rem 1.2rem 1rem;
  text-decoration: none;
  color: inherit;
  height: 100%;
}
.week-card-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: .5rem;
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-soft);
  margin-bottom: .8rem;
}
.week-card-title {
  font-family: var(--serif-display);
  font-weight: 700;
  font-size: 1.25rem;
  line-height: 1.15;
  margin: 0 0 .6rem;
  letter-spacing: -0.005em;
}
.week-card-lede {
  font-size: .95rem;
  line-height: 1.5;
  color: var(--ink-soft);
  margin: 0 0 1rem;
}
.week-card-meta {
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: var(--mono);
  font-size: .7rem;
  color: var(--ink-soft);
  border-top: 1px dotted var(--ink-mute);
  padding-top: .65rem;
  letter-spacing: .04em;
}
.week-card-counts .num { font-weight: 600; color: var(--ink); }
.week-card-arrow {
  font-size: 1.05rem;
  color: var(--accent);
}

/* Tint the card top edge by the net-signal direction. */
.week-card.sig-opening    { border-top-width: 4px; border-top-color: var(--sig-opening); }
.week-card.sig-tightening { border-top-width: 4px; border-top-color: var(--sig-tightening); }
.week-card.sig-mixed      { border-top-width: 4px; border-top-color: var(--sig-mixed); }
.week-card.sig-watchlist  { border-top-width: 4px; border-top-color: var(--sig-watchlist); }

/* ── Tag + impact chips (signal cards & catalog rows) ─────────────────── */
.signal-taxonomy {
  margin-top: 1.2rem;
  padding-top: .9rem;
  border-top: 1px dotted var(--ink-mute);
  display: grid;
  gap: .5rem;
}
.tax-row {
  display: grid;
  grid-template-columns: 5rem 1fr;
  gap: .8rem;
  align-items: baseline;
}
.tax-label {
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-mute);
}
.chips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .35rem;
}
.chips-inline { gap: .25rem; }
.chip {
  display: inline-block;
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .04em;
  padding: .2em .55em;
  border: 1px solid currentColor;
  border-radius: 2px;
  white-space: nowrap;
}
.chip-tag {
  color: var(--accent);
  background: rgba(138, 39, 39, .04);
}
.chip-impact {
  color: var(--sig-opening);
  background: rgba(77, 106, 58, .05);
  text-transform: uppercase;
  letter-spacing: .1em;
  font-size: .62rem;
}

/* ── Catalog page ─────────────────────────────────────────────────────── */
.catalog {
  max-width: 1280px;
  margin: 1.5rem auto 4rem;
  position: relative;
  z-index: 2;
}
.catalog-controls {
  display: grid;
  gap: .8rem;
  padding: 1.2rem 1.2rem 1rem;
  background: var(--paper-deep);
  border: 1px solid var(--ink);
  margin-bottom: 1.5rem;
}
.catalog-filter-group {
  display: grid;
  grid-template-columns: 5.5rem 1fr;
  gap: .9rem;
  align-items: start;
}
@media (max-width: 600px) {
  .catalog-filter-group { grid-template-columns: 1fr; gap: .35rem; }
}
.catalog-filter-label {
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-soft);
  padding-top: .35rem;
}
.catalog-chips {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-wrap: wrap;
  gap: .3rem;
}
.catalog-chip {
  font-family: var(--mono);
  font-size: .7rem;
  letter-spacing: .06em;
  padding: .28em .65em;
  border: 1px solid var(--ink-mute);
  background: var(--paper);
  color: var(--ink);
  cursor: pointer;
  border-radius: 2px;
  transition: background .12s, border-color .12s, color .12s;
}
.catalog-chip:hover {
  border-color: var(--ink);
}
.catalog-chip[aria-pressed="true"] {
  background: var(--ink);
  color: var(--paper);
  border-color: var(--ink);
}
.catalog-chip.chip-tag[aria-pressed="true"] {
  background: var(--accent);
  border-color: var(--accent);
  color: var(--paper);
}
.catalog-chip.chip-impact[aria-pressed="true"] {
  background: var(--sig-opening);
  border-color: var(--sig-opening);
  color: var(--paper);
}
.catalog-chip.sig-opening[aria-pressed="true"]    { background: var(--sig-opening); border-color: var(--sig-opening); color: var(--paper); }
.catalog-chip.sig-tightening[aria-pressed="true"] { background: var(--sig-tightening); border-color: var(--sig-tightening); color: var(--paper); }
.catalog-chip.sig-mixed[aria-pressed="true"]      { background: var(--sig-mixed); border-color: var(--sig-mixed); color: var(--paper); }
.catalog-chip.sig-watchlist[aria-pressed="true"]  { background: var(--sig-watchlist); border-color: var(--sig-watchlist); color: var(--paper); }

.catalog-status {
  font-family: var(--mono);
  font-size: .72rem;
  letter-spacing: .1em;
  color: var(--ink-soft);
  border-top: 1px dotted var(--ink-mute);
  padding-top: .7rem;
  margin-top: .3rem;
  display: flex;
  align-items: center;
  gap: .8rem;
}
.catalog-clear {
  font-family: var(--mono);
  font-size: .68rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  background: none;
  border: 1px solid var(--ink);
  color: var(--ink);
  padding: .2em .55em;
  cursor: pointer;
  border-radius: 2px;
}
.catalog-clear:hover { background: var(--ink); color: var(--paper); }

.catalog-table {
  width: 100%;
  border-collapse: collapse;
  font-size: .9rem;
  table-layout: auto;
}
.catalog-table thead th {
  font-family: var(--mono);
  font-size: .66rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink-soft);
  font-weight: 500;
  text-align: left;
  padding: .7rem .65rem;
  border-bottom: 1px solid var(--ink);
  background: var(--paper);
  position: sticky;
  top: 0;
  z-index: 1;
}
.catalog-table tbody td {
  padding: .85rem .65rem;
  border-bottom: 1px dotted var(--ink-mute);
  vertical-align: top;
  line-height: 1.45;
}
.catalog-table tbody tr.catalog-row[hidden] { display: none; }
.cat-col-date { width: 7.5rem; white-space: nowrap; font-family: var(--mono); font-size: .8rem; color: var(--ink-soft); }
.cat-col-agency { width: 4.5rem; }
.cat-col-topic { width: 12rem; }
.cat-col-who { width: 8rem; }
.cat-col-change { font-family: var(--serif-body); color: var(--ink); max-width: 28rem; }
.cat-col-direction { width: 6.5rem; }
.cat-col-materiality { width: 6rem; }
.cat-col-source { width: 2rem; text-align: right; }
.chip-secondary { opacity: .8; font-size: .72rem; }
/* Materiality badge: monospace, uppercase, three colour-coded states. */
.materiality-badge {
  display: inline-block;
  font-family: var(--mono);
  font-size: .7rem;
  font-weight: 600;
  letter-spacing: .04em;
  padding: 1px 6px;
  border: 1px solid currentColor;
  border-radius: 2px;
  text-transform: uppercase;
}
.materiality-badge.mat-act      { color: var(--sig-tightening); }
.materiality-badge.mat-position { color: var(--ink-soft); }
.materiality-badge.mat-monitor  { color: var(--sig-mixed); }
.cat-week-link {
  font-family: var(--mono);
  font-size: .82rem;
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--ink-mute);
  padding-bottom: 1px;
}
.cat-week-link:hover { color: var(--accent); border-color: var(--accent); }
.cat-col-summary {
  font-family: var(--serif-body);
  color: var(--ink);
  max-width: 28rem;
}

/* ── Reduced motion ───────────────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
  * { animation: none !important; transition: none !important; }
}

/* ── Selection color ──────────────────────────────────────────────────── */
::selection { background: var(--accent); color: var(--paper); }
