/* ==========================================================================
   WOPR REPORT · STYLESHEET
   v1.0 · May 27, 2026
   
   Scope: All selectors prefixed .wopr or scoped to body.wopr-* classes.
   This stylesheet does not affect any APERION blog rendering.
   
   Typography: Newsreader (headlines), IBM Plex Sans (body), IBM Plex Mono (data).
   Color tokens: Ink, Paper, Rule, Accent Teal.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Design tokens
   -------------------------------------------------------------------------- */

:root {
  /* Color palette - four colors only */
  --wopr-ink: #0A0A0A;
  --wopr-paper: #FAFAF8;
  --wopr-rule: #2C2C2C;
  --wopr-rule-light: rgba(44, 44, 44, 0.18);
  --wopr-rule-hairline: rgba(44, 44, 44, 0.32);
  --wopr-accent-teal: #1A8A8C;

  /* Typography stack */
  --wopr-font-headline: "Newsreader", "Source Serif Pro", "Charter", Georgia, serif;
  --wopr-font-body: "IBM Plex Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
  --wopr-font-mono: "IBM Plex Mono", "SF Mono", Menlo, Consolas, monospace;

  /* Type scale */
  --wopr-size-h1: clamp(2rem, 4vw + 1rem, 3rem);
  --wopr-size-h2: clamp(1.5rem, 2vw + 1rem, 2rem);
  --wopr-size-h3: 0.875rem;
  --wopr-size-h4: 0.9375rem;
  --wopr-size-body: 1.0625rem;
  --wopr-size-caption: 0.8125rem;
  --wopr-size-mono: 0.875rem;
  --wopr-size-footnote: 0.8125rem;
  --wopr-size-meta: 0.75rem;

  /* Spacing scale */
  --wopr-space-xs: 0.25rem;
  --wopr-space-sm: 0.5rem;
  --wopr-space-md: 1rem;
  --wopr-space-lg: 2rem;
  --wopr-space-xl: 3rem;
  --wopr-space-xxl: 5rem;

  /* Layout */
  --wopr-measure: 38rem;
  --wopr-measure-wide: 52rem;
  --wopr-page-padding: clamp(1.25rem, 4vw, 3rem);
}

/* --------------------------------------------------------------------------
   WOPR scoping reset
   Applies only inside .wopr-* body classes Ghost auto-generates from
   template filenames. Does not touch APERION blog rendering.
   
   The WOPR layout (default-wopr.hbs) puts a fixed "wopr-layout" class on the
   body of every WOPR page, so the base reset and paper background apply
   uniformly. WOPR pages do not load the APERION stylesheet, so this file
   carries its own minimal reset.
   -------------------------------------------------------------------------- */

/* Minimal reset, scoped to WOPR pages only. Does not touch APERION pages. */
body.wopr-layout {
  margin: 0;
}

body.wopr-layout *,
body.wopr-layout *::before,
body.wopr-layout *::after {
  box-sizing: border-box;
}

body.wopr-layout img {
  max-width: 100%;
  height: auto;
}

body.wopr-layout {
  background-color: var(--wopr-paper);
  color: var(--wopr-ink);
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-body);
  line-height: 1.6;
  font-weight: 400;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  font-feature-settings: "kern" 1, "liga" 1;
}

/* Defensive: also style the wrapper directly. */
.wopr-page-wrapper {
  background-color: var(--wopr-paper);
  color: var(--wopr-ink);
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-body);
  line-height: 1.6;
  min-height: 100vh;
}

/* --------------------------------------------------------------------------
   WOPR page container
   -------------------------------------------------------------------------- */

.wopr-page {
  max-width: var(--wopr-measure-wide);
  margin: 0 auto;
  padding: 0 var(--wopr-page-padding);
}

.wopr-page--narrow {
  max-width: var(--wopr-measure);
}

/* --------------------------------------------------------------------------
   Slim header bar - top of every WOPR page
   -------------------------------------------------------------------------- */

