/* ==========================================================================
   Components
   ========================================================================== */

/* ---------- Sticky header ---------- */
.site-header {
  position: sticky; top: 0; z-index: 100;
  background: rgba(245, 241, 231, .92);
  -webkit-backdrop-filter: saturate(140%) blur(12px);
  backdrop-filter: saturate(140%) blur(12px);
  border-bottom: 1px solid transparent;
  transition: border-color .3s var(--ease), box-shadow .3s var(--ease);
}
.site-header.is-scrolled { border-bottom-color: var(--rule); box-shadow: 0 6px 24px -18px rgba(28, 50, 39, .45); }
.site-header::before { content: ""; display: block; height: 3px; background: linear-gradient(90deg, var(--forest) 0 72%, var(--olive) 72% 92%, var(--copper) 92% 100%); }
.nav-bar { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; height: var(--nav-h); }

.brand { display: flex; align-items: center; gap: .85rem; text-decoration: none; color: var(--ink); flex-shrink: 0; }
.brand-mark {
  width: 40px; height: 40px; display: grid; place-items: center; flex-shrink: 0;
  background: var(--forest); color: var(--cream); font-family: var(--serif); font-size: 1.05rem; letter-spacing: -.02em;
  border-radius: 50% 50% 50% 2px;
}
.brand-text { display: flex; flex-direction: column; line-height: 1.1; }
.brand-name { font-family: var(--serif); font-size: 1.22rem; letter-spacing: -.01em; }
.brand-sub { font-size: .7rem; letter-spacing: .16em; text-transform: uppercase; color: var(--muted); font-weight: 600; margin-top: 3px; }

.primary-nav { display: flex; align-items: center; height: 100%; }
.nav-list { list-style: none; margin: 0; padding: 0; display: flex; align-items: stretch; gap: .25rem; height: 100%; }
.nav-item { position: static; display: flex; align-items: center; }
.nav-trigger, .nav-link {
  display: inline-flex; align-items: center; gap: .4rem; height: 44px; padding: 0 .85rem;
  background: none; border: 0; cursor: pointer; text-decoration: none;
  font-size: .95rem; font-weight: 600; color: var(--ink-2); position: relative;
}
.nav-trigger::after, .nav-link::after {
  content: ""; position: absolute; left: .85rem; right: .85rem; bottom: 6px; height: 1px;
  background: var(--copper); transform: scaleX(0); transform-origin: left; transition: transform .3s var(--ease);
}
.nav-trigger:hover::after, .nav-link:hover::after, .nav-item.is-active > .nav-trigger::after, .nav-link[aria-current="page"]::after, .nav-trigger[aria-expanded="true"]::after { transform: scaleX(1); }
.nav-item.is-active > .nav-trigger, .nav-link[aria-current="page"] { color: var(--forest); }
.nav-trigger .chev { width: 10px; height: 10px; transition: transform .25s var(--ease); }
.nav-trigger[aria-expanded="true"] .chev { transform: rotate(180deg); }
.nav-cta { margin-left: .75rem; min-height: 42px; padding: .55rem 1.1rem; }

/* Mega panel */
.mega {
  position: absolute; left: 0; right: 0; top: 100%;
  background: var(--cream); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule);
  box-shadow: 0 30px 60px -30px rgba(28, 50, 39, .35);
  visibility: hidden; opacity: 0; transform: translateY(-6px);
  transition: opacity .22s var(--ease), transform .22s var(--ease), visibility 0s linear .22s;
}
.nav-item.is-open .mega { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }
.mega-inner { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 3rem; padding-block: 2.25rem 2.5rem; }
.mega-intro .eyebrow { margin-bottom: .8rem; }
.mega-intro p { font-family: var(--serif); font-size: 1.2rem; line-height: 1.45; color: var(--ink-2); font-weight: 300; }
.mega-links { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2.5rem; }
.mega-links a {
  display: grid; grid-template-columns: 2.2rem 1fr; gap: .2rem .4rem; padding: .85rem 0; border-top: 1px solid var(--rule-soft);
  text-decoration: none; color: var(--ink);
}
.mega-links a .n { grid-row: span 2; font-family: var(--serif); color: var(--copper); font-size: .95rem; padding-top: 2px; }
.mega-links a .t { font-weight: 700; font-size: 1rem; }
.mega-links a .d { font-size: .86rem; color: var(--muted); line-height: 1.45; }
.mega-links a:hover .t, .mega-links a[aria-current="page"] .t { color: var(--copper-ink); }
.mega-links a[aria-current="page"] { border-top-color: var(--copper); }

