:root {
  --paper: #f7f7f4;
  --paper-deep: #efeee9;
  --ink: #11110f;
  --muted: #5e5c56;
  --rule: #99978f;
  --rule-strong: #2b2a27;
  --critical: #951b20;
  --important: #b77d09;
  --normal: #526e82;
  --link: #334f6f;
  --display: Didot, "Bodoni 72", "Bodoni MT", "Times New Roman", serif;
  --editorial: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
  --utility: "Avenir Next Condensed", "Arial Narrow", "Helvetica Neue", Arial, sans-serif;
  --page: min(1480px, calc(100vw - 92px));
}

* { box-sizing: border-box; }

html { scroll-behavior: smooth; }

body {
  margin: 0;
  background:
    radial-gradient(ellipse at 40% 0%, rgba(255,255,255,.94), transparent 66%),
    var(--paper);
  color: var(--ink);
  font-family: var(--editorial);
  font-size: 17px;
  line-height: 1.42;
  text-rendering: optimizeLegibility;
}

a { color: inherit; text-decoration-color: transparent; text-underline-offset: .18em; }
a:hover { text-decoration-color: currentColor; }
button, input { font: inherit; }
button, a { -webkit-tap-highlight-color: transparent; }
img { max-width: 100%; display: block; }

:focus-visible {
  outline: 3px solid color-mix(in srgb, var(--normal) 85%, white);
  outline-offset: 4px;
}

.skip-link {
  position: fixed; left: 1rem; top: 1rem; z-index: 20; transform: translateY(-200%);
  background: var(--ink); color: var(--paper); padding: .65rem 1rem;
}
.skip-link:focus { transform: none; }

.site-header { width: var(--page); margin: 0 auto; padding-top: 24px; }
.utility-bar {
  min-height: 38px; display: flex; align-items: flex-start; justify-content: space-between;
  border-bottom: 1px solid var(--rule-strong); font-family: var(--utility); font-stretch: condensed;
  font-size: .9rem; letter-spacing: .01em;
}
.dateline, .utility-actions, .search-link { display: flex; align-items: center; gap: 22px; }
.vertical-rule { width: 1px; height: 24px; background: var(--rule); display: inline-block; }
.utility-actions { gap: 25px; }
.utility-actions form { margin: 0; }
.search-link { gap: 14px; text-transform: uppercase; letter-spacing: .14em; }
.search-glyph { width: 17px; height: 17px; border: 1.7px solid currentColor; border-radius: 50%; position: relative; }
.search-glyph::after { content: ""; position: absolute; width: 8px; height: 1.5px; background: currentColor; right: -6px; bottom: -3px; transform: rotate(50deg); transform-origin: left; }
.text-button { border: 0; padding: 0; background: transparent; color: inherit; cursor: pointer; }
.utility-actions .text-button { text-transform: uppercase; letter-spacing: .12em; font-family: var(--utility); font-size: .76rem; }

.masthead {
  display: block; width: fit-content; margin: 9px auto 6px; font-family: var(--display);
  font-size: clamp(4rem, 7.9vw, 8.5rem); line-height: .92; letter-spacing: -.045em; text-transform: uppercase;
  text-decoration: none; white-space: nowrap;
}

.section-nav {
  min-height: 57px; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule-strong);
  display: flex; align-items: stretch; justify-content: center; gap: clamp(28px, 6.1vw, 92px);
  font-family: var(--utility); font-weight: 650; text-transform: uppercase; letter-spacing: .14em; font-size: .9rem;
}
.section-nav a { display: flex; align-items: center; position: relative; text-decoration: none; white-space: nowrap; }
.section-nav a[aria-current="page"]::after { content: ""; position: absolute; left: 0; right: 0; bottom: -1px; height: 4px; background: var(--ink); }
.section-nav .critical-nav { color: var(--critical); }
.section-nav .unread-nav { gap: 10px; }
.unread-nav b { font: 400 1.25rem/1 var(--editorial); letter-spacing: 0; }
.session-notice { width: var(--page); margin: 8px auto 0; border-left: 4px solid var(--important); padding: 6px 10px; font: .78rem var(--utility); }