.wopr-bar {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wopr-rule);
  padding: var(--wopr-space-md) 0 var(--wopr-space-sm) 0;
  border-bottom: 1px solid var(--wopr-rule-hairline);
  margin-bottom: var(--wopr-space-xl);
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--wopr-space-md);
  flex-wrap: wrap;
}

.wopr-bar a {
  color: var(--wopr-accent-teal);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease;
}

.wopr-bar a:hover,
.wopr-bar a:focus {
  border-bottom-color: var(--wopr-accent-teal);
}

.wopr-bar__left {
  display: flex;
  gap: var(--wopr-space-md);
  align-items: baseline;
}

.wopr-bar__nav {
  display: flex;
  gap: var(--wopr-space-md);
  align-items: baseline;
}

.wopr-bar__sep::before {
  content: "·";
  margin: 0 var(--wopr-space-sm);
  opacity: 0.5;
}

/* --------------------------------------------------------------------------
   Masthead - publication identity, set typographically not as logo
   -------------------------------------------------------------------------- */

.wopr-masthead {
  margin: var(--wopr-space-xl) 0 var(--wopr-space-lg) 0;
}

.wopr-masthead__title {
  font-family: var(--wopr-font-headline);
  font-size: clamp(2.5rem, 6vw + 1rem, 4.5rem);
  font-weight: 500;
  letter-spacing: -0.02em;
  line-height: 1;
  margin: 0;
  color: var(--wopr-ink);
}

.wopr-masthead__tagline {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-caption);
  color: var(--wopr-rule);
  margin: var(--wopr-space-sm) 0 0 0;
  font-weight: 400;
}

.wopr-masthead__rule {
  height: 0;
  border: 0;
  border-top: 1px solid var(--wopr-accent-teal);
  margin: var(--wopr-space-lg) 0;
}

/* --------------------------------------------------------------------------
   Issue page - the canonical institutional document
   -------------------------------------------------------------------------- */

.wopr-issue {
  max-width: var(--wopr-measure);
  margin: 0 auto;
  padding-bottom: var(--wopr-space-xxl);
}

.wopr-issue__meta {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--wopr-rule);
  margin-bottom: var(--wopr-space-md);
}

.wopr-issue__headline {
  font-family: var(--wopr-font-headline);
  font-size: var(--wopr-size-h1);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.15;
  margin: 0 0 var(--wopr-space-md) 0;
  color: var(--wopr-ink);
}

.wopr-issue__dek {
  font-family: var(--wopr-font-headline);
  font-style: italic;
  font-size: 1.25rem;
  line-height: 1.45;
  color: var(--wopr-rule);
  margin: 0 0 var(--wopr-space-lg) 0;
  font-weight: 400;
}

.wopr-issue__byline {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--wopr-rule);
  margin: var(--wopr-space-md) 0 0 0;
  display: flex;
  flex-wrap: wrap;
  gap: var(--wopr-space-md);
}

.wopr-issue__byline span:not(:last-child)::after {
  content: " ·";
  margin-left: var(--wopr-space-sm);
  opacity: 0.5;
}

.wopr-issue__opener-rule {
  border: 0;
  border-top: 1px solid var(--wopr-accent-teal);
  height: 0;
  margin: var(--wopr-space-lg) 0 var(--wopr-space-xl) 0;
}

/* --------------------------------------------------------------------------
   Issue body content
   -------------------------------------------------------------------------- */

.wopr-issue__body {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-body);
  line-height: 1.65;
  color: var(--wopr-ink);
}

.wopr-issue__body > * + * {
  margin-top: var(--wopr-space-md);
}

.wopr-issue__body h2 {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-h3);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wopr-ink);
  margin: var(--wopr-space-xl) 0 var(--wopr-space-md) 0;
  padding-top: var(--wopr-space-md);
  border-top: 1px solid var(--wopr-accent-teal);
}

.wopr-issue__body h3 {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-h4);
  font-weight: 600;
  color: var(--wopr-ink);
  margin: var(--wopr-space-lg) 0 var(--wopr-space-sm) 0;
}