/* Mobile toggle + drawer */
.menu-toggle {
  display: none; align-items: center; gap: .6rem; min-height: 44px; padding: 0 .9rem;
  background: var(--forest); color: var(--cream); border: 0; cursor: pointer; font-weight: 600; font-size: .9rem; border-radius: var(--radius);
}
.menu-toggle .bars { width: 18px; height: 12px; position: relative; }
.menu-toggle .bars span { position: absolute; left: 0; right: 0; height: 2px; background: currentColor; transition: transform .3s var(--ease), opacity .2s; }
.menu-toggle .bars span:nth-child(1) { top: 0; }
.menu-toggle .bars span:nth-child(2) { top: 5px; }
.menu-toggle .bars span:nth-child(3) { top: 10px; }
.menu-toggle[aria-expanded="true"] .bars span:nth-child(1) { transform: translateY(5px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .bars span:nth-child(2) { opacity: 0; }
.menu-toggle[aria-expanded="true"] .bars span:nth-child(3) { transform: translateY(-5px) rotate(-45deg); }

.drawer {
  position: fixed; inset: calc(var(--nav-h) + 3px) 0 0 0; z-index: 99; background: var(--cream);
  overflow-y: auto; -webkit-overflow-scrolling: touch; padding: 1rem var(--gutter) 3rem;
  visibility: hidden; opacity: 0; transform: translateY(-8px);
  transition: opacity .25s var(--ease), transform .25s var(--ease), visibility 0s linear .25s;
}
.drawer.is-open { visibility: visible; opacity: 1; transform: none; transition-delay: 0s; }
.drawer-group { border-bottom: 1px solid var(--rule); }
.drawer-group > button {
  width: 100%; display: flex; justify-content: space-between; align-items: center; min-height: 60px;
  background: none; border: 0; cursor: pointer; font-family: var(--serif); font-size: 1.45rem; text-align: left; padding: .5rem 0; color: var(--ink);
}
.drawer-group > button .pm { font-family: var(--sans); font-size: 1.4rem; color: var(--copper); transition: transform .25s var(--ease); }
.drawer-group > button[aria-expanded="true"] .pm { transform: rotate(45deg); }
.drawer-group ul { list-style: none; margin: 0; padding: 0 0 1rem; display: none; }
.drawer-group.is-open ul { display: block; }
.drawer-group li a { display: flex; align-items: center; min-height: 46px; padding: .3rem 0 .3rem 1rem; border-left: 1px solid var(--rule); text-decoration: none; color: var(--ink-2); font-weight: 500; }
.drawer-group li a[aria-current="page"] { color: var(--copper-ink); border-left: 2px solid var(--copper); font-weight: 700; }
.drawer-foot { margin-top: 2rem; display: grid; gap: 1rem; }
body.no-scroll { overflow: hidden; }

/* ---------- Breadcrumbs ---------- */
.crumbs { padding-top: 1.5rem; }
.crumbs ol { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: .25rem .5rem; font-size: var(--fs-xs); color: var(--muted); }
.crumbs li { display: inline-flex; align-items: center; gap: .5rem; }
.crumbs li + li::before { content: "/"; color: var(--rule); }
.crumbs a { color: var(--muted); text-decoration: none; border-bottom: 1px solid transparent; }
.crumbs a:hover { color: var(--forest); border-bottom-color: var(--copper); }
.crumbs [aria-current] { color: var(--ink); font-weight: 600; }

/* ---------- Page heads (several variants) ---------- */
.page-head { padding-block: clamp(2.5rem, 5vw, 5rem) clamp(2.5rem, 5vw, 4.5rem); }
.page-head h1 { max-width: 16ch; margin-top: 1.1rem; }
.page-head .lede { max-width: 44ch; margin-top: 1.5rem; }
.head-split { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.head-meta { border-top: 1px solid var(--ink); padding-top: 1rem; display: grid; gap: .9rem; }
.head-meta dl { margin: 0; display: grid; grid-template-columns: auto 1fr; gap: .55rem 1.25rem; font-size: var(--fs-sm); }
.head-meta dt { color: var(--muted); }
.head-meta dd { margin: 0; font-weight: 600; }
.head-index { font-family: var(--serif); font-size: clamp(5rem, 12vw, 11rem); line-height: .8; color: var(--stone); font-weight: 300; letter-spacing: -.05em; }

/* ---------- Key facts strip ---------- */
.facts { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--ink); }
.fact { padding: 1.4rem 1.4rem 1.4rem 0; border-right: 1px solid var(--rule); }
.fact + .fact { padding-left: 1.4rem; }
.fact:last-child { border-right: 0; }
.fact .v { font-family: var(--serif); font-size: clamp(2rem, 1.4rem + 2vw, 3.1rem); line-height: 1; color: var(--forest); letter-spacing: -.02em; }
.fact .l { margin-top: .6rem; font-size: var(--fs-sm); color: var(--muted); line-height: 1.45; }
.bg-forest .facts { border-color: var(--on-forest-muted); }
.bg-forest .fact { border-color: rgba(238, 233, 220, .18); }
.bg-forest .fact .v { color: var(--copper-soft); }
.bg-forest .fact .l { color: var(--on-forest-muted); }

/* ---------- Classification labels (Fact / Position / Analysis / Criticism) ---------- */
.tag {
  display: inline-flex; align-items: center; gap: .4rem; padding: .22rem .6rem; font-size: .72rem; font-weight: 700;
  letter-spacing: .1em; text-transform: uppercase; border: 1px solid currentColor; border-radius: 99px; line-height: 1.4; white-space: nowrap;
}
.tag::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }
.tag-fact { color: var(--forest-3); }
.tag-position { color: var(--olive); }
.tag-analysis { color: #5a4f7a; }
.tag-criticism { color: var(--copper-ink); }
.tag-law { color: #2d5866; }
.tag-statement { color: #6b5a2e; }
.bg-forest .tag { color: var(--copper-soft); }
.legend { display: flex; flex-wrap: wrap; gap: .6rem; align-items: center; font-size: var(--fs-sm); color: var(--muted); }

/* ---------- Ledger table ---------- */
.ledger { width: 100%; border-collapse: collapse; font-size: var(--fs-sm); }
.ledger caption { text-align: left; font-size: var(--fs-xs); color: var(--muted); padding-bottom: .8rem; }
.ledger th, .ledger td { text-align: left; vertical-align: top; padding: 1rem 1rem 1rem 0; border-top: 1px solid var(--rule); }
.ledger thead th { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--muted); border-top: 1px solid var(--ink); font-weight: 700; }
.ledger td:first-child, .ledger th[scope="row"] { font-family: var(--serif); color: var(--copper-ink); white-space: nowrap; font-weight: 500; }
.ledger td strong { color: var(--ink); }
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

/* ---------- Editorial panels / chapters ---------- */
.chapter-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--ink); }
.chapter-list li { border-bottom: 1px solid var(--rule); }
.chapter-list a {
  display: grid; grid-template-columns: 5rem minmax(0, 5fr) minmax(0, 6fr) 2rem; gap: 1.5rem; align-items: baseline;
  padding: 1.6rem 0; text-decoration: none; color: var(--ink); transition: background .3s var(--ease), padding .3s var(--ease);
}
.chapter-list a:hover { background: var(--stone-2); padding-inline: 1rem; }
.chapter-list .n { font-family: var(--serif); color: var(--copper); font-size: 1rem; }
.chapter-list .t { font-family: var(--serif); font-size: var(--fs-lg); line-height: 1.2; }
.chapter-list .d { color: var(--muted); font-size: var(--fs-sm); }
.chapter-list .go { font-size: 1.2rem; color: var(--forest); justify-self: end; transition: transform .3s var(--ease); }
.chapter-list a:hover .go { transform: translateX(4px); }
.bg-forest .chapter-list { border-color: var(--on-forest-muted); }
.bg-forest .chapter-list li { border-color: rgba(238, 233, 220, .16); }
.bg-forest .chapter-list a { color: var(--cream); }
.bg-forest .chapter-list a:hover { background: var(--forest-2); }
.bg-forest .chapter-list .d { color: var(--on-forest-muted); }
.bg-forest .chapter-list .go { color: var(--copper-soft); }

/* ---------- Pull quote ---------- */
.pull {
  font-family: var(--serif); font-size: var(--fs-xl); line-height: 1.25; font-weight: 300; color: var(--forest);
  border-left: 2px solid var(--copper); padding-left: clamp(1rem, 3vw, 2rem); margin: 2.5rem 0;
}
.pull cite { display: block; margin-top: 1rem; font-family: var(--sans); font-style: normal; font-size: var(--fs-xs); letter-spacing: .06em; color: var(--muted); line-height: 1.5; }
.pull .tr { display: block; margin-top: .8rem; font-size: .62em; color: var(--ink-2); font-style: italic; }
.bg-forest .pull { color: var(--cream); }
.bg-forest .pull cite { color: var(--on-forest-muted); }

/* ---------- Note / callout ---------- */
.note { background: var(--stone-2); border-left: 3px solid var(--olive); padding: 1.25rem 1.5rem; font-size: var(--fs-sm); color: var(--ink-2); }
.note strong { color: var(--ink); }
.note.copper { border-left-color: var(--copper); }

/* ---------- Aside / sticky TOC ---------- */
.with-toc { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.toc { position: sticky; top: calc(var(--nav-h) + 2rem); font-size: var(--fs-sm); }
.toc h2 { font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin-bottom: 1rem; }
.toc ol { list-style: none; margin: 0; padding: 0; counter-reset: toc; border-left: 1px solid var(--rule); }
.toc li { counter-increment: toc; }
.toc a { display: flex; gap: .7rem; padding: .45rem 0 .45rem 1rem; margin-left: -1px; text-decoration: none; color: var(--muted); border-left: 2px solid transparent; line-height: 1.4; }
.toc a::before { content: counter(toc, decimal-leading-zero); font-family: var(--serif); color: var(--copper); font-size: .85em; }
.toc a:hover, .toc a.is-current { color: var(--forest); border-left-color: var(--copper); }

/* ---------- Generic card (used sparingly) ---------- */
.panel { background: var(--cream); border: 1px solid var(--rule-soft); padding: clamp(1.4rem, 3vw, 2.2rem); }
.panel h3 { margin-bottom: .7rem; }
.panel .meta { font-size: var(--fs-xs); letter-spacing: .1em; text-transform: uppercase; color: var(--muted); font-weight: 700; margin-bottom: .9rem; display: block; }

/* ---------- Case study (major decisions) ---------- */
.case { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(1.5rem, 4vw, 4rem); padding-block: clamp(3rem, 6vw, 5rem); border-top: 1px solid var(--ink); }
.case-aside { position: sticky; top: calc(var(--nav-h) + 1.5rem); align-self: start; }
.case-no { font-family: var(--serif); font-size: clamp(3.5rem, 8vw, 6.5rem); line-height: .85; color: var(--copper); font-weight: 300; }
.case-aside h3 { font-size: var(--fs-xl); margin-top: 1rem; }
.case-aside .period { margin-top: .9rem; font-weight: 700; font-size: var(--fs-sm); color: var(--olive); letter-spacing: .04em; }
.case-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2.5rem; margin: 0; }
.case-fields div { padding: 1.1rem 0; border-top: 1px solid var(--rule); }
.case-fields div.wide { grid-column: 1 / -1; }
.case-fields dt { font-size: .72rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; color: var(--muted); margin-bottom: .45rem; display: flex; gap: .5rem; align-items: center; }
.case-fields dt span { font-family: var(--serif); color: var(--copper); letter-spacing: 0; font-size: .9rem; }
.case-fields dd { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.65; }

/* ---------- Dossier (controversies) ---------- */
.dossier { border: 1px solid var(--rule); background: var(--cream); margin-bottom: 2rem; }
.dossier-head { display: grid; grid-template-columns: auto 1fr auto; gap: 1.25rem; align-items: center; padding: 1.25rem 1.5rem; border-bottom: 1px solid var(--rule); background: var(--stone-2); }
.dossier-head .ref { font-family: var(--serif); color: var(--copper-ink); font-size: 1.1rem; }
.dossier-head h2, .dossier-head h3 { font-size: var(--fs-lg); }
.dossier-head time { font-size: var(--fs-xs); font-weight: 700; letter-spacing: .08em; color: var(--muted); text-transform: uppercase; white-space: nowrap; }
.dossier-body { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.dossier-body section { padding: 1.4rem 1.5rem; border-right: 1px solid var(--rule-soft); }
.dossier-body section:last-child { border-right: 0; }
.dossier-body h3, .dossier-body h4 { font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--olive); margin-bottom: .6rem; }
.dossier-body p { font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.65; }
.dossier-foot { padding: 1rem 1.5rem; border-top: 1px solid var(--rule-soft); font-size: var(--fs-sm); color: var(--ink-2); }
.dossier-foot strong { color: var(--copper-ink); }

/* ---------- Accordion (political positions) ---------- */
.acc { border-top: 1px solid var(--ink); }
.acc-item { border-bottom: 1px solid var(--rule); }
.acc-item h3 { margin: 0; font-size: inherit; }
.acc-btn {
  width: 100%; display: grid; grid-template-columns: 3.5rem 1fr auto; gap: 1rem; align-items: center; text-align: left;
  padding: 1.5rem 0; background: none; border: 0; cursor: pointer; color: var(--ink);
}
.acc-btn .n { font-family: var(--serif); color: var(--copper); }
.acc-btn .t { font-family: var(--serif); font-size: var(--fs-lg); line-height: 1.2; }
.acc-btn .t small { display: block; font-family: var(--sans); font-size: var(--fs-sm); color: var(--muted); margin-top: .3rem; font-weight: 400; }
.acc-btn .pm { width: 40px; height: 40px; border: 1px solid var(--rule); border-radius: 50%; display: grid; place-items: center; font-size: 1.2rem; color: var(--forest); transition: transform .3s var(--ease), background .3s; }
.acc-btn[aria-expanded="true"] .pm { transform: rotate(45deg); background: var(--forest); color: var(--cream); border-color: var(--forest); }
.acc-panel { padding: 0 0 2rem 4.5rem; }
.acc-panel[hidden] { display: none; }
.no-js .acc-panel[hidden] { display: block; }

/* ---------- Tabs (Bundestag periods) ---------- */
.tabs { display: flex; gap: 0; overflow-x: auto; border-bottom: 1px solid var(--rule); scrollbar-width: thin; }
.tab {
  flex: 1 0 auto; min-width: 120px; padding: 1rem 1.1rem; background: none; border: 0; border-bottom: 3px solid transparent; cursor: pointer;
  text-align: left; color: var(--muted); margin-bottom: -1px;
}
.tab .y { display: block; font-family: var(--serif); font-size: 1.35rem; color: var(--ink); }
.tab .s { display: block; font-size: var(--fs-xs); margin-top: .2rem; }
.tab[aria-selected="true"] { border-bottom-color: var(--copper); background: var(--cream); }
.tab[aria-selected="true"] .y { color: var(--forest); }
.tab-panel { padding: 2.5rem 0 0; }
.tab-panel[hidden] { display: none; }

/* ---------- Timeline ---------- */
.tl-controls { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 2rem; }
.chip {
  min-height: 40px; padding: .4rem 1rem; background: transparent; border: 1px solid var(--rule); border-radius: 99px; cursor: pointer;
  font-size: var(--fs-sm); font-weight: 600; color: var(--ink-2); transition: all .2s var(--ease);
}
.chip:hover { border-color: var(--forest); }
.chip[aria-pressed="true"] { background: var(--forest); color: var(--cream); border-color: var(--forest); }

.htl-wrap { position: relative; }
.htl { list-style: none; margin: 0; padding: 0 0 1.5rem; display: grid; grid-auto-flow: column; grid-auto-columns: minmax(280px, 300px); gap: 0; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: thin; scrollbar-color: var(--olive-2) var(--stone-2); }
.htl > li { scroll-snap-align: start; position: relative; padding: 3.25rem 1.75rem 0 0; }
.htl > li::before { content: ""; position: absolute; left: 0; right: 0; top: 1.15rem; height: 1px; background: var(--ink); }
.htl > li::after { content: ""; position: absolute; left: 0; top: calc(1.15rem - 6px); width: 13px; height: 13px; border-radius: 50%; background: var(--ivory); border: 2px solid var(--copper); }
.htl > li.is-major::after { background: var(--copper); }
.htl .when { font-family: var(--serif); font-size: 1.7rem; color: var(--forest); line-height: 1; }
.htl .when small { display: block; font-family: var(--sans); font-size: var(--fs-xs); color: var(--muted); margin-top: .4rem; letter-spacing: .04em; }
.htl .era { display: inline-block; margin-top: .8rem; font-size: .7rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--olive); }
.htl h3 { font-size: 1.15rem; margin: .5rem 0 .5rem; }
.htl p { font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.6; }
.htl a.more { font-size: var(--fs-sm); font-weight: 600; color: var(--forest); text-decoration: none; border-bottom: 1px solid var(--copper); }
.htl > li[hidden] { display: none; }
.htl-nav { display: flex; gap: .5rem; justify-content: flex-end; margin-bottom: 1rem; }
.htl-nav button { width: 46px; height: 46px; border-radius: 50%; border: 1px solid var(--forest); background: transparent; color: var(--forest); cursor: pointer; font-size: 1.1rem; }
.htl-nav button:hover { background: var(--forest); color: var(--cream); }