.page-shell { width: var(--page); margin: 24px auto 70px; }
.front-grid { display: grid; grid-template-columns: minmax(0, 2.08fr) minmax(340px, 1fr); gap: 22px; }
.lead-column { min-width: 0; padding-right: 16px; border-right: 1px solid var(--rule); }
.section-kicker {
  margin: 0 0 14px; padding-bottom: 10px; border-bottom: 1px solid var(--rule);
  font-family: var(--utility); text-transform: uppercase; letter-spacing: .27em; font-size: .92rem; color: #343431;
}
.section-kicker a { text-decoration: none; }
.hero-story { padding: 2px 2px 17px; }
.priority-label {
  font-family: var(--utility); font-weight: 650; font-size: .95rem; letter-spacing: .16em;
  text-transform: uppercase; color: var(--normal); margin: 0 0 6px;
}
.priority-critical > .priority-label, .priority-critical .priority-label { color: var(--critical); }
.priority-important > .priority-label, .priority-important .priority-label { color: var(--important); }
.priority-normal > .priority-label, .priority-normal .priority-label { color: var(--normal); }
.hero-story h1 {
  font-family: var(--display); font-size: clamp(3.2rem, 5.6vw, 6.4rem); line-height: .9; letter-spacing: -.035em;
  font-weight: 500; margin: 0 0 15px; max-width: 1000px; text-wrap: balance;
}
.hero-story h1 a, .feed-card h2 a { text-decoration: none; }
.hero-story h1 a:hover, .feed-card h2 a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.byline {
  display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-family: var(--utility);
  font-size: .82rem; color: #343431; letter-spacing: .015em;
}
.hero-byline { padding: 10px 2px; border-top: 1px solid var(--rule-strong); }
.meta-icon, .tag-outline { font-family: sans-serif; font-size: 1rem; line-height: 1; }
.byline-separator { display: inline-block; width: 1px; height: 23px; background: var(--rule); margin: 0 10px; }
.hero-image-link { display: block; margin: 10px 0 2px; }
.hero-image { width: 100%; max-height: 520px; object-fit: cover; filter: saturate(.82) contrast(1.03); }
.standfirst {
  font-family: var(--editorial); font-size: clamp(1.45rem, 2.1vw, 2.15rem); line-height: 1.18;
  margin: 7px 0 0; max-width: 900px; text-wrap: pretty;
}

.secondary-feed { border-top: 1px solid var(--rule); }
.feed-card { position: relative; padding: 16px 18px 14px 32px; border-bottom: 1px solid var(--rule); }
.feed-card::before { content: ""; position: absolute; left: 4px; top: 16px; bottom: 16px; width: 5px; background: var(--normal); }
.feed-card.priority-critical::before { background: var(--critical); }
.feed-card.priority-important::before { background: var(--important); }
.feed-card h2 { font: 500 clamp(1.75rem, 2.65vw, 2.7rem)/1.02 var(--display); margin: 0 0 7px; letter-spacing: -.015em; }
.feed-card .priority-label { font-size: .78rem; margin-bottom: 4px; }
.card-summary { font: 1.12rem/1.34 var(--editorial); margin: 10px 0 0; }
.is-read { opacity: .73; }
.is-read:hover, .is-read:focus-within { opacity: 1; }

