:root { --paper:#f8f7f3; --ink:#151515; --muted:#66645f; --line:#d7d4cc; --strong:#242320; --accent:#8b1e2d; --sans:"Libre Franklin",Arial,sans-serif; --serif:"Newsreader",Georgia,serif; --display:"UnifrakturCook",Georgia,serif; --page:1400px; --gutter:clamp(18px,3vw,42px); --space-1:8px; --space-2:14px; --space-3:24px; --space-4:42px; --space-5:68px; --block-pad:12px; --story-media-gap:16px; --story-kicker-gap:6px; --story-heading-gap:8px; --story-lead-heading-gap:10px; --story-copy-leading:1.45; --story-read-more-gap:12px; --story-stack-space:22px; --story-separator:1px solid var(--line); --col-gap:48px; --row-gap:48px; --half-gap:calc(var(--col-gap) / 2); --compact-thumb-size:clamp(104px,10vw,112px); }
* { box-sizing:border-box; }
html { background:var(--paper); scroll-behavior:smooth; scrollbar-gutter:stable; }
body { margin:0; color:var(--ink); background:var(--paper); font-family:var(--serif); }
a { color:inherit; text-decoration:none; }
button { font:inherit; }
.page-width { width:min(var(--page), calc(100% - (var(--gutter) * 2))); margin-inline:auto; }
.skip-link { position:fixed; z-index:100; top:-60px; left:16px; padding:8px 12px; background:var(--ink); color:#fff; font:700 .75rem var(--sans); }
.skip-link:focus { top:16px; }
.masthead-shell { border-bottom:1px solid var(--line); }
.utility-bar { display:flex; align-items:center; justify-content:space-between; min-height:43px; border-bottom:1px solid var(--line); color:var(--muted); font:600 .75rem/1 var(--sans); }
.edition-picker { position:relative; display:flex; align-items:center; gap:9px; }
.utility-label { text-transform:uppercase; letter-spacing:.08em; font-size:.65rem; }
.edition-picker button { border:0; border-bottom:1px solid var(--line); padding:3px 0; background:transparent; color:var(--ink); font:700 .76rem/1 var(--sans); cursor:pointer; }
.edition-menu { position:absolute; z-index:20; top:calc(100% + 8px); left:0; width:282px; padding:14px; border:1px solid var(--strong); background:var(--paper); box-shadow:0 12px 28px rgb(0 0 0 / .13); }
.edition-menu h2 { margin:0 0 10px; font:700 .75rem var(--sans); }
.edition-menu p { margin:10px 0 0; color:var(--muted); font:400 .71rem/1.35 var(--sans); }
.cal-head { display:grid; grid-template-columns:28px 1fr 28px; align-items:center; margin-bottom:10px; text-align:center; }
.cal-head h2 { margin:0; font:700 .78rem var(--sans); }
.cal-head button { width:28px; height:28px; border:0; border-radius:50%; background:transparent; color:var(--ink); font-size:1.25rem; line-height:1; cursor:pointer; }
.cal-head button:hover:not(:disabled) { background:#ebe8e0; }
.cal-head button:disabled { color:var(--line); cursor:default; }
.cal-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:3px; text-align:center; }
.cal-dow { padding-bottom:4px; color:var(--muted); font:700 .56rem var(--sans); }
.cal-day { display:grid; place-items:center; height:32px; border:0; border-radius:50%; background:transparent; color:#bdb8ae; font:500 .7rem var(--sans); }
button.cal-day.published { color:var(--ink); font-weight:800; cursor:pointer; }
button.cal-day.published:hover,button.cal-day[aria-current="true"] { background:var(--accent); color:#fff; }
.weather { display:flex; align-items:center; gap:13px; color:var(--muted); font:600 .75rem/1 var(--sans); white-space:nowrap; }
.weather-now { color:var(--ink); }
.weather-place { display:inline-flex; align-items:center; gap:5px; border:0; border-bottom:1px dotted currentColor; padding:2px 0; background:transparent; color:var(--muted); font:inherit; cursor:pointer; }
.weather-place:hover { color:var(--accent); }
.brand-bar { display:grid; justify-items:center; padding:25px 0 19px; }
.wordmark,.footer-mark { font:700 clamp(3.15rem,6vw,5.25rem)/.78 var(--display); letter-spacing:-.04em; }
.brand-bar .wordmark { font-size:clamp(3.53rem,6.72vw,5.88rem); }
.brand-bar p { margin:20px 0 0; color:var(--muted); font:italic 1.03rem var(--serif); }
.main-nav { display:flex; justify-content:center; gap:clamp(18px,3.36vw,43px); overflow-x:auto; border-top:1px solid var(--line); font:700 .76rem/1 var(--sans); white-space:nowrap; }
.main-nav a { padding:16px 1px 13px; border-bottom:2px solid transparent; }
.main-nav a:hover,.main-nav a.active { color:var(--accent); border-bottom-color:var(--accent); }
.section-intro { padding:47px 0; border-bottom:2px solid var(--strong); text-align:center; }
.eyebrow,.kicker { margin:0 0 var(--story-kicker-gap); color:var(--accent); font:800 .6875rem/1.25 var(--sans); letter-spacing:.06em; text-transform:uppercase; }
.section-intro h1 { margin:0; font:600 clamp(2.58rem,4.26vw,4.03rem)/.92 var(--serif); letter-spacing:-.04em; }
.media { display:block; overflow:hidden; background:#e5e1d8; }
.media img { display:block; width:100%; height:100%; object-fit:cover; }
.media.image-placeholder { display:grid; place-items:center; background:repeating-linear-gradient(-45deg,#e7e3da 0,#e7e3da 10px,#ddd8ce 10px,#ddd8ce 11px); }
.media.image-placeholder::after { content:"The Daily Meridian\A Editorial image"; white-space:pre; color:#6b665e; font:700 .58rem/1.55 var(--sans); letter-spacing:.08em; text-align:center; text-transform:uppercase; }
/* Every story summary uses one color token in both themes, regardless of layout or card size. */
.page-width :is(.deck,.lead-excerpt),.page-width .text-brief p:not(.kicker) { color:var(--muted); }
/* In rows of side-by-side cards the link is pinned to the card bottom, so every "Read more" in a row lines up. */
.l1-quad .story-card,.l1-duo .story-card,.l1-trio .story-card,.l2-strip .story-card,.text-brief > div { display:flex; flex-direction:column; }
.l1-quad .read-link,.l1-duo .read-link,.l1-trio .read-link,.l2-strip .read-link,.text-brief .read-link { align-self:flex-start; margin-top:auto; padding-top:10px; }
.read-link { display:inline-block; margin-top:var(--story-read-more-gap); color:var(--accent); font:800 .6875rem/1.25 var(--sans); letter-spacing:.04em; text-transform:uppercase; }
.briefing { padding-left:var(--space-3); border-left:1px solid var(--line); }
.briefing h2 { margin:0 0 14px; }
.briefing ol { margin:0; padding:0; list-style:none; border-top:1px solid var(--line); }
.briefing > ol > li { padding:12px 0; border-bottom:1px solid var(--line); }
.briefing > ol > li span { display:block; margin-bottom:var(--story-kicker-gap); color:var(--accent); font:800 .6875rem/1.25 var(--sans); letter-spacing:.06em; text-transform:uppercase; }
.module { padding:var(--space-4) 0; border-bottom:1px solid var(--strong); }
.module-header { display:flex; justify-content:space-between; gap:var(--space-3); align-items:end; margin-bottom:var(--space-3); }
.module-header h2 { margin:0; }
.module-header p:last-child { max-width:38ch; margin:0; color:var(--muted); font:.86rem/1.35 var(--serif); }
.story-grid { display:grid; grid-template-columns:repeat(12,minmax(0,1fr)); gap:var(--space-3); }
.story-card { grid-column:span 4; min-width:0; padding-top:12px; }
.story-card .media { margin-bottom:12px; }
.story-card h3 { max-width:23ch; margin:0 0 var(--story-heading-gap); }
.story-card .deck { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.brief-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:0 var(--space-4); border-top:1px solid var(--line); }
.text-brief { display:grid; grid-template-columns:var(--compact-thumb-size) minmax(0,1fr); gap:var(--space-2); align-items:stretch; padding:18px 0; border-bottom:1px solid var(--line); }
.text-brief > .media { align-self:start; }
.text-brief img { width:var(--compact-thumb-size); aspect-ratio:1; object-fit:cover; }
.text-brief h3 { margin:0; }
.more-from .text-brief h3 { max-width:40ch; }
.text-brief p:not(.kicker) { margin:var(--story-heading-gap) 0 0; }
.market-strip { display:flex; gap:27px; overflow:hidden; padding:12px var(--gutter); padding-inline:0; border-bottom:1px solid var(--line); background:#efede7; font:700 .69rem/1 var(--sans); white-space:nowrap; }
.ticker-track,.ticker-copy { display:flex; width:max-content; }
.ticker-track { animation:ticker var(--ticker-duration, 40s) linear infinite; }
.ticker-track span:not(.ticker-copy) { margin-right:47px; }
.market-strip:hover .ticker-track,.market-strip:focus-within .ticker-track { animation-play-state:paused; }
@keyframes ticker { to { transform:translateX(-25%); } }
@media (prefers-reduced-motion:reduce) { .market-strip { overflow-x:auto; padding-inline:var(--gutter); } .ticker-track { animation:none; } .ticker-copy { display:none; } }
.market-strip b { font-weight:800; }.market-strip em { margin-left:5px; color:#176447; font-style:normal; }.market-strip em.down { color:var(--accent); }
/* Article reader: the story arrives face down and flips over sideways. */
body.reading { overflow:hidden; }
.reader { position:fixed; inset:0; z-index:90; display:grid; place-items:center; perspective:1800px; }
.reader[hidden] { display:none; }
.reader-backdrop { position:absolute; inset:0; background:rgb(21 21 21 / .55); opacity:0; transition:opacity .45s ease; }
.reader.open .reader-backdrop { opacity:1; }
.reader-stage { position:relative; width:min(780px, calc(100% - 32px)); height:min(90vh, 1040px); }
/* The shadow sits still under the paper and only fades, so the flip never has to repaint a large blur. */
.reader-stage::before { content:""; position:absolute; inset:4% 3% 0; box-shadow:0 30px 70px rgb(0 0 0 / .35); opacity:0; transition:opacity .45s ease .2s; }
.reader.open .reader-stage::before { opacity:1; }
.reader.closing .reader-stage::before { transition-delay:0s; transition-duration:.15s; }
.paper { position:absolute; inset:0; transform-style:preserve-3d; transform:translateY(5vh) rotateY(-180deg) scale(.86); transition:transform .65s cubic-bezier(.22,1,.36,1); }
.reader.open .paper { transform:none; }
.paper-front,.paper-back { position:absolute; inset:0; backface-visibility:hidden; -webkit-backface-visibility:hidden; }
.paper-back { display:grid; place-items:center; transform:rotateY(180deg); background:#ece6d9; }
.paper-back span { color:#8f8778; font:700 clamp(2.4rem,6vw,4.2rem)/1 var(--display); letter-spacing:-.04em; }
.paper-front { overflow-y:auto; overscroll-behavior:contain; padding:44px 56px 56px; background:var(--paper); contain:layout paint; }
/* One shared reading column, centred as a block inside the paper; text stays left-aligned. */
.paper-body { max-width:64ch; margin-inline:auto; }
.reader-close { position:sticky; top:0; float:right; z-index:1; width:40px; height:40px; margin:-24px -36px 0 0; border:1px solid var(--line); border-radius:50%; background:var(--paper); color:var(--ink); font:400 1.5rem/1 var(--sans); cursor:pointer; }
.reader-close:hover { border-color:var(--ink); }
.paper-body h1 { margin:0 0 18px; text-wrap:balance; font:600 clamp(1.6rem,2.6vw,2.15rem)/1.04 var(--serif); letter-spacing:-.025em; }
.paper-body .media { aspect-ratio:16/9; margin-bottom:16px; }
.paper-body .standfirst { margin:0 0 22px; padding-bottom:18px; border-bottom:1px solid var(--line); color:var(--muted); font:1.08rem/1.45 var(--serif); }
.reader-copy p { margin:0 0 1.1em; font:1.08rem/1.62 var(--serif); text-wrap:pretty; hyphens:auto; }
.reader-note { margin:0 0 20px; color:var(--muted); font:italic 1rem/1.5 var(--serif); }
.reader-sources { margin-top:28px; padding-top:16px; border-top:1px solid var(--line); }
.reader-sources a { display:inline-block; margin:0 18px 8px 0; color:var(--accent); font:700 .78rem var(--sans); }
/* Staff byline under the headline: the editor's portrait (photo, or initials on their colour), name, title and filed time */
.portrait { position:relative; display:inline-grid; flex:none; place-items:center; width:42px; height:42px; overflow:hidden; border-radius:50%; background:var(--tone,#5f5a52); color:#fff; font:600 .95rem var(--serif); letter-spacing:.02em; box-shadow:inset 0 0 0 1px rgb(0 0 0 / .12); }
.portrait img { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:50% 30%; }
.byline { display:flex; align-items:center; gap:12px; margin:0 0 18px; }
.byline p { margin:0; color:var(--muted); font:500 .74rem/1.4 var(--sans); }
.byline p span { display:block; color:var(--ink); font-size:.8rem; }
.byline b { font-weight:800; }
.byline time { display:block; letter-spacing:.02em; }
/* Image captions and in-story images. Wide frames are 3:2 across the column; insets are 4:3, floated beside the
   copy on wider sheets. Each fades up as it scrolls into view; clicking opens it larger over the sheet. */
.paper-body figcaption { margin:8px 0 0; color:var(--muted); font:400 .82rem/1.4 var(--serif); }
.paper-body figcaption span { color:var(--muted); font:600 .6rem/1.4 var(--sans); letter-spacing:.06em; text-transform:uppercase; white-space:nowrap; }
.paper-body .lead-caption { margin:-8px 0 16px; }
.reader-figure { margin:26px 0 28px; opacity:0; transform:translateY(16px); transition:opacity .6s ease, transform .6s cubic-bezier(.22,1,.36,1); }
.reader-figure.shown { opacity:1; transform:none; }
.reader-figure .media { width:100%; padding:0; border:0; cursor:zoom-in; }
.reader-figure .media img { transition:transform .5s cubic-bezier(.22,1,.36,1); }
.reader-figure .media:hover img { transform:scale(1.03); }
.reader-figure.wide .media { aspect-ratio:3/2; }
.reader-figure.inset .media { aspect-ratio:4/3; }
@media (min-width:700px) { .reader-figure.inset { float:right; clear:right; width:44%; margin:6px 0 16px 26px; } }
.reader-copy::after { content:""; display:block; clear:both; }
.reader-zoom { position:absolute; z-index:2; inset:0; display:grid; grid-template-rows:minmax(0,1fr) auto; gap:12px; place-items:center; padding:28px; background:rgb(12 12 11 / .92); cursor:zoom-out; }
.reader-zoom[hidden] { display:none; }
.reader-zoom img { max-width:100%; max-height:100%; object-fit:contain; }
.reader-zoom p { max-width:60ch; margin:0; color:#e8e5de; font:400 .88rem/1.4 var(--serif); text-align:center; }
@media (prefers-reduced-motion:reduce) { .reader-figure { opacity:1; transform:none; transition:none; } .reader-figure .media img { transition:none; } }
@media (prefers-reduced-motion:reduce) { .paper { transform:none; transition:none; } .reader-backdrop,.reader-stage::before { transition:none; } }
@media (max-width:600px) { .reader-stage { width:100%; height:100%; } .paper-front { padding:28px 20px 40px; } .reader-close { margin:-12px -8px 0 0; } }
.edition-banner { margin-top:var(--space-3); padding:10px 12px; border:1px solid var(--line); color:var(--muted); font:600 .72rem/1.3 var(--sans); }
/* Layout 1: lead with briefing rail, then a row of four image cards and a row of two text-only cards. */
.l1-top { display:grid; grid-template-columns:minmax(0,2fr) minmax(280px,1fr); gap:32px; padding:var(--space-4) 0; border-bottom:1px solid var(--strong); }
.l1-lead-copy { padding-top:var(--space-2); }
.l1-lead h2 { max-width:32ch; margin:0 0 var(--story-lead-heading-gap); }
.l1-lead .deck { max-width:60ch; margin:0; }
/* The four-up and two-up rows reuse Layout 2's .story-card look; these modifiers only change column span. */
.l1-quad .story-card { grid-column:span 3; }
.l1-duo .story-card { grid-column:span 6; }
.l1-trio .story-card { grid-column:span 4; }
.l1-compact { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); column-gap:var(--col-gap); }
.l1-compact-card { position:relative; display:grid; grid-template-columns:var(--compact-thumb-size) minmax(0,1fr); gap:var(--space-2); min-width:0; padding-top:var(--block-pad); }
.l1-compact-card + .l1-compact-card::before { content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator); }
.l1-compact-card .media { align-self:start; aspect-ratio:1/1; }
.l1-compact-card h3 { margin:0 0 var(--story-heading-gap); }
.l1-compact-card .deck { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.l1-compact-card .read-link { margin-top:var(--story-read-more-gap); }
.l1-text-card .deck { -webkit-line-clamp:4; }
.l1-stories { border-bottom:1px solid var(--strong); }
@media (max-width:900px) { .l1-top { grid-template-columns:1fr; } .l1-quad .story-card { grid-column:span 6; } }
.headline-list { margin:0; padding:0; list-style:none; border-top:1px solid var(--line); }
.headline-list li { padding:11px 0; border-bottom:1px solid var(--line); }
.headline-list li span { display:block; margin-bottom:var(--story-kicker-gap); color:var(--accent); font:800 .6875rem/1.25 var(--sans); letter-spacing:.06em; text-transform:uppercase; }

/* Markets page: ticker board in the right-hand slot. Green up, red down; arrows and signs carry direction too. */
.market-board { min-width:0; }
.market-board h2 { margin:0 0 12px; }
.market-board ul { margin:0; padding:0; list-style:none; border-top:1px solid var(--line); }
.market-board li { display:grid; grid-template-columns:minmax(0,1fr) auto 64px; gap:10px; align-items:center; padding:7px 0; border-bottom:1px solid var(--line); }
.mb-name { min-width:0; overflow:hidden; font:700 .68rem/1.15 var(--sans); text-overflow:ellipsis; white-space:nowrap; }
.mb-name small { display:block; margin-top:2px; color:var(--muted); font:600 .56rem/1 var(--sans); letter-spacing:.04em; }
.mb-price { font:600 .82rem/1 var(--sans); text-align:right; font-variant-numeric:tabular-nums; }
.mb-change { justify-self:stretch; padding:3px 0; border-radius:3px; font:700 .62rem/1.2 var(--sans); font-variant-numeric:tabular-nums; text-align:center; white-space:nowrap; }
.mb-change.up { color:#176447; background:#e3efe8; }
.mb-change.down { color:var(--accent); background:#f5e3e3; }
.market-board-note { margin:10px 0 0; color:var(--muted); font:.7rem/1.35 var(--sans); }
.l3-wall .market-board { grid-column:3; grid-row:1 / span 2; padding-left:var(--space-3); border-left:1px solid var(--line); }
.headline-list li .deck,.briefing > ol > li .deck { display:-webkit-box; overflow:hidden; margin:var(--story-heading-gap) 0 0; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.headline-list a:hover,.l2-front h2 a:hover,.l2-front h3 a:hover,.l3-brief h3 a:hover,.l3-caption a:hover,.l1-top h2 a:hover { color:var(--accent); }

/* Layout 2 (Centerpiece): text column | centered lead | picture and headlines, then three picture cards. */
.l2-front { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1.9fr) minmax(0,1fr); gap:32px; padding:var(--space-4) 0; border-bottom:1px solid var(--strong); }
.l2-left { padding-right:var(--space-3); border-right:1px solid var(--line); }
.l2-right { padding-left:var(--space-3); border-left:1px solid var(--line); }
/* Story columns use spacing and vertical dividers for structure. Page-level rules still separate major sections. */
.l2-text,.l2-lead,.l2-feature,.l2-strip .story-card,.l1-quad .story-card,.l1-duo .story-card,.l3-tile,.l3-brief > *,.market-board { padding-top:var(--block-pad); }
.l2-text h3 { margin:0 0 var(--story-heading-gap); }
.l2-lead { display:flex; flex-direction:column; }
.l2-text .deck,.l2-feature .deck { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.l2-text .media { margin-bottom:10px; }
.l2-lead .media { margin-bottom:var(--space-2); }
.l2-lead h2 { margin:0 0 var(--story-lead-heading-gap); }
.l2-lead .deck { margin:0; }
.l2-lead .lead-excerpt { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.l2-lead .lead-excerpt + .read-link { margin-top:auto; padding-top:var(--story-read-more-gap); }
.l2-feature { margin-bottom:var(--space-2); }
.l2-feature .media { margin-bottom:10px; }
.l2-feature h3 { margin:0 0 var(--story-heading-gap); }
.l2-strip { gap:32px; padding:var(--space-4) 0; border-bottom:1px solid var(--strong); }
/* Strip headlines use the full card width while retaining the standard card role. */
.l2-strip .story-card h3 { max-width:none; }

/* Layout 3 (Photo wall): lead and four pictures with headlines below each image, then seven text stories. */
.l3-wall { display:grid; grid-template-columns:2fr 1fr 1fr; grid-template-rows:repeat(2,minmax(280px,auto)); gap:var(--space-4) 32px; padding:var(--space-4) 0 var(--space-3); }
.l3-tile { display:flex; flex-direction:column; min-width:0; }
.l3-lead { grid-row:span 2; }
.l3-caption { padding-top:10px; }
.l3-caption .kicker { margin-bottom:4px; }
.l3-caption h3 { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.l3-lead h2 { margin:0 0 var(--story-lead-heading-gap); }
.l3-caption .deck { display:-webkit-box; overflow:hidden; margin:var(--story-heading-gap) 0 0; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.l3-lead .deck { width:100%; max-width:none; margin:0; }
.l3-brief { display:grid; grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,1fr); gap:32px; padding:var(--space-3) 0 var(--space-4); border-bottom:1px solid var(--strong); }
.l3-brief-lead .media { margin-bottom:12px; }
.l3-brief-lead .deck { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:4; }
.headline-list .has-thumb { padding-top:0; }
.has-thumb .media { margin-bottom:10px; }
.l3-brief-lead h3 { margin:0 0 var(--story-heading-gap); }
.l3-brief-lead .deck { margin:0; }

@media (min-width:901px) {
  /* Let the center crop absorb most, but not all, of the rails' extra height. */
  .l2-lead > .media { flex:.8 1 auto; min-height:0; }
  .page-width .l2-lead h2 { max-width:92%; }
  .l2-right .headline-list .deck { -webkit-line-clamp:3; }
}
@media (max-width:900px) {
  .l2-front { grid-template-columns:1fr 1fr; }
  .l2-lead { grid-column:1/-1; order:-1; }
  .l2-lead > .media { flex:0 0 auto; }
  .page-width .l2-lead h2 { max-width:none; }
  .l2-left { padding-right:0; border-right:0; }
  .l2-right { padding-left:0; border-left:0; }
  .l3-wall { grid-template-columns:1fr 1fr; grid-template-rows:none; }
  .l3-lead,.l3-wall .market-board { grid-column:1/-1; grid-row:auto; }
  .l3-wall .market-board { padding-left:0; border-left:0; }
  .l3-tile .media { flex:none; min-height:0; aspect-ratio:16/10; }
  .l3-brief { grid-template-columns:1fr 1fr; }
  .l3-brief-lead { grid-column:1/-1; }
}
@media (max-width:600px) {
  .l2-front { display:flex; flex-direction:column; }
  .l3-wall { grid-template-columns:1fr; }
  .l3-brief { display:block; }
  .l3-brief .headline-list { margin-top:var(--space-3); }
}
.footer-inner { display:grid; grid-template-columns:1fr auto 1fr; gap:var(--space-3); align-items:start; }.footer-mark { font-size:2.7rem; }.footer-inner p { margin:9px 0 0; color:var(--muted); font:.74rem/1.35 var(--sans); }.footer-inner nav { display:flex; flex-wrap:wrap; justify-content:center; gap:10px 20px; padding-top:8px; font:700 .8rem var(--sans); }.footer-note { text-align:right; }
@media (max-width:900px) { .section-intro { grid-template-columns:1fr; }.briefing { padding:var(--space-3) 0 0; border-top:1px solid var(--line); border-left:0; }.story-card { grid-column:span 6; }.story-grid .story-card:last-child:nth-child(odd) { grid-column:1/-1; }.l1-trio .story-card:last-child:nth-child(odd) { grid-column:span 4; }.footer-inner { grid-template-columns:1fr 1fr; }.footer-inner nav { justify-content:flex-start; }.footer-note { text-align:left; } }
@media (max-width:600px) { .utility-bar { min-height:47px; }.brand-bar { padding:20px 0 16px; }.brand-bar .wordmark { font-size:3.47rem; }.main-nav { justify-content:flex-start; width:100%; padding-inline:var(--gutter); }.section-intro { padding:34px 0; }.section-intro h1 { font-size:2.58rem; }.module { padding:32px 0; }.module-header { display:block; }.module-header p:last-child { margin-top:8px; }.story-grid { display:block; }.story-card { margin-bottom:26px; }.story-card .media { aspect-ratio:16/10; }.brief-grid { display:block; }.market-strip { padding-inline:var(--gutter); }.footer-inner { grid-template-columns:1fr; }.footer-note { text-align:left; } }

/* Theme switch in the top bar: a quiet icon button beside the weather. */
.utility-right { display:flex; align-items:center; gap:14px; }
.theme-toggle { display:grid; place-items:center; width:26px; height:26px; border:1px solid var(--line); border-radius:50%; padding:0; background:transparent; color:var(--muted); cursor:pointer; }
.theme-toggle:hover { color:var(--ink); border-color:var(--muted); }
.theme-toggle .icon-sun,[data-theme="dark"] .theme-toggle .icon-moon { display:none; }
[data-theme="dark"] .theme-toggle .icon-sun { display:block; }

/* Dark theme: the shared tokens flip, plus the few colors that were set directly. */
:root[data-theme="dark"] { color-scheme:dark; --paper:#141412; --ink:#ebe9e3; --muted:#a4a199; --line:#34322d; --strong:#d6d3cb; --accent:#e27a85; }
[data-theme="dark"] .media { background:#26241f; }
[data-theme="dark"] .media.image-placeholder { background:repeating-linear-gradient(-45deg,#23211d 0,#23211d 10px,#2b2924 10px,#2b2924 11px); }
[data-theme="dark"] .media.image-placeholder::after { color:#8f8b82; }
[data-theme="dark"] .market-strip { background:#1c1b18; }
[data-theme="dark"] .market-strip em:not(.down),[data-theme="dark"] .mb-change.up { color:#6fcf9b; }
[data-theme="dark"] .mb-change.up { background:#15301f; }
[data-theme="dark"] .mb-change.down { background:#3b1b20; }
[data-theme="dark"] .cal-head button:hover:not(:disabled) { background:#2a2824; }
[data-theme="dark"] .cal-day { color:#55524b; }
[data-theme="dark"] button.cal-day.published { color:var(--ink); }
[data-theme="dark"] button.cal-day.published:hover,[data-theme="dark"] button.cal-day[aria-current="true"] { color:#141412; }
[data-theme="dark"] .paper-back { background:#24221e; }
[data-theme="dark"] .paper-back span { color:#6d6960; }
[data-theme="dark"] .edition-menu { box-shadow:0 12px 28px rgb(0 0 0 / .5); }
/* Closing is quicker than opening and accelerates away, so the sheet never lingers; the layer is prepared ahead of time. */
.paper { will-change:transform; }
.reader.closing .paper { transition:transform .42s cubic-bezier(.55,0,.8,.3); }
.reader.closing .reader-backdrop { transition-duration:.38s; }
.l2-left > :last-child { padding-bottom:0; }
.l2-right .headline-list li:last-child { border-bottom:0; padding-bottom:0; }
/* Footer: wordmark, section links, and one location line, on a single centered row. */
.site-footer { margin-top:var(--space-4); padding:34px 0 var(--space-4); }
.footer-inner { align-items:center; }
.footer-inner nav { padding-top:0; }
.footer-inner .footer-note { margin:0; color:var(--muted); font:600 .72rem/1.3 var(--sans); }
@media (max-width:900px) { .footer-inner .footer-note { grid-column:1 / -1; } }
/* Image frames: every picture slot on the site has one fixed shape, set here and nowhere else. Frames never
   grow or shrink to fill space; photos crop to the frame (object-fit: cover) and never distort. */
.l1-lead .media { aspect-ratio:2/1; }
.l2-lead .media { aspect-ratio:3/2; }
.l2-pictured .media,.l2-feature .media,.story-card .media { aspect-ratio:3/2; }
.l3-tile .media,.l3-brief-lead .media { aspect-ratio:3/2; }
.has-thumb .media { aspect-ratio:16/9; }
.l2-continuation--feature .l2-continuation-picture .media { aspect-ratio:3/2; }
.l2-continuation--feature .l2-continuation-thumb { aspect-ratio:4/3; }
.continuation-card .media { aspect-ratio:3/2; }
.continuation-row--2 .continuation-card .media { aspect-ratio:16/9; }
/* The photo-wall lead spans two rows of tiles, so on desktop its frame is square to end level with them. */
@media (min-width:901px) { .l3-lead .media { aspect-ratio:1/1; } }
/* One spacing system for every layout: --col-gap between columns, --row-gap between rows and sections.
   Where a divider line separates columns, it sits centered in the gap (half the gap on each side). */
.l1-top,.l1-stories,.l2-front,.l2-strip,.l3-wall,.l3-brief { padding-top:var(--row-gap); padding-bottom:var(--row-gap); }
.l1-quad,.l1-duo,.l1-trio { column-gap:var(--col-gap); row-gap:var(--row-gap); }
.l1-quad,.l1-trio { margin-bottom:var(--row-gap); }
.l1-quad:only-child { margin-bottom:0; }
.l2-strip,.l3-brief { gap:var(--col-gap); }
.l3-wall { gap:var(--row-gap) var(--col-gap); }
/* A centered row rule joins the four small photo tiles without crossing the tall lead. */
@media (min-width:601px) {
  .l3-wall > .l3-tile:nth-child(4) { position:relative; }
  .l3-wall > .l3-tile:nth-child(4):not(:last-child)::after { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; width:calc(200% + var(--col-gap)); border-top:var(--story-separator); pointer-events:none; }
}
/* Layout 3's photo columns share full-height hairlines centered in their 48px gutters. */
@media (min-width:901px) {
  .l3-wall { position:relative; }
  .l3-wall::before,.l3-wall::after { content:""; position:absolute; top:var(--row-gap); bottom:var(--row-gap); border-left:var(--story-separator); pointer-events:none; }
  .l3-wall::before { left:calc(50% - var(--half-gap)); }
  .l3-wall::after { left:75%; }
  .l3-wall .market-board { border-left:0; }
}
/* The brief uses the same gutter rule; headline-list borders stay between stories only. */
.l3-brief > .headline-list { border-top:0; }
/* The two headline columns need room for their headlines to lead each brief. */
.page-width .l3-brief > .headline-list > li { padding-block:28px; }
@media (min-width:901px) {
  .l3-brief > .headline-list { position:relative; }
  .l3-brief > .headline-list::before { content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator); pointer-events:none; }
}
@media (min-width:601px) and (max-width:900px) {
  .l3-wall > .l3-tile:nth-child(2n + 3),.l3-brief > .headline-list + .headline-list { position:relative; }
  .l3-wall > .l3-tile:nth-child(2n + 3)::before,.l3-brief > .headline-list + .headline-list::before { content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator); pointer-events:none; }
}
.brief-grid { column-gap:var(--col-gap); }
/* Hairlines sit halfway through each 48px gutter, leaving 24px clear on both sides. */
.l1-quad,.l1-duo,.l1-trio,.brief-grid { position:relative; }
.l1-quad .story-card,.l1-duo .story-card,.l1-trio .story-card { position:relative; }
.l1-quad .story-card:not(:first-child)::before,.l1-duo .story-card + .story-card::before,.l1-trio .story-card:not(:first-child)::before {
  content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator);
}
.l1-quad::after,.l1-trio::after { content:""; position:absolute; bottom:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
.l1-quad:only-child::after { display:none; }
.brief-grid::before { content:""; position:absolute; top:0; bottom:0; left:50%; border-left:var(--story-separator); }
/* Layout 2's three-card strip shares the same centered gutter dividers. */
.l2-strip .story-card { position:relative; }
.l2-strip .story-card + .story-card::before { content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator); }
/* Layout 2 section continuation: image-led feature followed by a text trio before MoreFrom. */
.l2-continuation { display:grid; column-gap:var(--col-gap); padding:var(--row-gap) 0; border-bottom:1px solid var(--strong); }
.l2-continuation--feature { grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr); }
.l2-continuation-picture { display:flex; flex-direction:column; min-width:0; padding-top:var(--block-pad); }
.l2-continuation-picture .media { margin-bottom:var(--story-media-gap); }
.l2-continuation-picture h3 { margin:0 0 var(--story-heading-gap); }
.l2-continuation-stack { position:relative; display:grid; row-gap:var(--row-gap); }
.l2-continuation--feature .l2-continuation-stack { grid-template-rows:auto minmax(min-content,1fr); }
.l2-continuation-stack::before { content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator); }
.l2-continuation-text { position:relative; display:flex; flex-direction:column; min-width:0; padding-top:var(--block-pad); }
.l2-continuation-text--thumb { display:grid; grid-template-columns:clamp(250px,40%,320px) minmax(0,1fr); gap:var(--story-media-gap); }
.l2-continuation-copy { display:flex; flex-direction:column; min-width:0; height:100%; }
.l2-continuation-thumb { align-self:start; width:100%; }
.l2-continuation-text + .l2-continuation-text::before { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
.l2-continuation-text h3 { margin:0 0 var(--story-heading-gap); }
.l2-continuation :is(.l2-continuation-picture,.l2-continuation-text) .deck { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.page-width .l2-continuation .read-link { align-self:flex-start; margin-top:auto; padding-top:var(--story-read-more-gap); }
.page-width .l2-continuation--feature .l2-continuation-copy .read-link { margin-top:var(--story-read-more-gap); padding-top:0; }
.l2-continuation--feature .l2-continuation-picture h3 { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
/* Two fixed text-led continuation shapes: 3 across, or a 2 + 3 newspaper spread. */
.continuation-block { padding:var(--row-gap) 0; border-bottom:1px solid var(--strong); }
.continuation-row { display:grid; column-gap:var(--col-gap); }
.continuation-row--2 { grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); }
.continuation-row--3 { grid-template-columns:minmax(0,1.35fr) repeat(2,minmax(0,1fr)); }
.continuation-block--alternate .continuation-row--2 { grid-template-columns:minmax(0,1fr) minmax(0,1.35fr); }
.continuation-block--alternate .continuation-row--3 { grid-template-columns:repeat(2,minmax(0,1fr)) minmax(0,1.35fr); }
/* Layout 3 image continuations use the same equal three-card row as Layout 2's strip. */
.continuation-block .l3-continuation-images { grid-template-columns:repeat(12,minmax(0,1fr)); padding:0; border-bottom:0; }
.l3-continuation-images .media { background:var(--paper); }
.l3-continuation-images .media img { object-fit:contain; }
.continuation-row + .continuation-row { position:relative; margin-top:var(--row-gap); }
.continuation-row + .continuation-row::before { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
.continuation-card { position:relative; display:flex; flex-direction:column; min-width:0; padding-top:var(--block-pad); }
.continuation-card .media { margin-bottom:var(--story-media-gap); }
.continuation-card + .continuation-card::before { content:""; position:absolute; top:0; bottom:0; left:calc(var(--half-gap) * -1); border-left:var(--story-separator); }
.continuation-card h3 { max-width:27ch; margin:0 0 var(--story-heading-gap); }
.continuation-card .deck { display:-webkit-box; overflow:hidden; margin:0; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.continuation-card .read-link { align-self:flex-start; margin-top:auto; padding-top:var(--story-read-more-gap); }
.more-from { padding:var(--row-gap) 0; }
@media (max-width:900px) and (min-width:601px) {
  .l2-continuation--feature { grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); }
  .l2-continuation-text--thumb { grid-template-columns:clamp(146px,39%,174px) minmax(0,1fr); }
}
@media (max-width:900px) and (min-width:601px) {
  .l1-quad .story-card:nth-child(3)::before { display:none; }
  .l1-quad .story-card:nth-child(n+3)::after { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
  .l2-strip .story-card:nth-child(3)::before { display:none; }
  .l2-strip .story-card:nth-child(3)::after { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
}
@media (max-width:600px) {
  .l2-continuation { display:block; }
  .l2-continuation-stack { display:block; margin-top:var(--row-gap); }
  .l2-continuation-stack::before { top:calc(var(--row-gap) / -2); bottom:auto; left:0; right:0; border-top:var(--story-separator); border-left:0; }
  .l2-continuation-text + .l2-continuation-text { margin-top:var(--row-gap); }
  .l2-continuation-text--thumb { grid-template-columns:clamp(112px,35%,160px) minmax(0,1fr); }
  .l1-quad .story-card:not(:first-child)::before,.l1-duo .story-card + .story-card::before,.l1-trio .story-card:not(:first-child)::before,.l1-compact-card + .l1-compact-card::before,.l2-strip .story-card + .story-card::before,.continuation-card + .continuation-card::before { display:none; }
  .l1-quad .story-card,.l1-duo .story-card,.l1-trio .story-card { margin-bottom:0; }
  .l1-quad .story-card:not(:first-child),.l1-duo .story-card + .story-card,.l1-trio .story-card:not(:first-child),.l1-compact-card + .l1-compact-card { position:relative; margin-top:var(--row-gap); }
  .l1-quad .story-card:not(:first-child)::after,.l1-duo .story-card + .story-card::after,.l1-trio .story-card:not(:first-child)::after,.l1-compact-card + .l1-compact-card::after { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
  .l2-strip .story-card { margin-bottom:0; }
  .l2-strip .story-card + .story-card { margin-top:var(--row-gap); }
  .l2-strip .story-card + .story-card::after { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
  .l1-compact { display:block; }
  .continuation-row { display:block; }
  .continuation-card + .continuation-card { margin-top:var(--row-gap); }
  .continuation-card + .continuation-card::after { content:""; position:absolute; top:calc(var(--row-gap) / -2); left:0; right:0; border-top:var(--story-separator); }
  .brief-grid::before { display:none; }
}
@media (min-width:901px) {
  .l1-top,.l2-front { gap:var(--half-gap); }
  .briefing,.l2-right { padding-left:var(--half-gap); }
  .l2-left { padding-right:var(--half-gap); }
  .l3-wall .market-board { margin-left:calc(var(--half-gap) * -1); padding-left:var(--half-gap); }
}
/* Shared story presentation. Layout rules above choose placement and frame shapes; this block owns the common rhythm. */
.page-width :is(.l2-text, .l2-lead, .l2-feature, .story-card, .l3-brief-lead) > .media,
.page-width :is(.headline-list, .briefing > ol) > li > .media { margin-bottom:var(--story-media-gap); }
.page-width :is(.l1-lead-copy, .l3-caption) { padding-top:var(--story-media-gap); }
.page-width :is(.kicker,.eyebrow),
.page-width :is(.headline-list, .briefing > ol) > li > span { margin-bottom:var(--story-kicker-gap); }
.page-width :is(.l1-lead, .l2-lead, .l3-lead) h2 { margin-bottom:var(--story-lead-heading-gap); }
.page-width :is(.l2-text, .l2-feature, .story-card, .l3-caption, .l2-continuation-picture, .l2-continuation-text, .continuation-card) h3 { margin-bottom:var(--story-heading-gap); }
.page-width :is(.l1-lead, .l2-lead, .l3-lead) .deck { margin-bottom:0; }
.page-width :is(.headline-list, .briefing > ol) > li .deck,
.page-width .text-brief p:not(.kicker) { margin-top:var(--story-heading-gap); }
.page-width .text-brief h3 { margin-bottom:0; }
.page-width .read-link { margin-top:var(--story-read-more-gap); }
.page-width :is(.headline-list, .briefing > ol) > li { padding:var(--story-stack-space) 0; }
.page-width :is(.headline-list, .briefing > ol) > li.has-thumb { padding-top:0; }
.page-width .text-brief { padding:24px 0; }
/* Stacked text stories get separators only between siblings, never above the first story. */
.l2-text { padding-bottom:var(--story-stack-space); }
.l2-text + .l2-text { margin-top:0; padding-top:var(--story-stack-space); border-top:var(--story-separator); }
/* Rows pin links to their card bottoms; the shared link gap remains their minimum. */
.page-width :is(.l1-quad, .l1-duo, .l1-trio, .l2-strip, .text-brief) .read-link { margin-top:auto; padding-top:var(--story-read-more-gap); }

/* Editorial type scale. Placement changes between layouts; a story's visual role sets its type. */
:root {
  --story-type-lead:clamp(2rem,2.6vw,2.5rem);
  --story-type-section:clamp(1.8rem,2.2vw,2.125rem);
  --story-type-feature:1.4375rem;
  --story-type-standard:1.375rem;
  --story-type-compact:1.3125rem;
  --story-type-body:.9375rem;
  --story-type-lead-body:1.0625rem;
  --story-type-centerpiece-summary:1rem;
  --story-type-label:.6875rem;
  --story-type-action:.6875rem;
  --story-copy-leading:1.45;
  --story-kicker-gap:6px;
  --story-heading-gap:8px;
  --story-lead-heading-gap:10px;
  --story-read-more-gap:12px;
}
.page-width :is(.module-header,.briefing,.market-board) h2 {
  font:600 var(--story-type-section)/1.08 var(--serif);
  letter-spacing:-.03em;
}
.page-width :is(.l1-lead,.l2-lead,.l3-lead) h2 {
  font:600 var(--story-type-lead)/1.06 var(--serif);
  letter-spacing:-.035em;
}
.page-width :is(.story-card,.l2-continuation-text,.l3-caption,.continuation-card) h3 {
  font:600 var(--story-type-standard)/1.12 var(--serif);
  letter-spacing:-.02em;
}
.page-width :is(.l2-feature,.l2-continuation-picture,.l3-brief-lead,.continuation-card--prominent) h3 {
  font:600 var(--story-type-feature)/1.12 var(--serif);
  letter-spacing:-.025em;
}
.page-width :is(.l2-text,.l1-compact-card,.text-brief) h3,
.page-width :is(.headline-list,.briefing > ol) > li {
  font:600 var(--story-type-compact)/1.18 var(--serif);
  letter-spacing:-.015em;
}
.page-width .kicker,
.page-width :is(.headline-list,.briefing > ol) > li > span,
.page-width :is(.module-header,.briefing,.market-board) .eyebrow {
  font:800 var(--story-type-label)/1.25 var(--sans);
  letter-spacing:.06em;
}
.page-width :is(.l2-text,.l2-feature,.story-card,.l1-compact-card,.l3-caption,.l3-brief-lead,.l2-continuation-picture,.l2-continuation-text,.continuation-card) .deck,
.page-width :is(.l1-lead,.l2-lead,.l3-lead) .deck,
.page-width :is(.headline-list,.briefing > ol) > li .deck,
.page-width .text-brief p:not(.kicker) {
  font:400 var(--story-type-body)/var(--story-copy-leading) var(--serif);
}
.page-width :is(.l1-lead,.l2-lead,.l3-lead) .deck { font-size:var(--story-type-lead-body); }
.page-width .l2-lead .lead-excerpt {
  font:400 var(--story-type-centerpiece-summary)/var(--story-copy-leading) var(--serif);
  -webkit-line-clamp:3;
}
.page-width .l2-lead .deck { font-size:var(--story-type-centerpiece-summary); }
.page-width .read-link {
  font:800 var(--story-type-action)/1.25 var(--sans);
  letter-spacing:.04em;
}
.l1-text-card .deck { -webkit-line-clamp:3; }
/* The final Layout 2 text trio is its own full section before More From. */
.page-width > .l1-trio[data-continuation] {
  margin-bottom:0;
  padding-block:var(--row-gap);
  border-bottom:1px solid var(--strong);
}
.page-width > .l1-trio[data-continuation] .deck { -webkit-line-clamp:2; }
.page-width > .l1-trio[data-continuation] h3 {
  display:-webkit-box;
  overflow:hidden;
  -webkit-box-orient:vertical;
  -webkit-line-clamp:2;
}
.page-width > .l1-trio[data-continuation]::after { display:none; }