/* Vertical ledger timeline (used on several pages) */
.vtl { list-style: none; margin: 0; padding: 0; }
.vtl li { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: 1.5rem; padding: 1.4rem 0; border-top: 1px solid var(--rule); }
.vtl .y { font-family: var(--serif); font-size: 1.35rem; color: var(--copper-ink); line-height: 1.2; }
.vtl h3, .vtl h4 { font-family: var(--serif); font-size: 1.2rem; font-weight: 500; margin-bottom: .35rem; }
.vtl p { font-size: var(--fs-sm); color: var(--ink-2); }
.bg-forest .vtl li { border-color: rgba(238, 233, 220, .16); }
.bg-forest .vtl .y { color: var(--copper-soft); }
.bg-forest .vtl p { color: var(--on-forest-muted); }

/* ---------- Filter / search ---------- */
.filter-bar { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 1rem; align-items: center; margin-bottom: 2rem; padding: 1rem; background: var(--cream); border: 1px solid var(--rule-soft); }
.search { position: relative; }
.search input { width: 100%; min-height: 50px; padding: .75rem 1rem .75rem 2.8rem; border: 1px solid var(--rule); background: var(--white); border-radius: var(--radius); }
.search input:focus { border-color: var(--forest); outline: none; box-shadow: 0 0 0 3px rgba(164, 93, 50, .2); }
.search svg { position: absolute; left: .95rem; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--muted); }
.result-count { font-size: var(--fs-sm); color: var(--muted); }
.empty-state { padding: 2rem; text-align: center; color: var(--muted); border: 1px dashed var(--rule); display: none; }
.empty-state.is-visible { display: block; }

.record { display: grid; grid-template-columns: 9rem minmax(0, 1fr) minmax(0, 12rem); gap: 1.5rem; padding: 1.5rem 0; border-top: 1px solid var(--rule); align-items: start; }
.record[hidden] { display: none; }
.record .when { font-family: var(--serif); color: var(--copper-ink); font-size: 1.05rem; }
.record h3 { font-size: 1.2rem; margin-bottom: .4rem; }
.record p { font-size: var(--fs-sm); color: var(--ink-2); }
.record .kind { justify-self: end; display: flex; flex-wrap: wrap; gap: .4rem; justify-content: flex-end; }

/* ---------- Gallery ---------- */
.masonry { columns: 3 300px; column-gap: var(--gutter); }
.masonry .tile { break-inside: avoid; margin-bottom: var(--gutter); }
.tile button { display: block; width: 100%; padding: 0; border: 0; background: var(--stone-2); cursor: zoom-in; position: relative; }
.tile img { width: 100%; height: auto; transition: opacity .3s var(--ease); }
.tile button:hover img { opacity: .9; }
.tile figcaption { margin-top: .7rem; font-size: var(--fs-xs); color: var(--muted); line-height: 1.5; }
.tile figcaption a { color: var(--forest); font-weight: 600; text-decoration: none; border-bottom: 1px solid var(--copper-soft); }