.news-rail { min-width: 0; padding-left: 0; }
.rail-section { margin-bottom: 18px; }
.rail-section h2, .aside-block h2 {
  font: 650 .92rem/1.2 var(--utility); letter-spacing: .21em; text-transform: uppercase;
  border-bottom: 1px solid var(--rule-strong); padding: 0 0 8px; margin: 0;
}
.signal-list { list-style: none; margin: 0; padding: 0; }
.signal-list li { display: grid; grid-template-columns: 15px minmax(0, 1fr) auto; gap: 9px; align-items: start; padding: 10px 2px; border-bottom: 1px solid var(--rule); }
.signal-list a { display: block; font: 600 1.03rem/1.08 var(--editorial); text-decoration: none; }
.signal-list small { display: block; font: .72rem/1.25 var(--utility); margin-top: 4px; color: #3f3e3a; }
.signal-list small b { margin: 0 8px; }
.signal-priority { align-self: end; font: 650 .67rem/1 var(--utility); letter-spacing: .12em; text-transform: uppercase; color: var(--normal); }
.signal-priority.critical { color: var(--critical); }
.signal-priority.important { color: var(--important); }
.status-dot { width: 10px; height: 10px; border-radius: 50%; margin-top: .35em; background: var(--normal); flex: 0 0 auto; }
.status-dot.critical { background: var(--critical); }
.status-dot.important { background: var(--important); }
.status-dot.normal { background: var(--normal); }
.rail-link, .arrow-link { display: inline-block; font: .85rem/1.3 var(--utility); color: var(--link); margin-top: 7px; text-decoration: none; }
.topic-line { display: flex; flex-wrap: wrap; gap: 4px 14px; padding: 9px 5px 10px; border-bottom: 1px solid var(--rule); font: 1.35rem/1.2 var(--editorial); color: var(--link); text-transform: uppercase; }
.digest-list { list-style: none; padding: 9px 3px; margin: 0; }
.digest-list li { display: grid; grid-template-columns: 14px 1fr auto; gap: 8px; align-items: start; margin: 6px 0; }
.digest-list a { font-size: .89rem; line-height: 1.2; text-decoration: none; }
.digest-list time { font: .72rem/1.4 var(--utility); }

.listing-page, .index-page { max-width: 1100px; margin: 0 auto; }
.listing-header { position: relative; border-bottom: 1px solid var(--rule-strong); margin-bottom: 0; padding-bottom: 16px; }
.listing-header .section-kicker { border: 0; padding: 0; margin-bottom: 10px; }
.listing-header h1 { margin: 0; font: 500 clamp(3.4rem, 7vw, 7rem)/.92 var(--display); letter-spacing: -.035em; }
.listing-feed .feed-card { padding-top: 25px; padding-bottom: 25px; }
.listing-feed .feed-card::before { top: 25px; bottom: 25px; }
.listing-feed .feed-card h2 { font-size: clamp(2rem, 4vw, 4rem); }
.mark-all-form { position: absolute; right: 0; bottom: 18px; }
.search-form { margin-top: 24px; max-width: 760px; }
.search-form label { font: .8rem/1.3 var(--utility); text-transform: uppercase; letter-spacing: .11em; display: block; margin-bottom: 7px; }
.search-form > div { display: flex; }
.search-form input { flex: 1; min-width: 0; background: transparent; color: inherit; border: 1px solid var(--rule-strong); padding: 11px 13px; border-radius: 0; }
.search-form button, .auth-form button { background: var(--ink); color: var(--paper); border: 1px solid var(--ink); padding: 10px 18px; cursor: pointer; font-family: var(--utility); }
.empty-state { padding: 64px 24px; text-align: center; border-bottom: 1px solid var(--rule); }
.empty-state h1, .empty-state h2 { font: 500 clamp(2rem, 4vw, 4rem)/1 var(--display); margin: 0 0 12px; }

.index-list { border-top: 1px solid var(--rule); }
.index-row { display: grid; grid-template-columns: 1fr auto 30px; gap: 20px; align-items: baseline; padding: 22px 5px; border-bottom: 1px solid var(--rule); text-decoration: none; }
.index-row > span { font: 500 clamp(1.7rem, 3vw, 3rem)/1 var(--display); }
.index-row small { font: .8rem var(--utility); color: var(--muted); }
.index-row b { font-weight: 400; color: var(--link); }

.publication-page { max-width: 1260px; margin: 0 auto; }
.publication-header { max-width: 1060px; padding: 0 0 24px; }
.publication-header .section-kicker { display: inline-block; border: 0; padding: 0; }
.publication-header .priority-label { margin-top: 20px; }
.publication-header h1 { font: 500 clamp(3.6rem, 8vw, 8.8rem)/.88 var(--display); letter-spacing: -.045em; margin: 0 0 18px; text-wrap: balance; }
.publication-header .standfirst { max-width: 940px; margin-bottom: 18px; }
.lead-figure { margin: 0 0 35px; border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule); padding: 10px 0; }
.lead-figure img { width: 100%; max-height: 720px; object-fit: cover; }
.article-layout { display: grid; grid-template-columns: minmax(0, 760px) minmax(230px, 1fr); gap: 70px; align-items: start; max-width: 1080px; margin: 0 auto; }
.article-body { font: 1.23rem/1.58 var(--editorial); hyphens: auto; }
.article-body > :first-child { margin-top: 0; }
.article-body > p:first-child::first-letter { float: left; font: 500 4.7em/.77 var(--display); margin: .11em .09em 0 0; }
.article-body h1, .article-body h2, .article-body h3, .article-body h4 { font-family: var(--display); line-height: 1; font-weight: 500; margin: 1.5em 0 .45em; }
.article-body h1 { font-size: 3rem; }.article-body h2 { font-size: 2.45rem; }.article-body h3 { font-size: 1.9rem; }
.article-body blockquote { border-left: 5px solid var(--important); margin: 2rem 0; padding: .25rem 0 .25rem 1.4rem; font-size: 1.3em; }
.article-body pre { overflow-x: auto; background: var(--paper-deep); border: 1px solid var(--rule); padding: 16px; font-size: .8em; }
.article-body code { font-family: "SFMono-Regular", Consolas, monospace; font-size: .84em; }
.article-body a { color: var(--link); text-decoration-color: currentColor; }
.article-aside { position: sticky; top: 20px; border-top: 1px solid var(--rule-strong); }
.aside-block { padding: 13px 0; border-bottom: 1px solid var(--rule); }
.aside-block h2 { border: 0; padding: 0; margin-bottom: 8px; font-size: .72rem; }
.aside-block > a { color: var(--link); font-size: 1.18rem; }
.tag-list { display: flex; flex-wrap: wrap; gap: 6px; }
.tag-list span { border: 1px solid var(--rule); padding: 3px 7px; font: .73rem var(--utility); text-transform: uppercase; letter-spacing: .05em; }
.source-section, .attachment-section, .details-block { max-width: 1080px; margin: 52px auto 0; border-top: 1px solid var(--rule-strong); padding-top: 12px; }
.source-section > h2, .attachment-section > h2 { font: 650 .9rem var(--utility); text-transform: uppercase; letter-spacing: .18em; margin: 0 0 12px; }
.source-section ol { margin: 0; padding-left: 1.6rem; }
.source-section li { border-bottom: 1px solid var(--rule); padding: 9px 4px; }
.source-section li span, .source-section li time, .source-section li small { margin-left: 12px; color: var(--muted); font: .76rem var(--utility); }
.audio-item { padding: 12px 0; border-bottom: 1px solid var(--rule); }
.audio-item strong { display: block; margin-bottom: 8px; }
.audio-item audio { width: 100%; }
.attachment-link { display: grid; grid-template-columns: 1fr auto 30px; gap: 15px; padding: 12px 4px; border-bottom: 1px solid var(--rule); text-decoration: none; }
.attachment-link small { font-family: var(--utility); color: var(--muted); }
.details-block summary { cursor: pointer; font: 650 .85rem var(--utility); text-transform: uppercase; letter-spacing: .14em; }
.details-block dl { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 30px; }
.details-block dl div, .expired-page dl div { display: grid; grid-template-columns: 140px 1fr; border-bottom: 1px solid var(--rule); padding: 9px 0; }
.details-block dt, .expired-page dt { font: .75rem var(--utility); text-transform: uppercase; letter-spacing: .08em; color: var(--muted); }
.details-block dd, .expired-page dd { margin: 0; }