.wopr-issue__body h3 .wopr-signal-num {
  font-family: var(--wopr-font-mono);
  font-size: 0.85em;
  color: var(--wopr-accent-teal);
  letter-spacing: 0.04em;
  margin-right: var(--wopr-space-sm);
}

.wopr-issue__body p {
  margin: 0 0 var(--wopr-space-md) 0;
  max-width: var(--wopr-measure);
}

.wopr-issue__body strong {
  font-weight: 600;
}

.wopr-issue__body em {
  font-style: italic;
}

.wopr-issue__body a {
  color: var(--wopr-accent-teal);
  text-decoration: none;
  border-bottom: 1px solid var(--wopr-rule-light);
  transition: border-color 0.15s ease;
}

.wopr-issue__body a:hover,
.wopr-issue__body a:focus {
  border-bottom-color: var(--wopr-accent-teal);
}

.wopr-issue__body blockquote {
  font-family: var(--wopr-font-headline);
  font-style: italic;
  font-size: 1.125rem;
  line-height: 1.5;
  border-left: 2px solid var(--wopr-accent-teal);
  padding-left: var(--wopr-space-md);
  margin: var(--wopr-space-lg) 0;
  color: var(--wopr-rule);
}

.wopr-issue__body ul,
.wopr-issue__body ol {
  margin: var(--wopr-space-md) 0;
  padding-left: var(--wopr-space-lg);
}

.wopr-issue__body li {
  margin-bottom: var(--wopr-space-sm);
}

.wopr-issue__body code {
  font-family: var(--wopr-font-mono);
  font-size: 0.92em;
  background-color: rgba(26, 138, 140, 0.08);
  padding: 0.1em 0.3em;
  border-radius: 2px;
}

.wopr-issue__body pre {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-mono);
  background-color: var(--wopr-ink);
  color: var(--wopr-paper);
  padding: var(--wopr-space-md);
  margin: var(--wopr-space-lg) 0;
  overflow-x: auto;
  line-height: 1.45;
}

.wopr-issue__body pre code {
  background: transparent;
  padding: 0;
  color: inherit;
}

/* Figure caption */
.wopr-issue__body figure {
  margin: var(--wopr-space-lg) 0;
}

.wopr-issue__body figure img {
  width: 100%;
  height: auto;
}

.wopr-issue__body figure figcaption {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-caption);
  color: var(--wopr-rule);
  margin-top: var(--wopr-space-sm);
  padding-top: var(--wopr-space-sm);
  border-top: 1px solid var(--wopr-rule-hairline);
}

/* --------------------------------------------------------------------------
   Footnotes - inline web rendering, paged for PDF
   -------------------------------------------------------------------------- */

.wopr-footnote-ref {
  font-family: var(--wopr-font-mono);
  font-size: 0.75em;
  vertical-align: super;
  line-height: 0;
  color: var(--wopr-accent-teal);
  text-decoration: none;
  border-bottom: 0;
  margin-left: 0.1em;
}

.wopr-footnote-ref::before {
  content: "[";
}
.wopr-footnote-ref::after {
  content: "]";
}

.wopr-footnotes {
  margin-top: var(--wopr-space-xxl);
  padding-top: var(--wopr-space-md);
  border-top: 1px solid var(--wopr-accent-teal);
}

.wopr-footnotes__heading {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-h3);
  font-weight: 600;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--wopr-ink);
  margin: 0 0 var(--wopr-space-md) 0;
}

.wopr-footnotes ol {
  font-size: var(--wopr-size-footnote);
  line-height: 1.55;
  color: var(--wopr-rule);
  padding-left: var(--wopr-space-lg);
}

.wopr-footnotes li {
  margin-bottom: var(--wopr-space-sm);
}

.wopr-footnotes a {
  color: var(--wopr-accent-teal);
  word-break: break-word;
}

/* --------------------------------------------------------------------------
   Colophon
   -------------------------------------------------------------------------- */