.lightbox { position: fixed; inset: 0; z-index: 300; background: rgba(20, 30, 24, .94); display: none; align-items: center; justify-content: center; padding: 4.5rem 1rem 1.5rem; }
.lightbox.is-open { display: flex; }
.lightbox figure { max-width: min(1200px, 100%); max-height: 100%; display: flex; flex-direction: column; align-items: center; }
.lightbox img { max-width: 100%; max-height: calc(100vh - 10rem); width: auto; height: auto; object-fit: contain; }
.lightbox figcaption { color: var(--on-forest); font-size: var(--fs-sm); margin-top: 1rem; text-align: center; max-width: 60ch; }
.lb-btn { position: absolute; width: 48px; height: 48px; border-radius: 50%; border: 1px solid rgba(255, 255, 255, .35); background: rgba(0, 0, 0, .25); color: #fff; cursor: pointer; font-size: 1.3rem; display: grid; place-items: center; }
.lb-close { top: 1rem; right: 1rem; }
.lb-prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.lb-next { right: 1rem; top: 50%; transform: translateY(-50%); }

/* ---------- Forms ---------- */
.form { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.4rem 1.5rem; }
.field { display: flex; flex-direction: column; gap: .45rem; }
.field.wide { grid-column: 1 / -1; }
.field label, .field legend { font-size: var(--fs-sm); font-weight: 700; color: var(--ink); }
.field .req { color: var(--copper-ink); font-weight: 700; }
.field .opt { color: var(--muted); font-weight: 400; font-size: var(--fs-xs); }
.field input, .field select, .field textarea {
  width: 100%; min-height: 52px; padding: .8rem 1rem; background: var(--white); border: 1px solid var(--rule);
  border-radius: var(--radius); font-size: 1rem; transition: border-color .2s, box-shadow .2s;
}
.field textarea { min-height: 170px; resize: vertical; line-height: 1.6; }
.field select { appearance: none; -webkit-appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%231c3227' stroke-width='1.6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 1rem center; padding-right: 2.5rem; }
.field input:focus, .field select:focus, .field textarea:focus { outline: none; border-color: var(--forest); box-shadow: 0 0 0 3px rgba(164, 93, 50, .2); }
.field.has-error input, .field.has-error select, .field.has-error textarea { border-color: #a3341f; background: #fdf6f3; }
.field .err { display: none; font-size: var(--fs-xs); color: #9b2f1b; font-weight: 600; }
.field .err::before { content: "! "; }
.field.has-error .err { display: block; }
.check { display: grid; grid-template-columns: 24px 1fr; gap: .8rem; align-items: start; font-size: var(--fs-sm); color: var(--ink-2); }
.check input { width: 22px; height: 22px; min-height: 0; margin: 2px 0 0; accent-color: var(--forest); }
.form-status { grid-column: 1 / -1; display: none; padding: 1.25rem 1.5rem; border-left: 3px solid var(--forest); background: var(--stone-2); font-size: var(--fs-sm); }
.form-status.is-visible { display: block; }
.form-status.is-error { border-left-color: #a3341f; background: #fbeeea; }
.form-status h3 { font-size: 1.2rem; margin-bottom: .4rem; }

/* ---------- Pager (continue reading) ---------- */
.pager { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); border-top: 1px solid var(--ink); }
.pager a { display: block; padding: 2rem 0; text-decoration: none; color: var(--ink); }
.pager a + a { text-align: right; border-left: 1px solid var(--rule); padding-left: 2rem; }
.pager a:first-child { padding-right: 2rem; }
.pager .k { font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.pager .t { display: block; font-family: var(--serif); font-size: var(--fs-lg); margin-top: .4rem; transition: color .2s; }
.pager a:hover .t { color: var(--copper-ink); }
.related { display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.25rem; }
.related a { display: inline-flex; align-items: center; min-height: 40px; padding: .4rem 1rem; border: 1px solid var(--rule); border-radius: 99px; text-decoration: none; font-size: var(--fs-sm); font-weight: 600; color: var(--forest); background: var(--cream); }
.related a:hover { border-color: var(--copper); color: var(--copper-ink); }

/* ---------- Footer ---------- */
.site-footer { background: var(--charcoal); color: #cfd0c6; padding-top: clamp(3.5rem, 6vw, 6rem); font-size: var(--fs-sm); }
.foot-top { display: grid; grid-template-columns: minmax(0, 4fr) repeat(3, minmax(0, 2fr)) minmax(0, 3fr); gap: 2.5rem; padding-bottom: 3rem; border-bottom: 1px solid #3a3d39; }
.foot-brand .brand-name { color: #f4efe3; font-size: 1.6rem; }
.foot-brand p { margin-top: 1rem; color: #a9ab9f; max-width: 34ch; line-height: 1.6; }
.site-footer h2 { font-family: var(--sans); font-size: .72rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; color: var(--copper-soft); margin-bottom: 1.1rem; }
.site-footer ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.site-footer a { color: #e3e1d6; text-decoration: none; }
.site-footer a:hover { color: #fff; text-decoration: underline; text-decoration-color: var(--copper); text-underline-offset: .2em; }
.foot-contact p { margin: 0 0 .4rem; color: #e3e1d6; }
.foot-contact .who { font-family: var(--serif); font-size: 1.2rem; color: #f4efe3; margin-bottom: .6rem; }
.socials { display: flex; flex-wrap: wrap; gap: .55rem; margin-top: 1.4rem; }
.social {
  width: 44px; height: 44px; border-radius: 50%; display: grid; place-items: center; border: 1px solid #4a4d48; color: #8f9187; cursor: not-allowed; background: transparent; padding: 0;
}
.social svg { width: 18px; height: 18px; }
.socials-note { font-size: var(--fs-xs); color: #8f9187; margin-top: .7rem; line-height: 1.5; }
.foot-bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem; padding-block: 1.6rem; font-size: var(--fs-xs); color: #a9ab9f; }
.foot-bottom a { color: #f4efe3; font-weight: 600; }
.foot-bottom .end-session { background: none; border: 0; color: #a9ab9f; cursor: pointer; text-decoration: underline; text-underline-offset: .2em; padding: 0; font-size: inherit; }
.foot-bottom .end-session:hover { color: #fff; }

/* ---------- Topo / contour decorative SVG ---------- */
.topo { position: absolute; pointer-events: none; color: var(--olive-2); opacity: .22; }
.bg-forest .topo { color: var(--sage); opacity: .14; }

/* ==========================================================================
   Page compositions
   ========================================================================== */

/* ---------- Home ---------- */
.home-hero { position: relative; overflow: hidden; padding-block: clamp(2.5rem, 5vw, 5rem) clamp(3rem, 6vw, 6rem); }
.hero-topo { width: 70%; right: -6%; bottom: -4%; }
.hero-grid { position: relative; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5.5rem); align-items: center; }
.hero-name { font-size: clamp(3.4rem, 1.4rem + 8.2vw, 9.5rem); line-height: .9; letter-spacing: -.045em; margin: 1.4rem 0 0; font-weight: 300; font-variation-settings: "SOFT" 50, "opsz" 144; }
.hero-name span { display: block; }
.hero-name .ind { padding-left: clamp(1.5rem, 7vw, 7rem); color: var(--forest); font-style: italic; font-weight: 300; }
.hero-intro { margin-top: 2rem; max-width: 48ch; font-size: var(--fs-md); line-height: 1.6; color: var(--ink-2); }
.hero-meta { margin: 2.2rem 0 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 2rem; max-width: 40rem; }
.hero-meta div { border-top: 1px solid var(--rule); padding: .8rem 0; }
.hero-meta dt { font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--muted); font-weight: 700; }
.hero-meta dd { margin: .2rem 0 0; font-weight: 600; font-size: var(--fs-sm); }
.hero-actions { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2rem; }
.hero-portrait { position: relative; justify-self: end; width: 100%; max-width: 470px; padding-right: 2.2rem; }
.hero-portrait .fig-mat { box-shadow: var(--shadow); }
.hero-vert {
  position: absolute; right: 0; top: 0; bottom: 3.5rem; margin: 0; writing-mode: vertical-rl;
  font-size: .72rem; letter-spacing: .2em; text-transform: uppercase; font-weight: 700; color: var(--olive);
  border-left: 1px solid var(--rule); padding-left: .5rem; text-align: right;
}

.intro-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 6vw, 6rem); }
.intro-side h2 { margin-top: 1rem; position: sticky; top: calc(var(--nav-h) + 2rem); }

.journey-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.journey-steps { list-style: none; margin: 0; padding: 0; counter-reset: step; }
.journey-steps li { position: relative; padding: 0 0 2.2rem 3.5rem; border-left: 1px solid var(--rule); margin-left: .6rem; }
.journey-steps li:last-child { padding-bottom: 0; }
.journey-steps li::before { counter-increment: step; content: counter(step, upper-roman); position: absolute; left: -1.1rem; top: -.2rem; width: 2.2rem; height: 2.2rem; border-radius: 50%; background: var(--ivory); border: 1px solid var(--copper); display: grid; place-items: center; font-family: var(--serif); font-size: .85rem; color: var(--copper-ink); }
.journey-steps .js-y { font-size: .75rem; font-weight: 700; letter-spacing: .12em; color: var(--olive); text-transform: uppercase; }
.journey-steps h3 { margin: .35rem 0 .5rem; }
.journey-steps p { color: var(--ink-2); font-size: var(--fs-sm); max-width: 54ch; margin-bottom: .7rem; }
.journey-fig { position: sticky; top: calc(var(--nav-h) + 2rem); }

.areas { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--ink); border-left: 1px solid var(--rule); }
.areas li { border-right: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.areas a { display: flex; flex-direction: column; height: 100%; padding: 1.6rem 1.4rem 1.8rem; text-decoration: none; color: var(--ink); transition: background .3s var(--ease); }
.areas a:hover { background: var(--cream); }
.areas .n { font-family: var(--serif); color: var(--copper); font-size: 1rem; }
.areas h3 { margin: 1.6rem 0 .6rem; font-size: 1.45rem; }
.areas p { font-size: var(--fs-sm); color: var(--muted); line-height: 1.55; }

.lead-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 5vw, 5rem); }
.now-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--gutter); }
.now-grid .panel { display: flex; flex-direction: column; }
.now-grid .panel p { font-size: var(--fs-sm); color: var(--ink-2); margin-bottom: 1.2rem; }
.now-grid .panel .text-link { margin-top: auto; align-self: flex-start; }

@media (max-width: 1024px) {
  .areas { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .journey-grid { grid-template-columns: 1fr; }
  .journey-fig { position: static; max-width: 640px; }
  .now-grid { grid-template-columns: 1fr; }
}
@media (max-width: 860px) {
  .hero-grid { grid-template-columns: 1fr; }
  .hero-portrait { justify-self: start; max-width: 420px; }
  .intro-grid { grid-template-columns: 1fr; gap: 1.5rem; }
  .intro-side h2 { position: static; }
  .lead-cols { grid-template-columns: 1fr; }
}
@media (max-width: 520px) {
  .areas { grid-template-columns: 1fr; }
  .hero-meta { grid-template-columns: 1fr; }
  .hero-portrait { padding-right: 1.8rem; }
}

/* ---------- Early life ---------- */
.el-top { display: grid; grid-template-columns: minmax(0, 8fr) minmax(0, 4fr); gap: 2rem; align-items: end; }
.el-year { justify-self: end; color: var(--stone); }
.el-card-band { padding-block: clamp(2rem, 4vw, 3.5rem); }
.el-card { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.el-card dl { margin: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 2rem; }
.el-card dl div { border-top: 1px solid rgba(238, 233, 220, .22); padding: 1rem 0; }
.el-card dt { font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--sage); font-weight: 700; }
.el-card dd { margin: .3rem 0 0; font-family: var(--serif); font-size: 1.25rem; color: var(--cream); line-height: 1.3; }
.el-map { color: var(--on-forest); width: 100%; max-width: 420px; justify-self: end; }
.el-body { display: grid; gap: clamp(3rem, 6vw, 5rem); }
.el-chapter { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: var(--gutter); }
.el-n { font-family: var(--serif); font-size: clamp(3rem, 7vw, 6rem); line-height: .9; color: var(--copper); font-weight: 300; border-top: 1px solid var(--ink); padding-top: 1rem; }
.el-note { max-width: calc(var(--readw) + 0px); margin-left: auto; margin-right: 0; width: 100%; }
@media (max-width: 860px) {
  .el-top, .el-card, .el-chapter { grid-template-columns: 1fr; }
  .el-year { justify-self: start; font-size: 5rem; }
  .el-card dl { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .el-map { justify-self: start; }
  .el-n { font-size: 2.6rem; display: flex; }
}
@media (max-width: 420px) { .el-card dl { grid-template-columns: 1fr; } }

/* ---------- Education ---------- */
.ladder { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); position: relative; }
.ladder::before { content: ""; position: absolute; left: 0; right: 0; top: 2.35rem; height: 1px; background: var(--ink); }
.ladder li { position: relative; padding: 3.6rem 1.2rem 0 0; }
.ladder li::before { content: ""; position: absolute; top: calc(2.35rem - 7px); left: 0; width: 15px; height: 15px; border-radius: 50%; background: var(--cream); border: 2px solid var(--olive); }
.ladder li.is-end::before { background: var(--copper); border-color: var(--copper); }
.ladder .ld-y { position: absolute; top: 0; left: 0; font-family: var(--serif); font-size: 1.15rem; color: var(--forest); }
.ladder .ld-k { font-size: .7rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; color: var(--copper-ink); }
.ladder h3 { font-size: 1.15rem; margin: .35rem 0 .35rem; }
.ladder p { font-size: var(--fs-sm); color: var(--muted); line-height: 1.5; }
.ed-grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.ed-aside { position: sticky; top: calc(var(--nav-h) + 2rem); }
@media (max-width: 1024px) {
  .ladder { grid-template-columns: repeat(3, minmax(0, 1fr)); row-gap: 2.5rem; }
  .ladder::before { display: none; }
  .ladder li { border-top: 1px solid var(--ink); padding-top: 2.6rem; }
  .ladder li::before { top: -8px; }
  .ladder .ld-y { top: .6rem; left: 1.4rem; }
  .ed-grid { grid-template-columns: 1fr; }
  .ed-aside { position: static; }
}
@media (max-width: 600px) { .ladder { grid-template-columns: 1fr 1fr; } }
@media (max-width: 380px) { .ladder { grid-template-columns: 1fr; } }

/* ---------- Political beginnings: sticky split ---------- */
.pb-split { padding-bottom: var(--section); }
.pb-grid { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.pb-media { position: sticky; top: calc(var(--nav-h) + 1.5rem); }
.pb-facts { margin-top: 2rem; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.pb-facts .fact .v { font-size: 1.7rem; }
.pb-facts .fact { padding-right: .8rem; }
.pb-facts .fact + .fact { padding-left: .8rem; }
.pb-step { padding: 0 0 3rem; margin-bottom: 3rem; border-bottom: 1px solid var(--rule); }
.pb-step:last-child { border-bottom: 0; margin-bottom: 0; }
.pb-when { font-family: var(--serif); font-size: 1.1rem; color: var(--copper-ink); margin-bottom: .4rem; }
.pb-step h2 { font-size: var(--fs-xl); margin-bottom: 1rem; }
.pb-step p { color: var(--ink-2); }
@media (max-width: 960px) {
  .pb-grid { grid-template-columns: 1fr; }
  .pb-media { position: static; }
}
@media (max-width: 520px) {
  .pb-facts { grid-template-columns: 1fr 1fr; }
  .pb-facts .fact:nth-child(3) { padding-left: 0; }
}

/* ---------- Transport ---------- */
.tr-head-grid, .pw-head-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.tr-fig { justify-self: end; width: 100%; }
.tr-body > section { margin-bottom: clamp(3.5rem, 6vw, 5.5rem); }
.tr-body > section:last-child { margin-bottom: 0; }
.tr-body .vtl { max-width: 52rem; }
.chart-bars { margin: 2.5rem 0; padding: clamp(1.25rem, 3vw, 2rem); background: var(--cream); border: 1px solid var(--rule-soft); max-width: 52rem; }
.chart-bars figcaption { display: flex; flex-direction: column; gap: .25rem; margin-bottom: 1.5rem; }
.chart-bars figcaption strong { font-family: var(--serif); font-weight: 500; font-size: 1.2rem; }
.chart-bars figcaption span { font-size: var(--fs-xs); color: var(--muted); }
.bar { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) 8rem; gap: 1rem; align-items: center; padding: .7rem 0; border-top: 1px solid var(--rule-soft); }
.bl { font-weight: 700; font-size: var(--fs-sm); }
.bt { height: 14px; background: var(--stone-2); position: relative; }
.bf { position: absolute; inset: 0 auto 0 0; width: var(--w); background: var(--forest); }
.bf.rail { background: var(--olive); }
.bf.water { background: var(--copper); }
.bv { font-family: var(--serif); font-size: 1.05rem; text-align: right; }
.bv small { font-family: var(--sans); font-size: .75rem; color: var(--muted); margin-left: .3rem; }
@media (max-width: 860px) {
  .tr-head-grid { grid-template-columns: 1fr; }
  .tr-fig { justify-self: start; }
}
@media (max-width: 520px) {
  .bar { grid-template-columns: 1fr auto; }
  .bt { grid-column: 1 / -1; grid-row: 2; }
}

/* ---------- Digital infrastructure: technology editorial variant ---------- */
.dg { background: var(--forest); color: var(--on-forest);
  background-image: linear-gradient(rgba(238,233,220,.045) 1px, transparent 1px), linear-gradient(90deg, rgba(238,233,220,.045) 1px, transparent 1px);
  background-size: 48px 48px; }
.page-digital-infrastructure .crumbs { background: var(--forest); max-width: none; padding-inline: max(var(--gutter), calc((100vw - var(--maxw)) / 2 + var(--gutter))); padding-bottom: .5rem; margin: 0; }
.page-digital-infrastructure .crumbs a, .page-digital-infrastructure .crumbs li { color: var(--on-forest-muted); }
.page-digital-infrastructure .crumbs [aria-current] { color: var(--cream); }
.dg h1, .dg h2, .dg h3 { color: var(--cream); }
.dg h1 em, .dg h2 em { color: var(--copper-soft); }
.dg .eyebrow { color: var(--sage); }
.dg .lede { color: var(--on-forest); }
.dg .prose p, .dg .prose li { color: var(--on-forest); }
.dg .prose a { color: var(--copper-soft); text-decoration-color: rgba(226,185,148,.5); }
.dg .tag { color: var(--copper-soft); }
.dg .tag-fact { color: #b9d3bf; }
.dg .tag-analysis { color: #cbc3e6; }
.dg .tag-position { color: #d6d9b4; }
.dg .pull { color: var(--cream); margin: 0; }
.dg .pull cite, .dg .pull .tr { color: var(--on-forest-muted); }
.dg-head { padding-block: clamp(2.5rem, 5vw, 5rem) clamp(2rem, 4vw, 3.5rem); }
.dg-head h1 { margin-top: 1.1rem; }
.dg-head .lede { margin-top: 1.5rem; max-width: 46ch; }
.dg-head-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.dg-spec { margin: 0; border: 1px solid rgba(238,233,220,.22); background: rgba(16, 30, 23, .55); }
.dg-spec div { display: grid; grid-template-columns: 9.5rem 1fr; gap: 1rem; padding: .85rem 1.1rem; border-bottom: 1px solid rgba(238,233,220,.12); }
.dg-spec div:last-child { border-bottom: 0; }
.dg-spec dt { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; color: var(--sage); font-weight: 700; padding-top: .15rem; }
.dg-spec dd { margin: 0; color: var(--cream); font-weight: 600; font-size: var(--fs-sm); }
.dg-figure-band { padding-bottom: clamp(3rem, 6vw, 5rem); }
.dg-fig { max-width: 1067px; margin-inline: auto; }
.dg-fig img { border: 1px solid rgba(238,233,220,.2); }
.dg-fig figcaption { color: var(--on-forest-muted); }
.dg-section { padding-block: clamp(3rem, 6vw, 5rem); border-top: 1px solid rgba(238,233,220,.14); }
.dg-last { padding-bottom: var(--section); }
.dg-sec-head { margin-bottom: 2.5rem; display: grid; gap: .8rem; }
.dg-code { font-size: .78rem; letter-spacing: .16em; text-transform: uppercase; font-weight: 700; color: var(--copper-soft); }
.dg-sec-head h2 { font-size: var(--fs-xl); max-width: 26ch; }
.dg-cols { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.dg-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 1px; background: rgba(238,233,220,.14); border: 1px solid rgba(238,233,220,.14); }
.dg-steps li { background: var(--forest); padding: 1.4rem 1.3rem 1.6rem; }
.dg-steps .d { font-size: .78rem; font-weight: 700; letter-spacing: .08em; color: var(--copper-soft); }
.dg-steps h3 { font-size: 1.15rem; margin: .5rem 0 .5rem; }
.dg-steps p { font-size: var(--fs-sm); color: var(--on-forest-muted); line-height: 1.6; }
@media (max-width: 860px) {
  .dg-head-grid, .dg-cols { grid-template-columns: 1fr; }
  .dg-spec div { grid-template-columns: 1fr; gap: .2rem; }
}

/* ---------- Biography ---------- */
.bio-head h1 { max-width: 20ch; }
.bio-intro { padding-bottom: clamp(1rem, 3vw, 2rem); }
.bio-intro-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(1.5rem, 4vw, 4rem); align-items: start; }
.bio-card { background: var(--forest); color: var(--on-forest); padding: clamp(1.4rem, 3vw, 2.2rem); }
.bio-card h2 { font-family: var(--sans); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--copper-soft); font-weight: 700; margin-bottom: 1rem; }
.bio-card dl { margin: 0; display: grid; grid-template-columns: 8.5rem 1fr; }
.bio-card dt, .bio-card dd { padding: .6rem 0; border-top: 1px solid rgba(238,233,220,.14); font-size: var(--fs-sm); }
.bio-card dt { color: var(--sage); }
.bio-card dd { margin: 0; color: var(--cream); font-weight: 600; }
.bio-text section { padding-bottom: 1rem; }
.bio-text section + section { border-top: 1px solid var(--rule); padding-top: 2.4rem; margin-top: 1.4rem; }
.bio-text h2 { margin-top: 0 !important; }
@media (max-width: 960px) { .bio-intro-grid { grid-template-columns: 1fr; } }
@media (max-width: 420px) { .bio-card dl { grid-template-columns: 1fr; } .bio-card dd { border-top: 0; padding-top: 0; } }

/* ---------- CSU career ---------- */
.csu-head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.csu-fig { justify-self: end; }
.csu-structure { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.csu-diagram { display: grid; gap: 1.6rem; position: relative; }
.node { border: 1px solid var(--rule); background: var(--white); padding: 1.1rem 1.25rem; display: grid; gap: .2rem; position: relative; }
.node .k { font-size: .7rem; letter-spacing: .14em; text-transform: uppercase; color: var(--olive); font-weight: 700; }
.node strong { font-family: var(--serif); font-weight: 500; font-size: 1.2rem; }
.node > span:last-child { font-size: var(--fs-sm); color: var(--muted); }
.node.top { background: var(--forest); border-color: var(--forest); }
.node.top strong { color: var(--cream); font-size: 1.6rem; }
.node.top .k { color: var(--sage); }
.node.top > span:last-child { color: var(--on-forest-muted); }
.node.hl { border: 2px solid var(--copper); }
.node.joint { background: var(--stone-2); }
.node-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.node-row::before { content: ""; position: absolute; }
.csu-diagram .node + .node-row .node::before, .csu-diagram .node.joint::before { content: ""; position: absolute; left: 50%; top: -1.6rem; height: 1.6rem; border-left: 1px dashed var(--olive-2); }
.csu-sg-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.csu-sg-grid .pull { margin-top: 0; }
@media (max-width: 960px) {
  .csu-head, .csu-structure, .csu-sg-grid { grid-template-columns: 1fr; }
  .csu-fig { justify-self: start; }
}
@media (max-width: 480px) { .node-row { grid-template-columns: 1fr; } .node-row .node + .node::before { display: none; } }

/* ---------- Bundestag ---------- */
.bt-head { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.bt-res-title { font-size: var(--fs-lg); margin-bottom: 2rem; }
.bt-results { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: clamp(.5rem, 2vw, 1.5rem); align-items: end; }
.bt-col { display: flex; flex-direction: column; align-items: center; justify-content: flex-end; height: 100%; }
.bt-col .col { width: 100%; max-width: 90px; height: calc(var(--h) * 3px); background: linear-gradient(180deg, var(--olive-2), var(--forest-3)); border-top: 2px solid var(--copper-soft); }
.bt-col.is-last .col { background: linear-gradient(180deg, var(--copper), var(--copper-ink)); }
.bt-col .pct { font-family: var(--serif); font-size: clamp(1rem, 2vw, 1.5rem); color: var(--cream); margin-bottom: .5rem; }
.bt-col .yr { display: block; width: 100%; text-align: center; border-top: 1px solid var(--on-forest-muted); padding-top: .6rem; font-size: var(--fs-sm); color: var(--on-forest-muted); font-weight: 700; }
.bt-results { margin-bottom: 1rem; }
.bt-panel { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(1.5rem, 4vw, 4rem); }
.bt-panel[hidden] { display: none; }
.bt-panel-meta { display: grid; gap: .25rem; align-content: start; border-top: 1px solid var(--ink); padding-top: 1rem; }
.bt-panel-meta span { font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--muted); font-weight: 700; margin-top: .8rem; }
.bt-panel-meta span:first-child { margin-top: 0; }
.bt-panel-meta strong { font-family: var(--serif); font-weight: 500; font-size: 1.15rem; }
.bt-panel h3 { font-size: var(--fs-xl); margin-bottom: 1rem; }
@media (max-width: 860px) {
  .bt-head, .bt-panel { grid-template-columns: 1fr; }

  .bt-col .col { height: calc(var(--h) * 2.4px); }
}
.pw-head-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.pw-head-grid .fig { justify-self: end; }
.records { border-bottom: 1px solid var(--rule); }
@media (max-width: 860px) { .pw-head-grid { grid-template-columns: 1fr; } .pw-head-grid .fig { justify-self: start; } }

/* ---------- Political leadership ---------- */
.pl-hero .wrap { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 0; align-items: stretch; }
.pl-fig { align-self: start; }
.pl-fig img { border-right: 0; }
.pl-hero-text { padding: clamp(1.5rem, 3vw, 2.5rem); }
.pl-hero-text ul { list-style: none; margin: 1.2rem 0 0; padding: 0; }
.pl-hero-text li { padding: .8rem 0; border-top: 1px solid rgba(238,233,220,.16); color: var(--on-forest); font-size: var(--fs-sm); }
.pl-hero-text strong { display: block; font-family: var(--serif); font-weight: 400; font-size: 1.6rem; color: var(--copper-soft); }
.pl-rows { border-top: 1px solid var(--ink); }
.pl-row { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 5fr) minmax(0, 4fr); gap: clamp(1.25rem, 3vw, 3rem); padding: 2.2rem 0; border-bottom: 1px solid var(--rule); }
.pl-row h2 { font-size: var(--fs-lg); line-height: 1.2; }
.pl-row h2 span { display: block; font-size: 1rem; color: var(--copper); margin-bottom: .4rem; }
.pl-row p { margin-top: .8rem; font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.7; }
.pl-an { background: var(--stone-2); padding: 1.1rem 1.25rem; align-self: start; }
@media (max-width: 960px) {
  .pl-hero .wrap { grid-template-columns: 1fr; }
  .pl-row { grid-template-columns: 1fr; }
}

/* ---------- Ministerial career ---------- */
.mc-title { font-size: clamp(3rem, 1.6rem + 6vw, 7rem); max-width: 14ch !important; }
.mc-compare { padding-bottom: clamp(2rem, 4vw, 3rem); }
.mc-cols { display: grid; grid-template-columns: 1fr 1fr; border: 1px solid var(--ink); }
.mc-col { padding: clamp(1.5rem, 3.5vw, 3rem); background: var(--cream); }
.mc-col.dark { background: var(--forest); color: var(--on-forest); }
.mc-act { font-family: var(--serif); font-style: italic; font-size: 1.2rem; color: var(--copper); }
.mc-col.dark .mc-act { color: var(--copper-soft); }
.mc-col h2 { font-size: var(--fs-xl); margin: .4rem 0 1.4rem; }
.mc-col.dark h2 { color: var(--cream); }
.mc-col dl { margin: 0; display: grid; grid-template-columns: 9rem 1fr; }
.mc-col dt, .mc-col dd { padding: .65rem 0; border-top: 1px solid var(--rule); font-size: var(--fs-sm); }
.mc-col.dark dt, .mc-col.dark dd { border-color: rgba(238,233,220,.16); }
.mc-col dt { color: var(--muted); }
.mc-col.dark dt { color: var(--sage); }
.mc-col dd { margin: 0; font-weight: 600; }
.mc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(2rem, 5vw, 5rem); }
.mc-grid h3 { margin-top: 2rem; }
.mc-grid .prose > h3:first-child { margin-top: 0; }
.mc-image .fig { max-width: 1000px; margin-inline: auto; }
@media (max-width: 860px) {
  .mc-cols, .mc-grid { grid-template-columns: 1fr; }
  .mc-col dl { grid-template-columns: 1fr; }
  .mc-col dd { border-top: 0; padding-top: 0; }
}

/* ---------- Migration & domestic ---------- */
.md-jump { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.25rem; }
.md-jump a { display: inline-flex; align-items: center; min-height: 40px; padding: .35rem .95rem; border: 1px solid var(--rule); border-radius: 99px; text-decoration: none; font-size: var(--fs-sm); font-weight: 600; color: var(--forest); background: var(--white); }
.md-jump a:hover { border-color: var(--copper); color: var(--copper-ink); }
.md-measure { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 3.5fr) minmax(0, 4fr); border-top: 1px solid var(--ink); }
.md-measure > div { padding: 1.5rem 1.5rem 1.75rem 0; }
.md-measure > div + div { padding-left: 1.5rem; border-left: 1px solid var(--rule); }
.md-measure p { margin-top: .9rem; font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.7; }
.md-pos blockquote { margin-top: .9rem; font-family: var(--serif); font-size: 1.1rem; line-height: 1.45; color: var(--forest); }
.md-pos .tr { font-style: italic; }
.md-crit { background: rgba(164, 93, 50, .06); }
.md-fig { margin-top: clamp(2.5rem, 5vw, 4rem); max-width: 1000px; }
.md-sec h3 { color: var(--cream); margin-bottom: .6rem; }
.md-sec > div { border-top: 1px solid rgba(238,233,220,.18); padding-top: 1.25rem; }
.md-sec p { font-size: var(--fs-sm); line-height: 1.7; }
.md-civil { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.md-civil-fig { position: sticky; top: calc(var(--nav-h) + 2rem); }
@media (max-width: 1024px) {
  .md-measure { grid-template-columns: 1fr; }
  .md-measure > div, .md-measure > div + div { padding: 1.25rem 0; border-left: 0; border-top: 1px solid var(--rule); }
  .md-crit { padding-inline: 1rem !important; }
  .md-civil { grid-template-columns: 1fr; }
  .md-civil-fig { position: static; }
}

/* ---------- Policy positions ---------- */
.pp-grid { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 9fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.pp-topic { padding: 2.2rem 0; border-top: 1px solid var(--ink); }
.pp-topic:first-child { padding-top: 0; border-top: 0; }
.pp-topic h2 { font-size: var(--fs-xl); margin-bottom: 1.25rem; }
.pp-items { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.pp-items li { display: grid; grid-template-columns: 11rem minmax(0, 1fr); gap: 1.25rem; padding: 1rem 0; border-top: 1px solid var(--rule-soft); align-items: start; }
.pp-items .tag { justify-self: start; margin-top: .2rem; }
.pp-items p { font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.7; }
@media (max-width: 1024px) { .pp-grid { grid-template-columns: 1fr; } }
@media (max-width: 640px) { .pp-items li { grid-template-columns: 1fr; gap: .5rem; } }

/* ---------- Political positions ---------- */
.ppos-head { display: grid; grid-template-columns: minmax(0, 6fr) minmax(0, 6fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.ppos-fig { justify-self: end; }
.acc-tools { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 1rem; margin-bottom: 1.5rem; }
.acc-panel p { font-size: var(--fs-sm); }
@media (max-width: 860px) { .ppos-head { grid-template-columns: 1fr; } .ppos-fig { justify-self: start; } }

/* ---------- Speeches ---------- */
.ss-head { background: var(--charcoal); color: #e8e5da; padding-block: clamp(2.5rem, 5vw, 5rem); }
.page-speeches-statements .crumbs { background: var(--charcoal); max-width: none; padding-inline: max(var(--gutter), calc((100vw - var(--maxw)) / 2 + var(--gutter))); padding-bottom: .5rem; }
.page-speeches-statements .crumbs a, .page-speeches-statements .crumbs li { color: #a9ab9f; }
.page-speeches-statements .crumbs [aria-current] { color: #f4efe3; }
.ss-head h1 { color: #f4efe3; margin-top: 1rem; }
.ss-head h1 em { color: var(--copper-soft); }
.ss-head .eyebrow { color: var(--sage); }
.ss-head .lede { color: #d6d3c8; margin-top: 1.5rem; max-width: 40ch; }
.ss-head-grid { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 5vw, 5rem); align-items: center; }
.ss-fig figcaption { color: #a9ab9f; }
.record.ss { grid-template-columns: 8rem minmax(0, 1fr) 10rem; }
.record.ss blockquote { font-family: var(--serif); font-size: clamp(1.15rem, 1rem + .6vw, 1.45rem); line-height: 1.4; color: var(--forest); font-weight: 400; }
.record.ss .en { margin-top: .7rem; font-style: italic; color: var(--ink-2); }
.record.ss .src { margin-top: .6rem; font-size: var(--fs-xs); color: var(--muted); }
@media (max-width: 960px) { .ss-head-grid { grid-template-columns: 1fr; } }
@media (max-width: 860px) { .record.ss { grid-template-columns: 1fr; } }

/* ---------- Major decisions ---------- */
.md-head h1 { max-width: 14ch; }
.md-index-band { padding-block: 1.5rem; position: sticky; top: calc(var(--nav-h) + 3px); z-index: 20; }
.md-index { list-style: none; margin: 0; padding: 0; display: flex; gap: .4rem; overflow-x: auto; scrollbar-width: none; }
.md-index::-webkit-scrollbar { display: none; }
.md-index a { display: inline-flex; align-items: baseline; gap: .45rem; white-space: nowrap; padding: .45rem .9rem; border: 1px solid rgba(238,233,220,.25); border-radius: 99px; text-decoration: none; color: var(--cream); font-size: var(--fs-sm); font-weight: 600; }
.md-index a span { font-family: var(--serif); color: var(--copper-soft); font-weight: 400; }
.md-index a:hover { background: var(--forest-2); border-color: var(--copper-soft); }
.md-cases { padding-bottom: var(--section); }
.md-cases .case { scroll-margin-top: calc(var(--nav-h) + 90px); }
.md-cases .case:first-child { border-top: 0; }

/* ---------- Achievements ledger ---------- */
.ach-list { display: grid; gap: 1.25rem; }
.ach { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); background: var(--white); border: 1px solid var(--rule-soft); }
.ach header { padding: clamp(1.25rem, 3vw, 2rem); border-right: 1px solid var(--rule-soft); background: var(--ivory); }
.ach-n { font-family: var(--serif); font-size: 2.6rem; line-height: 1; color: var(--copper); font-weight: 300; }
.ach h2 { font-size: var(--fs-lg); margin-top: .8rem; }
.ach-p { margin-top: .6rem; font-size: var(--fs-sm); font-weight: 700; color: var(--olive); letter-spacing: .04em; }
.ach dl { margin: 0; padding: .5rem clamp(1.25rem, 3vw, 2rem); }
.ach dl div { display: grid; grid-template-columns: 8rem minmax(0, 1fr); gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--rule-soft); }
.ach dl div:last-child { border-bottom: 0; }
.ach dt { font-size: .72rem; letter-spacing: .12em; text-transform: uppercase; font-weight: 700; color: var(--muted); padding-top: .2rem; }
.ach dd { margin: 0; font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.65; }
.ach .lim dt { color: var(--copper-ink); }
@media (max-width: 860px) {
  .ach { grid-template-columns: 1fr; }
  .ach header { border-right: 0; border-bottom: 1px solid var(--rule-soft); }
}
@media (max-width: 520px) { .ach dl div { grid-template-columns: 1fr; gap: .25rem; } }

/* ---------- Controversies ---------- */
.dossier-head h2 { font-family: var(--serif); font-weight: 500; }
.dossier-body h3 { font-family: var(--sans); font-weight: 700; line-height: 1.4; }
.dossier { scroll-margin-top: calc(var(--nav-h) + 1.5rem); }
.cv-head { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 5rem); align-items: end; }
.cv-fig { justify-self: end; }
.cv-index ol { margin: 1rem 0 0; padding: 0; list-style: none; columns: 3 220px; column-gap: 2rem; counter-reset: cv; }
.cv-index li { counter-increment: cv; break-inside: avoid; border-top: 1px solid var(--rule-soft); }
.cv-index a { display: flex; gap: .7rem; padding: .6rem 0; text-decoration: none; color: var(--ink-2); font-size: var(--fs-sm); font-weight: 600; }
.cv-index a::before { content: "C-" counter(cv, decimal-leading-zero); font-family: var(--serif); font-weight: 400; color: var(--copper-ink); min-width: 2.6rem; }
.cv-index a:hover { color: var(--copper-ink); }
@media (max-width: 860px) { .cv-head { grid-template-columns: 1fr; } .cv-fig { justify-self: start; } }

/* ---------- International ---------- */
.ie-feature { padding-bottom: var(--section); }
.ie-feature-grid { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 5vw, 4.5rem); align-items: start; }
.ie-feature-text h2 { font-size: var(--fs-xl); margin: .6rem 0 1.25rem; }
.ie-feature-text .vtl li { grid-template-columns: 7.5rem minmax(0, 1fr); }
.ie-formats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0; border-top: 1px solid var(--ink); }
.ie-formats article { padding: 1.5rem 1.5rem 1.5rem 0; }
.ie-formats article + article { padding-left: 1.5rem; border-left: 1px solid var(--rule); }
.ie-formats .d { font-family: var(--serif); color: var(--copper-ink); font-size: 1.05rem; }
.ie-formats h3 { font-size: 1.2rem; margin: .5rem 0 .6rem; }
.ie-formats p { font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.65; }
.ie-atlas { columns: 3 300px; column-gap: var(--gutter); }
.ie-country { break-inside: avoid; margin-bottom: var(--gutter); padding: 1.5rem; background: var(--cream); border: 1px solid var(--rule-soft); }
.ie-country h3 { display: flex; align-items: center; gap: .8rem; font-size: 1.3rem; margin-bottom: .9rem; }
.ie-country .cc { display: inline-grid; place-items: center; min-width: 2.6rem; height: 2.6rem; padding: 0 .4rem; border-radius: 50%; background: var(--forest); color: var(--cream); font-family: var(--sans); font-size: .75rem; font-weight: 700; letter-spacing: .06em; }
.ie-country p { font-size: var(--fs-sm); color: var(--ink-2); line-height: 1.7; }
@media (max-width: 1024px) {
  .ie-feature-grid { grid-template-columns: 1fr; }
  .ie-formats { grid-template-columns: 1fr 1fr; }
  .ie-formats article:nth-child(3) { padding-left: 0; border-left: 0; }
  .ie-formats article:nth-child(n+3) { border-top: 1px solid var(--rule); }
}
@media (max-width: 600px) {
  .ie-formats { grid-template-columns: 1fr; }
  .ie-formats article, .ie-formats article + article { padding: 1.25rem 0; border-left: 0; }
  .ie-formats article + article { border-top: 1px solid var(--rule); }
  .ie-feature-text .vtl li { grid-template-columns: 1fr; }
}

/* ---------- Timeline page ---------- */
.tl-top { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-start; gap: 1rem; }
.tl-top .tl-controls { margin-bottom: 1rem; }
.htl-full { margin-top: 1rem; }
.htl-full > li { min-height: 260px; }
@media (max-width: 760px) { .htl-full > li { min-height: 0; } }
.htl-full .more { display: inline-block; margin-top: .4rem; }

/* ---------- Gallery ---------- */
.gal-group + .gal-group { border-top: 1px solid var(--rule); }
.gal-group:last-of-type { padding-bottom: var(--section); }
.gal-head { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin-bottom: 1.5rem; border-top: 1px solid var(--ink); padding-top: 1rem; }
.gal-head h2 { font-size: var(--fs-xl); }
.gal-head span { font-size: var(--fs-sm); color: var(--muted); }
.tile.native { max-width: var(--native); }
.tile figcaption a { margin-left: .25rem; }

/* ---------- Legacy ---------- */
.lg-head h1 { max-width: 14ch; }
.lg-grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.lg-side { position: sticky; top: calc(var(--nav-h) + 2rem); }
.lg-stats { margin: 2rem 0 0; display: grid; grid-template-columns: 1fr 1fr; border-top: 1px solid var(--ink); }
.lg-stats div { padding: 1rem 1rem 1rem 0; border-bottom: 1px solid var(--rule); }
.lg-stats div:nth-child(even) { padding-left: 1rem; border-left: 1px solid var(--rule); }
.lg-stats dt { font-size: var(--fs-xs); color: var(--muted); line-height: 1.4; }
.lg-stats dd { margin: .3rem 0 0; font-family: var(--serif); font-size: 2.4rem; color: var(--forest); line-height: 1; }
.lg-essay h2 { font-size: var(--fs-xl); }
@media (max-width: 960px) { .lg-grid { grid-template-columns: 1fr; } .lg-side { position: static; } }

/* ---------- Contact ---------- */
.ct-grid { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: clamp(2rem, 5vw, 5rem); align-items: start; }
.ct-card { background: var(--forest); color: var(--on-forest); padding: clamp(1.5rem, 3vw, 2.5rem); position: sticky; top: calc(var(--nav-h) + 2rem); }
.ct-card .eyebrow { color: var(--sage); }
.ct-card h2 { color: var(--cream); font-size: var(--fs-xl); margin: .8rem 0 1.5rem; }
.ct-lines { list-style: none; margin: 0; padding: 0; }
.ct-lines li { display: grid; gap: .2rem; padding: 1rem 0; border-top: 1px solid rgba(238,233,220,.16); }
.ct-lines .k { font-size: .72rem; letter-spacing: .13em; text-transform: uppercase; color: var(--sage); font-weight: 700; }
.ct-lines a { color: var(--cream); font-family: var(--serif); font-size: 1.3rem; text-decoration: none; word-break: break-word; }
.ct-lines a:hover { color: var(--copper-soft); }
.ct-note { margin-top: 1.5rem; font-size: var(--fs-xs); color: var(--on-forest-muted); line-height: 1.6; }
.ct-form-wrap h2 { font-size: var(--fs-xl); }
@media (max-width: 960px) { .ct-grid { grid-template-columns: 1fr; } .ct-card { position: static; } }
.acc-item h2 { margin: 0; font-size: 1rem; font-family: var(--sans); font-weight: 400; letter-spacing: 0; line-height: 1.4; }
.acc-btn .n { font-size: 1.1rem; }

/* Contrast safeguards on dark bands */
.bg-forest .sec-head p, .bg-forest .small, .bg-forest .muted { color: var(--on-forest-muted); }
.bg-forest .note { background: var(--forest-2); color: var(--on-forest); }
.site-footer .brand-mark { background: var(--copper); }