.expired-page { max-width: 900px; margin: 9vh auto; border-top: 1px solid var(--rule-strong); padding-top: 18px; }
.expired-page h1 { font: 500 clamp(3rem, 7vw, 7rem)/.92 var(--display); margin: 0 0 20px; }
.expired-page dl { max-width: 600px; margin: 30px 0; }

.auth-page { min-height: 100vh; display: grid; place-items: center; padding: 28px; }
.auth-shell { width: min(100%, 680px); }
.auth-card { border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule-strong); padding: 22px 0 34px; }
.auth-masthead { display: block; font: 500 clamp(3rem, 11vw, 6.2rem)/.9 var(--display); letter-spacing: -.045em; text-align: center; text-decoration: none; }
.auth-rule { height: 1px; background: var(--rule); margin: 24px 0 20px; }
.auth-card .section-kicker { border: 0; padding: 0; margin-bottom: 16px; }
.auth-card h1 { font: 500 clamp(2.7rem, 8vw, 5.2rem)/.92 var(--display); letter-spacing: -.03em; margin: 0; }
.auth-intro { max-width: 500px; font-size: 1.14rem; }
.auth-form { margin-top: 28px; display: grid; gap: 17px; }
.auth-form label { font: .78rem var(--utility); text-transform: uppercase; letter-spacing: .12em; }
.auth-form label span { text-transform: none; letter-spacing: 0; color: var(--muted); }
.auth-form input { display: block; width: 100%; margin-top: 7px; background: transparent; color: inherit; border: 0; border-bottom: 1px solid var(--rule-strong); padding: 9px 1px; border-radius: 0; font-family: var(--editorial); font-size: 1.15rem; }
.auth-form button { margin-top: 7px; display: flex; justify-content: space-between; }
.auth-reset-action {
  display: grid; grid-template-columns: 1fr auto; gap: 18px; align-items: center;
  margin-top: 26px; padding-top: 16px; border-top: 1px solid var(--rule);
  font: .76rem/1.35 var(--utility); color: var(--muted);
}
.auth-reset-action a {
  border: 1px solid var(--rule-strong); padding: 8px 11px; color: var(--ink);
  text-decoration: none; text-transform: uppercase; letter-spacing: .09em; white-space: nowrap;
}
.auth-reset-action a:hover { background: var(--ink); color: var(--paper); }
.auth-return-link { display: inline-block; margin-top: 28px; color: var(--link); font: .82rem var(--utility); text-decoration: none; }
.form-error { border-left: 5px solid var(--critical); padding: 10px 14px; background: color-mix(in srgb, var(--critical) 8%, transparent); }
.form-success { border-left: 5px solid #287146; padding: 10px 14px; background: color-mix(in srgb, #287146 8%, transparent); }

/* Administration reads like a publisher's working ledger. */
.admin-link { font: 650 .76rem var(--utility); text-transform: uppercase; letter-spacing: .12em; }
.admin-page { max-width: 1050px; margin: 0 auto; }
.admin-header { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(260px, .75fr); column-gap: 50px; align-items: end; border-bottom: 1px solid var(--rule-strong); padding-bottom: 22px; }
.admin-header .section-kicker { grid-column: 1 / -1; border: 0; padding: 0; margin-bottom: 8px; }
.admin-header h1 { margin: 0; font: 500 clamp(3.8rem, 8vw, 7.5rem)/.86 var(--display); letter-spacing: -.04em; }
.admin-header > p:last-child { margin: 0 0 5px; color: var(--muted); }
.admin-tabs { display: flex; border-bottom: 1px solid var(--rule-strong); margin-bottom: 28px; }
.admin-tabs a { padding: 12px 18px 10px 0; margin-right: 22px; font: 650 .76rem var(--utility); text-transform: uppercase; letter-spacing: .12em; text-decoration: none; }
.admin-tabs a[aria-current="page"] { color: var(--link); box-shadow: inset 0 -4px 0 currentColor; }
.admin-settings-form fieldset { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 40px; border: 0; border-bottom: 1px solid var(--rule-strong); margin: 0; padding: 22px 0 32px; }
.admin-settings-form legend { grid-column: 1 / -1; width: 100%; margin-bottom: 14px; padding: 0; font: 500 2rem var(--display); }
.admin-settings-form label { font: 650 .74rem var(--utility); text-transform: uppercase; letter-spacing: .1em; }
.admin-settings-form label span { color: var(--muted); }
.admin-settings-form .wide-setting { grid-column: 1 / -1; }
.admin-settings-form input { display: block; width: 100%; margin-top: 6px; padding: 9px 1px; border: 0; border-bottom: 1px solid var(--rule-strong); border-radius: 0; background: transparent; color: inherit; font: 1.08rem var(--editorial); }
.admin-settings-form small { display: block; margin-top: 5px; color: var(--muted); font: .72rem/1.35 var(--utility); letter-spacing: 0; text-transform: none; }
.admin-save-row { display: grid; grid-template-columns: 1fr auto; gap: 30px; align-items: center; padding: 24px 0; }
.admin-save-row p { margin: 0; color: var(--muted); font-size: .88rem; }
.admin-save-row button, .admin-reader-actions button { border: 1px solid var(--ink); border-radius: 0; background: var(--ink); color: var(--paper); padding: 12px 18px; font-family: var(--utility); cursor: pointer; }
.admin-save-row button:disabled { opacity: .45; cursor: not-allowed; }
.help-ledger { display: grid; grid-template-columns: repeat(2, 1fr); border-top: 1px solid var(--rule-strong); }
.help-ledger section { padding: 22px 28px 24px 0; border-bottom: 1px solid var(--rule); }
.help-ledger section:nth-child(odd) { border-right: 1px solid var(--rule); }
.help-ledger section:nth-child(even) { padding-left: 28px; }
.help-ledger h2, .help-emergency h2 { margin: 0 0 8px; font: 500 2rem var(--display); }
.help-ledger p { margin: 0; }
.dependency-card { margin-top: 42px; border-top: 5px solid var(--normal); border-bottom: 1px solid var(--rule-strong); padding: 18px 0 24px; }
.dependency-card > div { display: flex; justify-content: space-between; align-items: baseline; }
.dependency-card .section-kicker { border: 0; padding: 0; margin: 0; }
.dependency-card h2 { margin: 0; font: 500 2.7rem var(--display); }
.dependency-card dl { margin: 18px 0 0; }
.dependency-card dl div { display: grid; grid-template-columns: 190px 1fr; gap: 20px; border-top: 1px solid var(--rule); padding: 9px 2px; }
.dependency-card dt { font: 650 .72rem var(--utility); text-transform: uppercase; letter-spacing: .1em; color: var(--muted); }
.dependency-card dd { margin: 0; }
.monitor-command { margin: 18px 0 0; color: var(--muted); }
.help-emergency { margin-top: 42px; }
.help-emergency ol { padding-left: 1.2rem; }
.help-emergency li { padding: 5px 0; }
.news-dropzone { position: relative; min-height: 235px; display: grid; place-items: center; border: 1px dashed var(--rule-strong); background: repeating-linear-gradient(-45deg, transparent 0 18px, color-mix(in srgb, var(--normal) 4%, transparent) 18px 36px); transition: background-color .18s ease, border-color .18s ease; }
.news-dropzone.is-dragging, .news-dropzone.has-file { border-style: solid; border-color: var(--normal); background-color: color-mix(in srgb, var(--normal) 9%, transparent); }
.news-dropzone input { position: absolute; inset: 0; z-index: 2; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.news-dropzone label { display: grid; place-items: center; gap: 6px; padding: 30px; text-align: center; pointer-events: none; }
.dropzone-mark { display: grid; place-items: center; width: 48px; height: 48px; border: 1px solid var(--rule-strong); border-radius: 50%; font: 400 1.5rem var(--utility); }
.news-dropzone strong { font: 500 clamp(2rem, 4vw, 3.4rem)/1 var(--display); }
.news-dropzone label > span:not(.dropzone-mark) { color: var(--link); font: .84rem var(--utility); }
.news-dropzone small { color: var(--muted); font: .72rem var(--utility); }
.upload-story-details { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 22px 40px; border: 0; border-bottom: 1px solid var(--rule-strong); margin: 0; padding: 30px 0 34px; }
.upload-story-details legend { width: 100%; margin-bottom: 14px; padding: 0; font: 500 2rem var(--display); }
.upload-story-details label { font: 650 .74rem var(--utility); text-transform: uppercase; letter-spacing: .1em; }
.upload-story-details label > span { color: var(--muted); text-transform: none; letter-spacing: 0; }
.upload-story-details .wide-setting { grid-column: 1 / -1; }
.upload-story-details input, .upload-story-details textarea, .upload-story-details select { display: block; width: 100%; margin-top: 6px; padding: 9px 1px; border: 0; border-bottom: 1px solid var(--rule-strong); border-radius: 0; background: transparent; color: inherit; font: 1.08rem var(--editorial); }
.upload-story-details textarea { resize: vertical; border: 1px solid var(--rule); padding: 10px; }
.upload-story-details select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--ink) 50%), linear-gradient(135deg, var(--ink) 50%, transparent 50%); background-position: calc(100% - 12px) 52%, calc(100% - 7px) 52%; background-size: 5px 5px; background-repeat: no-repeat; }
.publish-row { border-bottom: 1px solid var(--rule-strong); }

