/* Self-hosted from Google Fonts, latin + latin-ext only. Regenerate with the script
   recorded in HANDOVER.md if the family list ever changes. */
/* latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/web/ibmplexmono-latin-ext-normal.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/fonts/web/ibmplexmono-latin-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/web/inter-latin-ext-normal.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Inter';
  font-style: normal;
  font-weight: 400 700;
  font-display: swap;
  src: url(/assets/fonts/web/inter-latin-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
/* latin-ext */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/web/sourceserif4-latin-ext-normal.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
  font-family: 'Source Serif 4';
  font-style: normal;
  font-weight: 400 600;
  font-display: swap;
  src: url(/assets/fonts/web/sourceserif4-latin-normal.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* Financing Europe · brand system v3.1 (pinned 13 Aug 2026)
   "Working light, full depth."
   The navy family and the wordmark device are pulled from the live brand at
   financing-europe.com: marine navy ground #00264B, caps serif wordmark set
   between hairline rules. The architecture is ours: one deep register used
   full-bleed, one live accent, confident sans display type, numbered hairline
   sections, flat surfaces. The serif carries the wordmark, standfirsts,
   questions and figures only. Nunito and Lexend Deca from the 2026 site are
   retired. The brand sheet lives at /brand/. */

:root {
  /* grounds */
  --paper: #FCFCFC;        /* default ground */
  --paper-warm: #F4F4F3;   /* panel zones */
  --paper-deep: #ECEDEF;   /* closed register on light surfaces */
  /* ink */
  --ink: #16181D;
  --ink-soft: #545860;
  --rule: #DFE0E2;
  /* the deep register: the brand marine navy, from financing-europe.com */
  --navy: #00264B;
  --navy-deep: #001C39;
  --on-navy: #F2F6FA;
  --on-navy-soft: #8FA6C4;
  --on-navy-rule: rgba(242, 246, 250, .18);
  /* the one interactive colour: azure, the bright member of the brand blue ramp */
  --accent: #0D6EDD;
  --accent-deep: #0A56AE;
  --accent-on-navy: #79A9F5;
  /* strand palette: classifies content only, never interactive (MoD topic accents) */
  --s-capital: #0D6EDD;
  --s-tech: #6246C9;
  --s-energy: #0B8A7B;
  --s-defence: #B26A00;
  --s-health: #B02E60;
  --graphite: #7A7E87;     /* tertiary marks: folios, hosted tier dot on light */
  /* type */
  --serif: "Source Serif 4", Georgia, serif;
  --sans: "Inter", ui-sans-serif, system-ui, sans-serif;
  --mono: "IBM Plex Mono", ui-monospace, monospace;
  --max: 1200px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; scroll-padding-top: 136px; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition: none !important; }
}
.visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--navy); color: #fff; padding: 10px 18px; font-size: 14px;
}
.skip-link:focus { left: 0; color: #fff; text-decoration: none; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; border-radius: 2px; }
.hero :focus-visible, footer :focus-visible, .room-card.r-hosted :focus-visible { outline-color: var(--accent-on-navy); }
.btn:focus-visible { outline-color: var(--ink); }
.hero .btn:focus-visible { outline-color: #fff; }
body {
  background: var(--paper);
  color: var(--ink);
  font-family: var(--sans);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
}
::selection { background: var(--accent); color: var(--paper); }

img { max-width: 100%; height: auto; }
a { color: var(--accent); text-decoration: none; }
a:hover { color: var(--accent-deep); text-decoration: underline; text-underline-offset: 3px; }

.wrap { max-width: var(--max); margin: 0 auto; padding: 0 24px; }

/* ---------- type ----------
   Display is the sans, set tight and confident. The serif is reserved for
   standfirsts, the organising question and the figures. */
h1, h2 { font-family: var(--sans); font-weight: 650; letter-spacing: -0.022em; }
h3 { font-family: var(--sans); font-weight: 600; letter-spacing: -0.01em; }
h1 { font-size: clamp(38px, 4.6vw, 58px); line-height: 1.08; }
h2 { font-size: clamp(32px, 3.6vw, 48px); line-height: 1.1; }
h3 { font-size: 19px; line-height: 1.35; }
.lede { font-family: var(--serif); font-weight: 400; font-size: 20px; line-height: 1.6; }
.smallcaps {
  font-family: var(--sans); font-weight: 500; font-size: 11.5px;
  letter-spacing: 0.09em; text-transform: uppercase; color: var(--ink-soft);
}
.smallcaps.accent { color: var(--accent); }
.mono { font-family: var(--mono); font-size: 14px; font-variant-numeric: tabular-nums; color: var(--ink-soft); }
.muted { color: var(--ink-soft); }

/* ---------- rules & rhythm ---------- */
section { padding: 100px 0; border-top: 1px solid var(--rule); }
#rooms, #editions { padding-top: 130px; }
#convening { padding: 140px 0 110px; }
section.flush { border-top: 0; }
.shead { display: flex; align-items: baseline; gap: 18px; margin-bottom: 56px; }
.shead .no { font-family: var(--mono); font-size: 15px; color: var(--accent); line-height: 1; letter-spacing: .04em; }
.shead h2 { flex: 1; }

/* ---------- nav ---------- */
.nav {
  position: sticky; top: 0; z-index: 50;
  background: var(--paper);
  border-bottom: 1px solid var(--rule);
}
@supports (backdrop-filter: blur(6px)) {
  .nav { background: color-mix(in srgb, var(--paper) 97%, transparent); backdrop-filter: blur(6px); }
}
.nav .wrap { display: flex; align-items: center; gap: 28px; height: 64px; }
/* the wordmark is the brand's one serif display moment: caps, letterspaced,
   after the financing-europe.com lockup */
.wordmark { font-family: var(--serif); font-weight: 600; font-size: 15.5px; color: var(--ink); letter-spacing: .07em; text-transform: uppercase; white-space: nowrap; }
.wordmark:hover { text-decoration: none; color: var(--ink); }
.wordmark .yr { color: var(--accent); font-weight: 500; }
.nav-links { display: flex; gap: 22px; margin-left: auto; align-items: center; }
.nav-links a { font-size: 14.5px; font-weight: 500; color: var(--ink); }
.nav-links a:hover { color: var(--accent); text-decoration: none; }
.btn {
  display: inline-block; padding: 13px 26px; border-radius: 3px;
  font-family: var(--sans); font-size: 15px; font-weight: 500;
  background: var(--accent); color: #fff; border: 1px solid var(--accent);
}
.btn:hover { background: var(--accent-deep); border-color: var(--accent-deep); color: #fff; text-decoration: none; }
.btn.ghost { background: transparent; color: var(--ink); border: 1px solid var(--ink); }
.btn.ghost:hover { border-color: var(--accent); color: var(--accent); background: transparent; }
.btn.text { background: none; border: 0; color: var(--accent); padding: 11px 4px; }
.btn.text:hover { text-decoration: underline; }

/* ---------- hero: the deep register, full bleed ---------- */
.hero { background: var(--navy-deep); color: var(--on-navy); padding: 96px 0 92px; border-top: 0; }
.hero h1 { color: #fff; max-width: 17ch; }
.hero .smallcaps { color: var(--accent-on-navy); }
.hero .dateline { margin: 32px 0 36px; font-size: 17px; color: var(--on-navy); }
.hero .routes { display: flex; gap: 14px; flex-wrap: wrap; align-items: center; }
.hero .btn.ghost { color: var(--on-navy); border-color: rgba(242, 244, 249, .45); }
.hero .btn.ghost:hover { color: #fff; border-color: #fff; }
.hero .btn.text { color: var(--accent-on-navy); }
.hero p { color: var(--on-navy-soft); }
.hero .lede { color: var(--on-navy); }

/* the stat band: the event's structure in big numerals (MoD device; no delegate counts) */
.hero-stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--on-navy-rule); border-top: 1px solid var(--on-navy-rule); margin-top: 72px; }
.hero-stats .hs { background: var(--navy-deep); padding: 30px 28px 34px; }
.hero-stats .n { font-family: var(--serif); font-size: clamp(36px, 3.6vw, 54px); font-weight: 500; color: #fff; line-height: 1; }
.hero-stats .l { font-size: 13.5px; color: var(--on-navy-soft); margin-top: 8px; max-width: 20ch; }

/* the ticker: the 2026 room, moving quietly along the hero's foot (MoD device) */
.ticker { border-top: 1px solid var(--on-navy-rule); overflow: hidden; padding: 14px 0; }
.ticker-track { display: inline-flex; gap: 56px; white-space: nowrap; animation: tick 70s linear infinite; will-change: transform; }
.ticker-track span { font-family: var(--mono); font-size: 13px; color: var(--on-navy-soft); }
.ticker-track b { color: var(--on-navy); font-weight: 500; }
.ticker-label { color: var(--accent-on-navy) !important; letter-spacing: .08em; }
@keyframes tick { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .ticker-track { animation: none; } }

/* the edition kicker: a boxed caption, after the live site's device */
.ed-kicker {
  display: inline-block; border: 1px solid var(--on-navy-rule); padding: 6px 14px;
  font-family: var(--sans); font-weight: 500; font-size: 11px;
  letter-spacing: .14em; text-transform: uppercase; color: var(--on-navy-soft);
}

/* the wordmark lockup: caps serif between hairline rules, tagline beneath,
   after the financing-europe.com identity */
.lockup { margin-top: 30px; }
.lockup h1 {
  font-family: var(--serif); font-weight: 560; text-transform: uppercase;
  letter-spacing: .045em; font-size: clamp(34px, 4.3vw, 60px); line-height: 1.05; color: #fff;
}
.lockup .tagline {
  font-family: var(--sans); font-weight: 500; font-size: clamp(19px, 1.9vw, 25px);
  color: var(--on-navy); border-top: 1px solid var(--on-navy-rule);
  margin-top: 20px; padding-top: 16px; max-width: 34ch;
}

/* the wordmark image: the brand logotype, pulled from financing-europe.com */
.wm-img { display: block; width: 100%; max-width: 700px; height: auto; }

/* portraits: circular, hairline ring, only as names confirm */
.portrait { width: 96px; height: 96px; border-radius: 50%; object-fit: cover; border: 2px solid var(--navy); background: var(--paper-deep); }

/* ---------- speakers: the deep register's mid-page band, photos on navy ---------- */
#speakers { background: var(--navy-deep); color: var(--on-navy); border-top: 0; padding: 130px 0 110px; }
#speakers h2 { color: #fff; }
#speakers .shead .no { color: var(--accent-on-navy); }
#speakers .lede { color: var(--on-navy); }
#speakers .smallcaps { color: var(--on-navy-soft); }
#speakers .muted { color: var(--on-navy-soft); }
#speakers .sp-register { border-color: var(--on-navy-rule); }
#speakers .sp .sp-name { color: #fff; }
#speakers .sp .sp-role { color: var(--on-navy-soft); }
#speakers .portrait { border-color: rgba(242, 246, 250, .28); background: var(--navy); }
#speakers .sp-more { color: var(--accent-on-navy); }

.sp-register { border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 44px 0 40px; }
.sp-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 40px 32px; }
#speakers .portrait { filter: grayscale(1); }
#speakers .sp.confirmed .portrait { filter: none; }
.sp { display: flex; flex-direction: column; align-items: center; text-align: center; gap: 4px; }
.sp .portrait { width: 112px; height: 112px; margin-bottom: 10px; }
.sp .sp-name { font-weight: 600; font-size: 15.5px; letter-spacing: -0.005em; }
.sp .sp-role { font-size: 13px; color: var(--ink-soft); line-height: 1.45; max-width: 24ch;
  display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.sp-more { display: none; }

/* ---------- the film ---------- */
.film { position: relative; aspect-ratio: 16 / 9; background: var(--navy-deep); border-radius: 4px; overflow: hidden; max-width: 860px; }
.film img { width: 100%; height: 100%; object-fit: cover; display: block; filter: grayscale(1); }
.film::before { content: ""; position: absolute; inset: 0; background: rgba(0, 38, 75, .55); pointer-events: none; }
.film.playing::before { display: none; }
.film iframe { width: 100%; height: 100%; border: 0; display: block; }
.film-play {
  position: absolute; inset: 0; width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: none; border: 0; cursor: pointer; padding: 0; line-height: 0;
}
.film-play svg { width: 72px; height: 72px; }
.film-play circle { transition: fill .15s ease; }
.film-play:hover circle { fill: var(--accent); }

/* ---------- past editions gallery ---------- */
.g-lead { margin-bottom: 24px; }
.g-lead img { width: 100%; height: auto; border-radius: 4px; display: block; }
.g-lead figcaption, .g-grid figcaption { margin-top: 8px; font-size: 12.5px; }
.g-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24px; }
.g-grid figure { margin: 0; }
.g-grid img { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; border-radius: 4px; display: block; }

/* ---------- partners ---------- */
.ptier { border-top: 1px solid var(--rule); }
.ptier-row { display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: 32px; align-items: center; padding: 26px 0; border-bottom: 1px solid var(--rule); }
.plogos { display: flex; align-items: center; gap: 44px; flex-wrap: wrap; }
.plogos img { height: 44px; width: auto; max-width: 200px; object-fit: contain; }
.plogos-lg img { height: 44px; max-width: 230px; }
.plogos.ptext { font-family: var(--sans); font-size: 16px; font-weight: 500; color: var(--ink-soft); letter-spacing: .01em; }
.hero-grid { display: grid; grid-template-columns: minmax(0, 11fr) minmax(0, 9fr); gap: 56px; align-items: end; }
.hero-photo { margin: 0; padding-bottom: 8px; }
.hero-photo img { display: block; width: 100%; height: auto; border: 1px solid var(--on-navy-rule); }
.hero-photo figcaption { font-family: var(--mono); font-size: 11.5px; letter-spacing: .06em; color: var(--on-navy-soft); margin-top: 10px; }
.hero-partners { display: flex; align-items: center; flex-wrap: wrap; gap: 20px 40px; margin-top: 64px; padding: 28px 0 6px; border-top: 1px solid var(--on-navy-rule); }
.hero-partners .hp-label { font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--on-navy-soft); }
.hero-partners img { width: auto; filter: brightness(0) invert(1); opacity: .9; }
.hero-partners img.hp-fe { height: 26px; opacity: 1; }
.hero-partners img.hp-barclays { height: 22px; }
.hero-partners img.hp-raw { height: 24px; filter: none; opacity: 1; }
.hero-partners img.hp-sc { height: 34px; }
.hero-plan { padding-bottom: 8px; }

/* the plan of the day: hairline architectural drawing, drawn in light on navy */
.plan { width: 100%; height: auto; overflow: visible; }
.plan text { font-family: var(--sans); }
.plan .rlabel { font-size: 12px; letter-spacing: .09em; fill: var(--on-navy); font-weight: 600; }
.plan .rterm { font-size: 10.5px; letter-spacing: .08em; fill: var(--on-navy-soft); }
.plan .rtime { font-family: var(--mono); font-size: 10.5px; fill: var(--accent-on-navy); }
.plan-names { display: none; }

/* tier marks */
.tier { display: inline-flex; align-items: center; gap: 7px; }
.tier .dot { width: 10px; height: 10px; border-radius: 50%; flex: none; }
.tier.open .dot { border: 1.5px solid var(--ink); background: transparent; }
.tier.invitation .dot { background: var(--accent); }
.tier.closed .dot { background: var(--navy); }
.tier.social .dot { background: var(--graphite); }

/* ---------- question ---------- */
.question-grid { display: grid; grid-template-columns: minmax(0, 68ch); }
#question .qtext, .question .qtext { font-family: var(--serif); font-size: clamp(22px, 2.4vw, 29px); font-weight: 500; line-height: 1.38; margin-bottom: 28px; }
#question p + p, .question p + p { margin-top: 18px; }
.figures { margin-top: 38px; padding-top: 26px; border-top: 1px solid var(--rule); display: flex; gap: 56px; flex-wrap: wrap; }
.figures .fig .n { font-family: var(--serif); font-size: clamp(32px, 3vw, 42px); font-weight: 480; letter-spacing: -0.01em; }
.figures .fig .l { font-size: 13.5px; color: var(--ink-soft); max-width: 22ch; margin-top: 4px; }
.figures .src { flex-basis: 100%; font-size: 12.5px; color: var(--ink-soft); }

/* ---------- rooms strip ----------
   Keyline language, not boxes: white cells, a 3px tier keyline on top.
   The hosted room is the one dark cell; rooms literally deepen as they close. */
.rooms { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
.room-card { background: var(--paper); padding: 30px 26px 34px; display: flex; flex-direction: column; gap: 12px; min-height: 300px; border-top: 3px solid var(--rule); }
.room-card.r-open { border-top-color: var(--ink); }
.room-card.r-invitation { border-top-color: var(--accent); }
.room-card.r-social { border-top-color: var(--graphite); }
.room-card.r-hosted { background: var(--navy); color: var(--on-navy); border-top-color: var(--navy-deep); }
.room-card.r-hosted h3 { color: #fff; }
.room-card.r-hosted .rc-desc { color: var(--on-navy-soft); }
.room-card.r-hosted .smallcaps { color: var(--on-navy-soft); }
.room-card.r-hosted .rc-route { color: var(--accent-on-navy); }
.room-card.r-hosted .tier.social .dot { background: var(--on-navy-soft); }
.room-card .rc-plan { height: 64px; margin-bottom: 6px; }
.room-card h3 { font-weight: 600; }
.room-card .rc-desc { font-size: 15px; color: var(--ink-soft); flex: 1; }
.room-card .rc-route { font-size: 14px; font-weight: 500; }
.room-card.tbd { background: var(--paper-warm); border-top-style: dashed; }

/* ---------- programme overview strip ---------- */
.dayshape { border: 1px solid var(--rule); background: var(--paper-warm); padding: 34px 30px; }
.dayshape .ds-row { display: flex; align-items: center; gap: 0; margin-top: 18px; }
.ds-block { padding: 18px 16px; border: 1px solid var(--rule); border-left: 0; font-size: 13.5px; line-height: 1.4; position: relative; min-height: 92px; }
.ds-block:first-child { border-left: 1px solid var(--rule); }
.ds-block .t { font-family: var(--mono); font-size: 11.5px; color: var(--accent); display: block; margin-bottom: 5px; }
.ds-block strong { font-weight: 600; font-size: 13.5px; }
.ds-morning { background: var(--paper); }
.ds-lunch { background: var(--paper-warm); }
.ds-afternoon { background: var(--paper-deep); }
.ds-evening { background: var(--navy); color: var(--on-navy); border-color: var(--navy); padding-top: 21px; padding-bottom: 21px; }
.ds-evening .t { color: var(--accent-on-navy); }

/* ---------- cast / formats ---------- */
.formats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
.format-card { background: var(--paper); padding: 26px; }
.format-card .smallcaps { margin-bottom: 8px; display: block; }
.format-card p { font-size: 15px; color: var(--ink-soft); }

/* ---------- convening ---------- */
.convene-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px 32px; margin-top: 8px; }
.convene-item h3 { font-size: 19px; margin-bottom: 8px; }
.convene-item p { font-size: 15px; color: var(--ink-soft); }
.caps-line { font-family: var(--serif); font-size: clamp(26px, 2.6vw, 34px); font-weight: 500; line-height: 1.35; max-width: 26ch; margin-bottom: 48px; }

/* ---------- practical ---------- */
.fact-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
.fact { background: var(--paper); padding: 24px; }
.fact .k { font-size: 11.5px; letter-spacing: .09em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 8px; font-weight: 500; }
.fact .v { font-family: var(--mono); font-size: 15px; }
.venue-credit { margin-top: 20px; font-size: 13px; color: var(--navy); }

/* ---------- contact ---------- */
.routes3 { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
.route { background: var(--paper); padding: 30px 26px; border-top: 3px solid var(--rule); }
.route .smallcaps { display: block; margin-bottom: 10px; }
.route .tier.smallcaps { display: inline-flex; }
.route p { font-size: 15px; color: var(--ink-soft); margin: 10px 0 18px; }

/* ---------- interest form ---------- */
.interest-form { margin-top: 48px; border-top: 1px solid var(--rule); padding-top: 36px; max-width: 760px; }
.interest-form label { display: block; font-size: 13px; font-weight: 500; color: var(--ink-soft); }
.if-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-bottom: 22px; }
.interest-form input[type="text"], .interest-form input[type="email"], .interest-form textarea {
  display: block; width: 100%; margin-top: 6px; padding: 11px 12px;
  font-family: var(--sans); font-size: 15px; color: var(--ink);
  background: var(--paper); border: 1px solid var(--rule); border-radius: 3px;
}
.interest-form input:focus-visible, .interest-form textarea:focus-visible { outline: 2px solid var(--accent); outline-offset: 0; border-color: transparent; }
.if-intent { border: 0; margin: 0 0 22px; }
.if-intent legend { margin-bottom: 10px; }
.if-intent label { display: flex; align-items: baseline; gap: 10px; font-size: 14.5px; color: var(--ink); padding: 5px 0; }
.if-intent input { accent-color: var(--accent); }
.if-note textarea { resize: vertical; }
.if-actions { display: flex; align-items: center; gap: 18px; margin-top: 22px; }
.if-status { font-size: 14px; color: var(--ink-soft); }

/* ---------- questions ---------- */
.faq-list { border-top: 1px solid var(--rule); max-width: 860px; }
.faq { border-bottom: 1px solid var(--rule); position: relative; }
.faq summary { list-style: none; cursor: pointer; padding: 20px 44px 20px 2px; font-weight: 600; font-size: 16.5px; }
.faq summary::-webkit-details-marker { display: none; }
.faq .expand-hint { position: absolute; right: 10px; top: 20px; color: var(--ink-soft); font-size: 18px; transition: transform .15s ease; }
.faq[open] .expand-hint { transform: rotate(45deg); }
.faq p { padding: 0 2px 22px; max-width: 68ch; font-size: 15.5px; color: var(--ink-soft); }

/* ---------- footer: the deep register closes the page ---------- */
footer { background: var(--navy-deep); color: var(--on-navy-soft); border-top: 0; padding: 60px 0; margin-top: 0; }
footer .wordmark { color: #fff; }
footer .wordmark .yr { color: var(--accent-on-navy); }
footer a { color: var(--accent-on-navy); }
footer .cols { display: flex; justify-content: space-between; gap: 32px; flex-wrap: wrap; align-items: baseline; }
footer .fnote { font-size: 13px; color: var(--on-navy-soft); }
footer .preview-note { margin-top: 28px; padding-top: 18px; border-top: 1px solid var(--on-navy-rule); font-size: 12px; color: var(--on-navy-soft); }

/* ---------- agenda page: the working document stays in working light ---------- */
.agenda-layout { display: grid; grid-template-columns: 210px minmax(0, 1fr); gap: 56px; align-items: start; }
.agenda-rail { position: sticky; top: 88px; }
.agenda-rail .rail-group { margin-bottom: 26px; }
.agenda-rail a { display: block; font-size: 14px; color: var(--ink-soft); padding: 5px 0 5px 14px; border-left: 2px solid var(--rule); }
.agenda-rail a:hover { color: var(--accent); text-decoration: none; }
.agenda-rail a.active { color: var(--ink); border-left-color: var(--accent); font-weight: 500; }

/* option toggle */
.opt-toggle { display: inline-flex; border: 1px solid var(--rule); border-radius: 3px; overflow: hidden; margin: 6px 0 10px; }
.opt-toggle button {
  font-family: var(--sans); font-size: 14px; font-weight: 500; letter-spacing: .01em;
  padding: 10px 18px; background: var(--paper); color: var(--ink-soft); border: 0; cursor: pointer;
}
.opt-toggle button + button { border-left: 1px solid var(--rule); }
.opt-toggle button.active { background: var(--accent); color: #fff; }
.opt-strap { font-size: 15px; color: var(--ink-soft); max-width: 60ch; }

/* the programme on the main page: MoD-inspired editorial agenda */
.pill-nav { display: flex; gap: 10px; flex-wrap: wrap; margin: 34px 0 22px; }
.pill {
  border: 1px solid var(--rule); border-radius: 999px; padding: 7px 16px;
  font-size: 13.5px; font-weight: 500; color: var(--ink-soft); white-space: nowrap;
}
.pill:hover { color: var(--accent); border-color: var(--accent); text-decoration: none; }
.day-head { display: flex; align-items: baseline; gap: 18px; margin: 56px 0 6px; }
.day-head h3 { font-size: 22px; letter-spacing: -0.015em; }
.part-head { display: flex; align-items: baseline; gap: 14px; margin: 44px 0 6px; }
.part-head .mono { color: var(--accent); }
/* sessions: strand keyline where the content has a strand, tier keyline otherwise;
   access is always ALSO the dot + word tier mark */
.session.t-open { border-top: 2px solid var(--ink); }
.session.t-invitation { border-top: 2px solid var(--accent); }
.session.t-closed { border-top: 2px solid var(--navy); }
.session.t-social { border-top: 2px solid var(--graphite); }
.session.s-capital { border-top-color: var(--s-capital); }
.session.s-tech { border-top-color: var(--s-tech); }
.session.s-energy { border-top-color: var(--s-energy); }
.session.s-defence { border-top-color: var(--s-defence); }
.session.s-health { border-top-color: var(--s-health); }
.strand-tag { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; white-space: nowrap; }
.st-capital { color: var(--s-capital); }
.st-tech { color: var(--s-tech); }
.st-energy { color: var(--s-energy); }
.st-defence { color: var(--s-defence); }
.st-health { color: var(--s-health); }
.strand-legend { display: flex; gap: 20px; align-items: baseline; flex-wrap: wrap; margin: 34px 0 4px; }
.strand-legend .sdot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 6px; background: currentColor; }
.home-agenda .folio { display: none; }
@media (min-width: 1300px) { .home-agenda .folio { display: block; } }

/* programme tools */
.agenda-tools { display: flex; gap: 22px; align-items: center; margin-bottom: 26px; flex-wrap: wrap; }
.agenda-tools button, .agenda-tools a {
  font-family: var(--mono); font-size: 13px; color: var(--accent);
  background: none; border: 0; cursor: pointer; padding: 8px 2px; margin: -8px 0;
}
.agenda-tools button:hover, .agenda-tools a:hover { text-decoration: underline; }

/* team banner on the internal variant */
.team-banner {
  background: var(--paper-deep); border-bottom: 1px solid var(--rule);
  font-size: 13px; color: var(--ink-soft); text-align: center; padding: 9px 16px;
}

/* movements */
.movement { padding: 56px 0 30px; }
.movement + .movement { border-top: 1px solid var(--rule); }
.movement.m-morning { background: transparent; }
.movement .m-head { margin-bottom: 26px; }
.movement .m-head .smallcaps { display: block; margin-bottom: 8px; }
.movement .m-stand { font-family: var(--serif); font-size: 19px; font-weight: 400; color: var(--ink-soft); max-width: 60ch; }

/* evening band (Wednesday) */
.evening-band { background: var(--paper-deep); border: 1px solid var(--rule); border-top: 3px solid var(--navy); padding: 36px 34px; margin-bottom: 56px; }
.evening-band .smallcaps { display: block; margin-bottom: 10px; }

/* light shift: felt, not seen */
.shift-lunch { background: var(--paper-warm); }
.shift-afternoon { background: var(--paper-warm); }

/* session cards */
.session { position: relative; border-top: 1px solid var(--rule); }
.session:last-child { border-bottom: 1px solid var(--rule); }
.session .folio {
  position: absolute; left: -54px; top: 28px;
  font-family: var(--mono); font-size: 12px; color: var(--ink-soft); letter-spacing: .04em;
}
.session summary { list-style: none; cursor: pointer; padding: 22px 44px 22px 8px; }
.session summary::-webkit-details-marker { display: none; }
.session summary:hover { background: color-mix(in srgb, var(--paper-warm) 55%, transparent); }
.session .meta-row { display: flex; align-items: baseline; gap: 18px; margin-bottom: 8px; flex-wrap: wrap; }
.session .time { font-family: var(--mono); font-size: 14px; color: var(--ink); min-width: 118px; }
.session .fmt { font-size: 11px; letter-spacing: .09em; text-transform: uppercase; font-weight: 600; color: var(--ink-soft); }
.session .tier { margin-left: auto; font-size: 11px; letter-spacing: .07em; text-transform: uppercase; font-weight: 500; color: var(--ink-soft); }
.session h3 { font-family: var(--sans); font-size: 18px; font-weight: 600; max-width: 38ch; letter-spacing: -0.005em; }
.session .framing { margin-top: 6px; font-size: 15.5px; color: var(--ink-soft); max-width: 62ch; }
.session .expand-hint { position: absolute; right: 10px; top: 26px; color: var(--ink-soft); font-size: 18px; transition: transform .15s ease; }
.session[open] .expand-hint { transform: rotate(45deg); }
.session .body { padding: 4px 8px 26px 144px; }
.session .body p { max-width: 62ch; font-size: 15.5px; margin-bottom: 12px; }
.session .peg { font-size: 13.5px; color: var(--ink-soft); border-left: 2px solid var(--graphite); padding: 2px 0 2px 12px; margin: 14px 0; max-width: 58ch; }
.session .speakers-note { font-size: 14px; color: var(--ink-soft); font-style: italic; }
.session .actions { display: flex; gap: 20px; margin-top: 16px; }
.session .actions a, .session .actions button {
  font-family: var(--sans); font-size: 13px; font-weight: 500; color: var(--accent);
  background: none; border: 0; cursor: pointer; padding: 8px 10px; margin: -8px -10px;
}
.session .actions a:hover, .session .actions button:hover { text-decoration: underline; }
.session.interstitial { border-top: 1px solid var(--rule); }
.session.interstitial .row { display: flex; gap: 18px; padding: 12px 8px; align-items: baseline; }
.session.interstitial .row .t { font-family: var(--mono); font-size: 13px; color: var(--ink-soft); min-width: 118px; }
.session.interstitial .row .l { font-size: 14px; color: var(--ink-soft); }

/* parallel roundtables (if a programme uses them) */
.parallel { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); margin: 10px 0 26px; }
.parallel .p-cell { background: var(--paper-warm); padding: 22px; }
.parallel .p-cell h3 { font-family: var(--sans); font-size: 17px; font-weight: 600; letter-spacing: -0.005em; }

/* compare table */
.compare { width: 100%; border-collapse: collapse; margin-top: 10px; }
.compare th, .compare td { text-align: left; padding: 12px 14px; border: 1px solid var(--rule); font-size: 14.5px; vertical-align: top; }
.compare th { font-family: var(--sans); font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); background: var(--paper-warm); }

/* ---------- responsive ---------- */
@media (max-width: 980px) {
  section { padding: 64px 0; }
  #rooms, #speakers, #editions { padding-top: 80px; }
  #convening { padding: 88px 0 72px; }
  .hero { padding: 64px 0 52px; }
  .hero-grid { grid-template-columns: 1fr; gap: 40px; }
  .rooms, .formats, .routes3, .fact-grid { grid-template-columns: 1fr 1fr; }
  .convene-grid { grid-template-columns: 1fr; }
  .question-grid { grid-template-columns: 1fr; gap: 12px; }
  .agenda-layout { grid-template-columns: minmax(0, 1fr); }
  .agenda-rail { position: static; display: none; }
  .agenda-bar { display: flex !important; }
  .session .folio { display: none; }
  .session .body { padding-left: 8px; }
  .parallel { grid-template-columns: 1fr; }
  .dayshape .ds-row { flex-direction: column; align-items: stretch; }
  .ds-block { border-left: 1px solid var(--rule); border-top: 0; }
  .ds-block:first-child { border-top: 1px solid var(--rule); }
  .ds-evening { border-color: var(--navy); }
  .sp-grid { grid-template-columns: repeat(4, 1fr); gap: 36px 18px; }
  .g-grid { grid-template-columns: 1fr 1fr; gap: 16px; }
  .ptier-row { grid-template-columns: 1fr; gap: 14px; }
}
@media (max-width: 820px) {
  .nav-links a:not(.btn) { display: none; }
  .nav .btn { padding: 8px 14px; font-size: 13px; white-space: nowrap; }
}
@media (max-width: 640px) {
  .rooms, .formats, .routes3, .fact-grid { grid-template-columns: 1fr; }
  .session .tier { margin-left: 0; flex-basis: 100%; }
  .compare th, .compare td { font-size: 13px; padding: 9px 10px; }
  .sp-grid { grid-template-columns: repeat(3, 1fr); gap: 28px 16px; }
  .hero-stats { grid-template-columns: 1fr 1fr; }
  .hero-stats .hs { padding: 22px 20px 24px; }
  .sp .portrait { width: 72px; height: 72px; }
  .sp .sp-name { font-size: 13.5px; }
  .sp .sp-role { font-size: 11.5px; }
  /* scoped to html.js (set by agenda.js) so no-JS readers see every speaker */
  html.js .sp-grid.collapsed .sp:nth-child(n+10) { display: none; }
  .sp-more { display: inline-block; margin-top: 22px; font-family: var(--sans); font-size: 14px; font-weight: 500; color: var(--accent); background: none; border: 0; cursor: pointer; padding: 8px 2px; }
  .g-grid { grid-template-columns: 1fr; }
  .plogos { gap: 28px; }
  .wm-img { max-width: 100%; height: auto; }
  .if-grid { grid-template-columns: 1fr; }
  .hero-plan .plan { display: none; }
  .plan-names { display: block; font-family: var(--mono); font-size: 12px; color: var(--on-navy-soft); margin-top: 8px; }
}

/* sticky mobile anchor bars (agenda + homepage) */
.home-bar { display: none; }
.agenda-bar, .home-bar {
  display: none; position: sticky; top: 64px; z-index: 40;
  background: color-mix(in srgb, var(--paper) 97%, transparent); backdrop-filter: blur(6px);
  border-bottom: 1px solid var(--rule); padding: 10px 0; gap: 14px; overflow-x: auto;
}
.agenda-bar a, .home-bar a { font-size: 13px; white-space: nowrap; color: var(--ink-soft); padding: 6px 2px; }
.agenda-bar a.active, .home-bar a.active { color: var(--accent); font-weight: 600; }

/* ---------- print ---------- */
/* The wordmark is an image, so this span carries the h1's real text. It must stay
   in the accessibility tree (never display:none) and becomes the printed wordmark. */
.wm-print { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
@media print {
  @page { margin: 18mm 16mm; }
  .nav, .agenda-rail, .agenda-bar, .home-bar, .site-menu, .opt-toggle, .agenda-tools, .session .actions, .film, .skip-link, .team-banner, footer .preview-note { display: none !important; }
  .wm-img { display: none; }
  .wm-print { position: static; width: auto; height: auto; overflow: visible; clip: auto; white-space: normal;
    display: block; font-family: var(--serif); font-weight: 600; text-transform: uppercase; letter-spacing: .05em; font-size: 28pt; color: var(--ink); }
  .session, .fact, .room-card { break-inside: avoid; }
  body { background: #fff; font-size: 11pt; }
  .hero, footer, .room-card.r-hosted, .ds-evening, .cal-band, #speakers, .cal-cell.cal-fe, .dt-evening { background: #fff !important; color: var(--ink) !important; }
  .hero h1, .room-card.r-hosted h3, footer .wordmark { color: var(--ink) !important; }
  /* every navy-register surface prints dark on white */
  .tagline, .dateline, .hero .lede, .hero p, #speakers h2, #speakers .sp .sp-name,
  .cal-cell p, .cal-cell.cal-fe p, .dt-evening .l { color: var(--ink) !important; }
  .ed-kicker, .hero .smallcaps, #speakers .smallcaps, #speakers .muted, #speakers .lede,
  #speakers .sp .sp-role, .spf-role, .spf-bio, .spf-credit, .cal-cell .cal-date, .dt-evening .t,
  .hero-photo figcaption, .hero-partners .hp-label { color: var(--ink-soft) !important; }
  .ed-kicker { border-color: var(--rule); }
  .hero-partners img { filter: none; }
  section, .movement { padding: 12pt 0; }
  .session summary { padding: 6pt 0; }
  .session .body { display: block; padding: 0 0 8pt 0; }
  details:not([open]) .body { display: block; }
}

/* ---------- internal layer: team variant (/agenda/internal/) only ---------- */

.internal {
  background: repeating-linear-gradient(-45deg, #F1F1F0, #F1F1F0 10px, #E9EAEC 10px, #E9EAEC 11px);
  border: 1px dashed var(--accent);
  border-radius: 3px;
}
.internal-tag {
  display: inline-block; font-family: var(--sans); font-weight: 600; font-size: 10px;
  letter-spacing: .1em; text-transform: uppercase; color: #fff;
  background: var(--accent); padding: 3px 8px; border-radius: 3px;
}
.internal.inline { padding: 12px 14px; margin: 14px 0; max-width: 62ch; }
.internal.inline p { font-size: 13.5px; color: var(--ink-soft); margin: 8px 0 0; }
.internal.panel { margin: 0 0 14px; }
.internal.panel summary {
  list-style: none; cursor: pointer; display: flex; align-items: center; gap: 14px;
  padding: 14px 16px; position: relative;
}
.internal.panel summary::-webkit-details-marker { display: none; }
.internal.panel .ip-title { font-family: var(--serif); font-size: 17px; font-weight: 520; flex: 1; }
.internal.panel .expand-hint { position: static; font-size: 17px; color: var(--ink-soft); transition: transform .15s ease; }
.internal.panel[open] .expand-hint { transform: rotate(45deg); }
.internal.panel .ip-body { padding: 2px 16px 18px; }
.internal.panel .ip-body p, .internal.panel .ip-body li { font-size: 14.5px; color: var(--ink); max-width: 70ch; }
.internal.panel .ip-body h4 { font-family: var(--serif); font-size: 16px; margin: 14px 0 6px; }
.internal.panel .ip-body ul { padding-left: 20px; display: grid; gap: 8px; }
.internal.panel .ip-body .rec { margin-bottom: 10px; }

/* ---------- divergence point ---------- */
.diverge {
  margin: 56px 0; padding: 28px 30px;
  border: 1px solid var(--rule); border-left: 3px solid var(--accent);
  background: var(--paper-warm);
}
.diverge .opt-toggle { margin: 0; flex-wrap: wrap; }

@media print {
  .internal, #internal, .diverge .m-stand, .agenda-rail, .agenda-bar { display: none !important; }
}

/* home anchor bar (below 820px, where the nav links hide): appears only after the
   hero, replacing the main nav while shown, so two sticky bars never run at once
   on a small viewport (must follow the bar base rules) */
@media (max-width: 820px) {
  .home-bar { top: 0; }
  .home-bar.visible { display: block; }
  body.hb-on .nav { display: none; }
}
/* small screens: the date span crowds out the register CTA; pin the CTA to the right edge */
@media (max-width: 640px) {
  .home-bar .wrap > span.mono { display: none; }
  .home-bar .hb-btn { position: absolute; right: 12px; top: 50%; transform: translateY(-50%); margin-left: 0 !important; }
}

/* ---------- 13 Aug additions: policy calendar, persona router, timeline ---------- */

.cal-band { background: var(--navy); padding: 72px 0 78px; }
.shead-onnavy h2 { color: #fff; }
.shead-onnavy .no { color: var(--accent-on-navy); }
.cal-scroll { overflow-x: auto; }
.cal-rail { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(190px, 1fr); border-left: 1px solid var(--on-navy-rule); min-width: 900px; }
.cal-cell { border-right: 1px solid var(--on-navy-rule); border-top: 1px solid var(--on-navy-rule); padding: 22px 20px 26px; }
.cal-cell .cal-date { font-size: 15px; color: var(--accent-on-navy); letter-spacing: .06em; }
.cal-cell p { font-size: 14px; color: var(--on-navy); margin: 12px 0 0; line-height: 1.5; }
/* the conference cell sits ON the policy timeline at the same rank as the policy
   cells (16 Aug policy-first round); the thin azure rule is a locator, not emphasis */
.cal-cell.cal-fe { border-top: 3px solid var(--accent-on-navy); }

.who-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); }
.who-cell { background: var(--paper); padding: 26px 24px 30px; display: flex; flex-direction: column; }
.who-cell p { font-size: 15px; line-height: 1.55; color: var(--ink-soft); margin: 12px 0 18px; flex: 1; }
.who-links { display: flex; flex-direction: column; gap: 8px; font-size: 14.5px; }
.who-links a:first-child { font-weight: 600; }

.day-timeline { margin-bottom: 14px; }
.dt-day { display: flex; align-items: stretch; gap: 14px; margin-bottom: 10px; }
.dt-label { font-size: 12px; color: var(--ink-soft); letter-spacing: .08em; width: 74px; flex: none; padding-top: 14px; }
.dt-row { display: flex; gap: 3px; flex: 1; min-width: 0; }
.dt-block { display: block; padding: 12px 14px 14px; min-width: 0; border-top: 3px solid var(--ink); background: var(--paper-warm); color: var(--ink); }
.dt-block:hover { background: var(--paper-deep); }
.dt-block .t { display: block; font-size: 12px; color: var(--accent-deep); }
.dt-block .l { display: block; font-size: 13px; line-height: 1.4; margin-top: 6px; overflow: hidden; }
.dt-evening { border-top-color: var(--navy); background: var(--navy); color: var(--on-navy); flex: 0 0 260px !important; }
.dt-evening .t { color: var(--accent-on-navy); }
.dt-lunch { border-top-color: var(--accent); }
.dt-social { border-top-color: #7A7E87; }
.agenda-count { font-size: 12px; letter-spacing: .08em; color: var(--ink-soft); margin: 0 0 34px; }

@media (max-width: 980px) {
  .who-grid { grid-template-columns: 1fr 1fr; }
  .dt-day { flex-direction: column; gap: 6px; }
  .dt-label { width: auto; padding-top: 0; }
  .dt-row { flex-direction: column; }
  .dt-block, .dt-evening { flex: none !important; }
}
@media (max-width: 640px) {
  .who-grid { grid-template-columns: 1fr; }
  /* narrower cells so the 28.01.2027 cell peeks into view at rest; the fade
     signals that the rail scrolls */
  .cal-rail { min-width: 0; grid-auto-columns: minmax(146px, 1fr); }
  .cal-cell { padding: 18px 14px 22px; }
  .cal-scroll {
    -webkit-mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent);
    mask-image: linear-gradient(to right, #000 calc(100% - 44px), transparent);
  }
}

/* ---------- Unbound-depth pass: highlights, featured speakers, ghost numerals, register bar ---------- */
.hl-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: var(--rule); border: 1px solid var(--rule); margin-bottom: 46px; }
.hl-card { display: flex; flex-direction: column; background: var(--paper); padding: 22px 22px 24px; border-top: 3px solid var(--ink); color: var(--ink); }
.hl-card:hover { background: var(--paper-warm); text-decoration: none; color: var(--ink); }
.hl-card:last-child { border-top-color: var(--accent); }
.hl-time { font-size: 22px; color: var(--accent); }
.hl-fmt { font-size: 11px; letter-spacing: .1em; color: var(--ink-soft); margin-top: 6px; }
.hl-title { font-weight: 600; font-size: 16.5px; line-height: 1.35; margin-top: 10px; letter-spacing: -0.01em; }
.hl-line { font-size: 13.5px; color: var(--ink-soft); line-height: 1.5; margin-top: 10px; }

.sp-featured { display: grid; grid-template-columns: repeat(4, 1fr); gap: 32px; margin-bottom: 54px; }
.spf .portrait { width: 140px; height: 140px; }
.spf-name { font-weight: 650; font-size: 19px; color: #fff; margin-top: 16px; letter-spacing: -0.01em; }
.spf-role { font-size: 13.5px; color: var(--on-navy-soft); margin-top: 5px; line-height: 1.45; }
.spf-bio { font-size: 14px; color: var(--on-navy); line-height: 1.55; margin: 10px 0 12px; }
.spf-credit { font-size: 11px; letter-spacing: .1em; color: var(--accent-on-navy); }

/* the register bar is a mobile-only device: it replaces the nav below 820px
   (the .visible toggle lives in that media block); nothing shows on desktop */
.home-bar .hb-btn { white-space: nowrap; color: #fff; }

@media (max-width: 980px) {
  .hl-row { grid-template-columns: 1fr 1fr; }
  .sp-featured { grid-template-columns: 1fr 1fr; gap: 26px; }
}
@media (max-width: 640px) {
  .hl-row { grid-template-columns: 1fr; }
  .sp-featured { grid-template-columns: 1fr; }
}
@media print { .home-bar { display: none !important; } }

/* the lead photo takes a full-width row so the remaining five fall 3+2 with
   no void or orphan; on the one-column phone grid it is an ordinary figure */
.g-grid figure:first-child { grid-column: 1 / -1; }
@media (min-width: 641px) {
  .g-grid figure:first-child img { aspect-ratio: 8 / 3; }
}
@media (max-width: 640px) {
  .g-grid figure:first-child { grid-column: auto; }
}

/* Salon spotlight (14 Aug editorial pass) */
.salon-spot { margin-top: 40px; border: 1px solid var(--rule); border-top: 3px solid var(--accent); background: var(--paper-warm); padding: 34px 32px 36px; display: grid; grid-template-columns: 260px 1fr; gap: 40px; scroll-margin-top: 90px; }
.salon-spot .ss-head h3 { font-size: 27px; margin: 10px 0 0; letter-spacing: -0.01em; }
.salon-spot .ss-body p { max-width: 62ch; margin: 0 0 18px; }
.salon-spot .ss-themes { list-style: none; margin: 0 0 20px; padding: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px 28px; }
.salon-spot .ss-themes li { font-size: 14.5px; padding: 8px 0 8px 0; border-top: 1px solid var(--rule); }
.salon-spot .who-links { flex-direction: row; gap: 26px; }
@media (max-width: 980px) {
  .salon-spot { grid-template-columns: 1fr; gap: 16px; padding: 26px 20px 28px; }
  .salon-spot .ss-themes { grid-template-columns: 1fr; }
  .salon-spot .who-links { flex-direction: column; gap: 8px; }
}

/* What 2026 told us (reflection section, 14 Aug) */
.rec-list { border-top: 1px solid var(--rule); }
.rec-row { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; padding: 26px 0 28px; border-bottom: 1px solid var(--rule); }
.rec-row .smallcaps { display: block; margin-bottom: 10px; }
.rec-2026 p { font-family: var(--serif); font-size: 18.5px; line-height: 1.5; margin: 0; max-width: 56ch; }
.rec-2027 p { font-size: 15px; margin: 0 0 10px; max-width: 52ch; }
.rec-2027 a { font-weight: 600; font-size: 14.5px; }
@media (max-width: 980px) {
  .rec-row { grid-template-columns: 1fr; gap: 14px; }
}

/* ---------- 14 Aug hero simplification: light partner strip + Latest module ---------- */
.partner-strip { background: var(--paper-warm); border-bottom: 1px solid var(--rule); }
.partner-strip .wrap { display: flex; align-items: center; flex-wrap: wrap; gap: 18px 40px; padding-top: 22px; padding-bottom: 22px; }
.partner-strip .ps-label { font-size: 11.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-soft); }
.partner-strip img { width: auto; }
.partner-strip img.ps-fe { height: 26px; }
.partner-strip img.ps-barclays { height: 22px; }
.partner-strip img.ps-kreab { height: 24px; }
.partner-strip img.ps-sc { height: 34px; }
.partner-strip img.ps-bnp { height: 24px; }


/* ---------- agenda refit (14 Aug design panel: width by composition, one spacing
   scale, 3-line closed clamp, mobile package). Zero HTML changes; overrides only. */
.session summary { padding: 24px 52px 24px 8px; }
.session h3 { font-size: 19px; max-width: 46ch; line-height: 1.3; }
.session .framing { max-width: 66ch; }
.session .body p { max-width: 66ch; }
@media (min-width: 981px) {
  .session summary { display: grid; grid-template-columns: 136px minmax(0, 1fr); }
  .session summary > .meta-row { grid-column: 1 / -1; }
  .session summary > h3, .session summary > .framing { grid-column: 2; }
}
details.session:not([open]) summary .framing {
  display: -webkit-box; -webkit-line-clamp: 3; line-clamp: 3;
  -webkit-box-orient: vertical; overflow: hidden;
}
.session[open] { background: color-mix(in srgb, var(--paper-warm) 55%, transparent); }
.session .expand-hint { position: absolute; right: 14px; top: 20px; color: var(--accent); font-size: 22px; transition: transform .15s ease; }
@media (hover: hover) {
  .session summary:hover h3 { color: var(--accent); }
}
.session summary:focus-visible { outline-offset: -2px; }
.pill-nav { margin: 34px 0 26px; }
.agenda-tools { margin: 0 0 14px; }
.home-agenda .day-head { margin: 48px 0 10px; }
.home-agenda .day-head h3 { font-size: 26px; letter-spacing: -0.02em; }
.home-agenda .part-head { margin: 40px 0 10px; }
.home-agenda .part-head .smallcaps { font-size: 13px; letter-spacing: .12em; }
.home-agenda .part-head .mono { font-size: 13px; }
@media (max-width: 820px) {
  html { scroll-padding-top: 84px; }
}
@media (max-width: 640px) {
  .session summary { padding: 20px 32px 20px 8px; }
  .session .expand-hint { right: 8px; top: 18px; font-size: 20px; }
  .session .meta-row { gap: 10px 14px; margin-bottom: 6px; }
  .session .time { min-width: 0; }
  .session.interstitial .row { flex-direction: column; gap: 3px; padding: 12px 8px 14px; }
  .session.interstitial .row .t { min-width: 0; }
  .home-agenda .day-head { flex-direction: column; align-items: flex-start; gap: 4px; margin: 36px 0 8px; }
  .home-agenda .part-head { flex-wrap: wrap; gap: 6px 14px; margin: 32px 0 8px; }
  .dt-block { display: flex; align-items: baseline; gap: 10px; padding: 10px 12px 12px; border-top-width: 2px; }
  .dt-block .t { flex: none; }
  .dt-block .l { margin-top: 0; flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
  .pill { padding: 10px 16px; }
  .agenda-tools button, .agenda-tools a { padding: 12px 2px; margin: -6px 0; }
  .session .actions a, .session .actions button { padding: 12px 10px; margin: -6px -10px; }
  .home-bar a { padding: 12px 2px; font-size: 12.5px; }
  /* the padding clears the pinned Register button (the !important beats the
     inline gap); the narrow fade at the seam signals any remaining overflow */
  .home-bar .wrap { gap: 6px !important; padding-right: 158px; }
  .home-bar::before {
    content: ""; position: absolute; top: 0; bottom: 1px; right: 156px; width: 10px;
    background: linear-gradient(to right, transparent, var(--paper));
    pointer-events: none; z-index: 1;
  }
}
@media (max-width: 400px) {
  .nav .wrap { gap: 16px; }
  .nav .btn { padding: 8px 10px; font-size: 12.5px; }
}

/* ---------- 14 Aug hero: the room in motion, quietly (people, not the venue) ---------- */
.hero-live { margin: 0; }
.hero-live .hl-frame { position: relative; aspect-ratio: 3 / 2; overflow: hidden; border: 1px solid var(--on-navy-rule); }
.hero-live img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0; animation: hero-fade 28s linear infinite;
}
.hero-live .hl-frame::after {
  content: ''; position: absolute; inset: 0;
  background: linear-gradient(180deg, rgba(0, 28, 57, .12), rgba(0, 28, 57, .22));
  pointer-events: none;
}
.hero-live img:nth-child(1) { animation-name: hero-fade-first; }
.hero-live img:nth-child(2) { animation-delay: 7s; }
.hero-live img:nth-child(3) { animation-delay: 14s; }
.hero-live img:nth-child(4) { animation-delay: 21s; }
.hero-live figcaption { font-family: var(--mono); font-size: 11.5px; letter-spacing: .08em; color: var(--on-navy-soft); margin-top: 10px; }
@keyframes hero-fade {
  0% { opacity: 0; } 4% { opacity: 1; } 25% { opacity: 1; } 30% { opacity: 0; } 100% { opacity: 0; }
}
@keyframes hero-fade-first {
  0% { opacity: 1; } 25% { opacity: 1; } 30% { opacity: 0; } 95% { opacity: 0; } 100% { opacity: 1; }
}
@media (prefers-reduced-motion: reduce) {
  .hero-live img { animation: none; }
  .hero-live img:first-child { opacity: 1; }
}


/* ---------- 16 Aug navigation + hero photography refinement ---------- */
.nav {
  border-bottom-color: color-mix(in srgb, var(--navy) 18%, var(--rule));
  box-shadow: 0 1px 0 rgba(0, 38, 75, .035);
}
.nav .wrap { height: 72px; }
.wordmark { font-size: 16.25px; letter-spacing: .075em; }
.nav-links { gap: 26px; }
.nav-links a:not(.btn) { position: relative; padding: 25px 0 24px; }
.nav-links a:not(.btn)::after {
  content: ""; position: absolute; left: 0; right: 100%; bottom: 17px;
  height: 1px; background: var(--accent); transition: right .18s ease;
}
.nav-links a:not(.btn):hover::after,
.nav-links a:not(.btn):focus-visible::after { right: 0; }
.nav-links .btn { padding: 10px 19px; color: #fff; }
.nav-toggle {
  display: inline-flex; align-items: center; gap: 9px; padding: 9px 0;
  border: 0; background: transparent; color: var(--ink);
  font: 600 13px/1 var(--sans); letter-spacing: .04em; cursor: pointer;
}
.nav-toggle svg { width: 18px; height: 14px; fill: none; stroke: currentColor; stroke-width: 1.5; }
.nav-toggle:hover { color: var(--accent); }
.home-bar .hb-toggle { flex: 0 0 auto; padding: 6px 0; }

/* the site menu: one full section index, reachable from either bar at any width */
.site-menu {
  position: fixed; left: 0; right: 0; top: 72px; z-index: 70;
  max-height: calc(100vh - 72px); overflow-y: auto;
  background: var(--paper); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--navy);
  box-shadow: 0 18px 38px rgba(0, 38, 75, .12);
}
.site-menu[hidden] { display: none; }
.site-menu .wrap { padding-top: 10px; padding-bottom: 26px; }
.sm-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 56px; }
.sm-grid a {
  display: flex; align-items: baseline; gap: 14px; padding: 12px 0;
  border-bottom: 1px solid var(--rule); font-size: 15px; font-weight: 500; color: var(--ink);
}
.sm-grid a:hover { color: var(--accent); text-decoration: none; }
.sm-grid .n { font-family: var(--mono); font-size: 11.5px; color: var(--accent); }
.sm-cta { margin-top: 20px; }

/* Flat hairline keyline (brand: no shadows, no mounts). The bottom-origin crop
   removes most of the presentation screen while keeping faces and the room. */
.hero-live .hl-frame { aspect-ratio: 16 / 9; }
.hero-live img { transform: none; object-position: center bottom; }

@media (max-width: 820px) {
  .nav .wrap { height: 64px; }
  .wordmark { font-size: 14.5px; }
  .nav-links { display: none; }
  .nav .nav-toggle { margin-left: auto; }
  .site-menu { top: 64px; max-height: calc(100vh - 64px); }
  .sm-grid { grid-template-columns: minmax(0, 1fr); }
  .sm-cta { display: block; text-align: center; }
}

@media (max-width: 400px) {
  .wordmark { font-size: 13.5px; letter-spacing: .055em; }
  .nav-toggle span { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
}

/* ---------- 16 Aug: the page behind the page ----------
   A quiet working-document ground in the house hairline language. Three layers,
   all near-threshold: a fine dot grid on the paper, two column rules at the
   content edges, and small registration crosses where a section rule meets them.
   Navy bands paint over all three, so the devices live only on the light ground. */
body {
  background-image: radial-gradient(rgba(22, 24, 29, .05) 1px, transparent 1.15px);
  background-size: 26px 26px;
  background-position: 50% 0;
}
@media (min-width: 821px) {
  body::before {
    content: ""; position: fixed; top: 0; bottom: 0; left: 50%;
    width: var(--max); transform: translateX(-50%);
    border-left: 1px solid rgba(22, 24, 29, .055);
    border-right: 1px solid rgba(22, 24, 29, .055);
    pointer-events: none; z-index: -1;
  }
  main section { position: relative; }
  main section:not(#speakers)::before,
  main section:not(#speakers)::after {
    position: absolute; top: -0.62em; font-family: var(--mono); font-size: 13px;
    line-height: 1; color: rgba(22, 24, 29, .22); pointer-events: none;
  }
  /* clamped 20 Aug: below 1200px the calc goes negative and pushed the crosses
     outside the viewport, scrolling the whole page sideways on laptops */
  main section:not(#speakers)::before { content: "+"; left: max(6px, calc(50% - (var(--max) / 2) - 4.5px)); }
  main section:not(#speakers)::after { content: "+"; right: max(6px, calc(50% - (var(--max) / 2) - 4.5px)); }
  main section.flush::before, main section.flush::after { content: none; }
}
@media print {
  body { background-image: none; }
  main section::before, main section::after { content: none !important; }
}

/* what delegates leave with (16 Aug client round) */
.leave-with { margin-top: 64px; border-top: 1px solid var(--rule); padding-top: 40px; max-width: 72ch; }
.leave-with .smallcaps { display: block; margin-bottom: 14px; }
.leave-with p { margin: 0 0 14px; }
.leave-with ul { list-style: none; margin: 0; padding: 0; }
.leave-with li { padding: 11px 0 11px 26px; border-bottom: 1px solid var(--rule); position: relative; }
.leave-with li::before { content: ""; position: absolute; left: 2px; top: 1.35em; width: 12px; height: 1px; background: var(--accent); }

/* the day in working light (16 Aug engagement round): the programme's parts shift
   ground as the day moves; morning on paper, lunch warm, reception cooled navy */
.mv { margin: 0 -18px; padding: 1px 18px 34px; }
.mv-lunch { background: var(--paper-warm); }
.mv-reception { background: color-mix(in srgb, var(--navy) 4%, var(--paper)); }

/* landmark scale for the contested sessions (question titles) */
.session.landmark summary { padding-top: 28px; padding-bottom: 26px; }
.session.landmark h3 { font-family: var(--serif); font-size: 22px; font-weight: 500; max-width: 44ch; letter-spacing: -0.008em; line-height: 1.28; }
@media (max-width: 640px) { .session.landmark h3 { font-size: 19.5px; } }

/* pull-quote band: one voice from the 2026 record, unattributed as published */
.quoteband { padding: 84px 0; }
.quoteband .smallcaps { display: block; margin-bottom: 26px; }
.qb-quote { font-family: var(--serif); font-size: 38px; font-weight: 500; line-height: 1.2; letter-spacing: -0.015em; max-width: 26ch; margin: 0 0 18px; }
.qb-line { font-family: var(--serif); font-size: 21px; line-height: 1.45; color: var(--ink-soft); max-width: 46ch; margin: 0 0 28px; }
.qb-src { font-family: var(--mono); font-size: 12.5px; letter-spacing: .04em; color: var(--ink-soft); margin: 0; }
@media (max-width: 640px) {
  .quoteband { padding: 60px 0; }
  .qb-quote { font-size: 27px; }
  .qb-line { font-size: 18px; }
}
@media print {
  .mv { background: none !important; margin: 0; padding: 0; }
  .quoteband { display: none; }
}

/* interval photography: the day pauses at lunch (16 Aug engagement round) */
.part-photo { margin: 20px 0 8px; }
.part-photo img { display: block; width: 100%; height: 180px; object-fit: cover; object-position: 50% 78%; border: 1px solid var(--rule); }
@media (max-width: 640px) { .part-photo img { height: 120px; } }
@media print { .part-photo { display: none; } }

/* interval band captions + slimmer coffee strip */
.part-photo figcaption { font-size: 11px; letter-spacing: .08em; color: var(--ink-soft); margin-top: 7px; text-align: right; }
.session.interstitial .part-photo { margin: 14px 0 4px; }
.session.interstitial .part-photo img { height: 140px; }
.part-photo img[src*="aefsc-152"] { object-position: 50% 42%; }
.part-photo img[src*="aefsc-305"] { object-position: 50% 42%; }
.part-photo img[src*="aefsc-149"] { object-position: 50% 40%; }

/* the breathing lines, echoed once: the quote band's right column */
.quoteband .wrap { position: relative; }
.qb-lines { position: absolute; right: 24px; top: 50%; transform: translateY(-50%); width: 380px; height: 272px; pointer-events: none; }
.qb-lines line { stroke: var(--ink); stroke-width: 1; opacity: .07; animation: qb-breathe 11s ease-in-out infinite; }
.qb-lines line:nth-of-type(3n) { animation-duration: 9s; animation-delay: -3s; }
.qb-lines line:nth-of-type(3n+1) { animation-duration: 13s; animation-delay: -7s; }
.qb-lines line:nth-of-type(4n) { animation-delay: -5s; }
.qb-lines line.az { stroke: var(--accent); opacity: .2; animation-name: qb-breathe-az; }
@keyframes qb-breathe { 0%, 100% { opacity: .05; } 50% { opacity: .3; } }
@keyframes qb-breathe-az { 0%, 100% { opacity: .12; } 50% { opacity: .6; } }
@media (max-width: 1100px) { .qb-lines { display: none; } }
@media (prefers-reduced-motion: reduce) { .qb-lines line { animation: none; opacity: .16; } .qb-lines line.az { opacity: .4; } }

/* ink-level link interaction: azure underline draws in on hover */
.who-links a, .rec-2027 a, .signals a, .qb-src a {
  background-image: linear-gradient(var(--accent), var(--accent));
  background-size: 0% 1px; background-position: 0 100%; background-repeat: no-repeat;
  transition: background-size .18s ease;
}
@media (hover: hover) {
  .who-links a:hover, .rec-2027 a:hover, .signals a:hover, .qb-src a:hover { background-size: 100% 1px; }
}
@media print { .qb-lines { display: none; } }
.mv-reception .part-photo img { height: 210px; object-position: 50% 38%; }

/* ---------- 17 Aug editorial-publication refinement (client brief) ----------
   Publication first, conference second. Chapter spacing, hero hierarchy,
   executive-summary structure, figure weight, timeline nodes, signal and
   response record, audience index, interval photography at scale, quiet
   expander motion, practical as one card, footer heritage. Desktop spacing
   is scoped to min-width so the tuned mobile compression stands. */

/* chapter spacing: the majors breathe roughly a quarter more */
@media (min-width: 981px) {
  section { padding: 124px 0; }
  #rooms, #editions { padding-top: 160px; }
  #convening { padding: 172px 0 132px; }
  #speakers { padding: 160px 0 136px; }
  .cal-band { padding: 92px 0 96px; }
  .quoteband { padding: 108px 0; }
  .shead { margin-bottom: 68px; }
  .hero { padding: 120px 0 108px; }
  footer { padding: 76px 0; }
}

/* hero: strapline, wordmark, question, date, one dominant action */
.lockup { margin-top: 36px; }
.lockup .tagline { margin-top: 26px; padding-top: 20px; }
.hero .dateline { margin: 38px 0 42px; }
.hero .routes { gap: 26px; }
.hero .routes .btn:not(.text) { padding: 14px 28px; font-size: 15.5px; }
.hero .btn.text { font-weight: 500; font-size: 15px; padding-left: 0; }

/* summary as an executive summary: narrative, figures, chart, each part
   opened by its own hairline; the numbers carry the weight */
.figures { margin-top: 72px; padding-top: 44px; gap: 26px 88px; }
.figures .fig .n { font-size: clamp(40px, 4vw, 58px); }
.figures .fig .l { margin-top: 8px; max-width: 24ch; }
.sum-chart { margin: 64px 0 0; max-width: 640px; border-top: 1px solid var(--rule); padding-top: 40px; }
.sum-chart > figcaption { font-size: 13.5px; font-weight: 600; color: var(--ink); margin-bottom: 16px; }

/* the regulatory timeline: nodes on the connecting rule */
.cal-cell { position: relative; }
.cal-cell::before {
  content: ""; position: absolute; top: -3.5px; left: 20px;
  width: 7px; height: 7px; border-radius: 50%; background: var(--accent-on-navy);
}

/* the conference record: signal and response, split on one rule */
@media (min-width: 981px) {
  .rec-row { gap: 0; }
  .rec-2026 { padding-right: 48px; }
  .rec-2027 { border-left: 1px solid var(--rule); padding-left: 48px; }
}

/* who attends: an indexed editorial list, not six identical cards */
#who .who-grid { background: transparent; border: 0; border-top: 1px solid var(--ink); gap: 0 56px; }
#who .who-cell { background: transparent; padding: 28px 0 40px; border-bottom: 1px solid var(--rule); }
.who-no { display: block; font-size: 12px; color: var(--accent); letter-spacing: .06em; margin-bottom: 14px; }
#who .who-cell .smallcaps.accent { color: var(--ink); font-size: 13.5px; }
#who .who-cell p { font-size: 15.5px; }

/* near-threshold ground shifts between chapters (no striping) */
#who, #practical { background: color-mix(in srgb, var(--paper-warm) 45%, var(--paper)); }

/* interval photography at chapter scale */
@media (min-width: 641px) {
  .part-photo { margin: 48px 0 12px; }
  .part-photo img { height: 300px; }
  .session.interstitial .part-photo { margin: 40px 0 8px; }
  .session.interstitial .part-photo img { height: 220px; }
  .mv-reception .part-photo img { height: 320px; }
  .mv { padding-bottom: 48px; }
}

/* expanders: a quiet settle on open */
@media (prefers-reduced-motion: no-preference) {
  .session[open] .body { animation: reveal-quiet .26s ease; }
  .faq[open] p { animation: reveal-quiet .26s ease; }
}
@keyframes reveal-quiet {
  from { opacity: 0; transform: translateY(-4px); }
  to { opacity: 1; transform: none; }
}

/* readability: long-document readers */
.session .framing { font-size: 16px; }
.session .body p { font-size: 16px; }
.faq p { font-size: 16px; }
.rec-2027 p { font-size: 15.5px; }
.route p, .room-card .rc-desc { font-size: 15.5px; }

/* practical: one concise information card */
#practical .fact-grid { max-width: 880px; background: var(--rule); }
#practical .venue-credit { max-width: 880px; }

/* footer heritage */
.f-heritage { margin-top: 44px; font-size: 12px; letter-spacing: .1em; text-transform: uppercase; color: var(--on-navy-soft); }
footer .preview-note { margin-top: 14px; }

@media print {
  #who, #practical { background: #fff !important; }
  #who .who-grid { border-top-color: var(--rule); }
  .f-heritage { display: none; }
  .session[open] .body, .faq[open] p { animation: none !important; }
}

/* ---------- 17 Aug publication elevation (second client brief) ----------
   The digital edition of an annual publication, with a conference as its
   live expression. Typography leads; whitespace carries authority. More
   air between chapters, figures as pull quotes, a real timeline, signal
   and response as paired cards, an audience index, feature-scale
   highlights, question-first sessions, photography as editorial pauses,
   quiet chapter markers, minimal convening, practical as one card. */

/* 1 · global rhythm */
@media (min-width: 981px) {
  section { padding: 150px 0; }
  #rooms, #editions { padding-top: 176px; }
  #convening { padding: 180px 0 140px; }
  #speakers { padding: 168px 0 144px; }
  .cal-band { padding: 104px 0 112px; }
  .quoteband { padding: 124px 0; }
  .shead { margin-bottom: 84px; }
  .hero { padding: 136px 0 120px; }
  #question p { margin-bottom: 26px; }
}
@media (max-width: 980px) {
  section { padding: 84px 0; }
  .shead { margin-bottom: 44px; }
}

/* 2 · partner strip: institutional endorsements, grouped, lighter */
.partner-strip .wrap { gap: 26px 88px; padding-top: 34px; padding-bottom: 34px; }
.ps-group { display: flex; align-items: center; gap: 28px; }
.partner-strip img { opacity: .82; }
.partner-strip img.ps-fe { height: 24px; opacity: .95; }
.partner-strip img.ps-barclays { height: 20px; }
.partner-strip img.ps-kreab { height: 21px; }
.partner-strip img.ps-sc { height: 30px; }
.partner-strip img.ps-bnp { height: 22px; }

/* 3 · the figures as pull quotes */
.figures { display: block; margin-top: 88px; padding-top: 0; border-top: 0; }
.figures .fig { border-top: 1px solid var(--rule); padding: 48px 0 52px; }
.figures .fig .n { font-size: clamp(60px, 7.5vw, 104px); font-weight: 440; line-height: 1; letter-spacing: -0.02em; }
.figures .fig .l { font-size: 15.5px; margin-top: 14px; max-width: 36ch; }
.figures .src { border-top: 1px solid var(--rule); padding-top: 18px; }

/* 4 · the timeline: one line, five moments */
.cal-rail { border-left: 0; }
.cal-cell { border-right: 0; padding: 36px 48px 8px 0; }
.cal-cell:last-child { padding-right: 0; }
.cal-cell .cal-date { font-size: 18px; }
.cal-cell p { font-size: 14.5px; margin-top: 16px; max-width: 30ch; }
.cal-cell::before { width: 9px; height: 9px; top: -5px; left: 0; }

/* 5 · the record: signal on white, response on a shaded card */
#signals .rec-list { border-top: 0; }
#signals .rec-row { border-bottom: 0; padding: 0; margin-bottom: 28px; }
#signals .rec-2026 { background: var(--paper); border: 1px solid var(--rule); padding: 36px 40px 38px; }
#signals .rec-2027 { background: color-mix(in srgb, var(--paper-warm) 82%, var(--paper)); border: 1px solid transparent; padding: 36px 40px 38px; }
@media (min-width: 981px) {
  #signals .rec-row { gap: 24px; }
  #signals .rec-2027 { border-left: 1px solid transparent; padding-left: 40px; }
}
@media (max-width: 980px) {
  .rec-row { grid-template-columns: 1fr; gap: 10px; }
}

/* 6 · who attends: a session index under each constituency */
.who-sessions { list-style: none; margin: 18px 0 0; padding: 0; }
.who-sessions li { border-top: 1px solid var(--rule); }
.who-sessions a { display: flex; gap: 18px; align-items: baseline; padding: 11px 0; font-size: 14.5px; font-weight: 500; color: var(--ink); }
.who-sessions a:hover { color: var(--accent-deep); }
.who-sessions .mono { font-size: 12.5px; color: var(--accent); min-width: 44px; }

/* 7 · what would success look like: the spine */
#success .success-lede { font-family: var(--serif); font-size: clamp(22px, 2.2vw, 28px); font-weight: 500; max-width: 34ch; margin-bottom: 64px; }
.success-qs { list-style: none; margin: 0; padding: 0; counter-reset: sq; max-width: 900px; }
.success-qs li { counter-increment: sq; border-top: 1px solid var(--rule); padding: 32px 0 34px 76px; position: relative; font-family: var(--serif); font-size: clamp(20px, 2vw, 26px); line-height: 1.35; }
.success-qs li::before { content: counter(sq, decimal-leading-zero); position: absolute; left: 0; top: 38px; font-family: var(--mono); font-size: 13px; color: var(--accent); }
.success-qs li:last-child { border-bottom: 1px solid var(--rule); }
.success-note { margin-top: 28px; font-size: 14.5px; }

/* 8 · programme highlights as feature stories */
.hl-row { grid-template-columns: 1fr 1fr; gap: 0 72px; background: transparent; border: 0; margin-bottom: 72px; }
.hl-card { background: transparent; border-top: 1px solid var(--ink); padding: 30px 0 46px; }
.hl-card:hover { background: transparent; }
.hl-card:hover .hl-title { color: var(--accent-deep); }
.hl-fmt { order: 1; margin-top: 0; }
.hl-title { order: 2; font-family: var(--serif); font-weight: 500; font-size: clamp(24px, 2.1vw, 30px); line-height: 1.25; margin-top: 16px; letter-spacing: -0.012em; }
.hl-line { order: 3; font-size: 14.5px; margin-top: 12px; max-width: 46ch; }
.hl-time { order: 4; font-size: 13px; color: var(--ink-soft); margin-top: 16px; }
@media (max-width: 980px) { .hl-row { grid-template-columns: 1fr; gap: 0; } }

/* 9 · the programme: the question leads, time is metadata */
.session h3 { font-size: 21px; max-width: 44ch; }
.session .meta-row { margin: 10px 0 0; gap: 16px; }
.session .time { min-width: 0; font-size: 12.5px; color: var(--ink-soft); }
.session .framing { margin-top: 12px; }
.session summary { padding: 30px 52px 30px 8px; }
.session.landmark h3 { font-size: 26px; }
.session .body { padding: 4px 8px 30px 8px; }

/* 10 · photography as editorial pauses; captions as quiet chapter marks */
@media (min-width: 641px) {
  .part-photo img { height: 380px; }
  .session.interstitial .part-photo img { height: 280px; }
  .mv-reception .part-photo img { height: 420px; }
  .g-lead img { max-height: 560px; object-fit: cover; }
}
.part-photo figcaption, .g-grid figcaption, .g-lead figcaption {
  font-size: 10.5px; letter-spacing: .16em;
  color: color-mix(in srgb, var(--ink-soft) 72%, transparent);
}

/* 11 · rooms without routes */
.room-card { min-height: 0; }

/* 12 · convening: minimal */
.convene-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 48px 64px; max-width: 1040px; }
.convene-list .convene-item h3 { font-size: 17px; margin-bottom: 10px; }
.convene-list .convene-item p { font-size: 15px; color: var(--ink-soft); }
@media (max-width: 760px) { .convene-list { grid-template-columns: 1fr; gap: 32px; } }

/* 13 · practical: one information card, two columns */
#practical .fact-grid.fact-card { grid-template-columns: 1fr 1fr; }
#practical .fact { padding: 28px 32px; }
@media (max-width: 640px) { #practical .fact-grid.fact-card { grid-template-columns: 1fr; } }

/* 14 · mobile rhythm */
@media (max-width: 640px) {
  .figures .fig { padding: 36px 0 40px; }
  .figures .fig .n { font-size: 52px; }
  .success-qs li { padding: 26px 0 28px 52px; font-size: 19px; }
  .success-qs li::before { top: 31px; }
  #success .success-lede { margin-bottom: 44px; }
  .part-photo img { height: 200px; }
  .session.interstitial .part-photo img { height: 170px; }
  .session h3 { font-size: 19px; }
  .session.landmark h3 { font-size: 21px; }
  #signals .rec-2026, #signals .rec-2027 { padding: 26px 24px 28px; }
}

@media print {
  .success-qs li, .success-qs li:last-child { border-color: #ccc; }
}

/* 15 · question-first summary: retire the old time-column grid */
@media (min-width: 981px) {
  .session summary { display: block; }
  .session summary > h3, .session summary > .framing { grid-column: auto; }
}

/* 16 · partner strip wraps inside its groups on small screens */
@media (max-width: 640px) {
  .partner-strip .wrap { gap: 22px 40px; }
  .ps-group { flex-wrap: wrap; gap: 14px 24px; }
  .partner-strip img.ps-sc { height: 26px; }
}
#practical .fact-card .fact:last-child { grid-column: 1 / -1; }

/* 17 · type consistency pass: one ladder for every role
   serif ledes share one scale; serif question titles share one scale;
   uppercase meta labels 11.5/500; section sub-labels 13.5/500;
   programme mono times 13px; card headings 19px; card copy 15.5px. */
.qtext, .success-lede, .caps-line { font-size: clamp(25px, 2.3vw, 30px); font-weight: 500; }
.hl-title { font-size: clamp(22px, 1.9vw, 26px); }
.session .fmt, .hl-fmt { font-size: 11.5px; font-weight: 500; letter-spacing: .09em; }
#who .who-cell .smallcaps.accent, .part-head .smallcaps { font-size: 13.5px; }
.session .time, .who-sessions .mono { font-size: 13px; }
.salon-spot .ss-head h3 { font-size: 26px; }
.convene-list .convene-item h3 { font-size: 19px; }
.convene-list .convene-item p { font-size: 15.5px; }

/* 18 · scale moderation (client: less expansive, not a policy publication)
   Keep the editorial structure; bring sizes and spacing back to working
   proportions. Roughly the 17 Aug refinement rhythm, not the elevation peak. */
@media (min-width: 981px) {
  section { padding: 118px 0; }
  #rooms, #editions { padding-top: 148px; }
  #convening { padding: 150px 0 124px; }
  #speakers { padding: 148px 0 128px; }
  .cal-band { padding: 88px 0 94px; }
  .quoteband { padding: 100px 0; }
  .shead { margin-bottom: 64px; }
  .hero { padding: 116px 0 102px; }
  #question p { margin-bottom: 22px; }
}
.figures { margin-top: 64px; }
.figures .fig { padding: 34px 0 38px; }
.figures .fig .n { font-size: clamp(44px, 4.6vw, 64px); }
.figures .fig .l { font-size: 15px; margin-top: 10px; }
#success .success-lede { margin-bottom: 44px; }
.qtext, .success-lede, .caps-line { font-size: clamp(23px, 2vw, 27px); }
.success-qs li { font-size: clamp(19px, 1.7vw, 22px); padding: 24px 0 26px 64px; }
.success-qs li::before { top: 29px; }
.hl-title { font-size: clamp(20px, 1.7vw, 23px); }
.hl-card { padding: 24px 0 36px; }
.hl-row { margin-bottom: 56px; }
.session summary { padding: 24px 52px 24px 8px; }
.session h3 { font-size: 19px; }
.session.landmark h3 { font-size: 22px; }
.session .framing { margin-top: 8px; }
.cal-cell { padding: 28px 40px 8px 0; }
.cal-cell .cal-date { font-size: 16px; }
#signals .rec-2026, #signals .rec-2027 { padding: 28px 30px 30px; }
#signals .rec-row { margin-bottom: 20px; }
@media (min-width: 641px) {
  .part-photo img { height: 300px; }
  .session.interstitial .part-photo img { height: 230px; }
  .mv-reception .part-photo img { height: 330px; }
  .g-lead img { max-height: 480px; }
}
@media (max-width: 640px) {
  .figures .fig .n { font-size: 42px; }
  .success-qs li { font-size: 18px; }
}

/* 18 Aug type-consistency pass: agenda roles aligned to one scale */
.hl-title { font-size: 22px; letter-spacing: -0.008em; }           /* joins the landmark session-title scale exactly (was clamp to 23px) */
.session .tier { font-size: 11.5px; letter-spacing: .09em; }       /* joins the 11.5px meta-caps scale shared with .fmt */

/* 18 Aug sentiments round: charts from the record, small quote, menu fade */
.sum-chart .src { font-size: 11px; color: var(--ink-soft); }
#signals .rec-2026 > p { font-size: 17px; max-width: 52ch; }
.sig-chart { margin-top: 24px; }
.sc-cap { font-family: var(--mono); font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 14px; }
.sc-row { margin-bottom: 12px; }
.sc-row:last-child { margin-bottom: 0; }
.sc-l { display: block; font-size: 12.5px; color: var(--ink-soft); margin-bottom: 4px; }
.sc-bar { display: flex; align-items: center; gap: 8px; }
/* bars scale against a shared track, not the label-shortened flex line, so ratios render exactly */
.sc-track { display: block; flex: 1 1 auto; min-width: 0; }
.sc-bar i { display: block; height: 15px; border-radius: 2px; background: #AECDF3; flex: 0 1 auto; }
.sc-bar i.em { background: var(--accent); }
.sc-v { font-size: 12.5px; font-weight: 650; color: var(--ink); white-space: nowrap; flex: 0 0 52px; }
.sig-split, .sig-lanes { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-top: 24px; }
.ss-col { border-top: 2px solid var(--ink); padding-top: 10px; }
.ss-col.ss-em { border-top-color: var(--accent); }
.ss-h { display: block; font-family: var(--mono); font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); margin-bottom: 6px; }
#signals .ss-col p { font-family: var(--sans); font-size: 13px; line-height: 1.55; margin: 0; max-width: none; }
.sig-steps { list-style: none; margin: 26px 0 0; padding: 0; display: grid; grid-template-columns: 1fr 1fr 1fr; gap: 18px; }
.sig-steps li { position: relative; border-top: 1px solid var(--rule); padding-top: 12px; font-size: 12.5px; line-height: 1.55; color: var(--ink-soft); }
.sig-steps li::before { content: ""; position: absolute; top: -3px; left: 0; width: 5px; height: 5px; border-radius: 50%; background: var(--ink); }
.sig-steps li:last-child { color: var(--ink); }
.sig-steps li:last-child::before { background: var(--accent); }
.sig-quote { border-top: 1px solid var(--rule); margin-top: 10px; padding-top: 28px; }
.sq-text { font-family: var(--serif); font-size: 18px; line-height: 1.55; max-width: 62ch; margin: 0 0 10px; }
.sq-src { font-family: var(--mono); font-size: 11px; letter-spacing: .06em; color: var(--ink-soft); margin: 0; }
.site-menu { opacity: 0; transform: translateY(-6px); transition: opacity .24s ease, transform .24s ease; }
.site-menu.is-open { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
  .site-menu { transition: none; transform: none; }
}
@media (max-width: 640px) {
  .sig-split, .sig-lanes, .sig-steps { grid-template-columns: 1fr; gap: 14px; }
  .sig-steps li { border-top: 0; padding-top: 0; padding-left: 16px; }
  .sig-steps li::before { top: 7px; }
}

/* 18 Aug explicit break slots: interstitials carry full agenda anatomy in the logistics register */
.session.interstitial { border-top: 2px solid var(--graphite); padding: 18px 8px 18px; }
.session.interstitial .i-title { font-size: 19px; font-weight: 600; letter-spacing: -0.005em; color: var(--ink); }
.session.interstitial .framing { margin-top: 8px; font-size: 15.5px; color: var(--ink-soft); max-width: 66ch; }

/* 18 Aug: hero days counter + navy contents menu */
.hero .hero-grid { position: relative; }
.hero-count { position: absolute; top: -62px; right: 0; text-align: right; color: var(--on-navy-soft); z-index: 2; }
.hero-count .hc-n { display: block; font-family: var(--serif); font-size: 42px; line-height: 1; font-weight: 600; color: var(--on-navy); font-variant-numeric: tabular-nums; }
.hero-count .hc-l { font-size: 10px; letter-spacing: .13em; text-transform: uppercase; }
.site-menu { background: var(--navy-deep); border-top: 1px solid var(--on-navy-rule); border-bottom: 2px solid var(--accent); }
.site-menu .wrap { padding-top: 22px; padding-bottom: 34px; }
.sm-kicker { display: flex; justify-content: space-between; gap: 20px; font-size: 10.5px; letter-spacing: .14em; text-transform: uppercase; color: var(--on-navy-soft); margin-bottom: 12px; }
.sm-grid a { color: var(--on-navy); border-bottom: 1px solid var(--on-navy-rule); font-size: 16.5px; font-weight: 600; padding: 13px 0; }
.sm-grid a::after { content: "\2192"; margin-left: auto; color: var(--accent-on-navy); opacity: 0; transform: translateX(-6px); transition: opacity .18s ease, transform .18s ease; }
.sm-grid a:hover { color: var(--accent-on-navy); }
.sm-grid a:hover::after { opacity: 1; transform: none; }
.sm-grid .n { color: var(--accent-on-navy); }
@media (prefers-reduced-motion: reduce) {
  .sm-grid a::after { transition: none; }
}
@media (max-width: 820px) {
  .hero-count { top: -46px; }
  .hero-count .hc-n { font-size: 30px; }
}

/* 18 Aug: partner development-proposal band (hidden on the public share mirror by JS) */
.dev-note { border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); background: var(--panel, #F4F4F3); }
.dev-row { display: flex; align-items: baseline; gap: 22px; padding: 13px 0; flex-wrap: wrap; }
.dev-row .smallcaps { color: var(--ink-soft); letter-spacing: .09em; }
.dev-line { font-size: 14.5px; color: var(--ink-soft); }
.dev-dl { font-size: 13px; margin-left: auto; text-decoration: none; color: var(--accent, #0D6EDD); }
.dev-dl:hover { text-decoration: underline; }
@media print { .dev-note { display: none; } }

/* ============================================================
   18 Aug design refinement pass: hierarchy, not more design.
   One restrained institutional green joins the system; chapter
   air up, component spacing down; programme as a calm timeline.
   ============================================================ */
:root { --green: #1F5A4A; --green-tint: #F1F6F3; }

/* chapter air: majors breathe ~25% more; headings get sky above */
section { padding: 150px 0 132px; }
.shead { margin-bottom: 66px; }
main p { line-height: 1.65; }

/* the primary CTA is solid navy everywhere on light ground;
   on the navy grounds it inverts to keep the same object legible */
.btn { background: var(--navy); border-color: var(--navy); }
.btn:hover { background: var(--navy-deep); border-color: var(--navy-deep); }
.hero .btn, footer .btn { background: #fff; border-color: #fff; color: var(--navy); }
.hero .btn:hover, footer .btn:hover { background: var(--on-navy); border-color: var(--on-navy); color: var(--navy-deep); }
.btn.ghost { background: transparent; color: var(--ink); border-color: var(--ink); }
.btn.ghost:hover { border-color: var(--green); color: var(--green); background: transparent; }
.btn.text { background: none; border: 0; color: var(--ink); }
.hero .btn.text { background: none; border: 0; color: var(--on-navy); }
.btn.text:hover { color: var(--green); }

/* green carries the small format labels and quiet editorial marks */
.session .fmt, .smallcaps.accent, .room-card .tier, .route .tier, .si-link, .sig-quote .sq-src { color: var(--green); }
.who-links a:hover, .rec-2027 a:hover, .dev-dl:hover, .nav-links a:hover { color: var(--green); }
.who-links a, .rec-2027 a, .dev-dl { color: var(--ink); }
.who-links a::after { background: var(--green); }
.session .tier { color: var(--green); }
:focus-visible { outline-color: var(--green); }

/* Why January 2027 matters: pale green field, ink type, green dates */
.cal-band { background: var(--green-tint); }
.cal-band .shead-onnavy h2, .cal-band h2, .cal-cell p { color: var(--ink); }
.cal-cell { border-color: color-mix(in srgb, var(--green) 22%, transparent); }
.cal-cell .cal-date { color: var(--green); }
.cal-cell::before { background: var(--green); border-color: var(--green-tint); }
.cal-scroll { --edge: var(--green-tint); }

/* record pairs: bound units, fine vertical rule, generous separation */
.rec-row { padding: 0 0 56px; margin-top: 56px; border-bottom: 1px solid var(--rule); gap: 0; }
.rec-row:first-child { margin-top: 0; }
.rec-2026 { padding-right: 44px; }
.rec-2027 { border-left: 1px solid var(--rule); padding-left: 44px; }
.rec-2026 .smallcaps, .rec-2027 .smallcaps { display: block; margin-bottom: 12px; letter-spacing: .1em; }
@media (max-width: 720px) { .rec-2027 { border-left: 0; padding-left: 0; border-top: 1px solid var(--rule); padding-top: 18px; margin-top: 18px; } .rec-2026 { padding-right: 0; } }

/* summary evidence: figures large and quiet sources; chart bound to the block */
.figures .fig .n { font-size: clamp(72px, 8.5vw, 118px); }
.figures .src { font-size: 11.5px; color: var(--graphite); }
.sum-chart { border-top: 0; margin-top: 4px; padding-top: 10px; }
.sum-chart .src { font-size: 11.5px; color: var(--graphite); }

/* the 2026 record chart: the 800bn gap bar is the single green mark */
.sc-bar i { background: #C9D3DC; }
.sc-bar i.em { background: #AECDF3; }
.sig-chart .sc-row:nth-of-type(2) .sc-bar i { background: var(--green); }

/* who attends: compact cells, inline session pointers */
.who-cell { padding: 26px 26px 24px; }
.who-cell p { line-height: 1.5; }
.who-sessions-line { margin-top: 14px; font-size: 13px; }
.who-sessions-line a { color: var(--ink-soft); text-decoration: none; }
.who-sessions-line a:hover { color: var(--green); text-decoration: underline; }

/* the day: salon inset beneath the map */
.salon-inset { margin-top: 28px; border: 1px solid var(--rule); border-left: 3px solid var(--green); background: var(--paper-warm); padding: 22px 26px 24px; scroll-margin-top: 120px; }
.salon-inset .si-line { margin: 10px 0 12px; max-width: 70ch; color: var(--ink); font-size: 15px; }
.si-themes { list-style: none; display: flex; flex-wrap: wrap; gap: 8px 26px; margin-bottom: 14px; font-size: 12.5px; color: var(--ink-soft); }
.si-themes li { position: relative; padding-left: 14px; }
.si-themes li::before { content: ''; position: absolute; left: 0; top: 7px; width: 6px; height: 6px; border-radius: 50%; background: var(--green); }
.si-link { font-size: 14px; text-decoration: none; }
.si-link:hover { text-decoration: underline; }

/* the programme as a calm timeline */
#programme { background: var(--paper-warm); }
.home-agenda { position: relative; padding-left: 30px; }
.home-agenda::before { content: ''; position: absolute; left: 4px; top: 8px; bottom: 8px; width: 2px; background: color-mix(in srgb, var(--green) 26%, transparent); }
.home-agenda .agenda-tools { margin-left: 0; }
.home-agenda .session { position: relative; }
.home-agenda .session::after { content: ''; position: absolute; left: -30px; top: 30px; width: 9px; height: 9px; border-radius: 50%; background: var(--green); border: 2px solid var(--paper-warm); }
.home-agenda .session.interstitial::after { width: 7px; height: 7px; left: -29px; top: 26px; background: color-mix(in srgb, var(--green) 45%, #fff); }
.home-agenda .day-head { position: relative; }
.session summary { display: grid; grid-template-columns: 88px minmax(0, 1fr); column-gap: 22px; padding: 18px 0 20px; }
.session summary > * { grid-column: 2; }
.session summary .tl-time { grid-column: 1; grid-row: 1 / span 4; font-size: 13.5px; color: var(--ink); padding-top: 4px; min-width: 0; }
.tl-end { display: block; color: var(--graphite); font-size: 12px; }
.session .folio { display: none; }
.session summary h3 { margin-bottom: 6px; }
.session .meta-row { margin: 0 0 8px; }
.session summary .framing { margin-bottom: 0; }
details.session:not([open]) summary .framing { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.session.interstitial { display: grid; grid-template-columns: 88px minmax(0, 1fr); column-gap: 22px; padding: 14px 0 14px; border-top-width: 1px; }
.session.interstitial > * { grid-column: 2; }
.session.interstitial .tl-time { grid-column: 1; grid-row: 1 / span 3; font-size: 13.5px; color: var(--ink); padding-top: 2px; }
.session.interstitial .i-title { font-size: 16.5px; }
.session.interstitial .meta-row { margin-top: 4px; }
.session.interstitial .framing { margin-top: 4px; font-size: 14px; }
.session.landmark summary { padding-top: 24px; padding-bottom: 22px; }

/* speakers to footer: decelerate to quiet light grounds */
#speakers { background: var(--paper-warm); }
#speakers .shead h2, #speakers .lede, #speakers .sp-name { color: var(--ink); }
#speakers .sp-role { color: var(--ink-soft); }
#speakers .portrait { border-color: var(--navy); }
html.js .sp-grid.collapsed .sp:nth-child(n+9) { display: none; }
#contact { background: var(--paper); }
#contact .interest-form { background: #fff; border: 1px solid var(--rule); border-top: 3px solid var(--navy); padding: 40px 40px 44px; }
.convene-cta { margin-top: 34px; }
.plogos img { filter: grayscale(1); opacity: .8; transition: filter .2s ease, opacity .2s ease; }
.plogos img:hover { filter: none; opacity: 1; }

/* navigation: shallow after scroll, current section named in green */
.nav .wrap { transition: padding .18s ease; }
.nav.scrolled .wrap { padding-top: 9px; padding-bottom: 9px; }
.nav-now { display: none; font-size: 11.5px; letter-spacing: .1em; text-transform: uppercase; color: var(--green); margin-left: 14px; white-space: nowrap; }
.nav.scrolled .nav-now { display: inline; }
.nav-links a.current { color: var(--green); }

/* back to top */
.to-top { position: fixed; right: 22px; bottom: 22px; z-index: 60; width: 46px; height: 46px; border: 1px solid var(--rule); border-radius: 3px; background: var(--paper); color: var(--ink); font-size: 17px; cursor: pointer; opacity: 0; pointer-events: none; transition: opacity .2s ease; }
.to-top.visible { opacity: 1; pointer-events: auto; }
.to-top:hover { color: var(--green); border-color: var(--green); }

/* hero strip: varied crops so the crossfade frames read as different compositions */
.hl-frame img:nth-of-type(1) { object-position: 50% 26%; }
.hl-frame img:nth-of-type(2) { object-position: 62% 44%; transform: scale(1.07); }
.hl-frame img:nth-of-type(3) { object-position: 32% 38%; }
.hl-frame img:nth-of-type(4) { object-position: 54% 52%; transform: scale(1.14); }

/* mobile: stack the timeline gutter, keep tap targets generous */
@media (max-width: 820px) {
  section { padding: 84px 0 72px; }
  .shead { margin-bottom: 40px; }
  .home-agenda { padding-left: 20px; }
  .home-agenda .session::after { left: -20px; }
  .home-agenda .session.interstitial::after { left: -19px; }
  .session summary, .session.interstitial { grid-template-columns: 1fr; }
  .session summary .tl-time, .session.interstitial .tl-time { grid-column: 1; grid-row: auto; padding-top: 0; margin-bottom: 4px; }
  .tl-end { display: inline; }
  .session summary { min-height: 48px; }
  .to-top { right: 14px; bottom: 76px; }
  #contact .interest-form { padding: 26px 20px 30px; }
}
@media print {
  .to-top, .nav-now { display: none !important; }
  .cal-band { background: #fff !important; }
  #speakers { background: #fff !important; }
  .home-agenda::before, .home-agenda .session::after { display: none; }
}

/* refinement pass: correction batch */
/* the green mark belongs to the 800bn gap bar (div-of-type: caption is 1) */
.sig-chart .sc-row:nth-of-type(2) .sc-bar i { background: #C9D3DC; }
.sig-chart .sc-row:nth-of-type(3) .sc-bar i { background: var(--green); }
.sig-chart .sc-row:nth-of-type(4) .sc-bar i { background: #C9D3DC; }
/* record pairs: editorial columns, not cards */
.rec-row .rec-2026, .rec-row .rec-2027 { background: transparent; border: 0; box-shadow: none; padding-top: 0; padding-bottom: 0; }
.rec-row .rec-2026 { padding-left: 0; padding-right: 44px; }
.rec-row .rec-2027 { padding-right: 0; padding-left: 44px; border-left: 1px solid var(--rule); }
@media (max-width: 720px) { .rec-row .rec-2027 { border-left: 0; padding-left: 0; } }
/* speakers on the light ground: the on-navy name colour no longer applies */
#speakers .sp .sp-name { color: var(--ink); }
#speakers .sp .sp-role { color: var(--ink-soft); }
#speakers .lede { color: var(--ink); }
/* navigation never wraps; the section name truncates quietly */
.nav-links a, .nav .btn { white-space: nowrap; }
.nav-now { max-width: 230px; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 1240px) { .nav-now { display: none !important; } }
/* secondary links are typographic ink; green appears on hover */
main a:not(.btn):not(.who-sessions-line a) { color: var(--ink); text-underline-offset: 3px; }
main a:not(.btn):hover { color: var(--green); }
main .who-sessions-line a { color: var(--ink-soft); }
main .who-sessions-line a:hover { color: var(--green); }
/* the day strip: lunch block keyline joins the green system */
.dt-lunch { border-top-color: var(--green); }
/* id-scoped to out-rank the 17 Aug card rules */
#signals .rec-row .rec-2026, #signals .rec-row .rec-2027 { background: transparent; border: 0; padding: 0 44px 0 0; }
#signals .rec-row .rec-2027 { padding: 0 0 0 44px; border-left: 1px solid var(--rule); }
@media (max-width: 720px) { #signals .rec-row .rec-2027 { border-left: 0; padding-left: 0; } }
/* timeline grid: explicit placement out-ranks the retired 17 Aug grid rules */
.session summary > h3, .session summary > .framing, .session summary > .meta-row, .session summary > .smallcaps { grid-column: 2 / 3; }
.session summary > .tl-time { grid-column: 1 / 2; }
@media (max-width: 820px) {
  .session summary > h3, .session summary > .framing, .session summary > .meta-row, .session summary > .tl-time { grid-column: 1 / -1; }
}
/* last azure stragglers join the refinement scheme */
.session .actions a, .session .actions button { color: var(--ink); }
.session .actions a:hover, .session .actions button:hover { color: var(--green); }
.session .expand-hint { color: var(--green); }
@media (hover: hover) { .session summary:hover h3 { color: var(--green); } }
.agenda-tools button, .agenda-tools a { color: var(--ink); }
.agenda-tools button:hover, .agenda-tools a:hover { color: var(--green); }
.dt-block .t { color: var(--ink-soft); }

/* ============================================================
   18 Aug final disciplined pass: subtraction and one dark moment
   ============================================================ */
/* How to take part: the single dark navy block mid-scroll */
#contact { background: var(--navy); border-top: 0; }
#contact .shead h2, #contact .route h3 { color: var(--on-navy); }
#contact .route p, #contact .route .tier { color: var(--on-navy-soft); }
#contact .route .tier { color: var(--on-navy-soft); }
#contact .route p a { color: var(--on-navy); }
#contact .btn.ghost { color: var(--on-navy); border-color: rgba(242, 246, 250, .45); }
#contact .btn.ghost:hover { color: #fff; border-color: #fff; }
#contact .interest-form { background: #fff; border: 0; }
#contact .interest-form .muted, #contact .interest-form label { color: var(--ink-soft); }
#contact .btn { background: #fff; border-color: #fff; color: var(--navy); }
#contact .interest-form .btn { background: var(--navy); border-color: var(--navy); color: #fff; }

/* collapsed rows: the authored teaser is the whole first view */
.session summary .framing.tease { font-size: 15px; color: var(--ink-soft); max-width: 66ch; }
.session .body .framing.full { margin: 2px 0 14px; }
.session summary { padding: 15px 0 16px; }
.session.landmark summary { padding-top: 20px; padding-bottom: 18px; }
.home-agenda .day-head { margin: 40px 0 6px; }

/* orientation devices, not essays */
.who-cell { padding: 20px 22px 18px; }
.who-cell p { font-size: 14px; line-height: 1.45; }
.who-sessions-line { margin-top: 10px; font-size: 12.5px; }
.room-card { padding: 22px 22px 20px; }
.room-card .rc-desc { font-size: 14px; line-height: 1.5; }
.rec-row { margin-top: 48px; padding-bottom: 48px; }

/* three past-edition photos: lead wide, two beside */
.g-grid { grid-template-columns: repeat(2, 1fr); }
.g-grid figure:first-child { grid-column: 1 / -1; }
@media (max-width: 640px) { .g-grid { grid-template-columns: 1fr; } .g-grid figure:first-child { grid-column: auto; } }

/* majors breathe a little more; nothing inside competes */
section { padding: 160px 0 138px; }
@media (max-width: 820px) { section { padding: 88px 0 74px; } }
@media print { #contact { background: #fff !important; } }
#contact { position: relative; }
/* the routes sit ON the navy, not as white cards */
#contact .routes3 { background: var(--on-navy-rule); border: 1px solid var(--on-navy-rule); }
#contact .route { background: var(--navy); }
#contact .route .tier .dot { border-color: var(--on-navy-soft); }
#contact .routes3 .btn.ghost { background: transparent; color: var(--on-navy); border: 1px solid rgba(242, 246, 250, .45); }
#contact .routes3 .btn.ghost:hover { color: #fff; border-color: #fff; background: transparent; }
/* the reveal control shows at every width (the 8-first speaker grid is global now) */
.sp-more { display: inline-block; margin-top: 26px; font-family: var(--sans); font-size: 14.5px; font-weight: 500; color: var(--ink); background: none; border: 0; cursor: pointer; padding: 8px 2px; }
.sp-more:hover { color: var(--green); }
.sp-more[hidden] { display: none; }
#speakers .sp-more { color: var(--ink); }
#speakers .sp-more:hover { color: var(--green); }

/* ==== 19 Aug programme architecture: seven conversations, not a fourteen-row timetable ==== */
/* the rows carry the structure now; spine and dots retire */
.home-agenda::before { display: none; }
.home-agenda .session::after, .home-agenda .session.interstitial::after { display: none; }

/* the day at a glance: two bands, the whole arc before any session opens */
.glance { display: grid; grid-template-columns: 1fr 1fr; gap: 4px 56px; border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); padding: 30px 0 24px; margin: 20px 0 22px; }
.g-label { color: var(--green); font-size: 12px; letter-spacing: .14em; margin-bottom: 14px; }
.g-row { display: flex; gap: 16px; padding: 6px 0; text-decoration: none; color: var(--ink); font-size: 15.5px; line-height: 1.35; align-items: baseline; }
.g-row .mono { font-size: 12.5px; color: var(--ink-soft); flex: 0 0 42px; }
.g-row:hover .g-t { color: var(--green); }
.g-mid { grid-column: 1 / -1; display: flex; gap: 32px; margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--rule); font-size: 12.5px; }
.g-mid a { color: var(--ink-soft); text-decoration: none; }
.g-mid a:hover { color: var(--green); }

/* tools: two visible actions; the calendar file demoted to a quiet utility */
.home-agenda .agenda-tools { display: flex; gap: 28px; align-items: baseline; margin: 0 0 6px; }
.home-agenda .agenda-tools .tools-quiet { margin-left: auto; font-size: 12px; color: var(--ink-soft); }

/* wednesday: a quiet prelude that sits outside the open day */
.wed-prelude { background: var(--paper-warm); padding: 20px 26px 16px; margin: 14px 0 0; }
.wed-prelude .day-head { margin: 0 0 6px; border: 0; }
.wed-prelude .day-head h3 { font-size: 12.5px; letter-spacing: .14em; text-transform: uppercase; font-weight: 600; }
.wed-prelude .session.interstitial { border: 0; padding: 0; text-align: left; }

/* thursday: the transition into the open day */
.home-agenda .day-head.dh-thu { margin: 46px 0 0; padding-top: 28px; border-top: 1px solid var(--ink); }
.home-agenda .day-head.dh-thu h3 { font-size: 30px; }

/* substantive sessions: taller, calmer, editorial; hairline rule warms green on hover */
.home-agenda .session summary { display: block; position: relative; padding: 0 48px 0 0; cursor: pointer; }
.s-top { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; }
.home-agenda .session .s-top { font-size: 13px; margin-bottom: 12px; }
.s-no { color: var(--green); font-weight: 500; letter-spacing: .08em; }
.home-agenda .session .s-top .tl-time { padding: 0; font-size: 13px; color: var(--ink-soft); grid-column: auto; grid-row: auto; }
.home-agenda .session.landmark { border-top: 1px solid var(--rule); padding: 34px 0 30px; transition: border-color .15s ease; }
.home-agenda .session.landmark:hover { border-top-color: var(--green); }
.home-agenda .session.landmark summary .meta-row { margin: 0 0 12px; }
.home-agenda .session.landmark summary .fmt { color: var(--green); }
.home-agenda .session.landmark summary h3 { margin: 0 0 12px; max-width: 32ch; }
.home-agenda .session.landmark summary .framing.tease { margin: 0; }
.home-agenda .session .expand-hint { top: auto; bottom: 26px; right: 6px; }
/* the opened abstract sits in its own field */
.home-agenda .session[open] > .body { background: var(--green-tint); border-left: 2px solid var(--green); padding: 22px 26px; margin: 18px 0 4px; }
.home-agenda .session[open] > .body .framing.full { max-width: 66ch; }

/* logistics rows: quiet, centred transitions that never compete with a session */
.home-agenda .mv .session.interstitial { border: 0; text-align: center; padding: 30px 0 26px; }
.home-agenda .mv .session.interstitial .tl-time { display: block; font-size: 12px; color: var(--ink-soft); padding: 0; margin: 0 0 2px; }
.home-agenda .mv .session.interstitial .i-title { font-size: 12px; font-weight: 600; letter-spacing: .14em; text-transform: uppercase; }
.home-agenda .mv .session.interstitial .framing { font-size: 12.5px; color: var(--ink-soft); max-width: none; margin: 6px auto 0; }
.home-agenda .mv .session.interstitial .meta-row { display: none; }

/* lunch and the salons: an interlude, not two more numbered sessions */
.lunch-interlude { background: var(--green-tint); padding: 28px 32px 20px; margin: 12px 0 6px; }
.lunch-interlude .li-head { display: flex; align-items: baseline; gap: 18px; margin-bottom: 10px; }
.lunch-interlude .li-head .mono { font-size: 13px; color: var(--ink-soft); }
.lunch-interlude .li-head h3 { font-size: 22px; }
.lunch-interlude .session { border-top: 1px solid color-mix(in srgb, var(--green) 22%, #fff); padding: 18px 0 14px; }
.lunch-interlude .session summary h3 { font-size: 17px; margin: 0 0 8px; }
.lunch-interlude .session[open] > .body { background: #fff; }

/* waypoints */
.home-agenda .part-head { margin: 54px 0 6px; }
.home-agenda .part-head .smallcaps { color: var(--green); }

@media (max-width: 820px) {
  .glance { grid-template-columns: 1fr; gap: 24px 0; padding: 24px 0 20px; }
  .g-mid { flex-direction: column; gap: 8px; }
  .home-agenda .agenda-tools { flex-wrap: wrap; gap: 16px 24px; }
  .home-agenda .agenda-tools .tools-quiet { margin-left: 0; }
  .home-agenda .session.landmark { padding: 26px 0 24px; }
  .home-agenda .day-head.dh-thu h3 { font-size: 24px; }
  .lunch-interlude { padding: 20px 18px 14px; }
  .wed-prelude { padding: 16px 18px 12px; }
}
/* 19 Aug follow-up: interstitials leave the old grid entirely; times stay on one line */
.home-agenda .mv .session.interstitial { display: block; }
.home-agenda .mv .session.interstitial .framing { text-align: center; }
.wed-prelude .session.interstitial { display: block; }
.wed-prelude .session.interstitial .tl-time { display: inline-block; margin-right: 14px; }
.wed-prelude .session.interstitial .i-title { display: inline-block; }
.wed-prelude .session.interstitial .meta-row { display: inline-flex; margin-left: 14px; vertical-align: baseline; }
.home-agenda .session .tl-end { display: inline; }
.home-agenda .mv .session.interstitial .i-title { max-width: none; margin: 2px auto 0; }
.lunch-interlude .session .s-top { display: none; }

/* ============================================================
   19 Aug design-review round (ultracode + Opus + Gemini, adjudicated).
   Findings applied by number; see REVIEW-20260819-DESIGN.md.
   ============================================================ */

/* 3 · keyboard focus visible on every navy surface */
.site-menu :focus-visible, #contact :focus-visible { outline-color: var(--accent-on-navy); }
.site-menu .btn:focus-visible, #contact .routes3 .btn:focus-visible { outline-color: #fff; }
#contact .interest-form :focus-visible { outline-color: var(--green); }
#contact .interest-form .btn:focus-visible { outline-color: var(--ink); }
.room-card.r-hosted :focus-visible { outline-color: var(--green); }

/* 4 · the Contents sheet CTA inverts white, like every other on-navy button */
.site-menu .btn { background: #fff; border-color: #fff; color: var(--navy); }
.site-menu .btn:hover { background: var(--on-navy); border-color: var(--on-navy); color: var(--navy-deep); }

/* 5 · route CTAs share one bottom line */
.route { display: flex; flex-direction: column; }
.route .btn { margin-top: auto; align-self: flex-start; }
.route p { flex: 1; }

/* 6 · institutional titles never truncate */
.sp .sp-role { max-width: 30ch; -webkit-line-clamp: 4; }

/* 13 · one interaction colour on light ground: the green migration completed */
.nav-links a:not(.btn)::after { background: var(--green); }
.nav-toggle:hover { color: var(--green); }
.interest-form input:focus-visible, .interest-form textarea:focus-visible { outline-color: var(--green); }
.if-intent input { accent-color: var(--green); }
.faq .expand-hint { color: var(--green); }
.agenda-bar a.active, .home-bar a.active { color: var(--green); }

/* 14 · the venue photograph clears the navy band below it */
.g-lead .wrap { padding-bottom: 72px; }

/* 15 + 34 · conversion form: visible field boundaries; no iOS zoom */
.interest-form input[type="text"], .interest-form input[type="email"], .interest-form textarea { border-color: var(--graphite); }
@media (max-width: 640px) {
  .interest-form input[type="text"], .interest-form input[type="email"], .interest-form textarea { font-size: 16px; }
}

/* 19 · the retired spine's gutter goes with it: programme flush with the section grid */
.home-agenda { padding-left: 0; }
@media (max-width: 820px) { .home-agenda { padding-left: 0; } }

/* 20 · one numeral colour: index marks and waypoint times join the green system */
.who-no { color: var(--green); }
.part-head .mono { color: var(--green); }

/* 21 · one meaning per colour: tier words in the quiet meta register (the dot
   carries the tier colour); the salon inset keyline speaks invitation-azure */
.session .tier, .room-card .tier, .route .tier { color: var(--ink-soft); }
#contact .route .tier { color: var(--on-navy-soft); }
.salon-inset { border-left-color: var(--accent); }

/* 26 · navy holds its three full-bleed registers: the Dinner cell rejoins the
   light keyline grammar; the reception ground loses its navy tint; plain nav rule */
.room-card.r-hosted { background: var(--paper); color: var(--ink); border-top-color: var(--navy); }
.room-card.r-hosted h3 { color: var(--ink); }
.room-card.r-hosted .rc-desc, .room-card.r-hosted .smallcaps { color: var(--ink-soft); }
.mv-reception { background: var(--paper-warm); }
.nav { border-bottom-color: var(--rule); box-shadow: none; }

/* 28 · room-card titles share a baseline whatever the meta line does */
.room-card .tier { min-height: 3.2em; align-items: flex-start; }
.room-card .tier .dot { margin-top: 4px; }

/* 29 · Wednesday reads as a date, not a tool label */
.wed-prelude { border-top: 1px solid var(--ink); margin-top: 26px; }
.wed-prelude .day-head h3 { font-size: 14.5px; }

/* 30 · the organising question is serif wherever it appears */
.lockup .tagline { font-family: var(--serif); font-weight: 500; font-size: clamp(23px, 2vw, 27px); line-height: 1.38; }

/* 31 · who-attends session pointers pin to the cell foot */
.who-cell .who-sessions-line { flex: 0 0 auto; margin-top: auto; }

/* 32 · the figure rules run the full frame; prose keeps its reading measure */
#question .question-grid { grid-template-columns: minmax(0, 1fr); }
#question .qtext, #question .question-grid > div > p { max-width: 68ch; }

/* 33 · small meta text at AA: sources, end times, captions */
.figures .src, .sum-chart .src { color: var(--ink-soft); }
.tl-end { color: var(--ink-soft); }
.part-photo figcaption, .g-grid figcaption, .g-lead figcaption { color: var(--ink-soft); }

/* 35 · current nav item holds its underline (state not carried by colour alone) */
.nav-links a.current::after { right: 0; }

/* 37 · the expand affordance joins the text column as a spoken token */
.home-agenda .session summary { padding-right: 0; }
.home-agenda .session .expand-hint {
  position: static; display: inline-block; margin-top: 10px;
  font-family: var(--mono); font-size: 12.5px; color: var(--green); transition: none;
}
.home-agenda .session .expand-hint::after { content: " Details"; letter-spacing: .04em; }
.home-agenda .session[open] .expand-hint { transform: none; font-size: 0; }
.home-agenda .session[open] .expand-hint::after { content: "\2212 Close"; font-size: 12.5px; }

/* 39 + 6 · mobile speakers: two columns, full titles, no orphan cell */
@media (max-width: 640px) {
  .sp-grid { grid-template-columns: repeat(2, 1fr); gap: 28px 20px; }
  .sp .sp-role { -webkit-line-clamp: 5; }
}

/* 40 · interlude times never fracture */
.lunch-interlude .li-head .mono { white-space: nowrap; }
@media (max-width: 640px) {
  .lunch-interlude .li-head { flex-direction: column; gap: 4px; }
}

/* 36 · a quiet scrim under the open sheet: page content recedes, both bars stay crisp
   (sits below the nav's z-50 so the close control keeps full contrast) */
body:has(#site-menu.is-open)::after {
  content: ""; position: fixed; inset: 0; background: rgba(0, 22, 45, .45); z-index: 45;
}

/* 41 · the burger becomes a close mark while the sheet is open */
.nav-toggle .ic-close { display: none; }
.nav-toggle[aria-expanded="true"] .ic-burger { display: none; }
.nav-toggle[aria-expanded="true"] .ic-close { display: block; }

/* 43 · salon themes are content, not meta: sans, ink */
.si-themes { font-family: var(--sans); font-size: 14.5px; color: var(--ink); }

/* 44 · session pointers break only at the separator */
.who-sessions-line a { white-space: nowrap; }

/* 45 · the form card holds the section's right edge; the fields keep their measure;
   the write-directly note fills the right column at width */
#contact .interest-form { max-width: none; }
#contact .interest-form .if-grid, #contact .interest-form .if-intent,
#contact .interest-form .if-note, #contact .interest-form .if-actions,
#contact .interest-form > p.muted { max-width: 760px; }
@media (min-width: 1100px) {
  #contact .interest-form { display: grid; grid-template-columns: minmax(0, 720px) 1fr; column-gap: 64px; }
  #contact .interest-form > * { grid-column: 1; }
  #contact .interest-form > .smallcaps { grid-column: 1 / -1; }
  #contact .interest-form > p.muted { grid-column: 2; grid-row: 2 / span 4; align-self: start; margin-top: 0; max-width: 30ch; border-left: 1px solid var(--rule); padding-left: 24px; }
}

/* 46 · the abstract field reads against the programme's warm ground */
.home-agenda .session[open] > .body { background: color-mix(in srgb, var(--green) 8%, var(--paper)); }
.lunch-interlude { background: color-mix(in srgb, var(--green) 8%, var(--paper)); }

/* 47 + 52 · chart neutrals tokenised at visible weight; stray colours rejoin the tokens */
:root { --chart-track: #8D939B; }
.sc-bar i, .sc-bar i.em,
.sig-chart .sc-row:nth-of-type(2) .sc-bar i,
.sig-chart .sc-row:nth-of-type(4) .sc-bar i { background: var(--chart-track); }
.sig-chart .sc-row:nth-of-type(3) .sc-bar i { background: var(--green); }
.sum-bars .sc-row .sc-bar i { background: var(--chart-track); }
.sum-bars .sc-row .sc-bar i.sc-em { background: var(--green); }
.venue-credit { color: var(--ink-soft); }

/* 48 · the Contents index reads down its columns in page order */
@media (min-width: 821px) {
  .sm-grid { grid-auto-flow: column; grid-template-rows: repeat(7, auto); }
}

/* 50 · the sheet's CTA clears the fold on a standard phone */
@media (max-width: 820px) {
  .sm-grid a { padding: 11px 0; }
  .site-menu .wrap { padding-bottom: 24px; }
}

/* 51 · touch targets: intent radios, speakers reveal, glance links */
.g-mid a { padding: 8px 0; display: inline-block; }
@media (max-width: 640px) {
  .if-intent label { padding: 10px 0; }
  .sp-more { padding: 12px 2px; }
}

/* 8 · the policy timeline stacks on phones: every moment visible, no scroller */
@media (max-width: 640px) {
  .cal-scroll { overflow: visible; -webkit-mask-image: none; mask-image: none; }
  .cal-rail { grid-auto-flow: row; grid-auto-columns: auto; min-width: 0; border-left: 1px solid color-mix(in srgb, var(--green) 26%, transparent); }
  .cal-cell { border-top: 0; padding: 14px 0 18px 24px; }
  .cal-cell::before { left: -5px; top: 20px; }
  .cal-cell p { max-width: none; }
}

/* 9 · the sticky bar never clips a label: two links + the pinned CTA on phones */
@media (max-width: 640px) {
  .home-bar a[href="#practical"] { display: none; }
}

/* 54 · nav and home-bar occupy the same height, so the swap never jolts the page */
@media (min-width: 641px) and (max-width: 820px) {
  .home-bar { padding: 12px 0; }
}

/* 17 · one caption anatomy, one alignment */
.part-photo figcaption { text-align: left; }

/* 27 · partner logos in colour in both instances (16 Aug ruling); no false hover */
.plogos img { filter: none; opacity: 1; transition: none; }
@media (max-width: 640px) {
  .partner-strip .ps-group { width: 100%; }
}

/* 22 · gallery lead (audience frame) centres on the faces; hero frame 2 is the
   pre-cropped foyer band, no zoom needed */
.g-grid figure:first-child img { object-position: 50% 42%; }
.hl-frame img:nth-of-type(2) { object-position: 50% 50%; transform: none; }

/* ============================================================
   20 Aug pacing pass: a second dark act, one editorial beat,
   chapters inside the programme, one photograph in the upper half.
   Nothing here touches copy, programme architecture or the palette.
   ============================================================ */

/* 1. Speakers back on the full navy band (now placed after Past editions,
      so the dark spread is separated from How-to-take-part by the photos) */
#speakers { background: var(--navy-deep); color: var(--on-navy); border-top: 0; position: relative; }
#speakers .shead h2, #speakers h2 { color: #fff; }
#speakers .lede { color: var(--on-navy); }
#speakers .sp .sp-name, #speakers .sp-name { color: #fff; }
#speakers .sp .sp-role, #speakers .sp-role { color: var(--on-navy-soft); }
#speakers .sp-register { border-color: var(--on-navy-rule); }
#speakers .portrait { border-color: rgba(242, 246, 250, .28); background: var(--navy); filter: none; }
#speakers .sp-more { color: var(--on-navy); }
#speakers .sp-more:hover { color: #fff; }
#speakers :focus-visible { outline-color: var(--accent-on-navy); }
@media print { #speakers { background: #fff !important; color: var(--ink) !important; } }

/* 2. The 2026 pull quote, set as the editorial beat of the record */
.sig-quote.elevated { border-top: 1px solid var(--rule); margin-top: 48px; padding: 36px 0 0; }
.sig-quote.elevated .sq-text { font-size: clamp(20px, 1.8vw, 24px); font-weight: 480; line-height: 1.4; letter-spacing: -0.005em; max-width: 44ch; margin: 0 0 16px; }
.sig-quote.elevated .sq-src { font-size: 12px; }
@media (max-width: 640px) { .sig-quote.elevated { margin-top: 36px; padding-top: 32px; } .sig-quote.elevated .sq-text { font-size: 24px; } }

/* 3. Programme chapters: the glance titles become chapter heads in the agenda */
.home-agenda .part-head.chapter { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 14px; margin: 52px 0 14px; padding-top: 26px; border-top: 1px solid var(--ink); }
.home-agenda .part-head.chapter .smallcaps { order: 1; font-size: 12.5px; letter-spacing: .12em; color: var(--green); }
.home-agenda .part-head.chapter .mono { order: 2; font-size: 13px; color: var(--ink-soft); }
.home-agenda .part-head.chapter .ch-title { order: 3; flex-basis: 100%; font-family: var(--serif); font-weight: 480; font-size: clamp(26px, 2.6vw, 34px); line-height: 1.15; letter-spacing: -0.01em; margin: 0; }
.home-agenda .day-head.dh-thu + .part-head.chapter { margin-top: 34px; border-top: 0; padding-top: 0; }
@media (max-width: 820px) {
  .home-agenda .part-head.chapter { margin: 40px 0 10px; padding-top: 20px; }
  .home-agenda .part-head.chapter .ch-title { font-size: 24px; }
}

/* 3b. Lunch interlude in two columns; logistics rows flat, with nothing to open */
.lunch-interlude .li-cols { display: grid; grid-template-columns: repeat(2, 1fr); gap: 0 34px; }
.lunch-interlude .li-cols .session { border-top: 1px solid color-mix(in srgb, var(--green) 22%, #fff); }
@media (max-width: 1040px) { .lunch-interlude .li-cols { grid-template-columns: 1fr; gap: 0; } }
.home-agenda .session.logistic { display: block; padding: 24px 8px 22px 8px; cursor: default; }
.home-agenda .session.logistic .s-top { margin-bottom: 6px; }
.home-agenda .session.logistic h3 { font-size: 19px; margin: 0 0 8px; }
.home-agenda .session.logistic .framing { margin: 0; max-width: 58ch; }
.home-agenda .session.logistic .meta-row { margin-bottom: 6px; }
.lunch-interlude .session.logistic { padding: 18px 0 16px; }
.lunch-interlude .session.logistic h3 { font-size: 17px; }
.lunch-interlude .session.logistic .s-top { display: none; }
.mv-reception .session.logistic { border-top: 1px solid var(--rule); }

/* 4. One photograph between the record and Who attends */
.photo-beat { padding: 0; border-top: 0; }
.photo-beat figure { margin: 0; position: relative; }
.photo-beat img { display: block; width: 100%; height: clamp(260px, 34vw, 520px); object-fit: cover; object-position: 50% 30%; }
.photo-beat figcaption { position: absolute; right: 0; bottom: 0; background: rgba(0, 28, 57, .78); color: var(--on-navy); font-size: 11px; letter-spacing: .08em; padding: 8px 14px; margin: 0; }
@media print { .photo-beat { display: none; } }

/* ============================================================
   20 Aug art-direction pass: four memorable moments, then calm.
   Hero cover · Summary figures as objects · the policy clock in
   deep green · one Policy Signal spread. The day reduced to a strip.
   Brick = editorial punctuation, three appearances, one token.
   ============================================================ */
:root { --green-deep: #173F35; --on-green: #F1F3EC; --on-green-soft: #A8BDB2; --on-green-rule: rgba(241, 243, 236, .18); --brick: #8E3A2A; }

/* ---- 1. Hero as an editorial cover ---- */
.hero { padding-bottom: 0; overflow: hidden; }
.hero .hero-grid { grid-template-columns: minmax(0, 1fr); gap: 0; max-width: var(--max); }
.hero .hero-grid > div:not(.hero-count) { max-width: 880px; }
.hero .ed-kicker { position: relative; padding-bottom: 10px; }
.hero .ed-kicker::after { content: ""; position: absolute; left: 0; bottom: 0; width: 36px; height: 2px; background: var(--brick); }
.hero-cover { display: grid; grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 0 28px; align-items: end; margin-top: 72px; }
.hero-cover figure { margin: 0; position: relative; }
.hero-cover img { display: block; width: 100%; object-fit: cover; }
.hero-cover figcaption { font-family: var(--mono); font-size: 10.5px; letter-spacing: .1em; color: var(--on-navy-soft); }
/* the wide frame runs off the right edge of the viewport */
.hero-cover .hc-wide { margin-right: min(-24px, calc(-1 * (50vw - var(--max) / 2 + 24px))); }
.hero-cover .hc-wide img { height: clamp(320px, 38vw, 560px); object-position: 50% 22%; }
.hero-cover .hc-wide figcaption { position: absolute; left: 0; bottom: 14px; background: var(--navy-deep); color: var(--on-navy); padding: 7px 12px; }
/* the tall frame is cropped hard, offset below the baseline of the wide one */
.hero-cover .hc-tall { align-self: end; margin-bottom: 64px; }
.hero-cover .hc-tall img { aspect-ratio: 3 / 4; height: auto; max-height: 420px; object-position: 78% 30%; }
.hero-cover .hc-tall figcaption { position: absolute; top: 0; right: -18px; transform: rotate(90deg) translateX(100%); transform-origin: right top; white-space: nowrap; }
.hero-count { top: 0; }
@media (max-width: 1100px) { .hero-cover { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } .hero-cover .hc-tall { margin-bottom: 40px; } }
@media (max-width: 820px) {
  .hero { padding-bottom: 0; }
  .hero-cover { grid-template-columns: 1fr; margin-top: 44px; gap: 0; }
  .hero-cover .hc-tall { display: none; }
  .hero-cover .hc-wide { margin-right: -24px; margin-left: -24px; }
  .hero-cover .hc-wide img { height: 260px; }
}
@media print { .hero-cover { display: none; } }

/* ---- 2. Summary: the argument left, the figures as objects right ---- */
#question .question-grid.q-split { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 0 64px; align-items: start; }
#question .q-argument .qtext, #question .q-argument > p { max-width: 62ch; }
#question .q-figures { position: sticky; top: 120px; padding-top: 6px; }
#question .q-figures .fig .n { font-family: var(--serif); font-weight: 420; letter-spacing: -0.035em; line-height: .92; color: var(--ink); }
#question .q-figures .fig-a .n { font-size: clamp(72px, 9.6vw, 150px); margin-left: -0.04em; }
#question .q-figures .fig-b { margin-top: 56px; padding-left: 22%; }
#question .q-figures .fig-b .n { font-size: clamp(56px, 6.8vw, 104px); color: var(--brick); }
#question .q-figures .fig .l { font-size: 12.5px; line-height: 1.45; color: var(--ink-soft); max-width: 26ch; margin-top: 12px; }
#question .q-figures .src { font-size: 11.5px; color: var(--ink-soft); margin-top: 44px; font-family: var(--mono); letter-spacing: .02em; }
#question .sum-chart { max-width: 520px; }
@media (max-width: 900px) {
  #question .question-grid.q-split { grid-template-columns: 1fr; gap: 40px 0; }
  #question .q-figures { position: static; border-top: 1px solid var(--rule); padding-top: 32px; }
  #question .q-figures .fig-b { padding-left: 0; margin-top: 36px; }
}

/* ---- 3. The policy clock: a dark green chapter ---- */
.cal-band.clock { background: var(--green-deep); padding: 120px 0 120px; }
.cal-band.clock .shead-onnavy h2, .cal-band.clock h2 { color: var(--on-green); }
.cal-band.clock .cal-scroll { overflow: visible; -webkit-mask-image: none; mask-image: none; }
.cal-band.clock .cal-rail { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); min-width: 0; border: 0; border-top: 1px solid var(--on-green-rule); margin-top: 48px; }
.cal-band.clock .cal-cell { border: 0; padding: 44px 32px 0 0; position: relative; }
.cal-band.clock .cal-cell::before { content: ""; position: absolute; top: -4px; left: 0; width: 7px; height: 7px; border-radius: 50%; background: var(--on-green); border: 0; }
.cal-band.clock .cal-cell .cal-date { font-family: var(--serif); font-weight: 420; font-size: clamp(48px, 5.6vw, 88px); line-height: .95; letter-spacing: -0.03em; color: var(--on-green); }
.cal-band.clock .cal-cell .cal-date span { display: block; font-family: var(--mono); font-size: 12px; letter-spacing: .16em; text-transform: uppercase; color: var(--on-green-soft); margin-bottom: 18px; }
.cal-band.clock .cal-cell p { color: var(--on-green-soft); font-size: 13.5px; line-height: 1.5; margin-top: 26px; max-width: 24ch; }
.cal-band.clock .cal-cell.cal-fe { border: 0; }
@media (max-width: 820px) {
  .cal-band.clock { padding: 80px 0 84px; }
  .cal-band.clock .cal-rail { grid-auto-flow: row; border-top: 0; border-left: 1px solid var(--on-green-rule); margin-top: 32px; }
  .cal-band.clock .cal-cell { padding: 0 0 36px 24px; }
  .cal-band.clock .cal-cell::before { top: 6px; left: -4px; }
  .cal-band.clock .cal-cell .cal-date { font-size: 52px; }
  .cal-band.clock .cal-cell .cal-date span { margin-bottom: 8px; }
  .cal-band.clock .cal-cell p { margin-top: 12px; max-width: none; }
}
@media print { .cal-band.clock { background: #fff !important; } .cal-band.clock .cal-date, .cal-band.clock .cal-date span, .cal-band.clock p, .cal-band.clock h2 { color: var(--ink) !important; } }

/* ---- 4. One Policy Signal spread ---- */
.rec-spread { border-top: 1px solid var(--ink); padding-top: 36px; margin-bottom: 96px; }
.rec-spread .sc-cap { margin-bottom: 22px; }
.rec-spread .rs-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 40px; }
.rec-spread .rs-fig .n { font-family: var(--serif); font-weight: 420; font-size: clamp(48px, 6.4vw, 96px); line-height: .95; letter-spacing: -0.03em; color: var(--ink); }
.rec-spread .rs-fig:nth-child(3) .n { color: var(--ink); }
.rec-spread .rs-fig .l { font-size: 12.5px; color: var(--ink-soft); margin-top: 12px; max-width: 22ch; line-height: 1.45; }
.rec-spread .rs-thesis { margin-top: 84px; }
.rec-spread .rs-thesis .smallcaps { display: block; margin-bottom: 18px; letter-spacing: .1em; }
.rec-spread .rs-text { font-family: var(--serif); font-weight: 460; font-size: clamp(34px, 5vw, 68px); line-height: 1.04; letter-spacing: -0.022em; max-width: 16ch; margin: 0; }
.rec-spread .rs-text .rs-sub { display: block; font-size: clamp(18px, 1.6vw, 22px); line-height: 1.45; letter-spacing: 0; font-weight: 400; color: var(--ink-soft); max-width: 40ch; margin-top: 28px; }
.rec-spread .rs-question { margin-top: 64px; margin-left: 41.666%; padding-top: 24px; border-top: 2px solid var(--brick); }
.rec-spread .rs-question .smallcaps { display: block; margin-bottom: 12px; color: var(--brick); letter-spacing: .12em; }
.rec-spread .rs-question p { font-size: 20px; line-height: 1.4; max-width: 34ch; margin: 0 0 14px; }
.rec-spread .rs-question a { color: var(--ink); font-weight: 600; }
.rec-spread .rs-question a:hover { color: var(--green); }
.rec-rest .rec-row:first-child { margin-top: 0; border-top: 1px solid var(--rule); padding-top: 48px; }
#signals .rec-rest .rec-2026 > p { font-size: 16px; }
@media (max-width: 820px) {
  .rec-spread { margin-bottom: 64px; }
  .rec-spread .rs-row { grid-template-columns: 1fr; gap: 28px 0; }
  .rec-spread .rs-thesis { margin-top: 56px; }
  .rec-spread .rs-question { margin-left: 0; margin-top: 44px; }
}

/* ---- 5. The day becomes a strip; the salons keep their inset ---- */
#rooms { padding-top: 0; padding-bottom: 110px; }
#rooms .rooms-strip { display: grid; grid-template-columns: repeat(4, 1fr); gap: 0 32px; background: transparent; border: 0; border-top: 1px solid var(--ink); border-bottom: 1px solid var(--rule); padding: 18px 0 20px; }
#rooms .rooms-strip .room-card, #rooms .rooms-strip .room-card.r-hosted { background: transparent; border: 0; padding: 0; min-height: 0; gap: 4px; }
#rooms .rooms-strip .room-card h3 { font-size: 15px; font-weight: 600; color: var(--ink); }
#rooms .rooms-strip .room-card .rc-desc { font-size: 13px; color: var(--ink-soft); }
#rooms .rooms-strip .room-card .tier { font-size: 10.5px; }
#rooms .salon-inset { margin-top: 36px; }
@media (max-width: 820px) { #rooms .rooms-strip { grid-template-columns: 1fr 1fr; gap: 18px 24px; } #rooms { padding-bottom: 80px; } }
@media (max-width: 480px) { #rooms .rooms-strip { grid-template-columns: 1fr; } }

/* ---- 6. Photography: past editions, one tall hard crop, one offset ---- */
#editions .g-grid { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 28px; align-items: start; }
#editions .g-grid figure:first-child { grid-column: 1; grid-row: 1 / span 2; }
#editions .g-grid figure:first-child img { aspect-ratio: 4 / 5; object-position: 40% 50%; }
#editions .g-grid figure:nth-child(2) img { aspect-ratio: 4 / 3; object-position: 50% 30%; }
#editions .g-grid figure:nth-child(3) { margin-top: 24px; margin-left: 18%; }
#editions .g-grid figure:nth-child(3) img { aspect-ratio: 1; }
@media (max-width: 640px) {
  #editions .g-grid { grid-template-columns: 1fr; }
  #editions .g-grid figure:first-child { grid-row: auto; }
  #editions .g-grid figure:first-child img { aspect-ratio: 3 / 2; }
  #editions .g-grid figure:nth-child(3) { margin: 0; }
}
@media (max-width: 820px) { .hero .hero-grid { position: static; } .hero-count { position: static; text-align: left; margin-bottom: 22px; } .hero-count .hc-n { display: inline-block; margin-right: 10px; font-size: 28px; vertical-align: baseline; } }
/* 20 Aug: lunch-table photographs removed (no seated lunch in 2027); gallery = tall lead + one */
#editions .g-grid figure:first-child { grid-row: auto; }
#editions .g-grid figure:nth-child(2) { align-self: end; }

/* 20 Aug: hero wide frame = 2025 audience (no named person in the hero); gallery = 148 lead + 108 */
.hero-cover .hc-wide img { object-position: 50% 40%; }
#editions .g-grid figure:first-child img { aspect-ratio: 3 / 2; object-position: 50% 50%; }
#editions .g-grid figure:nth-child(2) { align-self: end; }
#editions .g-grid figure:nth-child(2) img { aspect-ratio: 1; object-position: 60% 40%; }

/* 20 Aug: the two acts of the day read as distinct visual chapters —
   morning on the section ground, lunch in green, afternoon on a deeper field,
   reception on its own tint. Chapter heads at chapter scale. */
.home-agenda .part-head.chapter { margin: 64px 0 22px; padding-top: 30px; border-top: 3px solid var(--ink); }
.home-agenda .part-head.chapter .ch-title { font-size: clamp(34px, 3.6vw, 52px); line-height: 1.05; letter-spacing: -0.02em; }
.home-agenda .part-head.chapter .smallcaps { font-size: 13px; }
.home-agenda .day-head.dh-thu + .part-head.chapter { margin-top: 40px; border-top: 3px solid var(--ink); padding-top: 30px; }
.home-agenda .mv-aft { background: var(--paper-deep); margin: 40px -40px 0; padding: 8px 40px 40px; }
.home-agenda .mv-aft .part-head.chapter { margin-top: 28px; border-top-color: var(--ink); }
.home-agenda .mv-aft .session { border-top-color: rgba(22, 24, 29, .14); }
.home-agenda .mv-aft .session[open] > .body, .home-agenda .mv-aft .session .body { background: transparent; }
.home-agenda .mv-aft .session.interstitial { background: transparent; }
.home-agenda .mv-reception { margin: 0 -40px; padding: 32px 40px 40px; }
.home-agenda .mv-lunch { margin-top: 48px; }
.home-agenda .lunch-interlude { padding: 36px 40px 30px; }
.home-agenda .lunch-interlude .li-head h3 { font-family: var(--serif); font-weight: 480; font-size: 30px; letter-spacing: -0.015em; }
@media (max-width: 820px) {
  .home-agenda .mv-aft { margin: 28px -24px 0; padding: 6px 24px 28px; }
  .home-agenda .mv-reception { margin: 0 -24px; padding: 24px 24px 28px; }
  .home-agenda .part-head.chapter .ch-title { font-size: 30px; }
  .home-agenda .lunch-interlude .li-head h3 { font-size: 24px; }
}
.home-agenda .mv-morning { background: #fff; margin: 28px -40px 0; padding: 8px 40px 40px; }
.home-agenda .mv-morning .day-head.dh-thu { border-top: 0; padding-top: 12px; margin-top: 8px; }
@media (max-width: 820px) { .home-agenda .mv-morning { margin: 20px -24px 0; padding: 6px 24px 28px; } }

/* 20 Aug: the 2026 Policy Signal, cover thumbnail + link in the record intro */
.rec-intro { display: grid; grid-template-columns: minmax(0, 1fr) 168px; gap: 24px 64px; align-items: end; margin-bottom: 56px; }
.ps-thumb { display: block; text-decoration: none; color: var(--ink-soft); justify-self: end; }
.ps-thumb img { display: block; width: 168px; height: auto; border: 1px solid var(--rule); }
.ps-thumb span { display: block; font-size: 11px; letter-spacing: .08em; margin-top: 10px; }
.ps-thumb:hover span { color: var(--green); }
.ps-thumb:hover img { border-color: var(--green); }
@media (max-width: 640px) { .rec-intro { grid-template-columns: 1fr; gap: 28px; margin-bottom: 40px; } .ps-thumb { justify-self: start; } .ps-thumb img { width: 140px; } }
.ps-thumb, .ps-thumb span { text-decoration: none; }

/* ============================================================
   20 Aug FINAL PASS — responsive repairs before the partner send
   ============================================================ */

/* (1) The programme chapter panels bled -40px inside a .wrap whose own side
   padding is 24px. Above 1288px there is centring slack to absorb it; below
   that the panels pushed 16px past the viewport and the whole page scrolled
   sideways on every laptop and tablet width. Clamp the bleed to the slack. */
.home-agenda .mv-morning,
.home-agenda .mv-aft,
.home-agenda .mv-reception {
  --bleed: min(40px, max(24px, calc((100vw - var(--max)) / 2 + 24px)));
  margin-left: calc(-1 * var(--bleed));
  margin-right: calc(-1 * var(--bleed));
  padding-left: var(--bleed);
  padding-right: var(--bleed);
}
@media (max-width: 820px) {
  .home-agenda .mv-morning,
  .home-agenda .mv-aft,
  .home-agenda .mv-reception { --bleed: 24px; }
}

/* (2) .dev-row set `padding: 13px 0`, which overrode the 24px side padding it
   inherits from .wrap. The partner band's text sat flush against the screen
   edge on phones and 24px out of alignment on desktop. */
.dev-row { padding: 13px 0; padding-left: 24px; padding-right: 24px; }

/* (3) The full navigation reappeared at 821px but needs ~930px to fit, so it
   collided and pushed the page sideways between those widths. Hold the
   compact navigation until the full row genuinely fits. */
@media (max-width: 960px) and (min-width: 821px) {
  .nav-links a:not(.btn) { display: none; }
  .nav-links { margin-left: auto; gap: 0; }
  .nav .nav-toggle { margin-left: 18px; order: 2; }
  .nav .wrap { gap: 14px; }
}

/* (4) Touch targets: several inline links rendered 17-23px tall, below the
   24px minimum (WCAG 2.5.8). Give them a real hit area without moving type. */
.rec-2027 a,
.rs-question a,
.si-link,
.who-sessions-line a,
.who-links a,
#signals .mono a,
.ps-thumb span {
  display: inline-flex; align-items: center; min-height: 24px;
}
/* NOT the wordmark: inline-flex makes "Financing Europe" and the year span
   separate flex items and eats the space between them. inline-block keeps it. */
.wordmark { display: inline-block; padding-block: 4px; }
.who-sessions-line { display: flex; flex-wrap: wrap; align-items: center; gap: 0 6px; }
@media (pointer: coarse) {
  .rec-2027 a, .rs-question a, .si-link, .who-sessions-line a, #signals .mono a { min-height: 32px; }
}
/* remaining sub-24px targets: inline contact links, the quiet tools link, radios */
.route p a, .interest-form .muted a, footer a, .tools-quiet, .agenda-tools a, .agenda-tools button,
.f-heritage a, .sm-pdf, .si-themes a { display: inline-flex; align-items: center; min-height: 24px; }
.if-intent label, .interest-form label { min-height: 24px; }
.if-intent input[type="radio"] { width: 16px; height: 16px; margin-right: 6px; }
.if-intent label { display: flex; align-items: center; gap: 2px; padding: 6px 0; }
@media (pointer: coarse) { .if-intent label { padding: 9px 0; } }
.home-agenda .agenda-tools a, .home-agenda .agenda-tools button { padding-top: 6px; padding-bottom: 6px; min-height: 24px; }
#practical a, .fact a, .faq a, .si-line a { display: inline-flex; align-items: center; min-height: 24px; }
/* (5) The days counter used to be display:none until JS wrote it, which shifted
   the mobile hero on load. Reserve its space and reveal in place instead. */
.hero-count.is-pending { visibility: hidden; }
@media (max-width: 820px) { .hero-count, .hero-count.is-pending { min-height: 30px; } }
.rec-spread .rs-src { font-family: var(--mono); font-size: 11.5px; color: var(--ink-soft); margin-top: 22px; letter-spacing: .02em; }
/* beat: the 2024 conversation frame, cropped to the group and clear of any screen */
.photo-beat img { object-position: 50% 42%; }
/* (6) below 400px the toggle's label is visually hidden, leaving an 18px-wide
   hit area on the primary navigation control. Give it a real target. */
.nav-toggle { min-width: 44px; justify-content: flex-end; }
@media (max-width: 400px) { .nav-toggle { min-width: 44px; } }

/* M5 — the fixed back-to-top control sat over the text column at phone widths,
   clipping glyphs at the ends of lines. The contents sheet already gives
   full-page navigation on mobile, so drop the control there. */
@media (max-width: 640px) { .to-top { display: none !important; } }

/* M6 — the print sheet forced #contact white but left its on-navy text colours,
   printing the whole section as pale grey on white. */
@media print {
  #contact .shead h2, #contact .route h3, #contact .btn.ghost { color: var(--ink) !important; }
  #contact .route p, #contact .route .tier, #contact .route p a { color: var(--ink-soft) !important; }
  #contact .route, #contact .routes3 { background: #fff !important; border-color: var(--rule) !important; }
  footer .fnote, footer .fnote a { color: var(--ink-soft) !important; }
}

/* --- 20 Aug final-pass minors (from the adversarial review) --- */
/* mobile teasers truncated mid-word at 2 lines; four clears all seven */
@media (max-width: 640px) {
  details.session:not([open]) summary .framing { -webkit-line-clamp: 4; line-clamp: 4; }
}
/* the back-to-top control stayed in the tab order while invisible */
.to-top { visibility: hidden; }
.to-top.visible { visibility: visible; }
/* the convener's mark should not be stronger than the partners it credits */
.partner-strip img { opacity: 1; }
/* the Wednesday prelude sat 26px out of the text column */
.wed-prelude { padding-left: 0; padding-right: 0; }
/* the paired lunch panel closed its rule on the right column only */
.lunch-interlude .li-cols .session:last-child { border-bottom: 0; }
/* the primary menu control needs a full 44px target on touch */
@media (max-width: 640px) {
  .nav .nav-toggle { min-width: 44px; min-height: 44px; justify-content: flex-end; }
}
/* the disclosure affordances printed as stray "+" marks */
@media print { .expand-hint { display: none !important; } }
.sp-more[disabled] { cursor: default; opacity: .65; }
.sp-more[disabled]:hover { color: inherit; }
/* the who-cell session separator is drawn, so it can never hang at a line end */
.who-sessions-line a + a::before { content: "\00B7"; margin: 0 6px 0 0; color: var(--ink-soft); }
/* the partner strip inherited the full section padding: 160px of empty ground
   above and 138px below a 74px row of logos. It is a strip, not a section. */
.partner-strip { padding: 0; }
.partner-strip .wrap { gap: 18px 40px; padding-top: 26px; padding-bottom: 26px; }
.ps-group { gap: 20px; }
@media (max-width: 1100px) { .partner-strip .wrap { gap: 16px 32px; } }
/* Give the desktop endorsements a little more presence; preserve mobile sizing. */
@media screen and (min-width: 1101px) {
  .partner-strip img.ps-fe { height: 30px; }
  .partner-strip img.ps-barclays { height: 25px; }
  .partner-strip img.ps-kreab { height: 27px; }
  .partner-strip img.ps-bnp { height: 28px; }
}

/* the January dates arrive with the band: each date rolls up from its rule and
   its note follows, left to right. Added by script, so no-JS keeps the band flat. */
@media (prefers-reduced-motion: no-preference) {
  .cal-band.clock.roll .cal-cell { --d: 0ms; }
  .cal-band.clock.roll .cal-cell:nth-child(2) { --d: 90ms; }
  .cal-band.clock.roll .cal-cell:nth-child(3) { --d: 180ms; }
  .cal-band.clock.roll .cal-cell:nth-child(4) { --d: 270ms; }
  .cal-band.clock.roll .cal-cell:nth-child(5) { --d: 360ms; }
  .cal-band.clock.roll .cal-cell .cal-date {
    opacity: 0;
    transform: perspective(700px) rotateX(-42deg) translateY(12px);
    transform-origin: 50% 100%;
  }
  .cal-band.clock.roll .cal-cell p { opacity: 0; transform: translateY(10px); }
  .cal-band.clock.roll .cal-cell::before { transform: scale(0); transform-origin: 50% 50%; }
  .cal-band.clock.roll.is-in .cal-cell .cal-date {
    opacity: 1; transform: none;
    transition: opacity .46s ease, transform .78s cubic-bezier(.2, .72, .2, 1);
    transition-delay: var(--d);
  }
  .cal-band.clock.roll.is-in .cal-cell p {
    opacity: 1; transform: none;
    transition: opacity .46s ease .12s, transform .56s cubic-bezier(.2, .72, .2, 1) .12s;
    transition-delay: calc(var(--d) + 140ms);
  }
  .cal-band.clock.roll.is-in .cal-cell::before {
    transform: none;
    transition: transform .4s cubic-bezier(.2, .72, .2, 1);
    transition-delay: var(--d);
  }
}
@media print {
  .cal-band.clock.roll .cal-cell .cal-date,
  .cal-band.clock.roll .cal-cell p,
  .cal-band.clock.roll .cal-cell::before { opacity: 1 !important; transform: none !important; }
}

/* the shared form names the route the visitor took, so the three CTAs land somewhere
   that confirms the choice rather than on a generic "leave your details" */
.if-heading { margin: 0 0 18px; line-height: 1.3; }
.if-status.is-ok { color: var(--accent-deep); }
.if-status.is-error { color: var(--brick); }
.if-status:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
.interest-form:focus { outline: none; }
.interest-form [aria-invalid="true"] { border-color: var(--brick); }

/* 61 · touch target sizes. WCAG 2.2 AA (2.5.8) asks for 24px and everything here already
   cleared that except the radios; this lifts the deliberate targets toward 44px on touch
   without changing type size or adding visual weight. Links inside a sentence are left
   alone on purpose: 2.5.8 exempts them, and expanding them would overlap the line above. */
@media (max-width: 900px), (pointer: coarse) {
  .if-intent label {
    display: flex; align-items: center; gap: 12px;
    min-height: 44px; padding: 2px 0;
  }
  .if-intent input[type="radio"] { width: 18px; height: 18px; flex: 0 0 auto; margin: 0; }

  /* deliberate, standalone actions: give each a full row to be tapped in */
  .dev-note .dev-dl,
  .salon-inset .si-link,
  .rec-2027 a,
  .rs-question a,
  .home-agenda .agenda-tools a,
  .home-agenda .agenda-tools button,
  .g-mid a,
  #practical .fact .v a,
  .sp-more {
    display: inline-flex; align-items: center; min-height: 44px;
  }
  /* NOT via the group above. The wordmark's label is a text node plus <span class="yr">,
     so any flex display makes them separate flex items and EATS THE SPACE: the header
     reads "FINANCING EUROPE2027". This has now regressed twice. The touch target is
     bought with padding instead. See also the note at .wordmark above. */
  .nav .wordmark { display: inline-block; padding-block: 14px; }
  .skip-link { min-height: 44px; display: inline-flex; align-items: center; }

  /* the who-cell session links already wrap one per line here, so make them rows:
     bigger targets, and the drawn separator stops leading an orphaned second line */
  .who-sessions-line { display: flex; flex-direction: column; }
  .who-sessions-line a { display: flex; align-items: center; min-height: 44px; }
  .who-sessions-line a + a::before { content: none; }
}

/* 62 · who the day is for, said once in the hero. The "Who attends" section is seven
   screens down, which is too late for an industry CFO deciding whether this is for them. */
.hero .dateline { margin-bottom: 14px; }
.hero .hero-who {
  max-width: 54ch; margin: 0 0 32px;
  font-size: 16px; line-height: 1.5; color: var(--on-navy-soft);
}
@media (min-width: 1101px) { .hero .dateline { margin-bottom: 16px; } .hero .hero-who { margin-bottom: 38px; font-size: 16.5px; } }
@media (max-width: 640px) { .hero .hero-who { font-size: 15px; margin-bottom: 26px; } }

/* 63 · #question stated EUR 33.5tn twice from the same source, once in the chart and
   again as the lead pull figure 600px above it. The chart keeps the number and its
   Bruegel attribution; the column now carries one figure, at the dominant scale. */
#question .q-figures .fig-b { margin-top: 0; padding-left: 0; }
#question .q-figures .fig-b .n { font-size: clamp(72px, 9.6vw, 150px); margin-left: -0.04em; }
@media (max-width: 980px) { #question .q-figures .fig-b { margin-top: 0; } }

/* 64 · the conference record on mobile. All four findings and every source stay; the
   section was carrying desktop-scale gaps down a 390px column, and the three annual
   flows stacked as three full-height blocks when a number and its label fit one row. */
@media (max-width: 640px) {
  .rec-spread .rs-row { gap: 18px 0; }
  .rec-spread .rs-fig {
    display: grid; grid-template-columns: auto minmax(0, 1fr);
    gap: 0 18px; align-items: baseline;
  }
  .rec-spread .rs-fig .l { margin-top: 0; max-width: none; }
  #signals .shead { margin-bottom: 28px; }
  .rec-intro { margin-bottom: 28px; }
  .rec-spread { padding-top: 26px; margin-bottom: 44px; }
  .rec-spread .rs-thesis { margin-top: 40px; }
  .rec-spread .rs-question { margin-top: 32px; }
  #signals .rec-row { margin-top: 32px; }
  .sig-quote.elevated { margin-top: 28px; padding-top: 26px; }
}

/* 65 · the programme, condensed (24 Aug). The session rows ran a 32ch title column down
   the left third of a 1152px canvas, so a title wrapped to four lines against two thirds
   of empty page, and every coffee break spent 90px announcing itself. The day now reads
   as a register: number and time in a fixed gutter, the title and its teaser side by side
   at width, breaks on one line. Scoped to .home-agenda and to the landmark rows so the
   17 Aug grid-retirement rules (which set .session summary to display:block above 981px)
   are overridden deliberately rather than by accident. */
@media (min-width: 981px) {
  .home-agenda .session.landmark { padding: 22px 0 20px; }
  .home-agenda .session.landmark summary {
    display: grid; grid-template-columns: 124px minmax(0, 1fr);
    column-gap: 36px; align-items: start;
  }
  .home-agenda .session.landmark summary > * { grid-column: 2; }
  .home-agenda .session.landmark summary > .s-top {
    grid-column: 1; grid-row: 1 / span 5; display: block; margin: 0; padding-top: 3px;
  }
  .home-agenda .session.landmark summary > .s-top .s-no { display: block; margin-bottom: 7px; }
  .home-agenda .session.landmark summary > .s-top .tl-time { display: block; }
  .home-agenda .session.landmark summary .meta-row { margin: 0 0 8px; }
  .home-agenda .session.landmark summary h3 { margin: 0 0 8px; max-width: 46ch; }
  .home-agenda .session .expand-hint { margin-top: 8px; }
  .home-agenda .session[open] > .body { margin: 14px 0 2px 160px; padding: 18px 24px; }

  /* breaks: one line, on the session gutter */
  .home-agenda .mv .session.interstitial {
    display: grid; grid-template-columns: 124px max-content minmax(0, 1fr);
    column-gap: 36px; align-items: baseline; text-align: left; padding: 9px 0;
  }
  .home-agenda .mv .session.interstitial .tl-time { grid-column: 1; display: block; margin: 0; }
  .home-agenda .mv .session.interstitial .i-title { grid-column: 2; margin: 0; }
  .home-agenda .mv .session.interstitial .framing { grid-column: 3; text-align: left; margin: 0; }
}

/* wide: the teaser takes the third column instead of another two lines of height */
@media (min-width: 1101px) {
  .home-agenda .session.landmark summary {
    grid-template-columns: 116px minmax(0, 1.04fr) minmax(0, .96fr); column-gap: 34px;
  }
  .home-agenda .session.landmark summary > .s-top { grid-row: 1 / span 3; }
  .home-agenda .session.landmark summary > .meta-row { grid-column: 2 / -1; grid-row: 1; }
  .home-agenda .session.landmark summary > h3 { grid-column: 2; grid-row: 2; max-width: none; margin: 0; }
  .home-agenda .session.landmark summary > .framing.tease {
    grid-column: 3; grid-row: 2; max-width: none; margin: 3px 0 0;
  }
  .home-agenda .session.landmark summary > .expand-hint { grid-column: 2; grid-row: 3; }
  .home-agenda .session[open] > .body { margin-left: 150px; }
  .home-agenda details.session:not([open]) summary .framing { -webkit-line-clamp: 3; }
}

/* the chapter marks and the fields around them lose a third of their air */
.home-agenda .part-head.chapter { margin: 40px 0 14px; padding-top: 22px; }
.home-agenda .part-head.chapter .ch-title { font-size: clamp(28px, 2.8vw, 40px); }
.home-agenda .day-head.dh-thu + .part-head.chapter { margin-top: 26px; padding-top: 22px; }
.home-agenda .mv-aft .part-head.chapter { margin-top: 20px; }
.home-agenda .mv-morning, .home-agenda .mv-aft { padding-block: 8px 28px; }
.home-agenda .mv-morning { margin-top: 22px; }
.home-agenda .mv-aft { margin-top: 30px; }
.home-agenda .mv-lunch { margin-top: 32px; }
.home-agenda .mv-reception { padding-block: 24px 28px; }
.wed-prelude { padding: 16px 24px 12px; }

.glance { padding: 22px 0 18px; margin: 16px 0 18px; gap: 2px 56px; }
.g-label { margin-bottom: 10px; }
.g-row { padding: 4px 0; font-size: 14.5px; line-height: 1.32; }
.g-mid { margin-top: 14px; padding-top: 12px; }

.lunch-interlude { padding: 22px 28px 16px; }
.lunch-interlude .li-head { margin-bottom: 8px; }
.lunch-interlude .li-head h3 { font-size: 20px; }
.lunch-interlude .session { padding: 14px 0 10px; }
.lunch-interlude .session summary h3 { font-size: 16.5px; margin: 0 0 6px; }

@media (max-width: 820px) {
  .home-agenda .session.landmark { padding: 20px 0 18px; }
  .home-agenda .mv .session.interstitial { padding: 14px 0 12px; }
  .home-agenda .part-head.chapter { margin: 30px 0 10px; padding-top: 18px; }
  .lunch-interlude { padding: 18px 18px 12px; }
  .wed-prelude { padding: 14px 18px 10px; }
}

/* 65b · the same condensing on the phone: a break is one line and a session header is
   one line, rather than three stacked centred rows and a tier chip on its own line. */
@media (max-width: 980px) {
  .home-agenda .mv .session.interstitial { text-align: left; padding: 12px 0 10px; }
  .home-agenda .mv .session.interstitial .tl-time { display: inline-block; margin: 0 12px 0 0; }
  .home-agenda .mv .session.interstitial .i-title { display: inline; }
  .home-agenda .mv .session.interstitial .framing { text-align: left; margin: 3px 0 0; max-width: none; }
  /* format and tier share one line when they fit and wrap when they do not: nowrap here would
     overflow the column under text zoom, which is the one accessibility regression worth avoiding */
  .home-agenda .session.landmark summary .meta-row { flex-wrap: wrap; gap: 6px 14px; align-items: baseline; }
  .home-agenda .session.landmark summary .fmt { min-width: 0; }
  .home-agenda .session.landmark summary .tier { margin-left: auto; flex-basis: auto; }
}

/* 66 · the policy clock now carries the conference itself (24 Aug). The band is headed
   "Why the start of 2027 matters" and located every legislative date except the one the
   reader is being asked to attend. The conference cell is the only marked one: filled dot,
   full-strength text and an azure keyline, so it reads as the fixed point among the dates. */
.cal-band.clock .cal-cell.cal-conf { border-left: 2px solid var(--accent); padding-left: 20px; }
.cal-band.clock .cal-cell.cal-conf::before { background: var(--accent); width: 9px; height: 9px; top: -5px; left: -5px; }
.cal-band.clock .cal-cell.cal-conf p { color: var(--on-green); }
@media (max-width: 820px) {
  .cal-band.clock .cal-cell.cal-conf { border-left: 2px solid var(--accent); margin-left: -1px; padding-left: 24px; }
  .cal-band.clock .cal-cell.cal-conf::before { left: -5px; }
}
/* the roll stagger was written for five cells */
@media (prefers-reduced-motion: no-preference) {
  .cal-band.clock.roll .cal-cell:nth-child(6) { --d: 450ms; }
}

/* 66. Why now (25 Aug 2026) --------------------------------------------------
   Two pieces of one decongestion move: .page-head is the compact header of the
   second public page (/why-now/), and .wn-* is the four line highlight block that
   replaced the policy clock band and the whole conference-record section on the
   homepage. Nothing here is a new device: the type, rules and colours are the ones
   already in the sheet, at a smaller amplitude than a section of their own. */
.page-head { padding: 92px 0 46px; border-bottom: 1px solid var(--rule); }
.page-head .ph-kicker { display: block; font-size: 12.5px; letter-spacing: .08em; color: var(--ink-soft); margin-bottom: 22px; }
.page-head h1 { font-size: 46px; line-height: 1.08; letter-spacing: -.015em; margin: 0 0 20px; }
.page-head .lede { max-width: 60ch; margin: 0; }
/* the household-assets chart rides in the page head's right column rather than
   taking a thin section of its own; it is the only figure on the page above the record */
.ph-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); gap: 30px 72px; align-items: end; }
.ph-grid .sum-chart { margin: 0; }
@media (max-width: 900px) { .ph-grid { grid-template-columns: 1fr; align-items: start; } }

/* Summary and Why now would otherwise be two transparent sections back to back,
   which is exactly the undivided-magazine reading. Why now takes the panel ground,
   so Summary, Why now and the photo beat alternate plane by plane. */
#why-now { background: var(--paper-warm); border-top: 1px solid var(--rule); border-bottom: 1px solid var(--rule); }
.wn-grid { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 32px 72px; align-items: start; }
.wn-clock { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--rule); }
.wn-clock li { display: grid; grid-template-columns: 128px minmax(0, 1fr); gap: 20px; align-items: baseline;
  padding: 13px 0; border-bottom: 1px solid var(--rule); }
.wn-clock .wn-d { font-size: 12.5px; color: var(--ink-soft); letter-spacing: .04em; }
.wn-clock .wn-t { font-size: 16px; line-height: 1.4; }
.wn-clock .wn-conf { border-left: 3px solid var(--green); padding-left: 17px; margin-left: -20px; }
.wn-clock .wn-conf .wn-t { font-weight: 600; }
.wn-side p { margin: 0 0 16px; max-width: 44ch; }
.wn-link { font-size: 14.5px; text-decoration: none; color: var(--green); border-bottom: 1px solid currentColor; padding-bottom: 2px; }
.wn-link:hover { color: var(--ink); }
#next { padding-top: 88px; padding-bottom: 104px; }
.wn-next { display: flex; flex-wrap: wrap; gap: 16px; padding: 8px 0 0; }

@media (max-width: 900px) {
  .page-head { padding: 64px 0 34px; }
  .page-head h1 { font-size: 34px; }
  .wn-grid { grid-template-columns: 1fr; gap: 28px 0; }
}
@media (max-width: 560px) {
  .wn-clock li { grid-template-columns: 1fr; gap: 5px; }
  .wn-clock .wn-conf { margin-left: 0; padding-left: 14px; }
}

/* 67. Motion (3 Oct 2026) ----------------------------------------------------
   James's motion brief. Everything sits behind the reduced-motion switch: this
   block applies to screens that have not asked for reduced motion, and every
   pre-roll state hangs off a class that assets/motion.js adds, so no-JS, print
   and reduced-motion readers get the finished page. No parallax, no scale on
   hover, no shadow, no automatic crossfade. The ticker stays at 70 seconds. */

/* static parts: present for every reader */
.hero-count .hc-hm { display: block; margin-top: 5px; font-size: 10px; letter-spacing: .13em; text-transform: uppercase; }
.hero-count .hc-hm .hc-h, .hero-count .hc-hm .hc-m { color: var(--on-navy); font-variant-numeric: tabular-nums; }
.hero-count .hc-d { display: inline-block; }
.who-no::after { content: ""; display: block; width: 28px; height: 1px; background: currentColor; margin-top: 9px; transform-origin: 0 50%; }
/* the format label rests in soft ink and takes full ink when the row is under the pointer */
.home-agenda .session.landmark summary .fmt { color: var(--ink-soft); transition: color .15s ease; }
@media (hover: hover) { .home-agenda .session.landmark:hover summary .fmt { color: var(--ink); } }
.home-agenda .session.landmark:focus-within summary .fmt { color: var(--ink); }

@media screen and (prefers-reduced-motion: no-preference) {
  /* hero: the lockup resolves in one beat, once, on load */
  .hero .ed-kicker { animation: mo-fade .5s ease-out both; }
  .hero .lockup h1 { animation: mo-rise .5s cubic-bezier(.22, .7, .25, 1) both; }
  .hero .lockup .tagline { animation: mo-rise .5s cubic-bezier(.22, .7, .25, 1) .08s both; }
  .hero-cover figcaption { animation: mo-fade .4s ease .7s both; }
  @keyframes mo-fade { from { opacity: 0; } to { opacity: 1; } }
  @keyframes mo-rise { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: none; } }

  /* countdown: only the digit that changed, and it does not roll */
  .hero-count .hc-d.tick { animation: mo-digit .32s ease-out both; }
  @keyframes mo-digit { from { opacity: .15; } to { opacity: 1; } }

  /* figures hold their width while they count */
  .mo-count { font-variant-numeric: tabular-nums; }

  /* the date spine: a 1px rule drawn down the column, each date lit as the rule reaches it */
  .wn-clock.mo-spine { position: relative; }
  .wn-clock.mo-spine::before { content: ""; position: absolute; left: -20px; top: 0; width: 1px; height: calc(var(--p, 0) * 100%); background: var(--ink); }
  .wn-clock.mo-spine li .wn-d, .wn-clock.mo-spine li .wn-t { opacity: .36; transition: opacity .35s ease, color .35s ease; }
  .wn-clock.mo-spine li.lit .wn-d, .wn-clock.mo-spine li.lit .wn-t { opacity: 1; }
  .wn-clock.mo-spine li.wn-conf { border-left-color: var(--rule); transition: border-left-color .35s ease; }
  .wn-clock.mo-spine li.wn-conf.lit { border-left-color: var(--green); }
  .wn-clock.mo-spine li.wn-conf.lit .wn-d { color: var(--ink); }

  /* programme: the body fades in place, no slide; the height is eased by motion.js */
  .session[open] .body { animation: mo-fade .2s ease both; }
  .mo .session[open] .body { animation: none; }
  .part-head.mo-prog { position: relative; }
  .part-head .ph-prog { position: absolute; left: 0; right: 0; bottom: -9px; height: 1px; background: var(--rule); }
  .part-head .ph-prog i { display: block; height: 2px; margin-top: -1px; background: var(--green); transform-origin: 0 50%; transform: scaleX(var(--p, 0)); }

  /* photographs: a slow push in, only while the frame is on screen; the caption follows the frame */
  .kb { display: block; overflow: hidden; }
  .kb > img { animation: mo-kb 7s ease-out both paused; }
  .mo-fig.in .kb > img { animation-play-state: running; }
  @keyframes mo-kb { from { transform: scale(1); } to { transform: scale(1.04); } }
  .mo-cap figcaption { opacity: 0; }
  .mo-cap.seen figcaption { opacity: 1; transition: opacity .4s ease .12s; }

  /* who attends: six groups, 40ms apart, and the hairline under each number draws left to right */
  .who-grid.mo-pre .who-cell > * { opacity: 0; transform: translateY(6px); }
  .who-grid.mo-pre .who-no::after { transform: scaleX(0); }
  .who-grid.mo-pre .who-cell:nth-child(2) { --d: 40ms; }
  .who-grid.mo-pre .who-cell:nth-child(3) { --d: 80ms; }
  .who-grid.mo-pre .who-cell:nth-child(4) { --d: 120ms; }
  .who-grid.mo-pre .who-cell:nth-child(5) { --d: 160ms; }
  .who-grid.mo-pre .who-cell:nth-child(6) { --d: 200ms; }
  .who-grid.mo-pre.mo-in .who-cell > * { opacity: 1; transform: none; transition: opacity .45s ease var(--d, 0ms), transform .45s ease var(--d, 0ms); }
  .who-grid.mo-pre.mo-in .who-no::after { transform: none; transition: transform .5s ease calc(var(--d, 0ms) + 160ms); }
}
@media (max-width: 560px) {
  .wn-clock.mo-spine { padding-left: 14px; }
  .wn-clock.mo-spine::before { left: 1px; }
  .wn-clock.mo-spine .wn-conf { margin-left: -14px; padding-left: 11px; }
}

/* Legal links and the form privacy line (5 Oct 2026). */
footer .f-legal { margin-top: 20px; font-size: 12px; }
.if-privacy { margin-top: 12px; font-size: 12px; color: var(--ink-soft); }
.film video { width: 100%; height: 100%; display: block; background: #000; }
#question .q-figures .film-sm { margin-top: 36px; max-width: 340px; }
#question .q-figures .film-cap { margin: 10px 0 0; font-size: 11.5px; letter-spacing: .02em; color: var(--ink-soft); }
.film-sm .film-play svg { width: 48px; height: 48px; }

/* The sponsorship brochure download, under the partner route's button. */
.route .btn.route-pdf { margin-top: 10px; }

/* Session rows while blurbs are held back (12 Oct 2026): the <summary> wrapper outside <details>
   keeps the agenda grid but is not a control. */
.session.flat > summary { cursor: default; }
.session.flat > summary:hover { background: none; }
.session.flat > summary:hover h3 { color: inherit; }
.session.flat > summary > .actions { margin-top: 10px; }
