@font-face { font-family: "Spectral"; font-style: normal; font-weight: 400; font-display: swap; src: url("fonts/spectral-400.woff2") format("woff2"); }
@font-face { font-family: "Spectral"; font-style: italic; font-weight: 400; font-display: swap; src: url("fonts/spectral-400i.woff2") format("woff2"); }
@font-face { font-family: "Spectral"; font-style: normal; font-weight: 500; font-display: swap; src: url("fonts/spectral-500.woff2") format("woff2"); }
@font-face { font-family: "Spectral"; font-style: normal; font-weight: 600; font-display: swap; src: url("fonts/spectral-600.woff2") format("woff2"); }

:root {
  --bg: #faf9f6; --band: #f4f2ec; --fg: #26221c; --copy: #4a4439;
  --muted: #8a8377; --accent: #7c5cbf; --accent-dark: #5f4494;
  --accent-tint: #f1ecfa; --card: #fff; --border: #e4e0d8;
  --shadow-sm: 0 1px 2px rgba(38,34,28,.08);
  --shadow-md: 0 4px 14px rgba(38,34,28,.08), 0 2px 4px rgba(38,34,28,.05);
  --shadow-cover: 0 14px 40px rgba(38,34,28,.16), 0 4px 12px rgba(38,34,28,.08);
  --display: "Spectral", Georgia, "Times New Roman", serif;
  --body: Georgia, "Times New Roman", serif;
  --ui: "Spectral", Georgia, serif;
  --max: 77.5rem;
}

* { box-sizing: border-box; }
html { scroll-behavior: smooth; -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--fg); font-family: var(--body); -webkit-font-smoothing: antialiased; }
a { color: var(--accent-dark); text-decoration: none; }
a:hover { color: var(--accent); }
img { max-width: 100%; }
::selection { background: #e7defa; }
.site-shell { min-height: 100vh; display: flex; flex-direction: column; }
main { flex: 1; }

.report-form label { display: block; margin-bottom: .5rem; font: 500 1rem var(--ui); }
.report-form input:not([type="hidden"]), .report-form textarea {
  display: block; width: 100%; padding: .75rem; border: 1px solid var(--border);
  border-radius: .35rem; background: var(--card); color: var(--fg); font: 1rem/1.5 var(--body);
}
.report-form textarea { resize: vertical; }
.report-form input:focus, .report-form textarea:focus { outline: 2px solid var(--accent); outline-offset: 2px; }
.report-form p { line-height: 1.5; }
.report-form button { cursor: pointer; }
.correction-notices { margin: 1.5rem 0; padding: 1rem 1.25rem; background: var(--accent-tint); border-left: 3px solid var(--accent); overflow-wrap: anywhere; }
.correction-notices h2 { margin: 0 0 .5rem; font: 600 1.1rem var(--ui); }
.correction-notices p { line-height: 1.5; }
.publication-time { color: var(--copy); font: .85rem var(--ui); }
main > .publication-time, main > .correction-notices { margin-left: clamp(1rem,4vw,2.5rem); margin-right: clamp(1rem,4vw,2.5rem); }

.utility-bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .5rem clamp(1rem,4vw,2.5rem); border-bottom: 1px solid var(--border); font: .82rem var(--ui); color: var(--muted); }
.utility-context, .utility-bar nav { display: flex; gap: 1.1rem; align-items: center; }
.utility-date { color: var(--fg); font-weight: 600; }
.utility-bar nav { gap: .25rem; }
.utility-bar nav a { padding: .25rem .65rem; border-radius: 999px; color: var(--fg); }
.utility-bar nav a:hover { background: var(--accent-tint); color: var(--accent-dark); }
.ai-badge { display: inline-flex; align-items: center; padding: .12rem .55rem; border: 1px solid var(--accent); border-radius: 999px; color: var(--accent-dark); font: 600 .7rem var(--ui); letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; }