/* Installer: a pressroom proof sheet, not an admin dashboard. */
.installer-shell { width: min(100%, 980px); margin: 3vh auto 7vh; }
.auth-page.installer-page { display: block; }
.installer-page-shell { width: min(100%, 980px); margin: 0 auto; }
.installer-masthead { border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule-strong); padding: 9px 0 0; }
.installer-masthead .auth-masthead { font-size: clamp(4rem, 12vw, 8rem); }
.installer-masthead .section-kicker { margin: 15px 0 0; padding: 10px 2px; border-top: 1px solid var(--rule); border-bottom: 0; text-align: center; }
.installer-date { display: flex; gap: 16px; align-items: center; justify-content: center; margin: 0; font: .74rem var(--utility); text-transform: uppercase; letter-spacing: .11em; }
.installer-date span { height: 18px; width: 1px; background: var(--rule); }
.installer-intro { display: grid; grid-template-columns: 1.55fr 1fr; gap: 55px; align-items: end; padding: 42px 0 34px; border-bottom: 1px solid var(--rule-strong); }
.installer-intro h1, .installer-finale h1 { margin: 0; font: 500 clamp(3.4rem, 7.7vw, 7rem)/.88 var(--display); letter-spacing: -.04em; text-wrap: balance; }
.installer-intro > p { margin: 0 0 5px; font-size: 1.16rem; }
.install-status-mark { margin: 0 0 10px; font: 650 .82rem var(--utility); text-transform: uppercase; letter-spacing: .16em; color: var(--normal); }
.install-status-mark.success { color: #287146; }
.installer-error { margin: 22px 0 0; }
.install-checks { padding: 28px 0 35px; border-bottom: 1px solid var(--rule-strong); }
.install-checks > h2 { margin: 0 0 10px; font: 650 .82rem var(--utility); text-transform: uppercase; letter-spacing: .19em; }
.install-checks ul { list-style: none; margin: 0; padding: 0; }
.install-checks li { display: grid; grid-template-columns: 26px 1fr auto; gap: 10px; align-items: center; padding: 9px 3px; border-top: 1px solid var(--rule); }
.install-checks li:last-child { border-bottom: 1px solid var(--rule); }
.check-mark { display: grid; place-items: center; width: 19px; height: 19px; border: 1px solid currentColor; border-radius: 50%; font: 700 .78rem/1 var(--utility); }
.install-checks .passed .check-mark { color: #287146; }
.install-checks .failed .check-mark { color: var(--critical); }
.install-checks .warning .check-mark { color: var(--important); }
.install-checks li strong { display: block; font: 600 1rem var(--editorial); }
.install-checks li small { display: block; font: .77rem/1.3 var(--utility); color: var(--muted); }
.install-checks li > b { font: 650 .65rem var(--utility); text-transform: uppercase; letter-spacing: .1em; color: var(--muted); }
.installer-form fieldset { border: 0; border-bottom: 1px solid var(--rule-strong); margin: 0; padding: 34px 0 38px; }
.installer-form legend { display: flex; gap: 14px; align-items: baseline; padding: 0; margin-bottom: 22px; font: 500 2.15rem var(--display); }
.proof-number { font: 650 .68rem var(--utility); letter-spacing: .08em; color: var(--normal); }
.fieldset-intro { max-width: 620px; margin: -12px 0 24px; color: var(--muted); }
.install-field-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 22px 38px; }
.database-grid { grid-template-columns: 1.35fr .65fr; }
.wide-field { grid-column: 1 / -1; }
.install-field-grid label { font: 650 .72rem var(--utility); text-transform: uppercase; letter-spacing: .1em; }
.install-field-grid label > span { color: var(--muted); text-transform: none; letter-spacing: 0; }
.install-field-grid input { display: block; width: 100%; border: 0; border-bottom: 1px solid var(--rule-strong); border-radius: 0; background: transparent; color: inherit; padding: 9px 1px 8px; margin-top: 6px; font: 1.08rem var(--editorial); }
.install-field-grid label > small { display: block; margin-top: 5px; color: var(--muted); font: .72rem/1.3 var(--utility); letter-spacing: 0; text-transform: none; }
.install-field-grid code, .installation-next-steps code { font-family: "SFMono-Regular", Consolas, monospace; font-size: .85em; }
.install-submit-row { display: grid; grid-template-columns: 1fr auto; gap: 35px; align-items: center; padding: 27px 0; }
.install-submit-row p { margin: 0; color: var(--muted); }
.install-submit-row button, .copy-token { border: 1px solid var(--ink); border-radius: 0; background: var(--ink); color: var(--paper); padding: 13px 18px; font-family: var(--utility); cursor: pointer; }
.install-submit-row button:disabled { opacity: .42; cursor: not-allowed; }
.installer-finale { padding: 55px 0 0; }
.installer-finale > p { max-width: 680px; }
.install-lede { font-size: 1.2rem; }
.token-proof { margin: 40px 0 0; padding: 20px 0 25px; border-top: 1px solid var(--rule-strong); border-bottom: 1px solid var(--rule-strong); }
.token-proof > div, .installation-next-steps li { display: grid; grid-template-columns: 38px 1fr; gap: 10px; }
.token-proof h2, .installation-next-steps h2 { margin: 0; font: 500 1.65rem/1 var(--display); }
.token-proof p, .installation-next-steps p { margin: 6px 0 0; }
.token-proof textarea { width: 100%; resize: none; margin: 18px 0 9px; border: 1px solid var(--rule-strong); border-radius: 0; background: var(--paper-deep); color: var(--ink); padding: 13px; font: .85rem/1.4 "SFMono-Regular", Consolas, monospace; }
.copy-token { padding: 9px 14px; }
.installation-next-steps { list-style: none; margin: 0; padding: 0; }
.installation-next-steps li { padding: 22px 0; border-bottom: 1px solid var(--rule); }
.installation-next-steps a, .install-primary-link { color: var(--link); text-decoration: none; }
.installer-lock-note { font: .72rem var(--utility); text-transform: uppercase; letter-spacing: .1em; }
.installer-lock-note span { color: #287146; margin-right: 7px; }
.install-primary-link { display: inline-block; margin-top: 25px; padding-bottom: 4px; border-bottom: 1px solid currentColor; font: 1rem var(--utility); }

@media (max-width: 1050px) {
  :root { --page: min(100% - 44px, 960px); }
  .section-nav { gap: clamp(18px, 3.2vw, 40px); font-size: .78rem; }
  .front-grid { grid-template-columns: 1fr; }
  .lead-column { border-right: 0; padding-right: 0; }
  .news-rail { display: grid; grid-template-columns: 1.4fr 1fr; gap: 24px; border-top: 1px solid var(--rule-strong); padding-top: 18px; }
  .news-rail .rail-section:last-child { grid-column: 1 / -1; }
  .article-layout { grid-template-columns: minmax(0, 1fr) 230px; gap: 38px; }
}

@media (max-width: 700px) {
  :root { --page: calc(100% - 28px); }
  body { font-size: 16px; }
  .site-header { padding-top: 12px; }
  .utility-bar { font-size: .74rem; min-height: 30px; }
  .dateline { gap: 9px; }
  .dateline .vertical-rule, .dateline span:last-child, .utility-actions form, .push-button { display: none; }
  .utility-actions { gap: 0; }
  .search-link span:first-child { display: none; }
  .masthead { font-size: clamp(3rem, 15vw, 5.5rem); margin: 14px auto 9px; max-width: 100%; }
  .section-nav { justify-content: flex-start; overflow-x: auto; gap: 28px; min-height: 48px; padding: 0 2px; scrollbar-width: none; }
  .section-nav::-webkit-scrollbar { display: none; }
  .section-nav a { flex: 0 0 auto; }
  .page-shell { margin-top: 17px; }
  .section-kicker { font-size: .76rem; letter-spacing: .2em; }
  .hero-story h1 { font-size: clamp(3rem, 14.6vw, 5.4rem); }
  .hero-byline { align-items: flex-start; }
  .byline-separator { height: 16px; margin: 0 3px; }
  .standfirst { font-size: 1.35rem; }
  .feed-card { padding-left: 25px; padding-right: 5px; }
  .feed-card::before { left: 1px; width: 4px; }
  .feed-card h2 { font-size: 2rem; }
  .news-rail { display: block; }
  .listing-header h1 { font-size: 3.8rem; }
  .mark-all-form { position: static; margin-top: 16px; }
  .search-form > div { display: grid; }
  .search-form button { margin-top: 8px; }
  .index-row { grid-template-columns: 1fr 20px; gap: 10px; }
  .index-row small { grid-column: 1; grid-row: 2; }
  .index-row b { grid-column: 2; grid-row: 1 / 3; align-self: center; }
  .publication-header h1 { font-size: clamp(3.2rem, 16vw, 5.7rem); }
  .article-layout { display: block; }
  .article-body { font-size: 1.08rem; line-height: 1.58; }
  .article-aside { position: static; margin-top: 30px; }
  .source-section li span, .source-section li time, .source-section li small { display: block; margin: 3px 0 0; }
  .details-block dl { grid-template-columns: 1fr; }
  .details-block dl div, .expired-page dl div { grid-template-columns: 110px 1fr; }
  .auth-page { padding: 18px; align-items: start; }
  .auth-shell { margin-top: 6vh; }
  .auth-reset-action { grid-template-columns: 1fr; }
  .auth-reset-action a { text-align: center; }
  .admin-header { grid-template-columns: 1fr; gap: 16px; }
  .admin-header > p:last-child { margin: 0; }
  .admin-tabs { overflow-x: auto; }
  .admin-tabs a { flex: 0 0 auto; }
  .admin-settings-form fieldset { grid-template-columns: 1fr; }
  .admin-settings-form .wide-setting { grid-column: auto; }
  .admin-save-row { grid-template-columns: 1fr; }
  .admin-save-row button { width: 100%; }
  .help-ledger { grid-template-columns: 1fr; }
  .help-ledger section:nth-child(odd) { border-right: 0; }
  .help-ledger section:nth-child(even) { padding-left: 0; }
  .dependency-card > div { display: block; }
  .dependency-card dl div { grid-template-columns: 1fr; gap: 3px; }
  .news-dropzone { min-height: 210px; }
  .upload-story-details { grid-template-columns: 1fr; }
  .upload-story-details .wide-setting { grid-column: auto; }
  .installer-shell { margin-top: 1vh; }
  .installer-masthead .auth-masthead { font-size: 14vw; }
  .installer-intro { grid-template-columns: 1fr; gap: 18px; padding: 30px 0; }
  .installer-intro h1, .installer-finale h1 { font-size: 3.45rem; }
  .install-field-grid, .database-grid { grid-template-columns: 1fr; }
  .wide-field { grid-column: auto; }
  .install-submit-row { grid-template-columns: 1fr; }
  .install-submit-row button { width: 100%; }
  .install-checks li { grid-template-columns: 24px 1fr; }
  .install-checks li > b { grid-column: 2; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; animation: none !important; }
}

@media (prefers-color-scheme: dark) {
  :root {
    --paper: #171816; --paper-deep: #20211e; --ink: #efeee8; --muted: #aaa9a1;
    --rule: #585953; --rule-strong: #c0c0b9; --critical: #e16a6d; --important: #dcae52;
    --normal: #91afc2; --link: #abc3df;
  }
  body { background: radial-gradient(ellipse at 40% 0%, #21221f, transparent 66%), var(--paper); }
  .hero-image, .lead-figure img { filter: saturate(.72) brightness(.84) contrast(1.06); }
  .byline, .signal-list small, .section-kicker { color: #c8c7c0; }
}

/* Used only by the static design fixture so it can be compared with the
   supplied light reference regardless of the review machine's appearance. */
body.force-light {
  --paper: #f7f7f4; --paper-deep: #efeee9; --ink: #11110f; --muted: #5e5c56;
  --rule: #99978f; --rule-strong: #2b2a27; --critical: #951b20;
  --important: #b77d09; --normal: #526e82; --link: #334f6f;
  background: radial-gradient(ellipse at 40% 0%, rgba(255,255,255,.94), transparent 66%), var(--paper);
}

@media print {
  .utility-actions, .section-nav, .article-aside, .mark-all-form { display: none !important; }
  :root { --page: 100%; --paper: white; --ink: black; }
  body { background: white; }
  .site-header { padding-top: 0; }
  .article-layout { display: block; }
}

/* Reader management shares the existing admin form and typography. */
.admin-reader-list { display: grid; gap: 1rem; }
.admin-reader { padding: 1rem 0; border-bottom: 1px solid var(--rule, #ccc); }
.admin-reader h3, .admin-reader p { margin: 0 0 .6rem; }
.admin-reader-actions { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; }
.admin-access-link { width: 100%; margin-bottom: 1rem; }

.admin-reader-actions button { background: transparent; color: var(--ink); padding: 9px 12px; }
.admin-reader-actions button:hover { background: var(--ink); color: var(--paper); }