.wopr-colophon {
  margin-top: var(--wopr-space-xxl);
  padding-top: var(--wopr-space-md);
  border-top: 1px solid var(--wopr-rule-hairline);
  font-size: var(--wopr-size-caption);
  line-height: 1.55;
  color: var(--wopr-rule);
  font-style: italic;
}

.wopr-colophon p {
  margin: 0 0 var(--wopr-space-sm) 0;
}

.wopr-colophon p:last-child {
  margin-bottom: 0;
}

/* --------------------------------------------------------------------------
   Previous/Next navigation
   -------------------------------------------------------------------------- */

.wopr-prevnext {
  margin-top: var(--wopr-space-xl);
  padding: var(--wopr-space-md) 0;
  border-top: 1px solid var(--wopr-rule-hairline);
  border-bottom: 1px solid var(--wopr-rule-hairline);
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  display: flex;
  justify-content: space-between;
  gap: var(--wopr-space-md);
  flex-wrap: wrap;
}

.wopr-prevnext a {
  color: var(--wopr-accent-teal);
  text-decoration: none;
}

.wopr-prevnext span {
  color: var(--wopr-rule);
  opacity: 0.6;
}

/* --------------------------------------------------------------------------
   Archive listing - reverse-chronological row format
   -------------------------------------------------------------------------- */

.wopr-archive {
  max-width: var(--wopr-measure-wide);
  margin: 0 auto;
  padding-bottom: var(--wopr-space-xxl);
}

.wopr-archive__filters {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--wopr-rule);
  margin: var(--wopr-space-lg) 0;
  display: flex;
  gap: var(--wopr-space-md);
  flex-wrap: wrap;
}

.wopr-archive__filters a {
  color: var(--wopr-rule);
  text-decoration: none;
  opacity: 0.7;
  transition: opacity 0.15s ease;
}

.wopr-archive__filters a:hover,
.wopr-archive__filters a.is-active {
  color: var(--wopr-accent-teal);
  opacity: 1;
}

.wopr-archive__list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.wopr-archive__row {
  display: grid;
  grid-template-columns: minmax(7rem, auto) minmax(8rem, auto) 1fr minmax(8rem, auto);
  gap: var(--wopr-space-md);
  padding: var(--wopr-space-md) 0;
  border-bottom: 1px solid var(--wopr-rule-hairline);
  align-items: baseline;
}

.wopr-archive__row:first-child {
  border-top: 1px solid var(--wopr-rule-hairline);
}

.wopr-archive__num,
.wopr-archive__date,
.wopr-archive__tag {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  color: var(--wopr-rule);
}

.wopr-archive__tag {
  text-align: right;
  opacity: 0.7;
}

.wopr-archive__title {
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-body);
  line-height: 1.4;
  font-weight: 400;
}

.wopr-archive__title a {
  color: var(--wopr-ink);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease;
}

.wopr-archive__title a:hover,
.wopr-archive__title a:focus {
  border-bottom-color: var(--wopr-accent-teal);
}

@media (max-width: 720px) {
  .wopr-archive__row {
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "num date"
      "title title"
      "tag tag";
    gap: var(--wopr-space-xs);
    padding: var(--wopr-space-md) 0;
  }
  .wopr-archive__num { grid-area: num; }
  .wopr-archive__date { grid-area: date; text-align: right; }
  .wopr-archive__title { grid-area: title; margin-top: var(--wopr-space-xs); }
  .wopr-archive__tag { grid-area: tag; text-align: left; }
}

/* --------------------------------------------------------------------------
   Landing page - current issue block + recent issues + signals
   -------------------------------------------------------------------------- */

.wopr-current {
  margin: var(--wopr-space-xl) 0 var(--wopr-space-xxl) 0;
}

.wopr-current__label {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--wopr-rule);
  margin-bottom: var(--wopr-space-md);
}

.wopr-current__headline {
  font-family: var(--wopr-font-headline);
  font-size: var(--wopr-size-h1);
  font-weight: 500;
  letter-spacing: -0.015em;
  line-height: 1.15;
  margin: 0 0 var(--wopr-space-md) 0;
}

