@font-face {
  font-family: "DM Sans";
  src: url('/assets/fonts/dm-sans-regular.ttf') format('truetype');
  font-weight: 400;
  font-display: swap;
}
@font-face {
  font-family: "DM Sans";
  src: url('/assets/fonts/dm-sans-bold.ttf') format('truetype');
  font-weight: 700;
  font-display: swap;
}
@font-face {
  font-family: "DM Sans";
  src: url('/assets/fonts/dm-sans-medium.ttf') format('truetype');
  font-weight: 500;
  font-display: swap;
}
@font-face {
  font-family: "DM Sans";
  src: url('/assets/fonts/dm-sans-semibold.ttf') format('truetype');
  font-weight: 600;
  font-display: swap;
}
@font-face {
  font-family: "Source Serif 4";
  src: url('/assets/fonts/source-serif-4.ttf') format('truetype');
  font-weight: 400;
  font-display: swap;
}
:root {
  --font-editorial: "DM Sans", Arial, sans-serif;
  --font-story: "Source Serif 4", Georgia, serif;
  --font-body: "DM Sans", Arial, sans-serif;
  --weight-heading: 700;
  --navy: #071d49;
  --blue: #0057ff;
  --coral: #ff5a4f;
  --soft: #e6ecf5;
  --ink: #172338;
  --muted: #47566b;
  --line: #d8e0eb;
  --paper: #ffffff;
  --surface: #f5f7fa;
  --radius-control: 8px;
  --radius-card: 16px;
  --radius-panel: var(--radius-card);
  --page-width: 1600px;
  --ease: cubic-bezier(.2,.7,.2,1);
  --motion-fast: 180ms;
  --motion-standard: 280ms;
  font-family: var(--font-body);
  color: var(--ink);
  background: var(--paper);
  font-synthesis: none;
}
* { box-sizing: border-box; }
html { scroll-padding-top: 24px; }
.nav-enhanced { --header-clearance:120px; scroll-padding-top:var(--header-clearance); }
body { margin: 0; }
.shell { width:100%; max-width:var(--page-width); margin:auto; padding:0 40px; }
a { color: inherit; text-decoration: none; }
a:hover { color: var(--blue); }
a:focus-visible, summary:focus-visible, [tabindex]:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 5px;
  border-radius: 2px;
}
img { max-width: 100%; height: auto; display: block; }
.icon { display: inline-block; width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; vertical-align: middle; }
/* One surface component for information, forms and supporting content. */
.panel { min-width:0; padding:var(--panel-padding,24px); border:0; border-radius:var(--radius-panel); background:var(--panel-background); }
.panel--muted { --panel-background:var(--surface); }
.panel--soft { --panel-background:var(--soft); }
.panel--plain { --panel-background:#fff; }
.panel--outlined { border:1px solid var(--line); }
.panel-title { font-size:1.375rem; margin:0 0 16px; }
.panel-links > a { display:flex; justify-content:space-between; gap:10px; min-height:48px; align-items:center; font-weight:700; border-top:1px solid #c6d1e2; }
.panel-links .icon { width:18px; height:18px; }
.panel-note { border-top:1px solid #c6d1e2; margin-top:20px; padding-top:10px; }
.panel-note h3 { font-size:1.125rem; }
.panel-note p { font-size:1rem; }
.reading-time, .feature-reading { display: inline-flex; align-items: center; gap: 6px; }
.reading-time .icon, .feature-reading .icon { width: 15px; height: 15px; }
.newsletter-copy h2, .article-toc h2 { display: flex; align-items: center; gap: 10px; }
.newsletter-copy h2 .icon, .article-toc h2 .icon { width: 20px; height: 20px; color: var(--muted); }
.newsletter-copy h2 span { min-width: 0; }
.article-toc a[aria-current="location"] { color: var(--navy); background: var(--surface); font-weight: 500; }
p { line-height: 1.7; }
h1, h2, h3 { color: var(--navy); font-weight: var(--weight-heading); overflow-wrap: anywhere; }
.site-header {
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: 12px 32px;
  padding: 20px 0;
}
.nav-enhanced .header-dock { position:sticky; top:0; z-index:50; height:104px; }
.nav-enhanced .site-header { position:relative; width:100%; height:100%; margin-inline:auto; padding:20px 0 4px; flex-wrap:nowrap; gap:16px; border-radius:0; background:#fff; transform:translateY(0); }
.nav-enhanced .header-dock.is-floating .site-header { width:var(--floating-nav-width,calc(100% - 24px)); height:80px; padding-block:12px; padding-inline:20px; transform:translateY(12px); border-radius:20px; background:rgba(255,255,255,.96); box-shadow:0 8px 28px -12px rgba(7,29,73,.22), 0 1px 4px rgba(7,29,73,.05); outline:1px solid rgba(7,29,73,.07); outline-offset:-1px; backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px); }
.header-dock.is-floating .main-nav .nav-link { padding-inline:10px; }
@media (prefers-reduced-motion:no-preference) {
  .nav-enhanced .site-header { transition:width 480ms var(--ease), height 480ms var(--ease), padding 480ms var(--ease), transform 480ms var(--ease), border-radius 480ms var(--ease), box-shadow 480ms var(--ease), background-color 480ms var(--ease); }
}
.nav-preparing .site-header,
.header-dock.nav-transitioning .site-header { transition: none !important; }
.wordmark, .footer-brand { display: inline-flex; align-items: center; flex: none; max-width: 100%; color: var(--blue); }
.brand-lockup { display: block; width: 220px; height: auto; overflow: visible; }
.brand-letters, .brand-city { fill: var(--logo-blue, #0057ff); }
.brand-dot { fill: var(--logo-coral, #ff5a4f); transform-box: fill-box; transform-origin: center; }
.brand-tower { transform-box: fill-box; transform-origin: center bottom; }
.brand-letter { transform-box: fill-box; transform-origin: center bottom; }
.brand-letter--t { --brand-lift: -10px; --brand-tilt: -1deg; --brand-delay: 0ms; }
.brand-letter--h { --brand-lift: -15px; --brand-tilt: -.6deg; --brand-delay: 30ms; }
.brand-letter--i { --brand-lift: -22px; --brand-tilt: 0deg; --brand-delay: 60ms; }
.brand-letter--n { --brand-lift: -17px; --brand-tilt: .5deg; --brand-delay: 90ms; }
.brand-letter--g { --brand-lift: -12px; --brand-tilt: .8deg; --brand-delay: 120ms; }
.brand-letter--s { --brand-lift: -8px; --brand-tilt: 1deg; --brand-delay: 150ms; }
.brand-city-letter--1 { --city-shift: 0px; }
.brand-city-letter--2 { --city-shift: 2px; }
.brand-city-letter--3 { --city-shift: 4px; }
.brand-city-letter--4 { --city-shift: 6px; }
.brand-city-letter--5 { --city-shift: 8px; }
.brand-city-letter--6 { --city-shift: 10px; }
.brand-city-letter--7 { --city-shift: 12px; }
.wordmark { min-height: 48px; }
.wordmark:hover { color: var(--blue); }
.wordmark .brand-lockup { width: 220px; }
.main-nav { display: flex; flex-wrap: wrap; min-width: 0; max-width: 100%; align-items: center; gap: 12px; font-size: 1rem; font-weight: 400; }
.main-nav ul { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; list-style: none; padding: 0; margin: 0; min-width: 0; }
.main-nav li { min-width: 0; }
.main-nav .nav-city { padding-left: 0; gap: 8px; }
.main-nav .nav-link { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 10px 12px; line-height: 1.4; color: var(--navy); border-radius: var(--radius-control); overflow-wrap: anywhere; }
.main-nav .nav-link:is(:hover,:focus-visible) { color: var(--navy); background: var(--surface); }
.main-nav .nav-link:is(.is-active,.nav-selecting) { color: var(--navy); background: #edf1f6; }
.main-nav.has-pending-selection .nav-link.is-active:not(.nav-selecting) { background:transparent; }
.main-nav .nav-link > span { min-width: 0; }
.nav-icon { width: 20px; height: 20px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.65; stroke-linecap: round; stroke-linejoin: round; }
.nav-icon-detail { transform-box: fill-box; transform-origin: center; }
.nav-icon-fill { opacity:0; }
.nav-icon-cutout { fill:#fff; }
.nav-link:is(.is-active,.nav-selecting) .nav-icon-fill { opacity:1; }
.nav-link:is(.is-active,.nav-selecting) .nav-icon-outline { opacity:0; }
.has-pending-selection .nav-link.is-active:not(.nav-selecting) .nav-icon-fill { opacity:0; }
.has-pending-selection .nav-link.is-active:not(.nav-selecting) .nav-icon-outline { opacity:1; }
@media (prefers-reduced-motion: no-preference) {
  .nav-icon, .nav-icon-detail { transition: transform var(--motion-standard) var(--ease); }
  .nav-icon-fill, .nav-icon-outline { transition:opacity var(--motion-fast) var(--ease); }
  .nav-link:is(:hover,:focus-visible) .nav-icon { transform: translateY(-1px); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--things-to-do .nav-icon-detail { transform: rotate(35deg); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--guides .nav-icon-detail { transform:translateY(-1px); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--food-drink .nav-icon-detail { transform: translateY(-1px) rotate(-7deg); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--neighbourhoods .nav-icon-detail { transform: translateY(-1.5px); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--news { transform: translateY(-1px) rotate(-5deg); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--weather .nav-icon-detail { transform: rotate(30deg); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--road-closures .nav-icon-detail { transform: translateY(-1.5px); }
  .nav-link:is(:hover,:focus-visible) .nav-icon--about .nav-icon-detail { transform: translateY(-1px); }
  .main-nav .nav-link.nav-settling :is(.nav-icon,.nav-icon-detail) { transform:none; transition-delay:0s; }
}
.main-nav .nav-more { display: none; }
.site-header .main-nav { margin-left:auto; }
.search-toggle, .search-close { display:inline-flex; flex:none; align-items:center; justify-content:center; width:44px; height:44px; padding:0; border:0; border-radius:var(--radius-control); background:transparent; color:var(--navy); cursor:pointer; }
.search-toggle:is(:hover,:focus-visible), .search-close:is(:hover,:focus-visible) { color:var(--navy); background:var(--surface); }
.search-toggle .icon { width:21px; height:21px; }
.search-open { overflow:hidden; }
.search-dialog { --search-top:clamp(24px,10vh,100px); position:fixed; inset:0; margin:var(--search-top) auto auto; width:min(700px,calc(100% - 32px)); max-height:calc(100dvh - var(--search-top) - 24px); padding:28px; border:1px solid var(--line); border-radius:20px; box-shadow:0 24px 80px rgba(7,29,73,.18); background:#fff; color:var(--ink); overflow:auto; overscroll-behavior:contain; }
.search-dialog::backdrop { background:rgba(7,29,73,.24); backdrop-filter:blur(5px); }
.search-dialog-heading { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; }
.search-dialog-heading h2 { margin:0; font-size:1.5rem; letter-spacing:-.025em; }
.search-form { margin:0; }
.search-field-label { display:block; margin-bottom:8px; font-size:.875rem; color:var(--muted); }
.search-field { display:flex; gap:12px; align-items:center; min-width:0; border:1px solid var(--line); border-radius:12px; padding:6px 6px 6px 16px; background:#fff; }
.search-field:focus-within { border-color:var(--navy); box-shadow:0 0 0 3px rgba(7,29,73,.06); }
.search-field > .icon { color:var(--muted); }
.search-field input { min-width:0; width:100%; padding:10px 0; border:0; outline:none; font:400 1rem/1.5 var(--font-body); background:transparent; color:var(--navy); }
.search-field input::placeholder { color:var(--muted); opacity:1; }
.search-field input:focus-visible { outline:none; }
.search-field button { display:flex; align-items:center; gap:8px; flex:none; min-height:44px; border:0; border-radius:8px; padding:10px 16px; background:var(--navy); color:#fff; font:500 .9375rem/1.4 var(--font-body); cursor:pointer; }
:is(.search-close,.search-field button):focus-visible { outline:3px solid var(--blue); outline-offset:3px; }
.search-status, .search-page-count { color:var(--muted); font-size:.875rem; margin:24px 0 12px; }
.search-results { padding:0; margin:0; list-style:none; }
.search-result { display:flex; align-items:center; gap:16px; padding:12px; margin-inline:-12px; border-radius:12px; min-height:88px; }
.search-result:is(:hover,:focus-visible) { background:var(--surface); color:var(--navy); }
.search-result-media { display:flex; align-items:center; justify-content:center; flex:none; width:80px; height:64px; background:var(--surface); border-radius:8px; overflow:hidden; }
.search-result-media .card-image { margin:0; width:100%; height:100%; }
.search-result-media img { width:100%; height:100%; object-fit:cover; }
.search-result-media > .icon { width:28px; height:28px; }
.search-result-copy { display:grid; gap:4px; min-width:0; flex:1; }
.search-result-copy .site-tag { margin:0; }
.search-result-copy strong { color:var(--navy); font-size:1.0625rem; line-height:1.4; font-weight:600; }
.search-result-description { display:none; }
.search-result-arrow { width:18px; height:18px; color:var(--muted); }
.search-view-all { display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:44px; margin-top:16px; font-size:.9375rem; color:var(--navy); }
.search-view-all:hover { color:var(--navy); text-decoration:underline; text-underline-offset:4px; }
.search-page { max-width:850px; padding-bottom:40px; }
.search-page .page-intro { max-width:none; }
.search-page .search-result { padding-block:20px; }
.search-page .search-result-media { width:112px; height:84px; }
.search-page .search-result-copy strong { font-size:1.25rem; }
.search-page .search-result-description { display:block; font-size:.9375rem; color:var(--muted); line-height:1.6; }
.search-empty { padding:16px 0 40px; }
.search-empty h2 { font-size:1.375rem; }
.search-empty a { text-decoration:underline; text-underline-offset:4px; }
@media (min-width:80.001rem) and (max-width:90rem) {
  .site-header .wordmark .brand-lockup { width:180px; }
  .site-header .main-nav { font-size:.9375rem; gap:4px; }
  .site-header .main-nav .nav-link { padding-inline:8px; gap:6px; }
}
@media (max-width:560px) {
  .search-dialog { padding:18px; border-radius:16px; }
  .search-dialog-heading { gap:8px; margin-bottom:16px; }
  .search-dialog-heading h2 { font-size:1.25rem; }
  .search-field { gap:8px; padding-left:12px; }
  .search-field > .icon, .search-field button .icon { display:none; }
  .search-field button { padding-inline:12px; }
  .search-result { gap:12px; }
  .search-result-arrow { display:none; }
  .search-result-media { width:64px; height:60px; }
  .search-page .search-result-media { width:80px; height:72px; }
  .search-page .search-result-copy strong { font-size:1.0625rem; }
  .search-page .search-result-description { display:none; }
}
@media (prefers-reduced-motion:no-preference) {
  .search-dialog[open] { animation:search-reveal 220ms var(--ease) both; }
  .search-dialog[open]::backdrop { animation:search-backdrop 220ms var(--ease) both; }
  .search-toggle, .search-close, .search-result { transition:background-color var(--motion-fast) var(--ease); }
  .search-toggle .icon, .search-result-arrow { transition:transform var(--motion-standard) var(--ease); }
  .search-toggle:is(:hover,:focus-visible) .icon { transform:rotate(-8deg) scale(1.06); }
  .search-result:is(:hover,:focus-visible) .search-result-arrow { transform:translateX(3px); }
}
@keyframes search-reveal { from { opacity:0; transform:translateY(-8px); } to { opacity:1; transform:translateY(0); } }
@keyframes search-backdrop { from { opacity:0; } to { opacity:1; } }
.menu-toggle { display: none; align-items: center; justify-content: center; gap: 10px; min-height: 44px; padding: 10px 12px; flex: none; border: 0; border-radius: var(--radius-control); background: var(--surface); color: var(--navy); font: 400 1rem/1.4 var(--font-body); cursor: pointer; }
.menu-toggle:hover { background: #edf1f6; color: var(--navy); }
.menu-toggle:focus-visible { outline: 3px solid var(--blue); outline-offset: 4px; }
.menu-toggle svg { flex: none; fill: none; stroke: currentColor; stroke-width: 1.5; stroke-linecap: round; }
@media (max-width: 80rem) {
  .nav-enhanced { --header-clearance:104px; }
  .nav-enhanced .header-dock { height:88px; }
  .nav-enhanced .header-dock.is-floating .site-header { height:72px; padding-inline:12px; transform:translateY(8px); border-radius:16px; }
  .nav-enhanced .site-header .wordmark { flex:1 1 auto; min-width:0; }
  .nav-enhanced .wordmark .brand-lockup { width:clamp(144px,32vw,180px); max-width:100%; }
  .nav-enhanced .site-header .main-nav { position:absolute; top:calc(100% - 1px); left:0; width:100%; padding:12px 16px 16px; max-height:calc(100dvh - var(--header-clearance) - 24px); overflow-y:auto; overscroll-behavior:contain; background:#fff; border-radius:0 0 16px 16px; box-shadow:0 18px 28px -16px rgba(7,29,73,.2); }
  .nav-enhanced .header-dock .site-header.nav-open { border-radius:16px 16px 0 0; }
  .site-header { gap: 10px 8px; padding: 16px 0; }
  .site-header .wordmark { flex: 1 1 11.25rem; min-width: min(100%,11.25rem); }
  .nav-enhanced .menu-toggle { display: inline-flex; margin-left: auto; }
  .main-nav { width: 100%; align-items: stretch; gap: 0; padding-top: 12px; font-size: 1rem; }
  .nav-enhanced .site-header:not(.nav-open) .main-nav { display: none; }
  .main-nav ul { display: grid; grid-template-columns: minmax(0,1fr); width: 100%; gap: 0; }
  .main-nav .nav-categories { padding: 4px 0 12px; }
  .main-nav .nav-categories .nav-link { font-size: 1.125rem; font-weight: 500; min-height: 52px; }
  .main-nav .nav-city { padding: 4px 0 0; gap: 2px 12px; grid-template-columns: repeat(auto-fit,minmax(min(100%,10rem),1fr)); }
  .main-nav .nav-link { width: 100%; padding: 10px 12px; }
  .main-nav .nav-more { display: block; }
}
/* Headings share the article-title weight; size and spacing establish hierarchy. */
.shell--home .site-footer { border: 0; }
/* One editorial lead, followed by a compact pair of supporting stories. */
.home-cover { display: grid; gap: 28px; margin: 24px 0 40px; }
.home-cover .city-brief { margin: 0; }
.home-feature { min-width: 0; background: var(--blue); border-radius: var(--radius-card); }
.feature-link { display: grid; grid-template-columns: minmax(0,.9fr) minmax(0,1.1fr); min-height: clamp(420px,34vw,500px); border-radius: inherit; overflow: hidden; color: #fff; }
.feature-link:is(:hover,:focus-visible) { color: #fff; }
.feature-media { position: relative; min-width: 0; overflow: hidden; }
.feature-media > figure { position: absolute; inset: 0; }
.feature-media figure { height: 100%; margin: 0; }
.feature-media img { width: 100%; height: 100%; aspect-ratio: auto; object-fit: cover; object-position: center 56%; border-radius: 0; }
.feature-copy { display: flex; flex-direction: column; justify-content: center; position: relative; isolation: isolate; padding: clamp(28px,3.4vw,52px); color: #fff; overflow: hidden; }
.feature-copy::after { content: ''; position: absolute; z-index: -1; right: -48px; bottom: -92px; width: 200px; height: 200px; border: 26px solid rgba(255,255,255,.1); border-radius: 50% 0 0 0; pointer-events: none; }
.home-feature h1 { font: var(--weight-heading) clamp(2.25rem,3.6vw,3.5rem)/1.08 var(--font-body); letter-spacing: -.035em; color: #fff; margin: 24px 0 20px; max-width: 560px; text-wrap: balance; }
.feature-description { font-size: 1.0625rem; line-height: 1.6; color: #fff; margin: 0; max-width: 420px; }
.feature-bottom { display: flex; flex-direction: column; align-items: flex-start; gap: 20px; margin-top: 28px; }
.feature-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 20px; font-size: .8125rem; line-height: 1.5; color: #fff; }
.feature-cta { display: inline-flex; align-items: center; gap: 12px; min-height: 44px; padding: 8px 0; color: #fff; font-size: .9375rem; font-weight: 500; line-height: 1.5; }
.feature-link:is(:hover,:focus-visible) .feature-cta { text-decoration: underline; text-underline-offset: 5px; }
.feature-cta > .icon { width: 20px; height: 20px; }
.feature-link:focus-visible { outline-color: var(--navy); outline-offset: 5px; }
.home-picks { display: grid; grid-template-columns: repeat(3,minmax(0,26rem)); justify-content: center; gap: clamp(20px,2.5vw,40px); min-width: 0; }
.home-story { min-width: 0; }
.home-story-link { display:block; height:100%; border-radius:var(--radius-control); }
.home-story-link:is(:hover,:focus-visible) { color:inherit; }
.home-story-link:is(:hover,:focus-visible) h3 { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:4px; }
.home-story-photo { display: block; border-radius: var(--radius-control); overflow: hidden; }
.home-story-photo img { width: 100%; aspect-ratio: 1.95; object-fit: cover; }
.home-story-copy { padding-top: 14px; }
.home-story :is(h2,h3) { font: var(--weight-heading) 1.5625rem/1.25 var(--font-body); letter-spacing: -.025em; margin: 0 0 10px; text-wrap: pretty; }
.home-story :is(h2,h3) a:hover { color: inherit; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.home-story p { color: var(--muted); font-size: 1rem; line-height: 1.6; margin: 0 0 12px; }
.site-tag { max-width: 100%; display: inline-flex; align-items: center; align-self: flex-start; gap: 6px; color: var(--navy); font: 500 .875rem/1.5 var(--font-body); letter-spacing: normal; text-transform: none; }
.site-tag .icon { width: 16px; height: 16px; color: var(--muted); }
.site-tag > span:last-child { min-width: 0; overflow-wrap: anywhere; }
.site-tag-marker { width: 6px; height: 6px; flex: none; border-radius: 50%; background: var(--coral); }
.feature-copy .site-tag { color: #fff; }
.home-pick-link { display: block; height: 100%; border-radius: var(--radius-control); }
.home-pick-link:is(:hover,:focus-visible) { color: inherit; }
.home-pick-link:is(:hover,:focus-visible) h2 { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.home-story--pick .home-story-copy { padding-top: 0; }
.home-story--pick .site-tag { margin-bottom: 8px; }
.home-story--pick h2 { font-size: 1.375rem; margin-bottom: 8px; max-width: 28ch; }
.newsletter { grid-column: 1 / -1; margin-top: 4px; --panel-padding:22px 24px; }
.newsletter-copy h2 { font: var(--weight-heading) 1.375rem/1.35 var(--font-body); letter-spacing: -.02em; margin: 0; }
.newsletter-copy p { margin: 6px 0 16px; color: var(--muted); font-size: 1rem; line-height: 1.5; }
.newsletter-form { position: relative; }
.newsletter-form > label { display: block; font-size: .875rem; line-height: 1.5; font-weight: 500; color: var(--navy); margin-bottom: 6px; }
.newsletter-fields { display: flex; gap: 8px; }
.newsletter-fields input { flex: 1; width: 100%; min-width: 0; min-height: 48px; padding: 12px 14px; border: 1px solid #8996a9; border-radius: var(--radius-control); background: #fff; color: var(--navy); font: 400 1rem/1.4 var(--font-body); }
.newsletter-fields input::placeholder { color: #647184; opacity: 1; }
.newsletter-fields button { display: inline-flex; align-items: center; justify-content: center; gap: 14px; flex: none; min-height: 48px; padding: 12px 18px; border: 1px solid var(--navy); border-radius: var(--radius-control); background: var(--navy); color: #fff; cursor: pointer; font: 500 1rem/1.4 var(--font-body); }
.newsletter-fields button:hover { background: #123366; }
.newsletter-fields button:disabled { opacity: .7; cursor: wait; }
.newsletter-consent { color: var(--muted); margin: 9px 0 0; font-size: .8125rem; line-height: 1.5; }
.newsletter-status { margin: 12px 0 0; color: var(--navy); font-size: .9375rem; line-height: 1.5; font-weight: 500; }
.newsletter-status:empty { display: none; }
.newsletter-status[data-state="error"] { color: #992e28; }
.newsletter-toast { position: fixed; z-index: 1000; left: 50%; bottom: 24px; width: max-content; max-width: min(520px, calc(100vw - 32px)); padding: 14px 22px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; background: var(--navy); color: #fff; box-shadow: 0 14px 38px rgba(7,29,73,.24); font-size: .9375rem; line-height: 1.4; font-weight: 500; text-align: center; opacity: 0; transform: translate(-50%, 14px); pointer-events: none; }
.newsletter-toast--visible { opacity: 1; transform: translate(-50%, 0); transition: opacity 220ms var(--ease), transform 220ms var(--ease); }
@media (prefers-reduced-motion: reduce) {
  .newsletter-toast--visible { transition: none; }
}
.newsletter-fields input[aria-invalid="true"] { border-color: #992e28; }
.newsletter-trap { position: absolute; width: 1px; height: 1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }
.newsletter--footer { display: grid; grid-template-columns: minmax(0,1fr) minmax(0,1.35fr); grid-template-areas: "brand brand" "copy form"; align-items: center; gap: 32px 36px; --panel-padding: 0 48px 42px; margin: 24px 0 12px; overflow: hidden; }
.newsletter--footer .newsletter-copy h2 { font-size: clamp(1.7rem,2.3vw,2.35rem); line-height: 1.18; }
.newsletter--footer .newsletter-copy h2 .icon { width: 24px; height: 24px; color: var(--blue); }
.newsletter--footer .newsletter-copy p { margin: 12px 0 0; font-size: 1.08rem; line-height: 1.55; }
.newsletter--footer .newsletter-brand { grid-area: brand; min-height: 0; width: calc(100% + 96px); margin: 0 -48px; }
.newsletter--footer .newsletter-brand-image { width: 100%; max-width: none; aspect-ratio: 2032 / 774; object-fit: cover; object-position: center; border-radius: var(--radius-panel) var(--radius-panel) 0 0; }
.newsletter--footer .newsletter-copy { grid-area: copy; }
.newsletter--footer .newsletter-form { grid-area: form; width: 100%; max-width: none; justify-self: stretch; }
.newsletter--footer .newsletter-form > label { font-size: .95rem; margin-bottom: 8px; }
.newsletter--footer .newsletter-fields { display: grid; grid-template-columns: 1fr; gap: 12px; }
.newsletter--footer .newsletter-fields :is(input,button) { min-width: 0; width: 100%; min-height: 56px; font-size: 1.05rem; }
.newsletter--footer .newsletter-consent { margin-top: 8px; }
.newsletter-brand { display: block; min-width: 0; margin: 0 0 24px; }
.newsletter-brand-image { display: block; width: 100%; max-width: 420px; height: auto; margin: 0 auto; border-radius: 18px; }
.newsletter-brand--banner { width: 100%; }
.newsletter-brand--banner .newsletter-brand-image { width: 100%; max-width: none; aspect-ratio: 2032 / 774; object-fit: cover; object-position: center; }
.newsletter--sidebar .newsletter-brand { min-height: 72px; margin-bottom: 20px; }
.article-newsletter-open { overflow: hidden; }
.article-newsletter-dialog { width: min(560px, calc(100% - 32px)); max-height: min(720px, calc(100dvh - 32px)); margin: auto; padding: 0; border: 1px solid rgba(7,29,73,.1); border-radius: 24px; background: #fff; color: var(--navy); box-shadow: 0 28px 90px rgba(7,29,73,.24); overflow: auto; overscroll-behavior: contain; }
.article-newsletter-dialog::backdrop { background: rgba(7,29,73,.42); backdrop-filter: blur(5px); }
.article-newsletter-dialog .newsletter { --panel-padding: 26px 36px 36px; --panel-background: #fff; margin: 0; }
.article-newsletter-dialog .newsletter-brand { margin: 0 0 28px; }
.article-newsletter-dialog .newsletter-brand--banner { margin: -26px -36px 28px; width: calc(100% + 72px); }
.article-newsletter-dialog .newsletter-brand--banner .newsletter-brand-image { width: 100%; max-width: none; border-radius: 0; }
.article-newsletter-close { position: absolute; top: 14px; right: 14px; display: grid; place-items: center; width: 40px; height: 40px; border: 0; border-radius: var(--radius-control); background: transparent; color: var(--muted); cursor: pointer; }
.article-newsletter-close:is(:hover,:focus-visible) { background: var(--surface); color: var(--navy); }
.article-newsletter-dialog .newsletter-copy h2 { font-size: clamp(1.7rem, 4vw, 2.15rem); line-height: 1.16; letter-spacing: -.035em; }
.article-newsletter-dialog .newsletter-copy h2 .icon { width: 22px; height: 22px; color: var(--blue); }
.article-newsletter-dialog .newsletter-copy p { margin: 12px 0 24px; font-size: 1rem; line-height: 1.6; }
.article-newsletter-dialog .newsletter-fields { flex-direction: column; gap: 12px; }
.article-newsletter-dialog .newsletter-fields :is(input,button) { width: 100%; }
.article-newsletter-dialog .newsletter-fields button { min-height: 52px; }
.article-newsletter-dialog .newsletter-consent { margin-top: 14px; }
@media (prefers-reduced-motion:no-preference) {
  .article-newsletter-dialog:modal { animation: search-reveal 260ms var(--ease) both; }
  .article-newsletter-dialog:modal::backdrop { animation: search-backdrop 260ms var(--ease) both; }
}
@media (max-width:560px) {
  .article-newsletter-dialog { width: min(520px, calc(100% - 20px)); border-radius: 20px; }
  .article-newsletter-dialog .newsletter { --panel-padding: 20px 24px 28px; }
  .article-newsletter-dialog .newsletter-brand { margin-bottom: 22px; }
  .article-newsletter-dialog .newsletter-brand--banner { margin: -20px -24px 22px; width: calc(100% + 48px); }
}


.group-heading { display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px 24px; border-top: 0; padding-top: 16px; margin-bottom: 20px; }
.group-heading h2 { font: var(--weight-heading) 1.625rem/1.3 var(--font-editorial); letter-spacing: -.025em; margin: 0; }
.group-heading > a { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-size: 1rem; font-weight: 500; color: var(--blue); }
.group-heading > a:hover { text-decoration: underline; text-underline-offset: 4px; }
.post-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 36px 32px; }
.article-card { min-width: 0; display: flex; }
.article-card-link { display: flex; flex-direction: column; flex: 1; min-width: 0; width: 100%; border-radius: var(--radius-control); }
.article-card-link:is(:hover,:focus-visible) { color: inherit; }
.article-card-link:is(:hover,:focus-visible) :is(h2,h3) { text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.article-card-link .card-body { display: flex; flex-direction: column; flex: 1; }
.article-card-link .reading-time { margin-top: auto; }
.card-media { overflow: hidden; border-radius: var(--radius-control); }
.article-card.has-image { display: flex; flex-direction: column; border: 0; border-radius: 0; background: #fff; }
.article-card.has-image .card-body { display: flex; flex-direction: column; flex: 1; padding: 20px 0 8px; }
.article-card.has-image .reading-time { margin-top: auto; }
.card-image { margin: 0; }
.card-image > img { width: 100%; aspect-ratio: 1.85; object-fit: cover; border-radius: 0; }
.card-image--swap { position:relative; isolation:isolate; }
.card-image > img.card-image-preview { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:0; z-index:1; pointer-events:none; }
:is(.home-story,.home-feature,.article-card,.section-feature):has(:focus-visible) .is-preview-ready > .card-image-preview { opacity:1; }
@media (hover:hover) and (pointer:fine) {
  :is(.home-story,.home-feature,.article-card,.section-feature):hover .is-preview-ready > .card-image-preview { opacity:1; }
}
.image-link { display: block; overflow: hidden; }
.card-body { padding-top: 16px; }
.card-body :is(h2,h3) { font: var(--weight-heading) 1.625rem/1.3 var(--font-editorial); letter-spacing: -.025em; margin: 0 0 12px; }
.card-body :is(h2,h3), .home-story :is(h2,h3) { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-clamp:2; overflow:hidden; }
.card-body p, .home-story p { display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:3; line-clamp:3; overflow:hidden; }
.card-body .site-tag { margin-bottom: 10px; }
.card-body :is(h2,h3) a:hover { color: var(--navy); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; }
.card-body p { font-size: 1.0625rem; color: var(--muted); margin: 0 0 15px; line-height: 1.65; max-width: 540px; }
.reading-time { font-size: .875rem; color: var(--muted); }
.breadcrumbs { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; font-size: .875rem; line-height: 1.6; color: var(--muted); padding: 20px 0; }
.breadcrumb-item { display: inline-flex; align-items: center; gap: 7px; min-width: 0; min-height: 32px; }
.breadcrumbs a { text-decoration: none; }
.breadcrumbs a .breadcrumb-label { text-decoration: underline; text-underline-offset: 3px; }
.breadcrumb-icon { width: 16px; height: 16px; }
.breadcrumb-current { max-width: 680px; }
.breadcrumb-label { min-width: 0; overflow-wrap: anywhere; }
.page-intro { max-width: 960px; padding: 18px 0 24px; }
.page-intro h1, .simple-page h1 { font: var(--weight-heading) clamp(2.75rem,5.2vw,4.25rem)/1.1 var(--font-editorial); letter-spacing: -.025em; margin: 14px 0 22px; }
.page-intro p { font-size: 1.1875rem; color: var(--muted); max-width: 760px; line-height: 1.7; }
.hub-grid { grid-template-columns: repeat(3,minmax(0,1fr)); padding: 16px 0 64px; }

/* Section covers share the homepage's colour, arc and image treatment. */
.section-hero { --panel-padding:0; display:grid; grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr); min-height:390px; margin:8px 0 36px; overflow:hidden; }
.section-hero-intro { position:relative; isolation:isolate; display:flex; flex-direction:column; justify-content:center; align-items:flex-start; overflow:hidden; padding:40px; background:var(--blue); color:#fff; }
.section-hero-intro::after { content:""; position:absolute; z-index:-1; right:-50px; bottom:-90px; width:220px; height:220px; border:26px solid rgb(255 255 255 / .1); border-radius:50% 0 0 0; pointer-events:none; }
.section-hero-intro > .site-tag, .section-hero-intro > .site-tag .icon { color:#fff; }
.section-hero h1 { margin:24px 0 18px; color:#fff; font:var(--weight-heading) clamp(2.125rem,3.8vw,3rem)/1.08 var(--font-editorial); letter-spacing:-.035em; text-wrap:balance; }
.section-hero-intro > p { max-width:390px; margin:0; font-size:1.0625rem; line-height:1.65; }
.section-hero-action { display:inline-flex; align-items:center; gap:12px; min-height:44px; margin-top:24px; color:#fff; font-size:.9375rem; font-weight:500; }
.section-hero-action:is(:hover,:focus-visible) { color:#fff; text-decoration:underline; text-underline-offset:5px; }
.section-hero-action:focus-visible { outline-color:#fff; }
.section-feature { min-width:0; display:grid; }
.section-feature-link { position:relative; display:grid; grid-template-rows:minmax(220px,1fr) auto; min-width:0; color:var(--navy); background:var(--surface); }
.section-feature-link:is(:hover,:focus-visible) { color:var(--navy); }
.section-feature-link:focus-visible { outline:3px solid var(--navy); outline-offset:-7px; }
.section-feature-media { position:relative; min-height:220px; overflow:hidden; background:var(--surface); }
.section-feature-media .card-image { position:absolute; inset:0; margin:0; height:100%; }
.section-feature-media img { width:100%; height:100%; object-fit:cover; }
.section-feature-copy { padding:24px 32px; }
.section-feature-copy .site-tag, .section-feature-copy .reading-time { color:inherit; }
.section-feature-copy h2 { max-width:540px; margin:12px 0; font:var(--weight-heading) clamp(1.625rem,2.6vw,2rem)/1.18 var(--font-editorial); letter-spacing:-.025em; color:inherit; text-wrap:balance; }
.section-feature-bottom { display:flex; align-items:center; justify-content:space-between; gap:12px; flex-wrap:wrap; }
.section-feature-bottom .reading-time { margin:0; }
.section-feature-cta { display:inline-flex; align-items:center; gap:12px; min-height:44px; font-size:.9375rem; font-weight:500; }
.section-feature-link:is(:hover,:focus-visible) .section-feature-cta { text-decoration:underline; text-underline-offset:5px; }
.section-feature--text { background:var(--surface); }
.section-feature--text .section-feature-link { display:flex; align-items:center; }
.section-feature--text .section-feature-copy { padding:40px; }
.section-feature-date { margin:0 0 20px; color:var(--muted); font-size:.875rem; }
.section-hero--solo { grid-template-columns:1fr; min-height:280px; }
.section-hero--solo h1 { max-width:640px; }
.section-weather { padding:32px 40px; align-self:center; }
.section-weather h2 { margin:16px 0; font-size:1.375rem; line-height:1.3; }
.section-weather-reading { display:flex; align-items:center; gap:24px; }
.section-weather-reading .temperature { font-size:4.75rem; line-height:1.1; flex-shrink:0; }
.section-weather-reading .condition { font-size:1.125rem; line-height:1.4; margin:0; }
.section-weather .weather-metrics { margin:20px 0; }
.section-weather .data-note { margin:16px 0 0; }
.section-weather .text-link { display:inline-flex; align-items:center; min-height:44px; font-size:.9375rem; }
.weather-location-note { max-width:900px; color:var(--muted); font-size:1rem; margin:0 0 12px; }
.hub-guide-count { font-size:.875rem; color:var(--muted); }
.hub-guides .group-heading { margin-bottom:8px; }
.hub-guides .hub-grid { padding-top:16px; }
.guide-returning { margin:12px 0 0; font-size:.8125rem; color:var(--muted); line-height:1.5; }
/* Guide access lives on the article; the library remains open to browse. */
.guide-locked-preview { margin:36px 0; }
.guide-locked-preview .post-prose { margin-inline:0; }
.guide-access-prompt { --panel-padding:28px; max-width:800px; margin-top:28px; }
.guide-access-prompt > .icon { color:var(--blue); width:24px; height:24px; }
.guide-access-prompt h2 { margin:16px 0 10px; font-size:1.5rem; letter-spacing:-.025em; }
.guide-access-prompt p { color:var(--muted); margin:0 0 20px; }
.guide-unlock-button { display:inline-flex; align-items:center; justify-content:center; gap:14px; min-height:48px; padding:12px 18px; border:0; border-radius:var(--radius-control); background:var(--navy); color:white; cursor:pointer; font:500 1rem/1.4 var(--font-body); }
.guide-unlock-button:hover { background:#123366; }
.guide-access-prompt > a:not(.guide-unlock-button) { display:inline-flex; align-items:center; min-height:44px; padding:8px 16px; color:var(--navy); font-size:.9375rem; text-decoration:underline; text-underline-offset:4px; }
.guide-gate-open { overflow:hidden; }
.guide-gate { position:relative; width:min(520px,calc(100% - 32px)); max-height:calc(100dvh - 48px); margin:24px auto; padding:36px; border:1px solid var(--line); border-radius:var(--radius-panel); background:white; color:var(--navy); box-shadow:0 24px 80px rgba(7,29,73,.18); overflow:auto; overscroll-behavior:contain; }
.nav-enhanced .guide-gate { position:fixed; inset:0; margin:auto; }
.guide-gate::backdrop { background:rgba(7,29,73,.36); backdrop-filter:blur(3px); }
.guide-gate-close { display:none; }
.nav-enhanced .guide-gate-close { position:absolute; top:12px; right:12px; display:flex; align-items:center; justify-content:center; width:40px; height:40px; border:0; border-radius:var(--radius-control); background:transparent; color:var(--muted); cursor:pointer; }
.guide-gate-close:is(:hover,:focus-visible) { background:var(--surface); color:var(--navy); }
.guide-gate-context { margin:0 28px 26px 0; color:var(--muted); font-size:.8125rem; line-height:1.6; }
.guide-gate-context strong { display:block; margin-top:4px; color:var(--navy); font-size:.9375rem; font-weight:500; }
.guide-gate .newsletter { --panel-padding:0; --panel-background:white; margin:0; }
.guide-gate .newsletter-copy h2 { font-size:1.75rem; line-height:1.2; letter-spacing:-.025em; }
.guide-gate .newsletter-copy h2 .icon { color:var(--blue); }
.guide-gate .newsletter-copy h2:focus { outline:none; }
.guide-gate .newsletter-copy p { margin:16px 0 24px; font-size:1rem; line-height:1.65; }
.guide-gate .newsletter-fields { flex-direction:column; gap:12px; }
.guide-gate .newsletter-consent { margin-top:14px; }
.guide-gate .guide-returning { margin-top:14px; }
@media (max-width:560px) {
  .guide-gate { padding:28px 24px; max-height:calc(100dvh - 32px); }
  .guide-gate .newsletter-copy h2 { font-size:1.5rem; }
  .guide-access-prompt { --panel-padding:24px; }
}
@media (prefers-reduced-motion:no-preference) {
  .guide-gate:modal { animation:search-reveal 220ms var(--ease) both; }
  .guide-gate:modal::backdrop { animation:search-backdrop 220ms var(--ease) both; }
}
.guides-welcome { padding:40px; align-self:center; }
.guides-welcome h2 { font-size:2rem; letter-spacing:-.025em; line-height:1.2; margin:20px 0 16px; }
.guides-welcome p { color:var(--muted); margin:0 0 20px; }
.guides-welcome .text-link { display:inline-flex; align-items:center; gap:12px; min-height:44px; }
.guide-filters { display:flex; flex-wrap:wrap; gap:8px; margin:20px 0 12px; }
.guide-filters a { display:inline-flex; gap:8px; align-items:center; min-height:44px; padding:10px 14px; border-radius:var(--radius-control); color:var(--navy); font-size:.9375rem; }
.guide-filters a > .icon { width:18px; height:18px; }
.guide-filters a > span { color:var(--muted); font-size:.8125rem; }
.guide-filters a:is(:hover,:focus-visible,[aria-current]) { background:var(--surface); color:var(--navy); }
.guide-filters a[aria-current] { font-weight:500; }
@media (max-width:900px) {
  .guides-welcome { padding:28px; }
}
@media (max-width:680px) {
  .guide-filters { gap:4px; }
  .guide-filters a { padding:10px; font-size:.875rem; }
}
@media (prefers-reduced-motion:no-preference) {
  :is(.section-feature-cta,.section-hero-action) > .icon--arrow { transition:transform var(--motion-standard) var(--ease); }
  .section-feature-link:is(:hover,:focus-visible) .section-feature-cta > .icon--arrow,
  .section-hero-action:is(:hover,:focus-visible) > .icon--arrow { transform:translateX(4px); }
}
@media (max-width:900px) {
  .section-hero { min-height:370px; }
  .section-hero-intro, .section-feature-copy, .section-feature--text .section-feature-copy, .section-weather { padding:28px; }
  .section-weather-reading { gap:16px; flex-wrap:wrap; }
}
@media (max-width:680px) {
  .section-hero { grid-template-columns:1fr; min-height:0; margin:4px 0 28px; }
  .section-hero h1 { max-width:440px; margin:20px 0 14px; font-size:2.125rem; }
  .section-hero-intro > p { max-width:440px; font-size:1rem; }
  .section-hero-action { margin-top:14px; }
  .section-feature-link { min-height:290px; }
  .section-feature-copy h2 { font-size:1.625rem; max-width:460px; }
  .section-feature--text .section-feature-link { min-height:260px; }
  .section-weather { background:var(--surface); }
}
@media (max-width:380px) {
  .section-hero-intro, .section-feature-copy, .section-feature--text .section-feature-copy, .section-weather { padding:24px; }
  .section-hero h1 { font-size:2rem; }
}
.post { --post-wide: 100%; --post-reading: 800px; margin: 0; }
.post-header { max-width: var(--post-wide); margin-inline: 0; padding: 28px 0 30px; }
.post-header h1 { font: var(--weight-heading) clamp(2.625rem,4.8vw,3.75rem)/1.12 var(--font-editorial); letter-spacing: -.025em; margin: 0 0 24px; text-wrap: balance; }
.post-dek { font-size: 1.25rem; color: var(--muted); line-height: 1.65; max-width: var(--post-wide); margin: 0; }
.byline { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 24px; font-size: .9375rem; line-height: 1.6; color: var(--muted); border-top: 1px solid var(--line); padding-top: 16px; margin-top: 24px; }
.byline > a { display: inline-flex; align-items: center; min-height: 36px; color: var(--navy); font-weight: 500; text-decoration: underline; text-underline-offset: 3px; }
.article-image { margin: 0 auto 28px; max-width: 1120px; }
.article-image > img { width: 100%; max-height: 480px; object-fit: cover; border-radius: var(--radius-card); }
.article-image > figcaption { font-size: .875rem; line-height: 1.65; color: var(--muted); margin-top: 12px; }
.article-image > figcaption a { text-decoration: underline; text-underline-offset: 3px; }
.post > .article-image { max-width: var(--post-wide); margin-inline: 0; }
.post > .article-image > img { aspect-ratio: 16 / 9; max-height: none; }
.post > .quick-facts { max-width: var(--post-wide); margin-inline: 0; }
.post-prose .inline-image { margin: 32px 0 4px; }
.post-prose .inline-image > img { width: 100%; aspect-ratio: auto; height: auto; max-height: none; object-fit: contain; }
.post-prose .inline-image--before { margin: 0 0 28px; }
.quick-facts { --panel-padding: 28px 32px 30px; margin: 28px 0 40px; }
.quick-facts-heading { max-width: 760px; padding-bottom: 20px; border-bottom: 1px solid var(--line); }
.quick-facts-eyebrow { margin: 0 0 5px; color: var(--blue); font-size: .75rem; font-weight: 700; letter-spacing: .12em; line-height: 1.4; text-transform: uppercase; }
.quick-facts-heading h2 { margin: 0; color: var(--navy); font-size: 1.5rem; line-height: 1.25; letter-spacing: -.02em; }
.quick-facts-heading > p:last-child { max-width: 680px; margin: 8px 0 0; color: var(--muted); font-size: 1rem; line-height: 1.55; }
.quick-facts-list { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px 28px; margin: 0; padding-top: 22px; }
.quick-facts-list > div { min-width: 0; }
.quick-facts dt { font-size: .8125rem; font-weight: 700; line-height: 1.45; letter-spacing: .02em; color: var(--navy); margin-bottom: 6px; }
.quick-facts dd { font-size: 1.0625rem; line-height: 1.55; margin: 0; color: var(--ink); }
.post-prose { max-width: 720px; margin: auto; font-size: 1.1875rem; line-height: 1.8; }
.post-layout { max-width:1120px; }
.post-layout > .post-prose { width: 100%; min-width: 0; max-width: var(--post-reading); margin-inline: 0; }
.post-sidebar { min-width: 0; max-width: var(--post-reading); margin: 36px 0; }
.post-sidebar .newsletter { margin: 0; }
.newsletter--sidebar { --panel-padding:28px 24px; display:flex; flex-direction:column; gap:24px; }
.newsletter--sidebar .newsletter-copy h2 { flex-direction:column; align-items:flex-start; gap:14px; font-size:1.375rem; line-height:1.35; }
.newsletter--sidebar .newsletter-copy h2 span { text-wrap:balance; }
.newsletter--sidebar .newsletter-copy h2 .icon { color:var(--blue); }
.newsletter--sidebar .newsletter-copy p { margin:12px 0 0; font-size:.9375rem; line-height:1.6; text-wrap:balance; }
.newsletter--sidebar .newsletter-form > label { margin-bottom:8px; }
.newsletter--sidebar .newsletter-fields { flex-direction:column; gap:12px; }
.newsletter--sidebar .newsletter-fields :is(input,button) { width:100%; }
.newsletter--sidebar .newsletter-fields button { gap:10px; }
.newsletter--sidebar .newsletter-fields button .icon { width:18px; height:18px; }
.newsletter--sidebar .newsletter-consent { margin-top:16px; line-height:1.6; }
.article-toc { display: none; }
@media (min-width: 980px) {
  .post-layout { display: grid; grid-template-columns: minmax(0,1fr) 17rem; gap: 32px; }
  .post-sidebar { margin: 0; }
  .post-layout .contents { display: none; }
  .article-toc { --toc-top: calc(var(--header-clearance,24px) + 24px); display: flex; flex-direction: column; justify-content: safe center; position: sticky; top: var(--toc-top); height: calc(100dvh - var(--toc-top) - 24px); overflow-y: auto; overscroll-behavior: contain; margin-top: 28px; padding: 8px; scrollbar-width: thin; }
  .article-toc > * { flex: none; }
  .article-toc h2 { margin: 0 0 12px; font: var(--weight-heading) 1.125rem/1.4 var(--font-body); letter-spacing: -.015em; }
  .article-toc ol { list-style: none; margin: 0; padding: 0; }
  .article-toc li + li { margin-top: 4px; }
  .article-toc a { display: block; padding: 9px 10px; border-radius: var(--radius-control); font-size: .9375rem; line-height: 1.45; color: var(--muted); }
  .article-toc a:is(:hover,:focus-visible) { color: var(--navy); background: var(--surface); }
}
.post-prose p { line-height: 1.8; margin: 0 0 24px; }
.post-prose a { color: var(--blue); text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 4px; overflow-wrap: anywhere; }
.post-prose a:hover { text-decoration-thickness: 2px; }
.post-prose h2 { font: var(--weight-heading) 2.125rem/1.25 var(--font-editorial); letter-spacing: -.02em; margin: 0 0 20px; }
.post-prose h3 { font-size: 1.25rem; line-height: 1.45; margin: 28px 0 12px; }
.post-prose section { margin: 44px 0; scroll-margin-top: 24px; }
.post-prose li { padding-left: 3px; margin-bottom: 12px; }
.post-prose ul, .post-prose ol { padding-left: 26px; margin: 0 0 26px; }
.post-prose strong { font-weight: 700; }
.post-answer { margin-bottom: 30px; }
.post-answer > p:first-child { font-size: 1.25rem; line-height: 1.75; color: var(--navy); }
.contents { border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); margin: 30px 0 40px; }
.contents summary, .faq summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 20px; cursor: pointer; font-size: 1.125rem; font-weight: 500; line-height: 1.55; color: var(--navy); min-height: 56px; padding: 18px 0; }
.contents summary:hover, .faq summary:hover { color: var(--navy); }
.contents summary::-webkit-details-marker, .faq summary::-webkit-details-marker { display: none; }
.contents summary > .icon, .faq summary > .icon { width: 20px; height: 20px; color: var(--muted); }
details[open] > summary > .icon { transform: rotate(45deg); }
.contents ol { padding: 0 0 12px 26px; font-size: 1.0625rem; }
.contents li { margin-bottom: 6px; }
.contents a { display: inline-block; padding: 5px 0; line-height: 1.6; }
.faq details { border-bottom: 1px solid var(--line); }
.faq details p { font-size: 1.125rem; padding-bottom: 5px; }
.table-scroll { max-width: 100%; overflow-x: auto; margin: 26px 0; outline-offset: 4px; }
.candidate-directory { margin:24px 0; padding:18px 22px; border:1px solid var(--line); border-radius:var(--radius-panel); }
.candidate-directory summary { cursor:pointer; font-weight:600; line-height:1.5; }
.candidate-directory summary:focus-visible { outline:2px solid var(--blue); outline-offset:5px; }
.candidate-directory .candidate-names { columns:2; column-gap:32px; margin:20px 0 0; padding-left:20px; font-size:1rem; line-height:1.6; }
.candidate-names li { break-inside:avoid; margin-bottom:6px; }
.news-explainers { margin:48px 0 64px; }
.news-explainer-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
@media(max-width:560px) {
  .candidate-directory .candidate-names { columns:1; }
  .news-explainer-grid { grid-template-columns:1fr; }
  .news-explainers { margin:32px 0 48px; }
}
.post-prose table { width: 100%; border-collapse: collapse; font-size: 1rem; line-height: 1.65; min-width: 560px; }
.post-prose caption { text-align: left; color: var(--navy); font-weight: 700; padding: 0 0 14px; }
.post-prose th { text-align: left; background: #f0f4fb; font-weight: 700; color: var(--navy); }
.post-prose th, .post-prose td { padding: 14px 16px; border: 1px solid var(--line); vertical-align: top; }
.post-prose table p { font-size: inherit; margin: 0; }
.source-notes { --panel-padding:26px; }
.source-notes h2 { font-family: var(--font-body); font-weight: var(--weight-heading); font-size: 1.25rem; line-height: 1.45; letter-spacing: 0; }
.source-notes p, .source-notes li { font-size: 1rem; line-height: 1.75; }
.source-notes ul { margin-bottom: 0; }
.related { padding: 24px 0 56px; }
.related-grid { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 28px; }
.related-grid .card-body :is(h2,h3) { font-size: 1.5rem; line-height: 1.3; }
.related-grid .card-body p { font-size: 1rem; }
.simple-page { max-width: 950px; margin: 28px auto 64px; }
.simple-page > .post-prose { margin: 36px 0 0; }
.simple-page .post-prose > h2 { margin-top: 38px; }
.standfirst { font-size: 1.25rem; color: var(--muted); line-height: 1.7; }
.back-link { display: inline-flex; align-items: center; min-height: 48px; color: var(--blue); font-size: 1.0625rem; font-weight: 700; text-decoration: underline; margin: 12px 0 28px; }
.author-note { max-width: 780px; margin-bottom: 42px; font-size: 1.125rem; color: var(--muted); }
.author-note a { color: var(--blue); text-decoration: underline; text-underline-offset: 3px; }
.site-footer { border-top: 0; margin-top: 28px; }
.footer-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 24px; padding: 28px 0; }
.footer-city { width: 170px; height: auto; flex: none; mix-blend-mode: multiply; }
.footer-brand .brand-lockup { width: 188px; }
.footer-top nav { display: flex; gap: 16px 24px; flex-wrap: wrap; font-size: 1rem; color: var(--muted); }
.footer-top nav a { display: inline-flex; align-items: center; min-height: 44px; }
.footer-top nav a:hover { text-decoration: underline; text-underline-offset: 4px; }
.footer-bottom { display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px 20px; padding: 0 0 24px; font-size: .875rem; line-height: 1.6; color: var(--muted); }
.skip-link { position: absolute; top: -100px; left: 20px; background: white; padding: 14px; z-index: 100; font-size: 1rem; font-weight: 700; }
.skip-link:focus { top: 10px; }
@media (max-width: 980px) {
  .shell { padding: 0 28px; }

  .post-grid { gap: 32px 28px; }
  .hub-grid { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .related-grid { grid-template-columns: 1fr; gap: 28px; }
  .related-grid .article-card-link { display: grid; grid-template-columns: minmax(120px,.7fr) minmax(0,2fr); gap: 24px; align-items: start; }
  .related-grid .article-card .card-body { padding: 0; }
  .related-grid .card-body p { max-width: 720px; }
}
@media (max-width: 760px) {
  .shell { padding: 0 24px; }
  .page-intro h1, .simple-page h1 { font-size: 3.5rem; }
  .post-header h1 { font-size: 3rem; }
  .post-dek { font-size: 1.1875rem; }
  .quick-facts { --panel-padding: 24px; }
  .quick-facts-list { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 22px 24px; }
  .post-prose { font-size: 1.125rem; }
  .post-answer > p:first-child { font-size: 1.1875rem; }
  .article-image > img { max-height: 400px; }
  .footer-top { align-items: start; }
  .footer-top nav { max-width: 300px; justify-content: end; }
}
@media (max-width: 560px) {
  .shell { padding: 0 20px; }
  .article-card.has-image .card-body { padding: 18px 0 8px; }
  .footer-city { width: 160px; margin: 20px 0 0; }
  .post-grid { grid-template-columns: 1fr; gap: 30px; }
  .card-body :is(h2,h3) { font-size: 1.5rem; }
  .card-body p { font-size: 1.0625rem; }
  .group-heading { margin-bottom: 18px; padding-top: 16px; gap: 4px 16px; }
  .group-heading h2 { font-size: 1.5rem; }
  .group-heading > a { font-size: .9375rem; }
  .breadcrumbs { padding: 16px 0; }
  .breadcrumbs--nested .breadcrumb-current, .breadcrumbs--nested .breadcrumb-separator--last { display: none; }
  .page-intro { padding: 10px 0 20px; }
  .page-intro h1, .simple-page h1 { font-size: 2.75rem; }
  .page-intro p { font-size: 1.125rem; }
  .post-header { padding: 10px 0 24px; }
  .post-header h1 { font-size: 2.5rem; line-height: 1.15; overflow-wrap: anywhere; }
  .post-dek { font-size: 1.125rem; }
  .byline { display: grid; gap: 7px; font-size: .875rem; }
  .quick-facts { --panel-padding: 20px; margin: 24px 0 32px; }
  .quick-facts-heading { padding-bottom: 16px; }
  .quick-facts-heading h2 { font-size: 1.35rem; }
  .quick-facts-list { grid-template-columns: 1fr; gap: 18px; padding-top: 18px; }
  .post-prose h2 { font-size: 1.875rem; }
  .post-prose h3 { font-size: 1.1875rem; }
  .post-prose section { margin: 36px 0; }
  .source-notes { padding: 20px; }
  .source-notes h2 { font-size: 1.1875rem; }
  .article-image > img { aspect-ratio: 1.5; object-fit: cover; }
  .related { padding-bottom: 28px; }
  .simple-page { margin: 18px 0 44px; }
  .footer-top { display: block; padding: 24px 0 14px; }
  .footer-top nav { max-width: none; justify-content: start; margin-top: 20px; gap: 2px 24px; }
}
@media (max-width: 360px) {
  .shell { padding: 0 16px; }
  .quick-facts-list { grid-template-columns: 1fr; }
}

/* City services share the publication's generous type and quiet layout. */
.city-brief { display:flex; align-items:center; justify-content:space-between; gap:20px; --panel-padding:12px 20px; margin:0 0 40px; }
.city-brief a { display:flex; align-items:center; gap:12px; min-width:0; min-height:44px; padding:8px; color:var(--navy); border-radius:var(--radius-control); }
.city-brief a:is(:hover,:focus-visible) { background:#e9eef5; color:var(--navy); }
.city-brief a > .icon { flex:none; width:20px; height:20px; color:var(--muted); }
.city-weather-copy { display:flex; flex-direction:column; gap:2px; min-width:0; }
.city-weather-copy strong { font-size:.9375rem; font-weight:500; line-height:1.5; }
.city-weather-copy > span { color:var(--muted); font-size:.8125rem; line-height:1.5; }
.city-shortcuts { display:flex; align-items:center; gap:12px; }
.city-shortcuts a { font-size:.9375rem; font-weight:500; }
.city-brief .brief-arrow { width:16px; height:16px; margin-left:4px; }
.utility-intro { padding-bottom:18px; }
.utility-lead { max-width:780px; font-size:1.1875rem; margin:0 0 20px; }
.temperature { font-size:5rem; font-weight:700; color:var(--navy); line-height:1.15; letter-spacing:-.035em; }
.condition { font-size:1.375rem; margin:8px 0; }
.weather-metrics { display:flex; flex-wrap:wrap; gap:20px 40px; }
.weather-metrics dt { color:var(--muted); font-size:.9375rem; }
.weather-metrics dd { margin:8px 0; font-weight:700; }
.text-link { color:var(--blue); text-decoration:underline; text-underline-offset:4px; display:inline-block; line-height:1.6; }
.data-note,.filter-help { font-size:.9375rem; color:var(--muted); line-height:1.65; }
.data-note a { text-decoration:underline; text-underline-offset:3px; }
.status-note { padding:14px 18px; background:#fff2d7; color:#644309; font-size:1rem; line-height:1.6; border-left:3px solid #8a6314; }
.alert-panel { --panel-padding:22px 26px; margin-top:26px; font-size:1.0625rem; }
.alert-panel h2 { font-size:1.25rem; margin:0; }
.alert-panel p { margin:10px 0; }
.alert-panel li { line-height:1.7; }
.alert-panel li a { text-decoration:underline; }
.utility-section { margin:40px 0; }
.hourly-scroll { overflow-x:auto; --panel-padding:0; }
.hourly-grid { display:grid; grid-auto-flow:column; grid-auto-columns:14rem; }
.hour-card { display:flex; flex-direction:column; padding:22px 20px; border-right:1px solid var(--line); }
.hour-card:last-child { border-right:0; }
.hour-card h3 { font-size:1rem; margin:0 0 16px; }
.hour-card strong { font-size:1.75rem; color:var(--navy); }
.hour-condition { display:flex; align-items:center; justify-content:space-between; gap:16px; min-height:60px; }
.hour-condition .weather-icon { width:60px; height:60px; }
.hour-card p { flex:1; min-height:3.2em; margin:16px 0 20px; font-size:1rem; line-height:1.6; }
.hour-card > span { display:block; font-size:.9375rem; color:var(--muted); line-height:1.8; }
.forecast-row { border-bottom:1px solid var(--line); font-size:1.0625rem; }
.forecast-row summary { display:grid; grid-template-columns:10.9375rem minmax(0,1fr) auto; align-items:center; gap:18px; padding:16px 0; cursor:pointer; line-height:1.6; }
.forecast-condition { display:flex; align-items:center; gap:16px; min-width:0; }
.forecast-condition .weather-icon { width:48px; height:48px; }
.forecast-row summary:hover .forecast-condition { color:var(--navy); }
.weather-icon { display:block; flex:none; color:var(--navy); overflow:visible; }
.weather-icon .wx-cloud { fill:#f0f4fb; }
.weather-icon :is(.wx-sun,.wx-moon,.wx-precip) { color:var(--blue); }
.weather-icon :is(.wx-sun circle,.wx-moon) { fill:#edf3ff; }
.weather-icon .wx-lightning { fill:var(--blue); stroke-width:1.5; }
.weather-icon .wx-fog { color:var(--muted); }
.weather-icon .wx-unknown { stroke:var(--muted); stroke-dasharray:3 5; }
@media (prefers-reduced-motion: no-preference) {
  .weather-icon.is-animating .wx-cloud { animation:wx-cloud-drift 3.6s ease-in-out; }
  .weather-icon.is-animating .wx-rays { transform-origin:23px 22px; animation:wx-sun-turn 3.6s ease-in-out; }
  .weather-icon.is-animating .wx-moon { transform-origin:32px 25px; animation:wx-moon-tilt 3.6s ease-in-out; }
  .weather-icon.is-animating .wx-drop { animation:wx-rain-fall 1.2s ease-in-out 3; }
  .weather-icon.is-animating .wx-flake { animation:wx-snow-fall 1.8s ease-in-out 2; }
  .weather-icon.is-animating .wx-drop--2 { animation-delay:120ms; }
  .weather-icon.is-animating .wx-drop--3 { animation-delay:240ms; }
  .weather-icon.is-animating .wx-lightning { animation:wx-thunder 3.6s ease-in-out; }
  .weather-icon.is-animating :is(.wx-fog,.wx-wind) { animation:wx-breeze 3.6s ease-in-out; }
}
@keyframes wx-cloud-drift { 0%,100% { transform:translateX(0); } 50% { transform:translateX(3px); } }
@keyframes wx-sun-turn { 0% { transform:rotate(0); } 100% { transform:rotate(90deg); } }
@keyframes wx-moon-tilt { 0%,100% { transform:rotate(0); } 50% { transform:rotate(-9deg); } }
@keyframes wx-rain-fall { 0%,100% { transform:translate(0,0); opacity:1; } 60% { transform:translate(-1px,4px); opacity:.35; } 61% { transform:translate(1px,-3px); opacity:0; } }
@keyframes wx-snow-fall { 0%,100% { transform:translate(0,0); opacity:1; } 65% { transform:translate(2px,3px); opacity:.4; } 66% { transform:translate(-1px,-3px); opacity:0; } }
@keyframes wx-thunder { 0%,100% { opacity:1; } 45%,65% { opacity:.4; } }
@keyframes wx-breeze { 0%,100% { transform:translateX(0); } 35% { transform:translateX(3px); } 70% { transform:translateX(-2px); } }
.forecast-row summary::marker { content:''; }
.forecast-row summary strong { font-size:1rem; text-transform:capitalize; text-align:right; }
.forecast-row summary strong::after { content:' +'; color:var(--blue); padding-left:10px; }
.forecast-row[open] summary strong::after { content:' −'; }
.forecast-row p { max-width:760px; margin:0 0 24px; }
.forecast-day { font-weight:700; color:var(--navy); }
.planning-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:30px; }
.planning-grid h3 { font-size:1.375rem; line-height:1.35; margin:12px 0; }
.planning-grid p { font-size:1.0625rem; color:var(--muted); }
.utility-prose { margin:46px 0; }
.road-filters { display:grid; grid-template-columns:2fr 1.3fr 1fr auto; align-items:end; gap:16px; }
.road-filters label { display:flex; flex-direction:column; gap:10px; font-size:1rem; font-weight:700; min-width:0; }
.road-filters :is(input,select,button) { font:inherit; font-weight:400; min-height:48px; padding:11px 12px; border:1px solid #8996a9; border-radius:var(--radius-control); background:white; color:var(--ink); width:100%; min-width:0; }
.road-filters button { font-weight:700; background:var(--blue); border-color:var(--blue); color:white; cursor:pointer; }
:is(input,select,button):focus-visible { outline:3px solid var(--blue); outline-offset:4px; }
.road-card { padding:26px 0; border-bottom:1px solid var(--line); }
.road-card-top { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:12px; }
.road-card h3 { font-size:1.375rem; line-height:1.45; margin:12px 0; }
.road-card > p { font-size:1.0625rem; max-width:840px; }
.road-card .data-note { font-size:.9375rem; }
.road-details { font-size:1rem; line-height:1.7; }
.road-details > div { display:grid; grid-template-columns:110px minmax(0,1fr); gap:12px; margin:8px 0; }
.road-details dt { font-weight:700; }
.road-details dd { margin:0; }
.news-layout { display:grid; grid-template-columns:minmax(0,2.3fr) minmax(240px,1fr); gap:56px; }
.news-brief { padding:30px 0; border-top:1px solid var(--line); }
.news-brief h2 { font:var(--weight-heading) 1.75rem/1.3 var(--font-editorial); letter-spacing:-.025em; margin:12px 0; }
.news-brief > p { font-size:1.1875rem; }
.brief-meta { display:flex; flex-wrap:wrap; gap:6px 20px; font-size:.875rem; line-height:1.6; color:var(--muted); margin:16px 0; }
.city-info-panel { align-self:start; }
@media (min-width:851px) {
  .city-info-panel { position:sticky; top:var(--header-clearance,24px); max-height:calc(100dvh - var(--header-clearance,24px) - 24px); overflow-y:auto; scrollbar-width:thin; }
}
@media (max-width:850px) {
  .road-filters { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .news-layout { grid-template-columns:1fr; gap:24px; }
  .city-info-panel { max-width:600px; }
}
@media (max-width:680px) {
  .related-grid .article-card-link { grid-template-columns: 112px minmax(0,1fr); gap: 18px; }
  .related-grid .card-media img { aspect-ratio: 1; }
  .related-grid .card-body :is(h2,h3) { font-size: 1.25rem; }
  .related-grid .card-body p { display: none; }
  .temperature { font-size:4rem; }
  .planning-grid { grid-template-columns:1fr; gap:20px; }
  .planning-grid p { margin-bottom:0; }
  .forecast-row summary { grid-template-columns:minmax(0,1fr) auto; gap:8px 14px; }
  .forecast-row summary > span:nth-child(2) { grid-column:1/-1; grid-row:2; }
  .forecast-row summary strong { max-width:8.125rem; }
  .news-brief h2 { font-size:1.5rem; }
  .news-brief > p { font-size:1.125rem; }
}
@media (max-width:480px) {
  .road-filters { grid-template-columns:1fr; --panel-padding:20px; }
  .road-details > div { grid-template-columns:1fr; gap:0; }
  .road-card h3 { font-size:1.25rem; }
  .alert-panel { --panel-padding:20px; }
}
.forecast-day { overflow-wrap:anywhere; }

/* A shared editorial section: one lead story and two shorter ways into the city. */
.home-group { margin: 0 0 56px; }
.home-group .group-heading { padding: 0; margin-bottom: 22px; align-items: center; gap: 16px 24px; }
.home-group-intro { display: flex; align-items: center; gap: 12px; min-width: 0; }
.home-group-icon { display: inline-flex; align-items: center; justify-content: center; flex: none; color: var(--blue); }
.home-group-icon .icon { display: block; width: 24px; height: 24px; }
.home-group .group-heading h2 { font: var(--weight-heading) 1.75rem/1.25 var(--font-body); letter-spacing: -.025em; margin: 0; }
.home-group .home-group-link { color: var(--navy); font-size: .9375rem; font-weight: 500; padding: 8px 14px; gap: 14px; border-radius: var(--radius-control); background: var(--surface); white-space: nowrap; }
.home-group .home-group-link:is(:hover,:focus-visible) { background: var(--soft); text-decoration: none; }
.home-group-link > .icon { width: 18px; height: 18px; }
.home-stories { display: grid; grid-template-columns: minmax(0,1.12fr) minmax(0,1fr); gap: 22px; }
.home-group .home-story-link { display: flex; flex-direction: column; background: var(--surface); border-radius: var(--radius-card); }
.home-group .home-story-link:is(:hover,:focus-visible) { background: #edf1f7; }
.home-group .home-story-photo { border-radius: var(--radius-card) var(--radius-card) 0 0; }
.home-group .home-story-photo img { height: clamp(220px,20vw,300px); aspect-ratio: auto; }
.home-group .home-story-copy { display: flex; flex-direction: column; flex: 1; min-width: 0; padding: 24px; }
.home-group .home-story h3 { font-size: clamp(1.5rem,1.8vw,1.875rem); line-height: 1.25; }
.home-group .home-story p { -webkit-line-clamp: 2; line-clamp: 2; margin-bottom: 16px; }
.home-story-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: auto; }
.home-story-arrow { display: grid; place-items: center; width: 32px; height: 32px; color: var(--navy); }
.home-story-arrow .icon { width: 20px; height: 20px; }
.home-story--lead { grid-row: span 2; }
.home-group .home-story--compact .home-story-link { display: grid; grid-template-columns: minmax(145px,.78fr) minmax(0,1.22fr); }
.home-group .home-story--compact .home-story-photo { border-radius: var(--radius-card) 0 0 var(--radius-card); }
.home-group .home-story--compact .home-story-photo, .home-group .home-story--compact .card-image { height: 100%; }
.home-group .home-story--compact .home-story-photo img { height: 100%; min-height: 200px; }
.home-group .home-story--compact .home-story-copy { padding: 22px; }
.home-group .home-story--compact h3 { font-size: 1.375rem; }
.home-group .home-story--compact p { font-size: .9375rem; line-height: 1.55; }
.home-stories--pair { grid-template-columns: repeat(2,minmax(0,1fr)); }
@media (min-width: 681px) {
  .home-group--news .home-stories { grid-template-columns: repeat(3,minmax(0,1fr)); }
  /* News is a three-card row: keep every story in the same vertical rhythm
     instead of leaving a second grid row empty beneath the lead card. */
  .home-group--news .home-story--lead { grid-row: auto; }
  .home-group--news .home-story--compact .home-story-link { display: flex; flex-direction: column; }
  .home-group--news .home-story--compact .home-story-photo { border-radius: var(--radius-card) var(--radius-card) 0 0; }
  .home-group--news .home-story--compact .home-story-photo,
  .home-group--news .home-story--compact .card-image { height: auto; }
  .home-group--news .home-story-photo img { height: auto; aspect-ratio: 1.85; min-height: 0; }
  .home-group--news .home-story h3 { font-size: 1.5rem; }
}
@media (min-width: 901px) {
  .home-stories { grid-auto-rows: 1fr; }
}
.planning-grid h3 { font: var(--weight-heading) 1.75rem/1.25 var(--font-editorial); }
@media (max-width: 1150px) {
  .newsletter--footer { grid-template-columns: minmax(0,1fr) minmax(0,1.25fr); }
}
@media (max-width: 1200px) {
  .home-picks { gap: 24px; }
  .home-story :is(h2,h3) { font-size: 1.4375rem; }
  .home-story--pick h2 { font-size: 1.375rem; }
}
@media (max-width: 900px) {
  .home-picks { grid-template-columns: 1fr; gap: 20px; }
  .city-brief { flex-wrap:wrap; gap:8px 20px; --panel-padding:12px 16px; }
  .city-shortcuts { flex-wrap:wrap; gap:4px 12px; }
  .feature-link { grid-template-columns: 1fr 1fr; min-height: 420px; }
  .feature-copy { padding: 28px; }
  .home-feature h1 { font-size: 2.25rem; margin: 20px 0 16px; }
  .feature-bottom { margin-top: 22px; gap: 12px; }
  .home-story--pick h2 { font-size: 1.25rem; }
  .home-stories { grid-template-columns: repeat(2,minmax(0,1fr)); gap: 18px; }
  .home-group--news .home-stories { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .home-stories--pair { grid-template-columns: repeat(2,minmax(0,1fr)); }
  .home-story--lead { grid-row: span 2; }
  .home-group .home-story--compact .home-story-link { display: flex; }
  .home-group .home-story--compact .home-story-photo { border-radius: var(--radius-card) var(--radius-card) 0 0; }
  .home-group .home-story--compact .home-story-photo, .home-group .home-story--compact .card-image { height: auto; }
  .home-group .home-story .home-story-photo img { height: 170px; min-height: 0; }
  .home-group .home-story .home-story-copy { padding: 18px; }
  .home-group .home-story h3 { font-size: 1.25rem; }
  .home-group .home-story p { font-size: .9375rem; line-height: 1.55; }
  .newsletter--footer { grid-template-columns: 1fr; grid-template-areas: "brand" "copy" "form"; --panel-padding: 0 28px 28px; gap: 24px; }
  .newsletter--footer .newsletter-brand { width: calc(100% + 56px); margin: 0 -28px; }
}
@media (max-width: 760px) {
  .newsletter--footer { grid-template-columns: 1fr; gap: 24px; }
  .newsletter--footer .newsletter-form { max-width: none; }
  .newsletter--footer .newsletter-brand-image { width: 100%; max-width: none; }
  .newsletter--footer .newsletter-fields { display: flex; flex-wrap: wrap; }
  .newsletter--footer .newsletter-fields input,
  .newsletter--footer .newsletter-fields button { flex-basis: 100%; }
}
@media (max-width: 680px) {
  .feature-link { grid-template-columns: 1fr; min-height: 0; }
  .feature-media { grid-row: 1; height: clamp(220px,52vw,320px); }
  .feature-copy { padding: 28px; }
  .feature-description { max-width: 480px; }
  .feature-bottom { flex-direction: row; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 8px 16px; margin-top: 18px; }
  .home-feature h1 { max-width: 450px; }
  .home-picks { grid-template-columns: 1fr; gap: 20px; }
  .city-brief { margin-bottom:32px; }
  .home-stories { grid-template-columns: 1fr; gap: 16px; }
  .home-story--lead { grid-row: auto; }
  .home-group .group-heading { align-items: center; gap: 12px; }
  .home-group-intro { gap: 10px; }
  .home-group-icon .icon { width: 21px; height: 21px; }
  .home-group .group-heading h2 { font-size: 1.375rem; }
  .home-group .home-group-link { padding: 4px 0 4px 8px; background: transparent; font-size: .875rem; gap: 8px; }
  .home-group .home-story .home-story-photo img { height: clamp(190px,48vw,290px); }
  .home-group .home-story h3 { font-size: 1.5rem; }
  .home-group .home-story--compact .home-story-link { display: grid; grid-template-columns: 112px minmax(0,1fr); align-items: center; background: transparent; }
  .home-group .home-story--compact .home-story-photo { border-radius: var(--radius-card); }
  .home-group .home-story--compact .home-story-photo img { height: 132px; }
  .home-group .home-story--compact .home-story-copy { padding: 8px 0 8px 16px; }
  .home-group .home-story--compact h3 { font-size: 1.125rem; margin-bottom: 8px; }
  .home-group .home-story--compact p { display: none; }
}
@media (max-width: 560px) {
  .home-cover { margin-top: 20px; gap: 22px; }
  .feature-copy { padding: 24px; }
  .home-feature h1 { font-size: 2rem; }
  .feature-description { font-size: 1rem; }
  .feature-bottom { margin-top: 10px; }
  .home-picks { grid-template-columns: 1fr; }
  .home-story--pick :is(h2,h3) { font-size: 1.25rem; margin-bottom: 6px; }
  .home-group { margin-bottom: 40px; }
  .newsletter { --panel-padding: 24px; }
  .newsletter--footer { --panel-padding: 0 24px 24px; }
  .newsletter--footer .newsletter-brand { width: calc(100% + 48px); margin: 0 -24px; }
  .newsletter--footer .newsletter-copy h2 { gap: 8px; }
  .newsletter--footer .newsletter-copy h2 .icon { width: 20px; height: 20px; }
  .newsletter-fields { flex-wrap: wrap; }
  .newsletter-fields input { flex-basis: 100%; }
  .newsletter-fields button { width: 100%; }
}
@media (max-width: 380px) {
  .wordmark .brand-lockup { width: 180px; }
  .home-feature h1 { font-size: 1.75rem; }
  .home-group .group-heading h2 { font-size: 1.375rem; }
  .home-group .home-group-link { justify-content: center; min-width: 44px; padding: 8px; }
  .home-group-link > span { display: none; }
  .home-group .home-story--compact .home-story-link { grid-template-columns: 96px minmax(0,1fr); }
}

/* Mobile polish keeps the header, utility strip and long reading pages easy to scan. */
@media (max-width: 560px) {
  .nav-enhanced .wordmark .brand-lockup { width: clamp(148px, 44vw, 180px); }
  .nav-enhanced .menu-toggle { gap: 8px; padding-inline: 10px; }
  .city-brief { display: grid; grid-template-columns: 1fr; gap: 12px; padding: 16px; }
  .city-brief > a { padding: 8px 4px; }
  .city-shortcuts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 10px; width: 100%; }
  .city-shortcuts a { padding: 8px 4px; }
  .page-intro h1, .simple-page h1 { font-size: clamp(2.25rem, 10vw, 2.75rem); line-height: 1.08; }
  .post-header h1 { font-size: clamp(2.125rem, 9vw, 2.5rem); line-height: 1.12; }
  .post-prose section, .election-directory, .election-voting, .election-method { scroll-margin-top: calc(var(--header-clearance, 88px) + 16px); }
  .footer-top nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px 20px; }
}
@media (max-width: 360px) {
  .nav-enhanced .wordmark .brand-lockup { width: clamp(136px, 45vw, 160px); }
  .nav-enhanced .menu-toggle { padding-inline: 8px; }
  .city-shortcuts { grid-template-columns: 1fr; }
}

/* Feedback follows the same timing; motion never carries essential information. */
@media (prefers-reduced-motion: no-preference) {
  .brand-letter, .brand-dot, .brand-tower, .brand-city-letter > path { transition: transform 460ms var(--ease); }
  :is(.wordmark,.footer-brand):is(:hover,:focus-visible,.brand-floating-enter) .brand-letter {
    transform: translateY(var(--brand-lift)) rotate(var(--brand-tilt));
    transition-delay: var(--brand-delay);
  }
  :is(.wordmark,.footer-brand):is(:hover,:focus-visible,.brand-floating-enter) .brand-dot { transform: translateY(-19px) scale(1.035); transition-delay: 180ms; }
  :is(.wordmark,.footer-brand):is(:hover,:focus-visible,.brand-floating-enter) .brand-tower { transform: scaleY(1.035); }
  :is(.wordmark,.footer-brand):is(:hover,:focus-visible,.brand-floating-enter) .brand-city-letter > path { transform: translate(var(--city-shift),4px); transition-delay: 90ms; }
  :is(.wordmark,.footer-brand).brand-settling :is(.brand-letter,.brand-dot,.brand-tower,.brand-city-letter > path) {
    transform: none;
    transition-duration: var(--motion-standard);
    transition-delay: 0ms;
  }
  :is(.nav-link,.menu-toggle,.newsletter-fields button,.article-toc a,.city-brief a) {
    transition: background-color var(--motion-fast) var(--ease), color var(--motion-fast) var(--ease), transform var(--motion-fast) var(--ease);
  }
  .newsletter-fields input { transition: border-color var(--motion-fast) var(--ease), box-shadow var(--motion-fast) var(--ease); }
  :is(.feature-cta,.group-heading > a,.newsletter-fields button,.city-brief a) > .icon--arrow,
  :is(.contents,.faq) summary > .icon {
    transition: transform var(--motion-standard) var(--ease);
  }
  :is(.feature-cta,.group-heading > a,.newsletter-fields button,.city-brief a):is(:hover,:focus-visible) > .icon--arrow { transform: translateX(3px); }
  .feature-link:is(:hover,:focus-visible) .feature-cta > .icon--arrow { transform: translateX(3px); }
  .home-group :is(.home-story-link,.home-group-link) { transition: background-color var(--motion-standard) var(--ease); }
  .home-story-arrow .icon { transition: transform var(--motion-standard) var(--ease); }
  .home-story-link:is(:hover,:focus-visible) .home-story-arrow .icon { transform: translateX(3px); }
  :is(.newsletter-fields button,.menu-toggle):active { transform: translateY(1px); }
  :is(.home-story-photo,.feature-media,.card-media) img { transition: transform 420ms var(--ease); }
  .card-image > img.card-image-preview { transition:opacity 360ms var(--ease), transform 420ms var(--ease); }
  :is(.home-story,.home-feature,.article-card):focus-within :is(.home-story-photo,.feature-media,.card-media) img { transform: scale(1.018); }
  @media (hover: hover) and (pointer: fine) {
    :is(.home-story,.home-feature,.article-card):hover :is(.home-story-photo,.feature-media,.card-media) img { transform: scale(1.018); }
  }
  .nav-ready.nav-open .main-nav { animation: menu-reveal var(--motion-fast) var(--ease) both; }
  .newsletter-status[data-state="success"] { animation: confirmation-reveal var(--motion-standard) var(--ease) both; }
}
.newsletter-fields input:focus { border-color: var(--navy); }
.newsletter-fields button:focus-visible { outline-color: var(--navy); }
.newsletter-fields button:disabled { transform: none; }
@keyframes menu-reveal { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
@keyframes confirmation-reveal { from { opacity: 0; transform: translateY(3px); } to { opacity: 1; transform: translateY(0); } }
