/* Shared editorial system. City branding supplies --accent and --on-accent. */
:root {
  --ink: #202925;
  --muted: #626960;
  --line: #d8ddd4;
  --paper: #fffefb;
  --canvas: #f5f3ed;
  --accent: #165a72;
  --on-accent: #fff;
  --serif: Georgia, "Times New Roman", serif;
  --sans: "Segoe UI", system-ui, -apple-system, sans-serif;
  font-family: var(--sans);
  color: var(--ink);
  background: var(--canvas);
  font-synthesis: none;
  text-rendering: optimizeLegibility;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-size: 16px; line-height: 1.65; }
a { color: inherit; text-decoration-color: var(--accent); text-underline-offset: .2em; }
a:hover { text-decoration: underline; text-decoration-thickness: 2px; }
a:focus-visible, summary:focus-visible { outline: 3px solid var(--ink); outline-offset: 5px; }
img { max-width: 100%; height: auto; }
figure { margin: 0; }
h1, h2, h3, p { margin-top: 0; }
h1, h2, h3 { font-family: var(--serif); font-weight: 500; line-height: 1.13; letter-spacing: -.035em; overflow-wrap: anywhere; }
h1 { font-size: clamp(2.5rem, 5vw, 4.7rem); margin-bottom: 1.2rem; }
h2 { font-size: clamp(1.8rem, 3vw, 2.7rem); margin-bottom: 0; }
h3 { font-size: 1.5rem; margin-bottom: .65rem; }
p { margin-bottom: 1rem; }
.container { width: min(calc(100% - 5rem), 1240px); margin-inline: auto; }
.skip-link { position: absolute; top: -6rem; left: 1rem; z-index: 20; padding: .8rem 1.2rem; background: var(--ink); color: #fff; }
.skip-link:focus { top: 1rem; }
.main-content { min-height: 60vh; padding-block: 2.5rem 5rem; }
.kicker, .edition-label, .footer-label { font-family: var(--sans); font-size: .7rem; font-weight: 750; line-height: 1.4; letter-spacing: .14em; text-transform: uppercase; }
.kicker { margin-bottom: .8rem; color: var(--muted); }
.text-link { font-size: .85rem; font-weight: 650; text-decoration: none; white-space: nowrap; padding-block: .5rem; }
.section { margin-top: 4.5rem; }
.section-heading { display: flex; justify-content: space-between; align-items: end; gap: 1rem; border-top: 2px solid var(--ink); padding-top: 1.4rem; margin-bottom: 1.8rem; }
.section-note { color: var(--muted); font-size: .9rem; max-width: 40rem; }
.page-intro { max-width: 850px; margin: .5rem 0 2.5rem; }
.page-intro > p:last-child, .page-intro .rich-text { color: var(--muted); max-width: 650px; font-size: 1.06rem; }

/* Masthead and navigation */
.site-header { background: var(--canvas); }
.edition-bar { display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding-block: .8rem; border-bottom: 1px solid var(--line); font-size: .75rem; }
.edition-bar p { display: flex; gap: 1.5rem; align-items: center; margin: 0; }
.edition-identity { display: inline-flex; align-items: center; gap: .55rem; }
.edition-logo { display: block; flex: 0 0 34px; width: 34px; height: 34px; object-fit: contain; }
.edition-region, .edition-bar time { color: var(--muted); }
.edition-bar time { white-space: nowrap; }
.header-inner { display: flex; align-items: center; justify-content: space-between; gap: 2rem; padding-block: 1.7rem 1.6rem; }
.brand { display: flex; align-items: center; gap: 1rem; min-width: 0; text-decoration: none; }
.brand:hover { text-decoration: none; }
.brand-mark { display: grid; place-items: center; flex: 0 0 56px; width: 56px; height: 62px; background: var(--accent); color: var(--on-accent); font-family: var(--serif); font-size: 2.7rem; font-weight: 700; line-height: 1; }
.brand-logo { width: 56px; height: 56px; object-fit: contain; flex-shrink: 0; }
.brand-copy { display: flex; flex-direction: column; min-width: 0; }
.brand-copy strong { font-family: var(--serif); font-size: clamp(1.7rem, 3.4vw, 3.05rem); line-height: 1.1; font-weight: 500; letter-spacing: -.05em; overflow-wrap: anywhere; }
.brand-copy small { font-size: .74rem; letter-spacing: .08em; margin-top: .45rem; color: var(--muted); }
.header-agenda { display: flex; flex-direction: column; flex-shrink: 0; padding-left: 1.4rem; border-left: 1px solid var(--line); text-decoration: none; }
.header-agenda > span { font-size: .72rem; color: var(--muted); }
.header-agenda strong { font-size: .95rem; font-weight: 650; }
.header-agenda strong span { margin-left: 1.2rem; }
.navigation-wrap { border-top: 1px solid var(--ink); border-bottom: 1px solid var(--ink); }
.main-nav { display: flex; flex-wrap: wrap; gap: 0 2rem; }
.main-nav a { padding: .85rem 0; font-size: .84rem; font-weight: 600; text-decoration: none; border-bottom: 3px solid transparent; margin-bottom: -1px; }
.main-nav a:hover, .main-nav a[aria-current="page"] { border-color: var(--accent); }
.main-nav a[aria-current="page"] { font-weight: 800; }
.mobile-navigation { display: none; }

/* Home: lead story, short news rail, real upcoming events */
.home-intro { margin-bottom: 2rem; }
.home-intro + .section { margin-top: 2rem; }
.home-topline { display: flex; justify-content: space-between; gap: 1.5rem; align-items: baseline; }
.home-intro h1 { font-size: clamp(1.75rem, 3vw, 2.75rem); margin-bottom: .5rem; }
.home-intro .rich-text, .home-intro > p, .home-intro .hero-intro { color: var(--muted); max-width: 45rem; font-size: .98rem; }
.home-lead { display: grid; grid-template-columns: minmax(0, 2fr) minmax(240px, 1fr); gap: 2.5rem; }
.home-lead.home-lead--single { grid-template-columns: minmax(0, 1fr); }
.home-lead--single .lead-story:not(.lead-story--text) { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 2rem; align-items: center; }
.home-lead--single .lead-visual { margin-bottom: 0; }
.home-lead--single .lead-copy { max-width: 850px; }
.lead-story { min-width: 0; }
.lead-visual { display: block; overflow: hidden; background: #e9e8df; margin-bottom: 1.5rem; aspect-ratio: 16 / 9; }
.lead-visual img { display: block; width: 100%; height: 100%; object-fit: cover; }
.lead-copy { padding: .25rem 0 1rem; }
.lead-title { font-size: clamp(2.1rem, 3.5vw, 3.5rem); margin-bottom: 1.1rem; }
.lead-title a { text-decoration: none; }
.lead-title a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.lead-copy > p { font-size: 1.05rem; color: var(--muted); max-width: 44rem; }
.lead-story--text { border-top: 4px solid var(--accent); padding: 2rem; background: var(--paper); display: flex; align-items: center; min-height: 300px; }
.lead-story--text .lead-title { margin-top: 1.1rem; }
.news-rail { border-left: 1px solid var(--line); padding-left: 2rem; min-width: 0; }
.news-rail > h2 { font-size: 1.6rem; margin-bottom: 1.4rem; }
.news-rail > h3 { font-size: 1.6rem; margin-bottom: 1.4rem; }
.rail-list { margin: 0 0 1rem; padding: 0; list-style: none; }
.rail-item { border-bottom: 1px solid var(--line); padding: 1.05rem 0; }
.rail-item:first-child { padding-top: 0; }
.rail-item time { display: block; color: var(--muted); font-size: .72rem; margin-bottom: .4rem; }
.rail-item h3 { font-size: 1.3rem; line-height: 1.28; margin-bottom: .4rem; }
.rail-item h4 { font-family: var(--serif); font-size: 1.3rem; line-height: 1.28; font-weight: 500; letter-spacing: -.025em; margin: .35rem 0 .4rem; overflow-wrap: anywhere; }
.rail-item a { text-decoration: none; }
.rail-item a:hover { text-decoration: underline; }
.home-event-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.home-event-card { display: flex; align-items: start; gap: 1rem; padding-block: 1.5rem; border-top: 1px solid var(--line); min-width: 0; }
.home-event-card h3 { font-size: 1.45rem; }
.home-event-card h3 a { text-decoration: none; }
.home-event-card p { color: var(--muted); font-size: .85rem; }
.event-date-block { display: flex; flex-direction: column; align-items: center; justify-content: center; flex: 0 0 62px; min-height: 76px; padding: .5rem; background: var(--paper); border-top: 3px solid var(--accent); font-size: .76rem; line-height: 1.4; }
.event-date-block strong { font-family: var(--serif); font-weight: 500; font-size: 2rem; line-height: 1.1; }
.event-date-block time { display: flex; flex-direction: column; align-items: center; }
.home-topline[aria-label] { display: flex; justify-content: start; flex-wrap: wrap; gap: .5rem 1.5rem; margin: -.5rem 0 1.5rem; font-size: .88rem; }
.home-topline[aria-label] a { padding-block: .4rem; }
.city-links { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border: 1px solid var(--line); background: var(--paper); }
.city-link { display: flex; flex-direction: column; gap: .8rem; min-width: 0; min-height: 190px; padding: 1.5rem; text-decoration: none; }
.city-link + .city-link { border-left: 1px solid var(--line); }
.city-link:hover { background: #eceee8; text-decoration: none; }
.city-link > span:first-child { color: var(--muted); font-size: .75rem; letter-spacing: .08em; }
.city-link strong { font-family: var(--serif); font-size: 1.65rem; font-weight: 500; letter-spacing: -.02em; }
.city-link p, .city-link small { color: var(--muted); font-size: .84rem; line-height: 1.5; margin: 0; }
.city-link > span:nth-child(3) { color: var(--muted); font-size: .84rem; line-height: 1.5; }
.city-link > span:last-child { margin-top: auto; align-self: end; font-size: 1.25rem; }

/* News and reading experience */
.category-list { display: flex; flex-wrap: wrap; gap: .4rem 1.2rem; margin: 0 0 2rem; padding: .6rem 0; border-bottom: 1px solid var(--line); }
.category-list a { display: inline-flex; min-height: 42px; align-items: center; padding: .3rem 0; font-size: .84rem; text-decoration: none; border-bottom: 2px solid transparent; }
.category-list a:hover, .category-list a[aria-current="page"] { border-color: var(--accent); font-weight: 650; }
.news-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem 1.75rem; }
.news-card { min-width: 0; display: flex; flex-direction: column; border-bottom: 1px solid var(--line); padding-bottom: 1.5rem; }
.card-image { display: block; aspect-ratio: 8 / 5; overflow: hidden; background: #e9e8df; }
.card-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.card-content { padding: 1.15rem 0 0; display: flex; flex-direction: column; flex: 1; }
.news-card--text { border-top: 3px solid var(--accent); background: var(--paper); padding: 1.2rem 1.5rem 1.5rem; }
.news-card--text .card-content { padding-top: 0; }
.news-card h3 { font-size: 1.55rem; line-height: 1.22; }
.news-card h3 a { text-decoration: none; }
.news-card h3 a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.news-card p { color: var(--muted); font-size: .9rem; line-height: 1.6; margin: 0; }
.eyebrow, .article-meta { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; font-size: .73rem; color: var(--muted); margin-bottom: .9rem; }
.eyebrow a { font-weight: 650; text-decoration: none; }
.article-layout { max-width: 960px; margin-inline: auto; }
.article-header { max-width: 800px; margin: 1rem auto 2.3rem; }
.article-header h1 { font-size: clamp(2.3rem, 4.7vw, 4.4rem); margin: 1rem 0 1.4rem; }
.category-label { font-size: .73rem; text-transform: uppercase; letter-spacing: .12em; font-weight: 750; text-decoration: none; border-bottom: 2px solid var(--accent); padding-bottom: .35rem; }
.article-meta { margin-bottom: 1.5rem; font-size: .8rem; }
.article-lead { font-size: clamp(1.1rem, 2vw, 1.35rem); line-height: 1.65; color: #485249; }
.article-figure { margin: 0 0 2.5rem; }
.article-figure img { display: block; width: 100%; }
.article-figure figcaption { margin-top: .7rem; color: var(--muted); font-size: .75rem; }
.article-body { max-width: 720px; margin-inline: auto; font-size: 1.1rem; line-height: 1.85; overflow-wrap: anywhere; }
.article-body p { margin-bottom: 1.4rem; }
.article-body h2, .article-body h3 { margin: 2rem 0 1rem; }
.article-body blockquote { border-left: 3px solid var(--accent); padding: .5rem 0 .5rem 1.5rem; margin: 2rem 0; font-family: var(--serif); font-size: 1.6rem; line-height: 1.5; }
.article-body ul, .article-body ol { padding-left: 1.5rem; }
.rich-text p:last-child { margin-bottom: 0; }
.rich-text img { height: auto; max-width: 100%; }
.rich-text .responsive-object { position: relative; }
.rich-text .responsive-object iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
.rich-text .left { float: left; max-width: 45%; margin: .5rem 1.5rem 1rem 0; }
.rich-text .right { float: right; max-width: 45%; margin: .5rem 0 1rem 1.5rem; }
.source-box, .article-footer { max-width: 720px; margin: 2rem auto 0; padding-top: 1.3rem; border-top: 1px solid var(--line); display: flex; gap: 1rem; justify-content: space-between; font-size: .86rem; overflow-wrap: anywhere; }
.source-box span { color: var(--muted); }
.related { margin-top: 4.5rem; }

/* Directory cards, entity facts and galleries */
.directory-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; }
.directory-card { min-width: 0; padding: 1.5rem; background: var(--paper); border: 1px solid var(--line); border-top: 3px solid var(--accent); }
.directory-card h2 { font-size: 1.65rem; line-height: 1.2; margin-bottom: 1rem; }
.directory-card h2 a { text-decoration: none; }
.directory-card p { margin-bottom: .65rem; font-size: .88rem; color: var(--muted); overflow-wrap: anywhere; }
.directory-card-kind { font-size: .7rem; letter-spacing: .07em; text-transform: uppercase; color: var(--muted); margin-bottom: 1rem; }
.directory-card-facts { font-size: .84rem; margin: 1rem 0; }
.directory-card-facts dt { color: var(--muted); }
.directory-card-facts dd { margin: 0 0 .4rem; }
.directory-detail, .event-detail { width: 100%; max-width: none; margin-inline: 0; }
.directory-detail .page-intro, .event-detail .page-intro { max-width: none; }
.directory-locality { color: var(--muted); }
.directory-description, .event-description { font-size: 1.06rem; line-height: 1.8; max-width: none; overflow-wrap: anywhere; }
.directory-overview { margin-block: 2rem; }
.directory-facts { margin: 1.8rem 0; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
.directory-facts > div { display: grid; grid-template-columns: minmax(120px, 26%) minmax(0, 1fr); gap: 1.5rem; padding: 1rem .5rem; }
.directory-facts > div + div { border-top: 1px solid var(--line); }
.directory-facts dt { color: var(--muted); font-size: .83rem; }
.directory-facts dd { margin: 0; font-size: .96rem; }
.directory-section { margin-top: 3rem; }
.directory-section h2 { font-size: 1.9rem; margin-bottom: 1.5rem; }
.directory-links { margin: 0; padding: 0; list-style: none; columns: 2; column-gap: 2rem; }
.directory-links li { padding: .65rem 0; border-bottom: 1px solid var(--line); break-inside: avoid; }
.directory-photos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.5rem; }
.directory-photos img { display: block; width: 100%; height: auto; }
.directory-photos figcaption, .directory-source, .directory-note { font-size: .82rem; color: var(--muted); margin-top: .65rem; overflow-wrap: anywhere; }
.directory-footer, .event-footer { border-top: 1px solid var(--line); padding-top: 1.2rem; margin-top: 2.5rem; font-size: .88rem; }

/* Event filters are ordinary links: fast, shareable and usable without JS. */
.event-filters { background: #eaece5; padding: 1.4rem 1.5rem; margin-bottom: 2rem; border-top: 2px solid var(--ink); }
.event-filters-header { display: flex; gap: 1rem; align-items: baseline; justify-content: space-between; margin-bottom: 1rem; }
.event-filters-header h2 { font-size: 1.5rem; }
.event-filter-set + .event-filter-set { margin-top: .7rem; }
.event-filter-label { color: var(--muted); font-size: .72rem; font-weight: 650; margin-bottom: .35rem; }
.event-filter-group { display: flex; flex-wrap: wrap; gap: .4rem; }
.event-filter-group a { display: inline-flex; align-items: center; min-height: 42px; padding: .4rem .8rem; background: var(--paper); border: 1px solid #b9c2b5; border-radius: 3px; font-size: .8rem; text-decoration: none; }
.event-filter-group a[aria-current="page"] { background: var(--ink); color: var(--paper); border-color: var(--ink); font-weight: 650; }
.event-filter-group a:hover { text-decoration: underline; }
.event-filter-toggles { margin-top: .75rem; }
.event-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem 1.5rem; }
.event-card { min-width: 0; display: flex; flex-direction: column; background: var(--paper); border: 1px solid var(--line); }
.event-card-image { display: block; aspect-ratio: 8 / 5; overflow: hidden; }
.event-card-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.event-card-content { padding: 1.5rem; display: flex; flex-direction: column; flex: 1; }
.event-card h2 { font-size: 1.65rem; margin: .7rem 0 1rem; }
.event-card h2 a { text-decoration: none; }
.event-card-topline { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: .5rem; }
.event-card-type { font-size: .7rem; text-transform: uppercase; letter-spacing: .08em; color: var(--muted); }
.event-badges { display: flex; flex-wrap: wrap; gap: .4rem; }
.event-badges span { font-size: .7rem; font-weight: 600; padding: .15rem .45rem; background: #e9ece4; color: var(--ink); }
.event-badges .event-badge-cancelled { color: #8a2b25; background: #f9e9e4; }
.event-date { font-size: .83rem; line-height: 1.5; margin: .9rem 0 .2rem; }
.event-locality { color: var(--muted); font-size: .82rem; }
.event-card-footer { margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--line); }
.event-price { font-size: .9rem; font-weight: 700; margin: auto 0 0; padding-top: .5rem; }
.event-detail-image { margin: 1.8rem 0 2rem; }
.event-detail-image img { display: block; width: 100%; }
.event-actions { margin-top: 2rem; }
.event-button { display: inline-flex; align-items: center; min-height: 48px; background: var(--accent); color: var(--on-accent); padding: .75rem 1.25rem; font-size: .9rem; font-weight: 650; text-decoration: none; border-radius: 3px; }

/* Shared navigation, empty states and footer */
.breadcrumbs { display: flex; flex-wrap: wrap; gap: .45rem; color: var(--muted); font-size: .74rem; margin: 0 0 2rem; overflow-wrap: anywhere; }
.breadcrumbs a { text-decoration: none; }
.empty-state { border: 1px solid var(--line); border-left: 3px solid var(--accent); padding: 2rem; background: var(--paper); color: var(--muted); }
.empty-state h2, .empty-state h3 { color: var(--ink); font-size: 1.65rem; margin-bottom: .75rem; }
.empty-state p:last-child { margin-bottom: 0; }
.empty-state a { font-size: .9rem; }
.pagination { display: flex; align-items: center; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--line); margin-top: 2.5rem; padding-top: 1.2rem; font-size: .82rem; color: var(--muted); }
.pagination > * { flex: 1; }
.pagination > *:last-child { text-align: right; }
.pagination > *:nth-child(2) { text-align: center; }
.pagination a { font-weight: 600; color: var(--ink); padding-block: .5rem; }
.site-footer { border-top: 1px solid var(--ink); background: #eaece5; padding-top: 3rem; }
.footer-inner { display: grid; grid-template-columns: minmax(0, 2fr) minmax(120px, 1fr) minmax(160px, 1fr); gap: 3rem; padding-bottom: 2.5rem; }
.footer-brand strong { display: block; font-family: var(--serif); font-size: 1.8rem; line-height: 1.2; font-weight: 500; letter-spacing: -.03em; overflow-wrap: anywhere; }
.footer-brand > p:last-child { font-size: .83rem; color: var(--muted); margin: 1rem 0 0; max-width: 320px; }
.footer-links, .footer-social { display: flex; flex-direction: column; align-items: start; gap: .5rem; font-size: .83rem; }
.footer-links a, .footer-social a { padding-block: .2rem; text-decoration: none; }
.footer-label { margin-bottom: .7rem; }
.footer-bottom { border-top: 1px solid #cbd1c6; display: flex; gap: 1rem; justify-content: space-between; padding-block: 1rem; font-size: .73rem; color: var(--muted); }
.footer-bottom a { text-decoration: none; }

@media (max-width: 1000px) {
  .container { width: calc(100% - 3rem); }
  .main-nav { gap: 0 1.4rem; }
  .header-agenda { display: none; }
  .home-lead { grid-template-columns: minmax(0, 1.65fr) minmax(210px, 1fr); gap: 1.5rem; }
  .news-rail { padding-left: 1.5rem; }
  .home-event-grid, .news-grid, .event-grid, .directory-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .city-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .city-link:nth-child(3) { border-left: 0; }
  .city-link:nth-child(n+3) { border-top: 1px solid var(--line); }
  .footer-inner { gap: 1.5rem; }
}
@media (max-width: 700px) {
  .container { width: calc(100% - 2rem); }
  .edition-bar { font-size: .66rem; padding-block: .65rem; gap: .5rem; }
  .edition-label { font-size: .61rem; letter-spacing: .1em; }
  .edition-region { display: none; }
  .header-inner { padding-block: 1.25rem; }
  .brand { gap: .75rem; }
  .brand-mark { flex-basis: 40px; width: 40px; height: 46px; font-size: 2rem; }
  .brand-logo { width: 40px; height: 40px; }
  .brand-copy strong { font-size: clamp(1.45rem, 5.7vw, 2.25rem); }
  .brand-copy small { font-size: .64rem; letter-spacing: .035em; }
  .main-nav { display: none; }
  .mobile-navigation { display: block; }
  .mobile-navigation summary { display: flex; align-items: center; justify-content: space-between; min-height: 48px; list-style: none; cursor: pointer; font-size: .86rem; font-weight: 600; }
  .mobile-navigation summary::-webkit-details-marker { display: none; }
  .mobile-navigation summary span { font-size: 1.4rem; font-weight: 400; }
  .mobile-navigation[open] summary span { transform: rotate(45deg); }
  .mobile-navigation nav { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 1.5rem; padding-bottom: .5rem; }
  .mobile-navigation nav a { display: flex; justify-content: space-between; align-items: center; gap: .3rem; min-height: 46px; border-top: 1px solid var(--line); font-size: .83rem; text-decoration: none; }
  .mobile-navigation nav a[aria-current="page"] { font-weight: 800; text-decoration: underline; }
  .main-content { padding-block: 1.8rem 3.5rem; }
  .home-topline { display: block; }
  .home-lead { grid-template-columns: minmax(0, 1fr); gap: 2rem; }
  .home-lead--single .lead-story:not(.lead-story--text) { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .home-intro { margin-bottom: 1.5rem; }
  .lead-story--text { padding: 1.5rem; min-height: 240px; }
  .lead-title { font-size: clamp(1.95rem, 7vw, 2.8rem); }
  .news-rail { border-left: 0; padding-left: 0; border-top: 1px solid var(--ink); padding-top: 1.25rem; }
  .home-event-grid { grid-template-columns: minmax(0, 1fr); gap: .5rem; }
  .section { margin-top: 3rem; }
  .section-heading { align-items: start; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.4rem; }
  .section-heading .text-link { white-space: normal; }
  .news-grid, .event-grid, .directory-grid { gap: 1.5rem; grid-template-columns: minmax(0, 1fr); }
  .news-card h3 { font-size: 1.65rem; }
  .city-link { min-height: 180px; padding: 1.1rem; }
  .city-link strong { font-size: 1.35rem; overflow-wrap: anywhere; }
  .city-link small { font-size: .78rem; }
  .page-intro { margin-bottom: 1.8rem; }
  .breadcrumbs { margin-bottom: 1.5rem; font-size: .7rem; }
  .article-header h1 { font-size: clamp(2rem, 8vw, 3rem); }
  .article-body { font-size: 1.03rem; line-height: 1.8; }
  .article-body blockquote { font-size: 1.35rem; }
  .source-box, .article-footer { flex-wrap: wrap; }
  .directory-facts > div { grid-template-columns: minmax(0, 1fr); gap: .25rem; padding-inline: 0; }
  .directory-links { columns: 1; }
  .directory-photos { grid-template-columns: minmax(0, 1fr); }
  .event-filters { padding: 1rem; }
  .event-filters-header { flex-wrap: wrap; }
  .event-filter-group a { padding-inline: .65rem; font-size: .76rem; }
  .pagination { font-size: .74rem; gap: .5rem; }
  .empty-state { padding: 1.5rem; }
  .footer-inner { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2rem 1.5rem; }
  .footer-brand { grid-column: 1 / -1; }
  .footer-label { font-size: .64rem; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* City alerts */
.alert-intro { max-width: 760px; }
.alert-filters { border-block: 1px solid var(--line); padding: 1.4rem 0 1.6rem; margin-bottom: 2rem; }
.alert-filters h2 { font-size: 1.4rem; margin-bottom: 1rem; }
.alert-filter-set + .alert-filter-set { margin-top: 1rem; }
.alert-filter-set > p { color: var(--muted); font-size: .72rem; font-weight: 700; margin: 0 0 .4rem; }
.alert-filter-links { display: flex; flex-wrap: wrap; gap: .4rem; }
.alert-filter-links a { display: inline-flex; align-items: center; min-height: 40px; padding: .45rem .8rem; background: var(--paper); border: 1px solid #b9c2b5; border-radius: 3px; font-size: .8rem; text-decoration: none; }
.alert-filter-links a[aria-current="page"] { background: var(--ink); border-color: var(--ink); color: var(--paper); font-weight: 700; }
.alert-filter-links a:hover { text-decoration: underline; }
.alert-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.alert-card { min-width: 0; display: flex; flex-direction: column; background: var(--paper); border: 1px solid var(--line); border-top: 3px solid var(--accent); padding: 1.35rem; }
.alert-card-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .6rem; }
.alert-type { color: var(--muted); font-size: .68rem; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; }
.alert-state { display: inline-flex; align-items: center; padding: .25rem .5rem; background: #e9ece4; color: var(--ink); font-size: .7rem; font-weight: 700; }
.alert-state--current { background: #dcebe4; color: #20553a; }
.alert-state--cancelled { background: #f9e9e4; color: #8a2b25; }
.alert-state--resolved, .alert-state--completed { background: #edf0ec; color: #566358; }
.alert-card h2 { font-size: clamp(1.35rem, 2vw, 1.7rem); margin: 1rem 0 .7rem; overflow-wrap: anywhere; }
.alert-card h2 a { text-decoration: none; }
.alert-time { font-size: .78rem; line-height: 1.65; margin: 0 0 .8rem; }
.alert-time span { color: var(--muted); }
.alert-excerpt { color: var(--muted); font-size: .85rem; line-height: 1.6; margin: 0 0 1rem; }
.alert-more { margin-top: auto; align-self: start; font-size: .82rem; font-weight: 700; text-decoration: none; }
.alert-detail { max-width: 900px; }
.alert-detail .alert-state { margin-top: 1rem; }
.alert-facts { margin-top: 1.6rem; }
.alert-description { max-width: 720px; line-height: 1.8; margin: 1.8rem 0; }
.alert-related-news { border-top: 1px solid var(--line); margin-top: 2rem; padding-top: 1.5rem; }
.alert-related-news h2 { font-size: 1.4rem; }
.alert-related-news ul { padding-left: 1.2rem; }
.alert-related-news li + li { margin-top: .55rem; }
.alert-back { border-top: 1px solid var(--line); margin-top: 2rem; padding-top: 1.2rem; font-size: .84rem; }
.city-status { background: var(--paper); border-top: 3px solid var(--accent); padding: 1.5rem; }
.city-status .section-heading { margin-bottom: 1rem; }
.city-status-count { font-family: var(--serif); font-size: 1.5rem; }
.city-status-types { display: flex; flex-wrap: wrap; gap: .4rem .9rem; margin: .5rem 0; padding: 0; list-style: none; font-size: .78rem; color: var(--muted); }
.city-status-events { border-top: 1px solid var(--line); margin-top: 1rem; padding-top: .8rem; font-size: .82rem; }
.alert-related { margin-top: 2.5rem; }
.alert-related-list { list-style: none; padding: 0; margin: 0; border-top: 1px solid var(--line); }
.alert-related-list li { display: grid; grid-template-columns: minmax(100px, 1fr) minmax(0, 3fr) auto; align-items: baseline; gap: .8rem; padding: .9rem 0; border-bottom: 1px solid var(--line); }
.alert-related-list a { font-family: var(--serif); font-size: 1.1rem; text-decoration: none; overflow-wrap: anywhere; }
.alert-related-time { color: var(--muted); font-size: .75rem; white-space: nowrap; }
@media (max-width: 700px) {
  .alert-grid { grid-template-columns: minmax(0, 1fr); }
  .alert-card { padding: 1.1rem; }
  .alert-related-list li { grid-template-columns: minmax(0, 1fr); gap: .25rem; }
  .alert-related-time { white-space: normal; }
}

/* Visual refresh: one consistent hierarchy for the front page and directories. */
.quick-access { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-block: 1px solid var(--ink); margin-top: 2.4rem; }
.quick-access a { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: .35rem .6rem; align-content: start; min-width: 0; padding: 1.25rem 1.1rem; text-decoration: none; }
.quick-access a + a { border-left: 1px solid var(--line); }
.quick-access a:hover { background: var(--paper); }
.quick-access strong { grid-column: 1; font-family: var(--serif); font-size: 1.45rem; font-weight: 500; line-height: 1.2; overflow-wrap: anywhere; }
.quick-access span:nth-child(2) { grid-column: 1; color: var(--muted); font-size: .8rem; line-height: 1.45; }
.quick-access span:last-child { grid-column: 2; grid-row: 1; align-self: start; }
.quick-access + .section { margin-top: 3.4rem; }
.city-status { border-top: 2px solid var(--ink); padding: 1.3rem 1.5rem 1.5rem; }
.city-status .section-heading { border: 0; padding: 0; }
.city-status-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin-top: 1rem; }
.city-status-list article { min-width: 0; border-top: 1px solid var(--line); padding-top: .9rem; }
.city-status-list h3 { font-size: 1.2rem; line-height: 1.3; margin: .5rem 0; }
.city-status-list h3 a { text-decoration: none; }
.city-status-list p:last-child { color: var(--muted); font-size: .78rem; line-height: 1.45; margin: 0; }
.city-status-list .eyebrow { gap: .55rem; margin: 0; }
.city-status > .text-link { display: inline-block; margin-top: .7rem; }
.featured-places { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; margin: 1.5rem 0 2rem; }
.featured-place { min-width: 0; }
.featured-place > a { display: block; aspect-ratio: 8 / 5; overflow: hidden; background: #e9e8df; }
.featured-place img { display: block; width: 100%; height: 100%; object-fit: cover; }
.featured-place .eyebrow { margin: .9rem 0 .3rem; }
.featured-place h3 { font-size: 1.4rem; }
.featured-place h3 a { text-decoration: none; }
.directory-card--place { padding: 0; border-top: 1px solid var(--line); }
.directory-card-image { display: block; aspect-ratio: 8 / 5; overflow: hidden; background: #e9e8df; }
.directory-card-image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.directory-card-body { padding: 1.5rem; }
.directory-card--place:not(:has(.directory-card-image)) { border-top: 3px solid var(--accent); }
.directory-card--place:not(:has(.directory-card-image)) .directory-card-body { min-height: 100%; }
.directory-card-facts div { display: grid; grid-template-columns: minmax(70px, 28%) minmax(0, 1fr); gap: .5rem; padding-block: .2rem; border-top: 1px solid var(--line); }
.directory-card-facts dd { overflow-wrap: anywhere; }
.directory-hero { margin: 0 0 2rem; }
.directory-hero img { display: block; width: 100%; height: auto; aspect-ratio: 5 / 3; object-fit: cover; }
.directory-hero figcaption { color: var(--muted); font-size: .8rem; margin-top: .5rem; }
.alert-places { border-top: 1px solid var(--line); padding-top: .65rem; color: var(--ink); font-size: .82rem; }
.alert-source { color: var(--muted); font-size: .78rem; margin-bottom: .75rem; }
.alert-card:has(.alert-state--cancelled), .alert-card:has(.alert-state--resolved), .alert-card:has(.alert-state--completed) { border-top-color: var(--line); }
.event-card:has(.event-badge-cancelled) { border-top: 3px solid #8a2b25; }
.event-card:has(.event-badge-cancelled) .event-card-image { filter: grayscale(.55); }
.news-card h2 { font-size: 1.55rem; line-height: 1.22; margin-bottom: .65rem; }
.news-card h2 a { text-decoration: none; }
.news-card h2 a:hover { text-decoration: underline; text-decoration-thickness: 1px; }
.news-grid--index .news-card:first-child { grid-column: span 2; }
.news-grid--index .news-card:first-child h2 { font-size: clamp(1.9rem, 3vw, 2.7rem); }
.news-grid--index .news-card:first-child .card-image { aspect-ratio: 16 / 7; }
.event-card .event-date { font-size: .95rem; font-weight: 650; color: var(--ink); margin: 1rem 0 .35rem; }
.event-card:has(.event-badge-cancelled) .event-date { color: var(--muted); }
@media (max-width: 1000px) {
  .quick-access { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .quick-access a:nth-child(3) { border-left: 0; }
  .quick-access a:nth-child(n+3) { border-top: 1px solid var(--line); }
}
@media (max-width: 700px) {
  .edition-bar p { flex-direction: column; align-items: start; gap: 0; line-height: 1.35; }
  .edition-region { display: inline; }
  .quick-access { margin-top: 1.5rem; }
  .quick-access a { padding: .9rem .75rem; }
  .quick-access strong { font-size: 1.18rem; }
  .quick-access span:nth-child(2) { font-size: .72rem; }
  .city-status { padding: 1rem; }
  .city-status-list, .featured-places { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .city-status-list article + article { margin-top: .25rem; }
  .featured-place > a { aspect-ratio: 16 / 9; }
  .news-grid--index .news-card:first-child { grid-column: auto; }
  .news-grid--index .news-card:first-child .card-image { aspect-ratio: 8 / 5; }
}
@media (max-width: 380px) {
  .edition-bar time { font-size: .62rem; }
  .mobile-navigation nav { grid-template-columns: minmax(0, 1fr); }
  .brand-copy strong { font-size: 1.32rem; }
  .quick-access { grid-template-columns: minmax(0, 1fr); }
  .quick-access a + a { border-left: 0; border-top: 1px solid var(--line); }
}

/* Editorial masthead and reading layouts, revision 2. */
.site-header { background: var(--paper); border-top: 6px solid var(--accent); }
.edition-bar { border-color: var(--line); padding-block: .3rem; flex-wrap: wrap; }
.edition-label { color: var(--accent); }
.header-inner { padding-block: 1.35rem 1.55rem; }
.brand { gap: 1.25rem; }
.brand-mark { flex-basis: 14px; width: 14px; height: 66px; overflow: hidden; color: transparent; background: var(--accent); font-size: 0; }
.brand-copy strong { font-size: clamp(2.3rem, 5.2vw, 4.9rem); line-height: .99; letter-spacing: -.06em; }
.brand-copy small { margin-top: .55rem; font-size: .7rem; font-weight: 650; letter-spacing: .13em; text-transform: uppercase; }
.navigation-wrap { border-top: 1px solid var(--line); border-bottom: 1px solid var(--ink); }
.main-nav { justify-content: space-between; gap: 0 1.5rem; }
.main-nav a { font-size: .78rem; letter-spacing: .08em; text-transform: uppercase; }
.main-nav a:hover, .main-nav a[aria-current="page"] { color: var(--accent); border-bottom-width: 4px; }
.main-content { padding-top: 2.1rem; }
.home-intro { display: grid; grid-template-columns: minmax(0, 1.8fr) minmax(230px, .7fr); align-items: end; gap: 2rem; border-bottom: 1px solid var(--ink); padding: .7rem 0 2.1rem; margin: 0; }
.home-intro h1 { font-size: clamp(3.4rem, 6.3vw, 6.6rem); line-height: .98; letter-spacing: -.06em; margin-bottom: 0; }
.home-intro-copy { border-left: 3px solid var(--accent); padding: .15rem 0 .15rem 1.15rem; }
.home-intro-copy p { font-size: 1.04rem; line-height: 1.5; margin: 0; }
.home-intro + .section { margin-top: 1.8rem; }
.city-status { border: 1px solid var(--line); border-left: 5px solid var(--accent); padding: 1.5rem 2rem; box-shadow: none; }
.city-status .section-heading h2 { font-size: clamp(2rem, 3.5vw, 3.2rem); }
.city-status-count { margin: .4rem 0 1rem; }
.city-status-list h3 { font-size: 1.38rem; }
.quick-access { background: var(--paper); border: 1px solid var(--line); border-top: 3px solid var(--ink); }
.quick-access a { min-height: 130px; padding: 1.4rem; }
.quick-access strong { font-size: 1.65rem; }
.quick-access a:hover, .quick-access a:focus-visible { background: #e9eee9; }
.section-heading { border-top: 1px solid var(--ink); padding-top: 1.2rem; }
.section-heading .kicker { color: var(--accent); }
.section-heading h2 { font-size: clamp(2.2rem, 3.7vw, 3.5rem); }
.home-lead { gap: 2rem; }
.lead-visual { margin-bottom: 1rem; aspect-ratio: 3 / 2; }
.lead-title { font-size: clamp(2.5rem, 4vw, 4.2rem); line-height: 1.05; }
.lead-story--text { border-top: 0; border-left: 5px solid var(--accent); padding: clamp(1.5rem, 3vw, 3rem); }
.news-rail { border-left-color: var(--ink); }
.rail-item h4 { font-size: 1.42rem; }
.home-event-card { border-top-color: var(--ink); }
.event-date-block { border-top: 0; border-left: 3px solid var(--accent); background: var(--paper); }
.city-links { border-top: 3px solid var(--ink); }
.city-link { min-height: 205px; }
.city-link strong { font-size: 1.9rem; }
.page-intro { max-width: 950px; padding-block: .4rem 1.1rem; }
.page-intro h1 { font-size: clamp(3.2rem, 5vw, 5rem); }
.news-grid--index .news-card:first-child .card-image { aspect-ratio: 16 / 8; }
.news-card--text { border-top: 0; border-left: 4px solid var(--accent); }
.article-layout { max-width: 1060px; }
.article-header { max-width: none; padding: clamp(1.5rem, 4vw, 3.5rem); margin: .5rem 0 2rem; background: var(--paper); border-top: 4px solid var(--accent); }
.article-header h1 { max-width: 920px; font-size: clamp(3rem, 5.5vw, 5.4rem); line-height: 1.04; margin-bottom: 1rem; }
.article-header .article-lead { max-width: 760px; margin: 0; font-size: clamp(1.15rem, 2vw, 1.5rem); }
.article-meta { margin-bottom: 1.4rem; }
.article-body { font-size: 1.13rem; line-height: 1.82; }
.article-body a { color: var(--accent); text-decoration-thickness: 1px; }
.guide-sources { max-width: 760px; margin: 3rem auto 0; padding-top: 1.5rem; border-top: 1px solid var(--line); }
.guide-sources h2 { font-size: 1.5rem; margin-bottom: .8rem; }
.guide-sources ul { padding-left: 1.25rem; line-height: 1.8; overflow-wrap: anywhere; }
.guide-sources small { color: var(--muted); }
.directory-card { border-top-color: var(--line); }
.directory-card--organization { border-left: 4px solid var(--accent); }
.directory-card--place:not(:has(.directory-card-image)) { border-top-color: var(--line); border-left: 4px solid var(--accent); }
.directory-card h2 { font-size: 1.85rem; }
.directory-hero img { aspect-ratio: 16 / 9; }
.event-filters { background: var(--paper); border-top: 3px solid var(--ink); border-bottom: 1px solid var(--line); }
.event-filter-group a, .alert-filter-links a { border-radius: 0; }
.event-card { border-top: 3px solid var(--ink); }
.event-card h2 { font-size: 1.9rem; }
.event-card:has(.event-badge-cancelled) { border-top-color: #8a2b25; }
.alert-card { border-top-color: var(--line); border-left: 4px solid var(--line); }
.alert-card:has(.alert-state--current) { border-left-color: #a14e32; }
.alert-card h2 { font-size: 1.8rem; }
.alert-detail { border-top: 4px solid #a14e32; padding-top: 1.5rem; }
.alert-detail:has(.alert-state--resolved), .alert-detail:has(.alert-state--cancelled), .alert-detail:has(.alert-state--completed) { border-top-color: var(--line); }
.empty-state { border-left-width: 5px; padding: clamp(1.4rem, 3vw, 2.6rem); }
.empty-state h2 { font-size: clamp(1.8rem, 3vw, 2.7rem); }
.site-footer { background: var(--ink); color: #f8f7f2; padding-top: 3.4rem; }
.site-footer .kicker, .site-footer .footer-label { color: #b8c7bd; }
.site-footer .footer-brand strong { font-size: clamp(2.2rem, 4vw, 3.7rem); }
.site-footer .footer-brand > p:last-child, .footer-bottom { color: #b8c7bd; }
.footer-links a, .footer-social a, .footer-bottom a { color: #f8f7f2; }
.site-footer a:focus-visible { outline-color: #f8f7f2; }
.footer-bottom { border-top-color: #4b5c52; }
@media (max-width: 1000px) {
  .main-nav { justify-content: start; }
  .home-intro { grid-template-columns: minmax(0, 1.4fr) minmax(200px, .8fr); }
  .quick-access a { padding: 1.1rem; }
}
@media (max-width: 700px) {
  .site-header { border-top-width: 4px; }
  .header-inner { padding-block: 1rem; }
  .brand { gap: .75rem; }
  .brand-mark { flex-basis: 8px; width: 8px; height: 46px; }
  .brand-copy strong { font-size: clamp(1.55rem, 6vw, 2.5rem); line-height: 1.05; }
  .brand-copy small { font-size: .58rem; letter-spacing: .07em; }
  .home-intro { grid-template-columns: minmax(0, 1fr); gap: 1rem; padding: .25rem 0 1.4rem; }
  .home-intro h1 { font-size: clamp(2.65rem, 9vw, 4rem); }
  .home-intro-copy { padding-left: .8rem; }
  .home-intro-copy p { font-size: .93rem; }
  .home-intro + .section { margin-top: 1.2rem; }
  .city-status { padding: 1rem; }
  .city-status .section-heading h2 { font-size: 2rem; }
  .quick-access a { min-height: 112px; padding: .9rem; }
  .quick-access strong { font-size: 1.3rem; }
  .lead-title { font-size: clamp(2.1rem, 7.2vw, 3rem); }
  .page-intro h1 { font-size: clamp(2.6rem, 8vw, 3.7rem); }
  .article-header { padding: 1.4rem 1rem; }
  .article-header h1 { font-size: clamp(2.3rem, 8vw, 3.5rem); }
  .directory-card h2, .event-card h2, .alert-card h2 { font-size: 1.6rem; }
}
@media (max-width: 380px) {
  .brand-copy strong { font-size: 1.42rem; }
  .quick-access a { min-height: 0; }
}

/* Reading and mobile alignment refinements. */
h1, h2, h3, h4 { text-wrap: balance; }
p, li, figcaption { text-wrap: pretty; }
.brand-logo { width: 62px; height: 62px; }
.brand-copy strong { font-size: clamp(2rem, 3vw, 3.3rem); text-wrap: balance; }
.home-intro h1 { font-size: clamp(3rem, 5.4vw, 5rem); line-height: 1.04; }
.eyebrow time, .article-meta time { white-space: nowrap; font-variant-numeric: tabular-nums; }
.news-card .eyebrow, .lead-copy .eyebrow, .rail-item .eyebrow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: baseline;
  column-gap: .8rem;
}
.news-card .eyebrow > span[aria-hidden],
.lead-copy .eyebrow > span[aria-hidden],
.rail-item .eyebrow > span[aria-hidden] { display: none; }
.news-card .eyebrow time, .lead-copy .eyebrow time, .rail-item .eyebrow time {
  display: inline;
  margin: 0;
  text-align: right;
}
.news-card .eyebrow > a, .lead-copy .eyebrow > a { min-width: 0; }
.article-source { max-width: 720px; margin: 2rem auto 0; padding-top: 1rem;
  border-top: 1px solid var(--line); color: var(--muted); font-size: .78rem; }
.article-source a { color: var(--ink); }
.utility-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr));
  border-bottom: 1px solid var(--line); background: var(--paper); }
.utility-links a { display: grid; grid-template-columns: minmax(0, 1fr) auto;
  gap: .1rem .8rem; padding: 1rem 1.4rem; text-decoration: none; min-width: 0; }
.utility-links a + a { border-left: 1px solid var(--line); }
.utility-links a:hover, .utility-links a:focus-visible { background: #e9eee9; }
.utility-links a > span:first-child { color: var(--accent); font-size: .7rem;
  font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.utility-links strong { grid-column: 1; font-family: var(--serif); font-size: 1.2rem;
  font-weight: 500; line-height: 1.25; }
.utility-links a > span:last-child { grid-column: 2; grid-row: 1 / 3; align-self: center; }
.utility-links + .section { margin-top: 3.4rem; }
.article-layout { width: min(100%, 820px); max-width: 820px; }
.breadcrumbs:has(+ .article-layout) { width: min(100%, 820px); margin-inline: auto; }
.article-layout > .article-header,
.article-layout > .article-figure,
.article-layout > .article-body,
.article-layout > .article-source,
.article-layout > .article-footer { width: 100%; max-width: none; margin-inline: 0; }
.article-header { padding: 1.5rem 0 0; background: transparent; border-top: 2px solid var(--ink); }
.article-header h1 { max-width: none; font-size: clamp(2.5rem, 4.2vw, 4.5rem); }
.article-header .article-lead { max-width: none; }
.article-figure img { width: 100%; height: auto; }
.article-body { font-size: 1.08rem; line-height: 1.78; }
.article-source { margin-top: 2rem; }
.news-article-layout { width: 100%; max-width: none; margin-inline: 0; }
.breadcrumbs:has(+ .news-article-layout) { width: 100%; margin-inline: 0; }
.news-article-layout .article-header { width: 100%; max-width: none; margin-inline: 0; }
.news-article-layout .article-header h1 { max-width: 1100px; }
.article-main--with-image { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: start; gap: clamp(1.5rem, 3vw, 3rem); }
.news-article-layout .article-figure { margin: 0; min-width: 0; }
.news-article-layout .article-copy { min-width: 0; }
.news-article-layout .article-body,
.news-article-layout .article-source,
.news-article-layout .article-footer { width: 100%; max-width: none; margin-inline: 0; }
.news-article-layout .article-body { font-size: 1.12rem; }
.quick-access { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.quick-access a:nth-child(3) { border-left: 1px solid var(--line); border-top: 0; }
.featured-places { grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.featured-place:not(:has(> a)) { min-height: 190px; padding: 1.4rem; border-left: 4px solid var(--accent); background: var(--paper); }
.featured-place:not(:has(> a)) .eyebrow { margin-top: 0; }
h1, h2, h3, h4, .quick-access strong, .brand-copy strong { word-break: normal; overflow-wrap: break-word; hyphens: manual; }
.not-found { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1fr); align-items: center; gap: clamp(2rem, 6vw, 6rem); min-height: 55vh; border-top: 2px solid var(--ink); border-bottom: 1px solid var(--line); }
.not-found-number { font-family: var(--serif); font-size: clamp(9rem, 21vw, 20rem); line-height: .85; letter-spacing: -.09em; color: var(--accent); }
.not-found-copy { padding-block: 3rem; }
.not-found-copy h1 { font-size: clamp(3rem, 5.5vw, 5.5rem); margin-bottom: 1rem; }
.not-found-copy > p:not(.kicker) { color: var(--muted); font-size: 1.12rem; max-width: 30rem; }
.not-found-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem 1.5rem; margin-top: 2rem; }
.not-found-actions a { font-weight: 650; }
.not-found-actions .not-found-primary { display: inline-flex; gap: 2rem; justify-content: space-between; min-width: 12rem; padding: .8rem 1.1rem; background: var(--accent); color: var(--on-accent); text-decoration: none; }
.not-found-actions .not-found-primary:hover { filter: brightness(.88); }
.weather-intro { max-width: none; display: flex; flex-wrap: wrap; align-items: end; column-gap: 2rem; }
.weather-intro .kicker { flex-basis: 100%; }
.weather-intro h1 { margin-bottom: .25rem; }
.weather-intro > p:last-child { margin: 0 0 .45rem auto; max-width: 21rem; }
.weather-current { overflow: hidden; padding: clamp(1.5rem, 4vw, 3.5rem); background: linear-gradient(135deg, #e4f0f1 0%, #eef2e9 58%, #f9f1df 100%); border: 1px solid #cddedc; border-top: 4px solid var(--accent); }
.weather-current-main { display: grid; grid-template-columns: minmax(0, 1fr) minmax(180px, .75fr); align-items: center; gap: 1rem; }
.weather-overline { margin-bottom: .5rem; color: var(--accent); font-size: .76rem; font-weight: 750; letter-spacing: .1em; text-transform: uppercase; }
.weather-temperature { margin: 0; font-family: var(--sans); font-size: clamp(7rem, 15vw, 13rem); font-weight: 300; line-height: .9; letter-spacing: -.09em; font-variant-numeric: tabular-nums; white-space: nowrap; }
.weather-temperature span { font-size: .58em; vertical-align: top; letter-spacing: 0; }
.weather-condition { margin: .8rem 0 0; font-family: var(--serif); font-size: clamp(1.6rem, 3vw, 2.5rem); line-height: 1.2; }
.weather-current-visual { display: grid; place-items: center; color: var(--accent); }
.weather-current-visual .weather-icon { width: clamp(9rem, 20vw, 17rem); height: auto; }
.weather-metrics { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin: 2.5rem 0 0; padding-top: 1.3rem; border-top: 1px solid #bfd3d2; }
.weather-metrics div { min-width: 0; }
.weather-metrics dt { color: var(--muted); font-size: .75rem; }
.weather-metrics dd { margin: .3rem 0 0; font-size: 1.05rem; font-weight: 650; }
.weather-stale { margin: 1.4rem 0 0; padding: .7rem 1rem; border-left: 3px solid #987237; background: #fff8e8; font-size: .9rem; }
.weather-forecast { margin-top: 3.5rem; }
.weather-days { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; }
.weather-day { display: grid; grid-template-rows: auto auto 1fr auto auto; gap: .7rem; min-width: 0; padding: 1.4rem; background: var(--paper); border: 1px solid var(--line); }
.weather-day-head { display: flex; justify-content: space-between; gap: .6rem; align-items: baseline; }
.weather-day-label { margin: 0; font-weight: 700; }
.weather-day-head time { color: var(--muted); font-size: .8rem; white-space: nowrap; }
.weather-day .weather-icon { width: 4.5rem; height: 4.5rem; color: var(--accent); }
.weather-day-condition { margin: 0; font-family: var(--serif); font-size: 1.35rem; line-height: 1.22; }
.weather-range { display: flex; gap: .9rem; align-items: baseline; margin: 0; font-family: var(--sans); font-size: 1.65rem; font-variant-numeric: tabular-nums; }
.weather-range strong { font-weight: 650; }
.weather-range span { color: var(--muted); }
.weather-rain-track { height: .35rem; overflow: hidden; border-radius: 1rem; background: #e2e8e5; }
.weather-rain-track span { display: block; height: 100%; border-radius: inherit; background: var(--accent); }
.weather-rain p { margin: .35rem 0 0; color: var(--muted); font-size: .77rem; }
.weather-source { max-width: 54rem; margin-top: 2.2rem; }
.weather-locality-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 1rem; }
.weather-locality { min-width: 0; padding: 1.4rem; background: var(--paper); border: 1px solid var(--line); }
.weather-locality h3 { margin-bottom: 1.2rem; font-size: 1.6rem; }
.weather-locality-now { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.weather-locality-temperature { margin: 0; font-size: 3rem; line-height: 1; font-weight: 600; font-variant-numeric: tabular-nums; }
.weather-locality-temperature span { font-size: 1.4rem; font-weight: 400; }
.weather-locality-now .weather-icon { flex: 0 0 3.5rem; width: 3.5rem; height: 3.5rem; color: var(--accent); }
.weather-locality-condition { margin: .75rem 0 1rem; }
.weather-locality-metrics { margin: 0; padding-top: .8rem; border-top: 1px solid var(--line); font-size: .85rem; }
.weather-locality-metrics > div { display: flex; justify-content: space-between; flex-wrap: wrap; gap: .3rem .8rem; }
.weather-locality-metrics dt { color: var(--muted); }
.weather-locality-metrics dd { margin: 0; font-variant-numeric: tabular-nums; }
.weather-locality-time { margin: 1rem 0 0; font-size: .75rem; color: var(--muted); }
.weather-locality-unavailable { margin-bottom: 0; color: var(--muted); }
.weather-locality .weather-stale { margin-bottom: 0; font-size: .8rem; }
@media (max-width: 900px) {
  .article-main--with-image { grid-template-columns: minmax(0, 1fr); }
  .not-found { grid-template-columns: minmax(0, 1fr); gap: 0; padding-block: 3rem; }
  .not-found-number { font-size: clamp(8rem, 30vw, 15rem); }
  .not-found-copy { padding-block: 1rem; }
  .weather-days { gap: .7rem; }
  .weather-day { padding: 1rem; }
}
@media (max-width: 700px) {
  .weather-intro { display: block; }
  .weather-intro > p:last-child { margin: .8rem 0 0; }
  .weather-current-main { grid-template-columns: minmax(0, 1fr) 6rem; }
  .weather-temperature { font-size: clamp(5.5rem, 22vw, 8rem); }
  .weather-current-visual .weather-icon { width: 6rem; }
  .weather-metrics { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; margin-top: 2rem; }
  .weather-metrics div:last-child { grid-column: 1 / -1; }
  .weather-days { grid-template-columns: minmax(0, 1fr); }
  .weather-day { grid-template-columns: 4.5rem minmax(0, 1fr) auto; grid-template-rows: auto auto auto; column-gap: .9rem; align-items: center; }
  .weather-day-head { grid-column: 2 / 4; grid-row: 1; }
  .weather-day .weather-icon { grid-column: 1; grid-row: 1 / 3; }
  .weather-day-condition { grid-column: 2; grid-row: 2; font-size: 1.15rem; }
  .weather-range { grid-column: 3; grid-row: 2; justify-self: end; font-size: 1.2rem; gap: .4rem; }
  .weather-rain { grid-column: 1 / -1; grid-row: 3; }
  .brand-logo { width: 44px; height: 44px; }
  .brand-copy strong { font-size: clamp(1.45rem, 5.7vw, 2.25rem); }
  .home-intro h1 { font-size: clamp(2.2rem, 8vw, 3.3rem); }
  .main-content--home { display: flex; flex-direction: column; }
  .main-content--home > * { order: 3; }
  .main-content--home > .home-intro { order: 0; }
  .main-content--home > .city-status { order: 1; }
  .main-content--home > .quick-access + .section,
  .main-content--home > .utility-links + .section { order: 1; margin-top: 1.6rem; }
  .main-content--home > .quick-access { order: 2; margin-top: 2rem; }
  .main-content--home > .utility-links { order: 2; margin-top: 0; }
  .quick-access { grid-template-columns: minmax(0, 1fr); }
  .quick-access a + a { border-left: 0; border-top: 1px solid var(--line); }
  .quick-access a:nth-child(3) { border-left: 0; border-top: 1px solid var(--line); }
  .utility-links { grid-template-columns: minmax(0, 1fr); }
  .utility-links a { padding: .85rem 1rem; }
  .utility-links a + a { border-left: 0; border-top: 1px solid var(--line); }
  .news-card .eyebrow, .lead-copy .eyebrow, .rail-item .eyebrow { column-gap: .5rem; }
  .article-header { padding: 1.1rem 0 0; margin-bottom: 1.5rem; }
  .article-header h1 { font-size: clamp(2.1rem, 8vw, 3rem); }
  .article-body { font-size: 1.04rem; line-height: 1.7; }
}