.wopr-current__headline a {
  color: var(--wopr-ink);
  text-decoration: none;
}

.wopr-current__dek {
  font-family: var(--wopr-font-headline);
  font-style: italic;
  font-size: 1.25rem;
  line-height: 1.45;
  color: var(--wopr-rule);
  margin: 0 0 var(--wopr-space-md) 0;
}

.wopr-current__excerpt {
  font-size: var(--wopr-size-body);
  line-height: 1.6;
  color: var(--wopr-ink);
  margin: 0 0 var(--wopr-space-md) 0;
  max-width: var(--wopr-measure);
}

.wopr-current__links {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  display: flex;
  gap: var(--wopr-space-md);
  align-items: baseline;
}

.wopr-current__links a {
  color: var(--wopr-accent-teal);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease;
}

.wopr-current__links a:hover,
.wopr-current__links a:focus {
  border-bottom-color: var(--wopr-accent-teal);
}

.wopr-section {
  margin: var(--wopr-space-xxl) 0;
}

.wopr-section__label {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--wopr-rule);
  margin-bottom: var(--wopr-space-md);
  padding-bottom: var(--wopr-space-sm);
  border-bottom: 1px solid var(--wopr-accent-teal);
}

/* --------------------------------------------------------------------------
   Subscribe block - single line, restraint
   -------------------------------------------------------------------------- */

.wopr-subscribe {
  margin: var(--wopr-space-xxl) 0;
  padding: var(--wopr-space-lg) 0;
  border-top: 1px solid var(--wopr-rule-hairline);
  border-bottom: 1px solid var(--wopr-rule-hairline);
}

.wopr-subscribe__label {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--wopr-rule);
  margin-bottom: var(--wopr-space-sm);
}

.wopr-subscribe__prompt {
  font-size: var(--wopr-size-body);
  margin-bottom: var(--wopr-space-md);
}

.wopr-subscribe__form {
  display: flex;
  gap: var(--wopr-space-sm);
  max-width: 30rem;
}

.wopr-subscribe__input {
  flex: 1;
  font-family: var(--wopr-font-body);
  font-size: var(--wopr-size-body);
  padding: var(--wopr-space-sm) var(--wopr-space-md);
  border: 1px solid var(--wopr-rule);
  background: var(--wopr-paper);
  color: var(--wopr-ink);
  border-radius: 0;
}

.wopr-subscribe__input:focus {
  outline: 2px solid var(--wopr-accent-teal);
  outline-offset: 2px;
}

.wopr-subscribe__button {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  padding: var(--wopr-space-sm) var(--wopr-space-md);
  background: var(--wopr-ink);
  color: var(--wopr-paper);
  border: 1px solid var(--wopr-ink);
  border-radius: 0;
  cursor: pointer;
  transition: background-color 0.15s ease;
}

.wopr-subscribe__button:hover,
.wopr-subscribe__button:focus {
  background-color: var(--wopr-accent-teal);
  border-color: var(--wopr-accent-teal);
  outline: none;
}

/* --------------------------------------------------------------------------
   Site footer (WOPR-scoped)
   -------------------------------------------------------------------------- */

.wopr-footer {
  margin-top: var(--wopr-space-xxl);
  padding: var(--wopr-space-lg) 0 var(--wopr-space-xl) 0;
  border-top: 1px solid var(--wopr-rule-hairline);
  font-size: var(--wopr-size-caption);
  line-height: 1.55;
  color: var(--wopr-rule);
}

.wopr-footer__name {
  font-family: var(--wopr-font-headline);
  font-size: 1.25rem;
  font-weight: 500;
  letter-spacing: -0.01em;
  color: var(--wopr-ink);
  margin: 0 0 var(--wopr-space-xs) 0;
}

.wopr-footer__tagline {
  margin: 0 0 var(--wopr-space-md) 0;
}

.wopr-footer__nav {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  margin: var(--wopr-space-md) 0;
  display: flex;
  gap: var(--wopr-space-md);
  flex-wrap: wrap;
}