.site-masthead { text-align: center; padding: 2.35rem clamp(1rem,4vw,2.5rem) 1.6rem; border-bottom: 3px double var(--fg); margin: 0 clamp(1rem,4vw,2.5rem); }
.site-masthead a { display: inline-flex; align-items: center; gap: .85rem; color: var(--fg); }
.site-masthead img { width: 2.75rem; height: 2.75rem; border-radius: 9px; box-shadow: var(--shadow-sm); }
.site-masthead span { font: 500 clamp(2.25rem,5vw,3.65rem)/1 var(--display); letter-spacing: -.02em; }
.site-masthead p { max-width: 54rem; margin: .85rem auto 0; color: var(--muted); font: .95rem/1.5 var(--ui); }

.content-section { width: 100%; max-width: var(--max); margin: 0 auto; padding: 1.75rem clamp(1rem,4vw,2.5rem) 3rem; }
.section-rule { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; border-bottom: 1px solid var(--fg); padding-bottom: .5rem; margin-bottom: 1.5rem; }
.section-rule h1, .section-rule h2 { margin: 0; color: var(--accent); font: 600 .8rem var(--ui); letter-spacing: .16em; text-transform: uppercase; }
.section-rule h1 small { color: var(--muted); font-weight: 400; letter-spacing: 0; text-transform: none; margin-left: .5rem; }
.section-rule > a { font: .82rem var(--ui); }
.lead-issue { display: grid; grid-template-columns: minmax(13.5rem,18.75rem) 1fr; gap: clamp(1.4rem,4vw,3rem); align-items: start; padding-bottom: 2rem; margin-bottom: 2rem; border-bottom: 1px solid var(--border); }
.lead-cover { display: block; transition: transform .18s; }
.lead-cover:hover { transform: translateY(-3px); }
.lead-copy { display: flex; flex-direction: column; gap: .9rem; padding-top: .35rem; }
.kicker-line { display: flex; flex-wrap: wrap; gap: .55rem; align-items: center; color: var(--muted); font: .82rem var(--ui); }
.kicker-line a { color: var(--fg); font-weight: 600; }
.new-label { padding: .18rem .5rem; border-radius: 3px; background: var(--accent); color: #fff; font: 600 .68rem var(--ui); letter-spacing: .1em; text-transform: uppercase; }
.hero-headline { color: var(--fg); font: 500 clamp(1.8rem,3.4vw,2.75rem)/1.08 var(--display); letter-spacing: -.015em; text-wrap: pretty; }
.hero-deck { max-width: 62ch; margin: 0; color: var(--copy); font-size: 1.1rem; line-height: 1.55; text-wrap: pretty; }
.also-inside { display: flex; flex-wrap: wrap; gap: .35rem .9rem; margin: 0; color: var(--muted); font: .84rem var(--ui); }
.also-inside strong { color: var(--fg); }
.button-row { display: flex; flex-wrap: wrap; gap: .65rem; margin-top: .35rem; }
.button { display: inline-flex; align-items: center; gap: .45rem; padding: .62rem 1.2rem; border-radius: 999px; background: var(--accent); color: #fff; box-shadow: var(--shadow-sm); font: 500 .94rem var(--ui); }
.button:hover { background: var(--accent-dark); color: #fff; }
.button.secondary { padding: .56rem 1.1rem; border: 1px solid var(--accent); background: transparent; color: var(--accent-dark); box-shadow: none; }
.button.secondary:hover { background: var(--accent-tint); }
.button small { color: inherit; opacity: .7; font-size: .78rem; }
.button.small { padding: .4rem .8rem; font-size: .84rem; }

.paper-cover { container-type: inline-size; aspect-ratio: 3/4; padding: 7cqw 6cqw; display: flex; flex-direction: column; gap: 3cqw; overflow: hidden; background: var(--card); border: 1px solid var(--border); box-shadow: var(--shadow-cover); color: var(--fg); }
.cover-name { border-bottom: .8cqw solid var(--fg); padding-bottom: 2.5cqw; text-align: center; font: 500 8cqw/1 var(--display); }
.cover-meta { display: flex; justify-content: space-between; border-bottom: .3cqw solid var(--border); padding-bottom: 1.5cqw; color: var(--muted); font: 3cqw var(--ui); }
.cover-headline { font: 500 6cqw/1.08 var(--display); }
.cover-columns { display: grid; grid-template-columns: 1fr 1fr; align-content: start; gap: 1.6cqw 3cqw; flex: 1; margin-top: 1cqw; }
.cover-columns span { height: 1.2cqw; background: #d9d4ca; }
.cover-columns .short { width: 70%; }
.cover-columns .cover-photo { grid-row: span 3; height: auto; aspect-ratio: 4/3; background: #ece8df; }
.issue-grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(10.5rem,1fr)); gap: 2rem 1.5rem; }
.issue-card { display: flex; flex-direction: column; gap: .75rem; color: var(--fg); }
.issue-card .cover-wrap { transition: transform .18s; }
.issue-card:hover .cover-wrap { transform: translateY(-3px); }
.issue-card .paper-cover { box-shadow: 0 10px 30px rgba(38,34,28,.18); }
.issue-card-copy { display: flex; flex-direction: column; gap: .2rem; }
.issue-card-meta { color: var(--muted); font: .76rem var(--ui); letter-spacing: .03em; }
.issue-card-copy strong { font: 500 1rem/1.25 var(--display); }

.coverage-band { background: var(--band); border-block: 1px solid var(--border); }
.coverage-inner { max-width: var(--max); margin: auto; padding: 2.5rem clamp(1rem,4vw,2.5rem); display: grid; grid-template-columns: minmax(17.5rem,23.75rem) 1fr; gap: clamp(1.5rem,4vw,3.5rem); }
.coverage-copy h2 { margin: 0 0 1.1rem; font: 500 clamp(1.7rem,2.6vw,2.15rem)/1.1 var(--display); }
.eyebrow { margin: 0 0 .55rem; color: var(--accent); font: 600 .75rem var(--ui); letter-spacing: .16em; text-transform: uppercase; }
.coverage-request { color: var(--muted); }
.archive-filter { display: flex; flex-wrap: wrap; gap: .4rem; }
.archive-filter a { padding: .3rem .8rem; border: 1px solid var(--border); border-radius: 999px; background: var(--card); text-decoration: none; }
.archive-filter a[aria-current="page"] { background: var(--fg); color: var(--bg); border-color: var(--fg); }
.listing-place { margin-top: .6rem; font-size: .95rem; }
.town-list { list-style: none; margin: 1.1rem 0 0; padding: 0; border-top: 1px solid var(--border); }
.town-list li { display: grid; grid-template-columns: 1fr auto; gap: .25rem .75rem; padding: .7rem .35rem; border-bottom: 1px solid var(--border); }
.town-list li > strong { font: 500 1.05rem var(--display); }
.town-list li > span { color: var(--muted); font: .75rem var(--ui); }
.town-list li div { grid-column: 1/-1; display: flex; flex-wrap: wrap; gap: .35rem; }
.town-list a { padding: .1rem .55rem; border: 1px solid var(--border); border-radius: 999px; background: var(--card); color: var(--fg); font: .8rem var(--ui); }
.town-list a:hover { border-color: var(--accent); color: var(--accent-dark); }
.coverage-map { position: relative; min-height: 35rem; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: #ece8df; box-shadow: var(--shadow-md); }
.coverage-map svg { display: block; width: 100%; height: 35rem; }
.map-mountains { fill: #e1ddd3; stroke: #c8c2b6; stroke-width: 2; }
.map-range { fill: none; stroke: #faf9f6; stroke-width: 12; opacity: .7; }
.map-road { fill: none; stroke: #cfc8bc; stroke-width: 3; stroke-dasharray: 7 7; }
.map-town circle:first-child { fill: var(--accent); stroke: #fff; stroke-width: 3; }
.map-pulse { fill: none; stroke: var(--accent-dark); stroke-width: 2; opacity: .35; }
.map-town text { fill: var(--fg); font: 600 13px var(--ui); paint-order: stroke; stroke: #ece8df; stroke-width: 4px; stroke-linejoin: round; }
.map-caption { position: absolute; right: .75rem; bottom: .6rem; color: var(--muted); font: .68rem var(--ui); }
.unmapped-towns { color: var(--muted); font: .78rem var(--ui); }
.principles { padding-block: 2.75rem 3.5rem; }
.principle-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 2rem; border-top: 1px solid var(--fg); padding-top: 1.35rem; }
.principle-grid h3 { margin: 0 0 .45rem; font: 500 1.25rem var(--display); }
.principle-grid p { margin: 0; color: var(--copy); font-size: .98rem; line-height: 1.55; }

.paper-masthead, .issue-masthead { text-align: center; padding: 2.25rem clamp(1rem,4vw,2.5rem) 1.35rem; margin: 0 clamp(1rem,4vw,2.5rem); border-bottom: 3px double var(--fg); }
.back-link { color: var(--muted); font: .82rem var(--ui); }
.paper-masthead h1, .issue-masthead h1 { margin: .7rem 0 .55rem; font: 500 clamp(2.4rem,5.5vw,4rem)/1 var(--display); letter-spacing: -.02em; }
.paper-masthead > p { margin: 0; color: var(--muted); font: .88rem var(--ui); }
.paper-masthead .ai-badge { vertical-align: middle; }
.paper-tagline { margin-top: .65rem; color: var(--copy); font-style: italic; }
.paper-lead { margin-bottom: 0; }
.issue-sections { display: grid; grid-template-columns: repeat(3,1fr); gap: .2rem 1rem; margin-top: .75rem; padding-top: .8rem; border-top: 1px solid var(--border); font: .85rem var(--ui); }
.issue-sections > span { grid-column: 1/-1; color: var(--muted); font-size: .72rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; }
.issue-sections a { display: flex; justify-content: space-between; border-bottom: 1px dotted var(--border); color: var(--fg); }
.issue-sections small { color: var(--muted); }
.past-section { padding-top: 0; }
.empty-public { max-width: 40rem; padding: 3rem 0; }
.empty-public h2 { margin: 0; font: 500 1.8rem var(--display); }
.empty-public p { color: var(--muted); }

.issue-masthead { padding-top: 1.7rem; border-bottom: 1px solid var(--fg); }
.issue-masthead h1 { font-size: clamp(2.1rem,4.5vw,3.25rem); }
.issue-masthead > div { display: flex; justify-content: space-between; align-items: center; gap: 1rem; border-top: 3px double var(--fg); padding-top: .5rem; color: var(--muted); font: .8rem var(--ui); }
.issue-masthead strong { color: var(--fg); }
.section-nav { position: sticky; top: 0; z-index: 10; display: flex; justify-content: space-between; align-items: center; gap: .75rem; margin: 0 clamp(1rem,4vw,2.5rem); padding: .48rem 0; border-bottom: 1px solid var(--border); background: color-mix(in srgb,var(--bg) 92%,transparent); backdrop-filter: blur(8px); }
.section-nav > div { display: flex; flex-wrap: wrap; gap: .1rem; }
.section-nav > div a { padding: .28rem .6rem; border-radius: 999px; color: var(--fg); font: .84rem var(--ui); }
.section-nav > div a:hover { background: var(--accent-tint); color: var(--accent-dark); }
.issue-layout { max-width: var(--max); margin: auto; padding: 1.75rem clamp(1rem,4vw,2.5rem) 3.5rem; display: grid; grid-template-columns: 1fr minmax(15rem,18.75rem); gap: clamp(1.5rem,4vw,3rem); align-items: start; }
.issue-main { display: flex; flex-direction: column; gap: 2.5rem; min-width: 0; }
.issue-front { display: grid; grid-template-columns: 1.6fr 1fr; gap: 2rem; scroll-margin-top: 4.5rem; }
.issue-front article { min-width: 0; }
.issue-headline { display: block; color: var(--fg); font: 500 clamp(1.8rem,3vw,2.5rem)/1.08 var(--display); letter-spacing: -.015em; text-wrap: pretty; }
.issue-deck { margin: .75rem 0; color: var(--copy); font-size: 1.06rem; line-height: 1.5; }
.prose-preview { columns: 2; column-gap: 1.75rem; color: var(--fg); font-size: 1rem; line-height: 1.6; }
.prose-preview p { margin-top: 0; }
.continue-link { font: 600 .88rem var(--ui); }
.secondary-stories { display: flex; flex-direction: column; gap: 1rem; border-left: 1px solid var(--border); padding-left: 1.75rem; }
.secondary-stories a { display: flex; flex-direction: column; gap: .3rem; padding-bottom: 1rem; border-bottom: 1px dotted var(--border); color: var(--fg); }
.secondary-stories span { color: var(--muted); font: 600 .7rem var(--ui); letter-spacing: .12em; text-transform: uppercase; }
.secondary-stories strong, .story-grid strong { font: 500 1.2rem/1.2 var(--display); }
.secondary-stories small, .story-grid small { color: var(--copy); font: .9rem/1.5 var(--body); }
.issue-section { padding-top: .85rem; border-top: 1px solid var(--fg); scroll-margin-top: 4.5rem; }
.issue-section > h2, .side-box h3, .events-box h3 { margin: 0 0 1rem; color: var(--accent); font: 600 .75rem var(--ui); letter-spacing: .16em; text-transform: uppercase; }
.story-grid { display: grid; grid-template-columns: repeat(auto-fit,minmax(13.5rem,1fr)); gap: 1.5rem; }
.story-grid a { display: flex; flex-direction: column; gap: .4rem; color: var(--fg); }
.opinion-preview { max-width: 42rem; line-height: 1.6; }
.opinion-preview h1 { font: 500 1.55rem var(--display); }
.issue-sidebar { position: sticky; top: 4rem; display: flex; flex-direction: column; gap: 1.75rem; }
.side-box { border: 1px solid var(--border); background: var(--card); padding: 1rem 1.1rem; scroll-margin-top: 4.5rem; }
.weather-strip { display: grid; grid-template-columns: repeat(7,1fr); gap: .2rem; text-align: center; font-family: var(--ui); }
.weather-strip div { display: flex; flex-direction: column; gap: .15rem; }
.weather-strip span, .weather-strip small { color: var(--muted); font-size: .68rem; }
.weather-strip strong { font-size: .92rem; }
.side-box > p { margin: .65rem 0 0; color: var(--copy); font-size: .82rem; }
.events-box ul { list-style: none; margin: 0; padding: 0; }
.events-box li { display: grid; grid-template-columns: 3rem 1fr; gap: .6rem; padding: .55rem 0; border-bottom: 1px dotted var(--border); }
.events-box li > span { color: var(--accent-dark); font: 600 .72rem/1.3 var(--ui); }
.events-box li > a { display: flex; flex-direction: column; }
.events-box strong { font: 500 .96rem/1.25 var(--display); }
.events-box small { color: var(--muted); font: .72rem var(--ui); }
.ai-note { padding: .85rem 1rem; border-radius: 8px; background: var(--accent-tint); color: var(--accent-dark); font: .82rem/1.5 var(--ui); }

.article-crumbs { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: .7rem clamp(1rem,4vw,2.5rem); border-bottom: 1px solid var(--border); color: var(--muted); font: .8rem var(--ui); }
.article-crumbs > span { display: flex; gap: .5rem; align-items: center; }
.article-crumbs a:first-child { color: var(--fg); font: 500 1rem var(--display); }
.article-crumbs i, .byline i { font-style: normal; }
.article-page { width: 100%; max-width: 45rem; margin: auto; padding: 2.75rem clamp(1rem,4vw,2.5rem) 4rem; }
.article-page > h1 { margin: 0; font: 500 clamp(2.1rem,4.4vw,3.15rem)/1.06 var(--display); letter-spacing: -.02em; text-wrap: pretty; }
.article-deck { margin: 1rem 0; color: var(--copy); font-size: 1.25rem; line-height: 1.45; }
.byline { display: flex; flex-wrap: wrap; gap: .45rem .8rem; align-items: center; padding: .75rem 0; border-top: 1px solid var(--fg); border-bottom: 1px solid var(--border); color: var(--muted); font: .84rem var(--ui); }
.byline > span:first-child { display: inline-flex; align-items: center; gap: .4rem; color: var(--accent-dark); font-weight: 600; }
.byline img { width: 1.15rem; height: 1.15rem; border-radius: 4px; }
.article-prose { margin-top: 1.5rem; font-size: 1.16rem; line-height: 1.68; }
.article-prose > p:first-child::first-letter { float: left; padding: .08em .1em 0 0; color: var(--accent-dark); font: 500 3.4em/.8 var(--display); }
.article-prose h2, .article-prose h3 { font-family: var(--display); font-weight: 500; line-height: 1.2; }
.article-prose blockquote { margin: 1.5rem 0; padding: .2rem 0 .2rem 1.25rem; border-left: 2px solid var(--accent); color: var(--copy); font-style: italic; }
.sources-box { margin-top: 2rem; padding: 1rem 1.25rem; border: 1px solid var(--border); background: var(--card); font-family: var(--ui); }
.sources-box h2 { margin: 0 0 .5rem; color: var(--accent); font: 600 .75rem var(--ui); letter-spacing: .16em; text-transform: uppercase; }
.sources-box ol { margin: 0; padding-left: 1.2rem; font-size: .88rem; line-height: 1.7; }
.sources-box small { color: var(--muted); }
.sources-box > p { margin: .75rem 0 0; padding-top: .65rem; border-top: 1px dotted var(--border); color: var(--muted); font-size: .8rem; }
.article-next { display: flex; justify-content: space-between; gap: 1rem; margin-top: 1.6rem; padding-top: 1rem; border-top: 1px dashed var(--border); font: .88rem var(--ui); }
.article-next a:last-child { text-align: right; }

.archive-page, .info-page { width: 100%; max-width: 68.75rem; margin: auto; padding: 2.5rem clamp(1rem,4vw,2.5rem) 4rem; }
.archive-page > header { display: flex; justify-content: space-between; align-items: end; gap: 1rem; padding-bottom: 1rem; border-bottom: 3px double var(--fg); }
.archive-page h1, .info-page > h1 { margin: 0; font: 500 clamp(2rem,4vw,3rem)/1.05 var(--display); letter-spacing: -.015em; }
.archive-page select { padding: .48rem .85rem; border: 1px solid var(--border); border-radius: 999px; background: var(--card); color: var(--fg); font: .88rem var(--ui); }
.archive-page form { display: flex; gap: .4rem; }
.archive-page form button { padding: .48rem .8rem; border: 0; border-radius: 999px; background: var(--accent); color: #fff; cursor: pointer; font: .82rem var(--ui); }
.archive-groups > section { display: grid; grid-template-columns: 11.25rem 1fr; gap: 1.5rem; padding: 1.35rem 0; border-bottom: 1px solid var(--border); }
.archive-date { display: flex; flex-direction: column; gap: .25rem; }
.archive-date strong { font: 500 1.2rem/1.15 var(--display); }
.archive-date span { color: var(--muted); font: .78rem var(--ui); }
.archive-rows > div { display: grid; grid-template-columns: 12.5rem 1fr auto; gap: 1rem; align-items: baseline; padding: .55rem 0; border-bottom: 1px dotted var(--border); }
.archive-rows > div:last-child { border: 0; }
.archive-paper { color: var(--fg); font: 600 .88rem var(--ui); }
.archive-paper small { color: var(--muted); font-weight: 400; }
.archive-headline { color: var(--fg); font: 500 1rem/1.3 var(--display); }
.archive-rows div > span { display: flex; gap: .7rem; font: .8rem var(--ui); }
.narrow-info { max-width: 48rem; }
.info-page > h1 { max-width: 48rem; }
.info-lead { max-width: 45rem; color: var(--copy); font-size: 1.2rem; line-height: 1.55; }
.process-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 1px; margin-top: 2rem; border: 1px solid var(--border); background: var(--border); }
.process-grid section { padding: 1.5rem; background: var(--card); }
.process-grid span { color: var(--accent); font: 600 .75rem var(--ui); }
.process-grid h2, .editorial-promise h2, .correction-list h2 { margin: .35rem 0; font: 500 1.5rem var(--display); }
.process-grid p, .editorial-promise p { color: var(--copy); line-height: 1.6; }
.editorial-promise, .correction-list { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--fg); }
.correction-list article { padding: 1rem 0; border-bottom: 1px solid var(--border); }
.correction-list article > strong { font: 500 1.15rem var(--display); }
.correction-list article p { margin: .35rem 0; line-height: 1.55; }
.correction-list small, .empty-copy { color: var(--muted); }
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

.site-footer { margin-top: auto; display: flex; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: 1.6rem clamp(1rem,4vw,2.5rem); border-top: 1px solid var(--border); color: var(--muted); font: .8rem var(--ui); }
.footer-brand { display: inline-flex; align-items: center; gap: .5rem; }
.footer-brand img { width: 1.25rem; height: 1.25rem; border-radius: 5px; }
.site-footer nav { display: flex; flex-wrap: wrap; gap: 1.1rem; }
.site-footer a { color: var(--muted); }

@media (max-width: 60rem) {
  .issue-layout { grid-template-columns: 1fr; }
  .issue-sidebar { position: static; display: grid; grid-template-columns: 1fr 1fr; }
  .ai-note { grid-column: 1/-1; }
}
@media (max-width: 48rem) {
  .utility-place { display: none; }
  .utility-bar { align-items: flex-start; }
  .utility-bar nav { gap: 0; }
  .utility-bar nav a { padding-inline: .4rem; }
  .site-masthead { padding-top: 1.65rem; }
  .site-masthead img { width: 2.25rem; height: 2.25rem; }
  .lead-issue { grid-template-columns: minmax(8rem,11rem) 1fr; }
  .hero-headline { font-size: 1.65rem; }
  .coverage-inner { grid-template-columns: 1fr; }
  .coverage-map { min-height: 24rem; }
  .coverage-map svg { height: 24rem; }
  .principle-grid { grid-template-columns: 1fr; gap: 1.25rem; }
  .issue-front { grid-template-columns: 1fr; }
  .secondary-stories { border-left: 0; border-top: 1px solid var(--border); padding: 1.25rem 0 0; }
  .prose-preview { columns: 1; }
  .section-nav { overflow-x: auto; }
  .section-nav > div { flex-wrap: nowrap; }
  .section-nav > div a { white-space: nowrap; }
  .section-nav > .button { display: none; }
  .issue-sidebar { grid-template-columns: 1fr; }
  .ai-note { grid-column: auto; }
  .archive-groups > section { grid-template-columns: 1fr; gap: .75rem; }
  .archive-rows > div { grid-template-columns: 1fr auto; }
  .archive-headline { grid-column: 1/2; }
  .archive-rows div > span { grid-column: 2; grid-row: 1/3; }
}
@media (max-width: 34rem) {
  .utility-date, .utility-bar .ai-badge { display: none; }
  .site-masthead span { font-size: 2rem; }
  .site-masthead p { font-size: .84rem; }
  .lead-issue { grid-template-columns: 1fr; }
  .lead-cover { max-width: 13rem; margin: auto; }
  .issue-grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 1.5rem .85rem; }
  .issue-sections { grid-template-columns: 1fr 1fr; }
  .issue-masthead > div { align-items: flex-start; font-size: .72rem; }
  .issue-masthead > div span:last-child { text-align: right; }
  .article-crumbs > span > span, .article-crumbs i { display: none; }
  .article-page { padding-top: 2rem; }
  .article-prose { font-size: 1.08rem; }
  .process-grid { grid-template-columns: 1fr; }
  .site-footer { flex-direction: column; }
}

@media print { .utility-bar, .site-footer, .section-nav { display: none; } }