.wopr-footer__nav a {
  color: var(--wopr-rule);
  text-decoration: none;
  border-bottom: 1px solid transparent;
  transition: border-color 0.15s ease;
}

.wopr-footer__nav a:hover,
.wopr-footer__nav a:focus {
  border-bottom-color: var(--wopr-accent-teal);
  color: var(--wopr-accent-teal);
}

.wopr-footer__legal {
  margin-top: var(--wopr-space-md);
  font-size: var(--wopr-size-meta);
  text-transform: none;
  letter-spacing: normal;
  font-family: var(--wopr-font-mono);
  opacity: 0.8;
}

/* --------------------------------------------------------------------------
   Signal page (real-time short-form)
   -------------------------------------------------------------------------- */

.wopr-signal__meta {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.08em;
  color: var(--wopr-accent-teal);
  margin-bottom: var(--wopr-space-md);
}

.wopr-signal__trigger {
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-caption);
  color: var(--wopr-rule);
  margin: var(--wopr-space-md) 0;
  padding: var(--wopr-space-sm) var(--wopr-space-md);
  border-left: 2px solid var(--wopr-accent-teal);
  background: rgba(26, 138, 140, 0.04);
}

/* --------------------------------------------------------------------------
   Print stylesheet - PDF-class output via browser print
   The canonical PDF will use a separate pipeline (paged.js or WeasyPrint).
   This print stylesheet exists as a courtesy fallback.
   -------------------------------------------------------------------------- */

@media print {
  body.wopr-layout,
  .wopr-page-wrapper {
    background: white;
    color: black;
    font-size: 10.5pt;
    line-height: 1.55;
  }

  .wopr-bar,
  .wopr-prevnext,
  .wopr-subscribe,
  .wopr-footer__nav,
  .wopr-current__links {
    display: none;
  }

  .wopr-issue,
  .wopr-page {
    max-width: 6.5in;
    margin: 0;
    padding: 0;
  }

  .wopr-issue__headline {
    font-size: 22pt;
    page-break-after: avoid;
  }

  .wopr-issue__body h2 {
    page-break-after: avoid;
    border-top-color: black;
  }

  .wopr-issue__body p {
    orphans: 3;
    widows: 3;
  }

  .wopr-footnotes {
    page-break-before: auto;
  }

  a {
    color: black;
    border-bottom: 0;
  }

  a[href^="http"]::after {
    content: " (" attr(href) ")";
    font-size: 0.85em;
    font-family: var(--wopr-font-mono);
    color: #555;
    word-break: break-all;
  }
}

/* --------------------------------------------------------------------------
   Accessibility
   -------------------------------------------------------------------------- */

.wopr-skip-link {
  position: absolute;
  top: -100px;
  left: 0;
  background: var(--wopr-ink);
  color: var(--wopr-paper);
  padding: var(--wopr-space-sm) var(--wopr-space-md);
  text-decoration: none;
  font-family: var(--wopr-font-mono);
  font-size: var(--wopr-size-meta);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  z-index: 1000;
}

.wopr-skip-link:focus {
  top: 0;
}

*:focus-visible {
  outline: 2px solid var(--wopr-accent-teal);
  outline-offset: 2px;
}

/* Reduced motion - we have no motion, but be explicit */
@media (prefers-reduced-motion: reduce) {
  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* --------------------------------------------------------------------------
   END WOPR STYLESHEET
   -------------------------------------------------------------------------- */

/* --------------------------------------------------------------------------
   Launch fix (May 31, 2026): remove double section rules
   - The body uses h2 border-top as the section rule; stray markdown <hr>
     from "---" separators would otherwise stack a second rule above it.
   - The first section must not collide with the byline opener rule.
   -------------------------------------------------------------------------- */
.wopr-issue__body hr { display: none; }
.wopr-issue__body > h2:first-child,
.wopr-issue__body > h3:first-child {
  border-top: 0;
  padding-top: 0;
  margin-top: 0;
}
