/* ==========================================================================
   DCNY Summit 2026 · The Record
   Organic serif on rice paper: soft paper and clay grounds, with the
   cover's night-Capitol navy for type and the dark sections, antique gold
   for labels and fine lines, and terracotta for the moments that invite a
   click. Playfair Display carries the headlines (italic for the words that
   matter), Source Sans 3 the reading. Section headings are centred; cards
   line up along the top of each row. Rounded cards and photographs, a paper
   grain over it all, and motion that settles slowly into place.
   ========================================================================== */

/* ------------------------------------------------------------------ tokens */
:root {
  /* Palette: every colour comes from the garden and the potting shed */
  --paper: #f9f8f4;          /* rice paper: the page */
  --white: #ffffff;          /* cards */
  --clay-50: #f2f0eb;        /* soft clay: alternate sections, quiet fills */
  --clay-200: #dccfc2;       /* mushroom: tags, secondary fills */
  --stone: #e6e2da;          /* hairlines */
  --ink: #06152c;            /* the cover's night-Capitol navy: headings, primary buttons, dark sections */
  --ink-2: #2e3b52;          /* body text */
  --ink-muted: #4d5b70;      /* secondary text (6:1 on paper) */
  --gold: #d8b65f;           /* lines, rings and small decoration */
  --gold-ink: #7a5c14;       /* labels and eyebrows on light grounds (5.8:1 on paper) */
  --terracotta: #c27b66;     /* accents */
  --terracotta-deep: #9e5a45; /* terracotta for text and hover fills (5:1 with white) */
  --orange-700: #b4460f;       /* Talk to Jennifer (white text 5.5:1, peach 4.6:1) */
  --orange-800: #9a3412;
  --navy-900: #06152c;       /* the cover and the dark sections */
  --navy-800: #0d2445;
  --navy-700: #17345d;
  --ivory: #f5efe1;
  --ivory-dim: #d8d1c1;
  --mist: #a9b8cc;
  --mustard-200: #efdca6;    /* Jennifer's card, and the cover's gold */
  --mustard-300: #e5c878;
  --mustard-400: #d8b65f;

  /* Type */
  --font-display: "Playfair Display", Georgia, "Times New Roman", serif;
  --font-body: "Source Sans 3", "Source Sans Pro", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;

  /* Shape */
  --r-sm: 12px;
  --r-md: 18px;
  --r-card: 24px;
  --r-lg: 32px;
  --r-pill: 999px;

  /* Soft, diffused elevation tinted with navy, never black */
  --shadow-sm: 0 4px 6px -1px rgba(6, 21, 44, .05), 0 1px 2px rgba(6, 21, 44, .04);
  --shadow-md: 0 10px 15px -3px rgba(6, 21, 44, .07), 0 2px 6px rgba(6, 21, 44, .04);
  --shadow-lg: 0 20px 40px -10px rgba(6, 21, 44, .12);
  --shadow-xl: 0 25px 50px -12px rgba(6, 21, 44, .2);

  /* Motion: eased out, slow to settle */
  --ease: cubic-bezier(.22, .61, .36, 1);
  --t-fast: .3s;
  --t: .5s;
  --t-slow: .7s;
  --t-slower: 1s;

  /* Layout */
  --gutter: clamp(16px, 3vw, 56px);
  --rail-h: 60px;
  --section-pad: clamp(64px, 9vw, 128px);

  /* Context tokens: light by default, swapped inside the navy sections */
  --fg: var(--ink);
  --fg-2: var(--ink-2);
  --fg-muted: var(--ink-muted);
  --accent: var(--gold);
  --accent-text: var(--gold-ink);
  --surface: var(--paper);
  --card: var(--white);
  --rule: var(--stone);
  --rule-strong: #cfc8bb;
  --focus: var(--ink);
  --btn-bg: var(--ink);
  --btn-fg: var(--paper);
  --btn-line: rgba(6, 21, 44, .35);
  --btn-line-fg: var(--ink);
}

/* The navy sections wear the cover's colours: ivory type, gold accents */
.section-navy,
.sources {
  --fg: var(--ivory);
  --fg-2: var(--ivory-dim);
  --fg-muted: var(--mist);
  --accent: var(--mustard-400);
  --accent-text: var(--mustard-300);
  --surface: var(--navy-900);
  --card: var(--navy-800);
  --rule: rgba(216, 182, 95, .2);
  --rule-strong: rgba(216, 182, 95, .45);
  --focus: var(--mustard-300);
  --btn-bg: var(--mustard-400);
  --btn-fg: var(--navy-900);
  --btn-line: rgba(216, 182, 95, .6);
  --btn-line-fg: var(--mustard-300);
}

/* -------------------------------------------------------------------- base */
*,
*::before,
*::after { box-sizing: border-box; }

html {
  font-size: 112.5%;          /* 18px: larger reading text across the whole page */
  color-scheme: only light;   /* the palette is designed for light; don't let browsers auto-darken it */
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--rail-h) + 16px);
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--fg);
  font: 400 1.0625rem/1.65 var(--font-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: clip;
}

img { max-width: 100%; height: auto; display: block; }
h1, h2, h3, h4, h5, p, ul, ol, figure, blockquote, dl, dd { margin: 0; }
ul, ol { padding: 0; list-style: none; }
button { font: inherit; color: inherit; }
a { color: inherit; }
q { quotes: "“" "”" "‘" "’"; }
[hidden] { display: none !important; }

:focus-visible {
  outline: 2px solid var(--focus);
  outline-offset: 3px;
  border-radius: 6px;
}

/* Full width: content runs edge to edge, inside the gutters, at every screen size. Text keeps its
   own comfortable measure (ch-based max-widths); grids add columns as the screen widens. */
.wrap {
  width: 100%;
  padding-inline: var(--gutter);
}

.visually-hidden {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0);
  white-space: nowrap; border: 0;
}
.print-only { display: none; }
/* Copying turned off (body.no-copy, js/app.js › initProtect): no text selection, no image dragging and no
   long-press menu on phones; form fields (the question box) behave normally */
body.no-copy { -webkit-user-select: none; user-select: none; -webkit-touch-callout: none; }
body.no-copy input,
body.no-copy textarea,
body.no-copy [contenteditable="true"] { -webkit-user-select: text; user-select: text; -webkit-touch-callout: default; }
body.no-copy img { -webkit-user-drag: none; }
.nowrap { white-space: nowrap; }
.mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .92em; }

/* The paper grain: a fixed, barely-there fractal noise over everything. It is what
   turns flat pixels into something that feels printed. */
.grain {
  position: fixed;
  inset: 0;
  z-index: 90;
  pointer-events: none;
  opacity: .015;
  background-image: url("data:image/svg+xml,%3Csvg viewBox='0 0 400 400' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='noiseFilter'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23noiseFilter)'/%3E%3C/svg%3E");
  background-repeat: repeat;
}

.skip-link {
  position: absolute;
  left: 16px; top: -100px;
  z-index: 100;
  padding: .8rem 1.2rem;
  border-radius: var(--r-pill);
  background: var(--ink);
  color: var(--paper);
  font: 600 .8rem/1 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  text-decoration: none;
}
.skip-link:focus { top: 12px; }

/* Label type: small, uppercase, widely spaced */
.kicker,
.eyebrow,
.subhead,
.btn,
.chip,
.stat-source,
.clip-file,
.tags li,
.road-kicker,
.footer-bar,
.player-kicker,
.story-toggle,
.action-link,
.ask-eyebrow,
.ask-try {
  font-family: var(--font-body);
}

/* ----------------------------------------------------------------- buttons */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: .6rem;
  min-height: 52px;
  padding: .85rem 1.6rem;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  background: transparent;
  font-size: .8rem;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: .16em;
  text-transform: uppercase;
  text-decoration: none;
  cursor: pointer;
  white-space: nowrap;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease),
    border-color var(--t-fast) var(--ease), transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.btn svg { width: 1.05em; height: 1.05em; flex: none; }
.btn:active { transform: translateY(1px); }
.btn-sm { min-height: 44px; padding: .6rem 1.15rem; font-size: .72rem; letter-spacing: .14em; }

.btn-primary { background: var(--btn-bg); color: var(--btn-fg); box-shadow: var(--shadow-sm); }
.btn-primary:hover { background: var(--terracotta-deep); color: var(--white); box-shadow: var(--shadow-md); transform: translateY(-1px); }
.btn-secondary { border-color: var(--btn-line); color: var(--btn-line-fg); }
.btn-secondary:hover { background: var(--btn-bg); border-color: var(--btn-bg); color: var(--btn-fg); }
.btn-text { color: var(--accent-text); padding-inline: .4rem; }
.btn-text:hover { color: var(--terracotta-deep); text-decoration: underline; text-underline-offset: 5px; }
.section-navy .btn-text:hover,
.sources .btn-text:hover { color: var(--mustard-200); }
.section-navy .btn-primary:hover,
.sources .btn-primary:hover { background: var(--mustard-300); color: var(--navy-900); }
.section-navy .btn-secondary:hover,
.sources .btn-secondary:hover { background: rgba(216, 182, 95, .12); border-color: var(--mustard-300); color: var(--mustard-200); }
.btn-accent { background: var(--terracotta-deep); color: var(--white); }
.btn-accent:hover { background: var(--ink); color: var(--paper); }

.linklike {
  background: none; border: 0; padding: 0;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 3px;
}

/* ---------------------------------------------------------------- masthead */
/* The organizer's design: a navy band from edge to edge, their logo on the left, Washington in three
   white marks on the right divided by gold rules, and a gold rule along the bottom. */
.masthead {
  background:
    linear-gradient(90deg, #a87a26, #f0cf78 22%, #c6963a 48%, #f3da8c 76%, #a87a26) left bottom / 100% 4px no-repeat,
    radial-gradient(90% 180% at 86% -20%, rgba(38, 86, 150, .32), transparent 62%),
    linear-gradient(100deg, #021a33 0%, #031d38 45%, #052447 100%);
  color: var(--white);
}
.masthead-inner {
  display: flex;
  align-items: center;
  gap: clamp(20px, 3vw, 48px);
  padding-block: clamp(14px, 1.5vw, 24px) calc(clamp(14px, 1.5vw, 24px) + 4px);
}
.brand { display: block; flex: 0 1 auto; min-width: 0; text-decoration: none; }
/* The organizer's wordmark (3.8 : 1, white and gold on a transparent ground), sized by width so it never distorts */
.brand-logo { display: block; width: clamp(210px, 27vw, 440px); max-width: 100%; height: auto; }
/* The organizer's three illustrations, top right: bottoms on one line, equal gaps between them.
   --emblem-h is the Capitol's height; the flag and the White House keep their sizes relative to it, as drawn. */
.masthead-emblems {
  --emblem-h: clamp(44px, 6.6vw, 104px);
  display: flex;
  align-items: flex-end;
  gap: clamp(14px, 2.2vw, 36px);
  margin: 0 0 0 auto;
}
.emblem { display: block; flex: none; width: auto; }
.emblem-capitol { height: var(--emblem-h); }
.emblem-flag { height: calc(var(--emblem-h) * .715); }
.emblem-whitehouse { height: calc(var(--emblem-h) * .904); }
/* On phones the two buttons sit in the band, under the logo (see the 680px rules) */
.masthead-cta { display: none; }

/* The two buttons: at the right of the menu row, and in the band on phones */
.cta {
  display: inline-flex;
  align-items: center;
  height: 40px;
  padding: 0 .85rem;
  border: 1px solid transparent;
  border-radius: var(--r-pill);
  font: 600 .84rem/1 var(--font-body);
  white-space: nowrap;
  text-decoration: none;
  transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.cta-invite { border-color: var(--ink); color: var(--ink); }
.cta-invite:hover { background: var(--ink); color: var(--paper); }
.cta-donate { border-color: var(--mustard-400); background: var(--mustard-400); color: var(--navy-900); }
.cta-donate:hover { border-color: var(--ink); background: var(--ink); color: var(--paper); }
.rail-cta { display: flex; flex: none; gap: .5rem; margin: 0 0 0 auto; }

/* -------------------------------------------------------------------- rail */
.rail {
  position: sticky;
  top: 0;
  z-index: 40;
  background: rgba(249, 248, 244, .86);
  border-bottom: 1px solid var(--stone);
  backdrop-filter: saturate(140%) blur(10px);
  -webkit-backdrop-filter: saturate(140%) blur(10px);
}
.rail-inner {
  display: flex;
  align-items: center;
  gap: 1rem;
  height: var(--rail-h);
}
.rail-mark {
  display: none;
  flex: none;
  align-items: baseline;
  gap: .45rem;
  color: var(--ink);
  text-decoration: none;
  font: 600 .74rem/1 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
}
.rail-mark span { font: italic 500 1rem/1 var(--font-display); letter-spacing: 0; text-transform: none; color: var(--gold-ink); }
/* Once the band has scrolled away, the menu names the summit, where there is room beside the two buttons */
@media (min-width: 1760px) { .rail.is-stuck .rail-mark { display: inline-flex; } }

.rail-list {
  display: flex;
  flex: 0 1 auto;
  min-width: 0;
  gap: 0;
  overflow-x: auto;
  scrollbar-width: none;
}
.rail-list.is-overflowing {
  -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - 40px), transparent);
          mask-image: linear-gradient(90deg, #000 calc(100% - 40px), transparent);
}
.rail-list::-webkit-scrollbar { display: none; }
.rail-list a {
  display: flex;
  align-items: center;
  gap: .45rem;
  height: 40px;
  padding: 0 .6rem;
  border-radius: var(--r-pill);
  white-space: nowrap;
  color: var(--ink-muted);
  text-decoration: none;
  font: 500 .9rem/1 var(--font-body);
  transition: color var(--t-fast) var(--ease), background-color var(--t-fast) var(--ease);
}
.rail-list a:hover { color: var(--ink); background: var(--clay-50); }
.rail-list a[aria-current="true"] { color: var(--paper); background: var(--ink); }
.rail-num {
  font: 600 .68rem/1 var(--font-body);
  font-variant-numeric: tabular-nums;
  letter-spacing: .06em;
  color: var(--gold);
}
.rail-list a[aria-current="true"] .rail-num { color: var(--mustard-300); }
/* Beside the two buttons the numbers go, so the whole menu fits from about 1230px */
@media (min-width: 681px) and (max-width: 1439px) { .rail-num { display: none; } }

/* Back to top: a circle with an up arrow, bottom right, once the reader is a screen down (js/app.js) */
.to-top {
  position: fixed;
  right: max(16px, env(safe-area-inset-right));
  bottom: max(16px, env(safe-area-inset-bottom));
  z-index: 60;
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border: 1.5px solid var(--mustard-400);
  border-radius: 50%;
  background: var(--navy-900);
  color: var(--paper);
  box-shadow: 0 10px 24px -8px rgba(6, 21, 44, .55);
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px);
  transition: opacity var(--t) var(--ease), transform var(--t) var(--ease), visibility var(--t), background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.to-top.is-visible { opacity: 1; visibility: visible; transform: none; }
.to-top:hover,
.to-top:focus-visible { background: var(--mustard-400); color: var(--navy-900); }
.to-top svg { width: 22px; height: 22px; }

/* -------------------------------------------------------------------- hero */
/* The cover keeps the night-Capitol navy of the first design: the dome at dusk behind the headline,
   gold for the labels and the main action, and Jennifer's mustard card beside it. */
.hero {
  --fg: var(--ivory);
  --fg-2: var(--ivory-dim);
  --fg-muted: var(--mist);
  --accent: var(--mustard-400);
  --accent-text: var(--mustard-300);
  --surface: var(--navy-900);
  --rule: rgba(216, 182, 95, .2);
  --rule-strong: rgba(216, 182, 95, .5);
  --focus: var(--mustard-300);
  --btn-bg: var(--mustard-400);
  --btn-fg: var(--navy-900);
  --btn-line: rgba(216, 182, 95, .6);
  --btn-line-fg: var(--mustard-300);
  position: relative;
  isolation: isolate;
  overflow: hidden;
  display: flex;
  align-items: flex-end;
  min-height: max(640px, calc(100svh - 96px - var(--rail-h)));
  padding-block: clamp(56px, 9vh, 112px) clamp(32px, 5vh, 56px);
  background: var(--navy-900);
  color: var(--fg);
}
.hero-media {
  position: absolute;
  inset: 0;
  z-index: -1;
  background: radial-gradient(120% 90% at 78% 30%, #173a6e 0%, var(--navy-900) 62%);
}
.hero-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(6, 21, 44, .97) 0%, rgba(6, 21, 44, .9) 34%, rgba(6, 21, 44, .45) 68%, rgba(6, 21, 44, .6) 100%),
    linear-gradient(0deg, rgba(6, 21, 44, 1) 0%, rgba(6, 21, 44, .15) 42%, rgba(6, 21, 44, 0) 60%);
}
.hero-img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 70% 30%;
  transform-origin: 70% 35%;
  animation: kenburns 42s var(--ease) both;
}
.hero-media.is-missing .hero-img { display: none; }
@keyframes kenburns {
  from { transform: scale(1.02); }
  to { transform: scale(1.1) translate3d(-1.5%, 1%, 0); }
}

.hero-inner {
  position: relative;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  column-gap: clamp(40px, 5vw, 120px);
}
.hero-inner > .stats { grid-column: 1 / -1; }
.hero-main > *,
.hero-inner > .ask-card,
.hero-inner > .stats { animation: bloom var(--t-slower) var(--ease) backwards; }
.hero-main > :nth-child(2) { animation-delay: .08s; }
.hero-main > :nth-child(3) { animation-delay: .16s; }
.hero-main > :nth-child(4) { animation-delay: .24s; }
.hero-main > :nth-child(n+5) { animation-delay: .32s; }
.hero-inner > .ask-card { animation-delay: .38s; }
.hero-inner > .stats { animation-delay: .46s; }
@media (min-width: 1100px) {
  /* (.ask-slot holds the card's place while it floats; see js/vidya.js) */
  .hero-inner:has(> .ask-card),
  .hero-inner:has(> .ask-slot) { grid-template-columns: minmax(0, 1fr) minmax(380px, 480px); }
  /* The dome moves toward the gap between the headline and the card */
  .hero:has(.ask-card) .hero-img,
  .hero:has(.ask-slot) .hero-img { object-position: 58% 30%; }
}
/* Once the card has floated, its entrance animation must not replay when it comes home */
.hero-inner > .ask-card.is-settled { animation: none; }

.kicker {
  display: flex;
  align-items: center;
  gap: .85rem;
  font-size: .76rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .24em;
  text-transform: uppercase;
  color: var(--mustard-400);
}
.overline {
  margin-top: 1.4rem;
  font: italic 400 clamp(1.15rem, 1.6vw, 1.4rem)/1.35 var(--font-display);
  color: var(--ivory-dim);
}
.hero-title {
  margin-top: .45rem;
  max-width: 16ch;
  font: 600 clamp(2.7rem, 6vw, 5.6rem)/1 var(--font-display);
  letter-spacing: -.015em;
  color: var(--ivory);
  text-wrap: balance;
}
.hero-title em,
.section-title em,
.ask-title em {
  font-style: italic;
  font-weight: 500;
  color: var(--accent-text);
}
.hero-sub {
  display: inline-flex;
  margin-top: 1.75rem;
  padding: .85rem 1.35rem;
  border-radius: var(--r-pill);
  background: var(--mustard-400);
  color: var(--navy-900);
  font: 600 .74rem/1.2 var(--font-body);
  letter-spacing: .18em;
  text-transform: uppercase;
}

.audience { margin: 2.25rem 0 0; padding: 0; border: 0; min-width: 0; }
.audience-legend {
  padding: 0;
  margin-bottom: .75rem;
  font: 600 .7rem/1 var(--font-body);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--mist);
}
.audience-options {
  display: inline-flex;
  padding: 5px;
  gap: 4px;
  border: 1px solid rgba(216, 182, 95, .45);
  border-radius: var(--r-pill);
  background: rgba(4, 15, 33, .45);
}
.audience-option { position: relative; }
.audience-option input { position: absolute; inset: 0; opacity: 0; margin: 0; cursor: pointer; }
.audience-option span {
  display: block;
  padding: .8rem 1.25rem;
  border-radius: var(--r-pill);
  font: 600 .74rem/1 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ivory-dim);
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.audience-option:hover span { color: var(--ivory); }
.audience-option input:checked + span { background: var(--mustard-400); color: var(--navy-900); }
.audience-option input:focus-visible + span { outline: 2px solid var(--mustard-300); outline-offset: 2px; }

.hero-lede { margin-top: 1.6rem; max-width: 40rem; }
.lede {
  font: 400 clamp(1.15rem, 1.6vw, 1.4rem)/1.55 var(--font-display);
  color: var(--ivory);
}
.lede + .lede { margin-top: 1rem; }
.lede-label {
  display: block;
  margin-bottom: .35rem;
  font: 600 .7rem/1 var(--font-body);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--mustard-400);
}
.js .lede-label { display: none; }

.hero-ctas { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin-top: 2rem; }
.hero .btn-primary:hover { background: var(--mustard-300); color: var(--navy-900); }
.hero .btn-secondary:hover { background: rgba(216, 182, 95, .12); border-color: var(--mustard-300); color: var(--mustard-200); }
.hero .btn-text:hover { color: var(--mustard-200); }

/* The cover numbers, under a fine gold rule */
.stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-top: clamp(40px, 7vh, 72px);
  border-top: 1px solid rgba(216, 182, 95, .45);
}
.stat { display: flex; flex-direction: column; padding: 1.25rem 1.25rem 0 0; }
.stat + .stat { padding-left: 1.25rem; border-left: 1px solid rgba(216, 182, 95, .2); }
.stat-value {
  order: -1;
  font: 600 clamp(2.2rem, 3.6vw, 3.2rem)/1 var(--font-display);
  color: var(--ivory);
}
.stat-label { margin-top: .5rem; font: 500 .94rem/1.45 var(--font-body); color: var(--ivory-dim); }
.stat-label a { color: inherit; text-decoration: underline; text-decoration-color: rgba(216, 182, 95, .45); text-underline-offset: 4px; transition: color var(--t-fast) var(--ease), text-decoration-color var(--t-fast) var(--ease); }
.stat-label a:hover { color: var(--ivory); text-decoration-color: var(--mustard-300); }
.stat-flags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: .6rem; }
.stat-flags img { width: 26px; height: 17px; object-fit: cover; border-radius: 3px; box-shadow: 0 0 0 1px rgba(255, 255, 255, .22); }
.stat-source {
  margin-top: .45rem;
  font: 600 .64rem/1.2 var(--font-body);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--mist);
}
.hero-credit {
  position: absolute;
  right: var(--gutter);
  bottom: 10px;
  font: 600 .62rem/1 var(--font-body);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: rgba(169, 184, 204, .7);
}

/* ---------------------------------------------- the assistant's card (cover) */
/* Jennifer's mustard card, inked in the cover's navy; the conversation happens in the same card
   (js/vidya.js), so there is only ever one window. */
.ask-card {
  --card-ink: var(--navy-900);
  --card-ink-2: var(--navy-800);
  --card-ink-3: var(--navy-700);
  position: relative;
  align-self: end;
  margin-top: 2.75rem;
  max-width: 560px;
  padding: clamp(24px, 2.4vw, 34px);
  border-radius: var(--r-card);
  background: linear-gradient(165deg, var(--mustard-200) 0%, var(--mustard-300) 48%, var(--mustard-400) 100%);
  box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .75), inset 0 1px 0 rgba(255, 255, 255, .4);
  color: var(--card-ink);
}
@media (min-width: 1100px) {
  .ask-card { margin-top: 0; max-width: none; }
}
.ask-eyebrow {
  display: flex;
  align-items: center;
  gap: .65rem;
  font-size: .72rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--card-ink-2);
}
.ask-live {
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--card-ink);
  animation: ask-pulse 2.4s var(--ease) infinite;
}
@keyframes ask-pulse {
  0% { box-shadow: 0 0 0 0 rgba(6, 21, 44, .45); }
  70% { box-shadow: 0 0 0 10px rgba(6, 21, 44, 0); }
  100% { box-shadow: 0 0 0 0 rgba(6, 21, 44, 0); }
}
.ask-title { margin-top: 1rem; font: 600 clamp(1.9rem, 2.5vw, 2.5rem)/1.05 var(--font-display); color: var(--card-ink); text-wrap: balance; }
.ask-title em { color: var(--card-ink); }
.ask-body { margin-top: .8rem; font: 400 1.02rem/1.55 var(--font-body); color: var(--card-ink-2); }
.ask-talk {
  display: flex;
  align-items: center;
  gap: 1rem;
  width: 100%;
  margin-top: 1.4rem;
  padding: .8rem 1.4rem .8rem .8rem;
  border: 0;
  border-radius: var(--r-pill);
  background: var(--orange-700);
  color: var(--white);
  text-align: left;
  cursor: pointer;
  box-shadow: 0 10px 20px -8px rgba(120, 45, 8, .55);
  transition: background-color var(--t-fast) var(--ease), transform var(--t) var(--ease);
}
.ask-talk:hover { background: var(--orange-800); transform: translateY(-1px); }
.ask-talk:active { transform: translateY(1px); }
.ask-talk svg {
  flex: none;
  width: 48px;
  height: 48px;
  padding: 12px;
  border-radius: 50%;
  background: #fff8f1;
  color: var(--orange-700);
  stroke-width: 2.4;            /* a bold mic */
}
.ask-talk-text { display: flex; flex-direction: column; gap: .3rem; }
.ask-talk-label { font: 600 1.15rem/1 var(--font-display); color: var(--white); }
.ask-talk-sub { font: 500 .8rem/1.25 var(--font-body); color: #fde7d6; }
.ask-try {
  margin-top: 1.5rem;
  font-size: .68rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--card-ink-3);
}
.ask-prompts { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .75rem; }
.ask-prompt {
  padding: .55rem .95rem;
  border: 1px solid rgba(6, 21, 44, .32);
  border-radius: var(--r-pill);
  background: rgba(255, 252, 245, .42);
  color: var(--card-ink);
  font: 500 .86rem/1.3 var(--font-body);
  text-align: left;
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.ask-prompt:hover { background: var(--card-ink); border-color: var(--card-ink); color: var(--mustard-200); }
.ask-note {
  margin-top: 1.3rem;
  padding-top: 1rem;
  border-top: 1px solid rgba(6, 21, 44, .18);
  font: 400 .8rem/1.5 var(--font-body);
  color: var(--card-ink-3);
}
.ask-card button:focus-visible,
.vidya-input:focus-visible { outline: 2px solid var(--card-ink); outline-offset: 2px; }

/* Jennifer's dock: Mic and Chat, in the site's dark blue, on the right edge and centred, once the reader
   has scrolled past her card (js/vidya.js). Either button floats the same card beside the reader. */
.vx-dock {
  position: fixed;
  top: 50%;
  right: max(16px, env(safe-area-inset-right));
  z-index: 60;
  display: flex;
  flex-direction: column;
  gap: 10px;
  opacity: 0;
  visibility: hidden;
  transform: translate(10px, -50%);
  /* Hidden only once it has faded out; visible (and so focusable) the moment it's shown */
  transition: opacity var(--t) var(--ease), transform var(--t) var(--ease), visibility 0s linear var(--t);
}
.vx-dock.is-visible { opacity: 1; visibility: visible; transform: translate(0, -50%); transition-delay: 0s; }
.vx-dock-btn {
  display: grid;
  place-items: center;
  width: 50px;
  height: 50px;
  padding: 0;
  border: 1.5px solid var(--mustard-400);
  border-radius: 50%;
  background: var(--navy-900);
  color: var(--paper);
  box-shadow: 0 10px 24px -8px rgba(6, 21, 44, .55);
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.vx-dock-btn:hover,
.vx-dock-btn:focus-visible { background: var(--mustard-400); color: var(--navy-900); }
.vx-dock-btn:focus-visible { outline: 2px solid var(--mustard-300); outline-offset: 3px; }
.vx-dock-btn svg { width: 22px; height: 22px; }
/* The floating card: beside the dock on wide screens, a sheet along the bottom on phones */
.ask-card.is-floating {
  position: fixed;
  top: 50%;
  right: max(16px, env(safe-area-inset-right));
  z-index: 65;
  width: min(440px, calc(100vw - 32px));
  max-height: calc(100svh - 32px);
  margin: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  transform: translateY(-50%);
}
.ask-card.is-floating .vidya-log { height: clamp(180px, 38svh, 360px); }
@media (max-width: 680px) {
  .vx-dock { right: max(12px, env(safe-area-inset-right)); }
  .vx-dock-btn { width: 46px; height: 46px; }
  .ask-card.is-floating {
    top: auto;
    left: 12px;
    right: 12px;
    bottom: max(12px, env(safe-area-inset-bottom));
    width: auto;
    max-height: calc(100svh - 24px);
    padding: 20px;
    transform: none;
  }
  .ask-card.is-floating .vidya-log { height: clamp(140px, 32svh, 300px); }
}

/* The conversation, in the same card */
.vidya-head {
  display: flex;
  align-items: center;
  gap: .8rem;
  padding-bottom: .9rem;
  border-bottom: 1px solid rgba(6, 21, 44, .18);
}
.vidya-name { font: italic 600 1.8rem/1 var(--font-display); color: var(--card-ink); }
.vidya-state {
  flex: 1;
  display: flex;
  align-items: center;
  gap: .45rem;
  font: 600 .68rem/1.2 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--card-ink-3);
}
.vidya-state::before {
  content: "";
  flex: none;
  width: 8px;
  height: 8px;
  border-radius: 50%;
  background: var(--card-ink-3);
}
.ask-card[data-voice="listening"] .vidya-state::before,
.ask-card[data-voice="hearing"] .vidya-state::before { background: #17784a; animation: ask-pulse 1.6s var(--ease) infinite; }
.ask-card[data-voice="speaking"] .vidya-state::before { background: var(--card-ink); animation: ask-pulse 1s var(--ease) infinite; }
.vidya-close {
  flex: none;
  display: grid;
  place-items: center;
  width: 40px;
  height: 40px;
  border: 0;
  border-radius: 50%;
  background: rgba(6, 21, 44, .08);
  color: var(--card-ink);
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease);
}
.vidya-close:hover { background: rgba(6, 21, 44, .16); }
.vidya-close svg { width: 18px; height: 18px; stroke-width: 1.5; }
.vidya-log {
  display: flex;
  flex-direction: column;
  gap: .6rem;
  height: clamp(230px, 36vh, 360px);
  margin: .9rem 0;
  padding-right: .3rem;
  overflow-y: auto;
  overscroll-behavior: contain;
}
.vidya-msg { max-width: 88%; padding: .7rem .95rem; border-radius: var(--r-md); font: 400 .98rem/1.5 var(--font-body); }
.vidya-agent { align-self: flex-start; background: #fffcf5; color: var(--card-ink); border-bottom-left-radius: 6px; box-shadow: 0 2px 6px rgba(6, 21, 44, .08); }
.vidya-user { align-self: flex-end; background: var(--card-ink); color: var(--ivory); border-bottom-right-radius: 6px; }
.vidya-note { align-self: center; max-width: 100%; padding: .2rem .4rem; font-size: .84rem; font-style: italic; color: var(--card-ink-3); text-align: center; }
.vidya-bar { display: flex; flex-wrap: wrap; gap: .5rem; }
.vidya-mute,
.vidya-stop {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-height: 44px;
  padding: .7rem 1.1rem;
  border: 1px solid var(--card-ink);
  border-radius: var(--r-pill);
  background: transparent;
  color: var(--card-ink);
  font: 600 .8rem/1 var(--font-body);
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.vidya-mute svg,
.vidya-stop svg { width: 18px; height: 18px; stroke-width: 1.5; }
.vidya-mute:hover,
.vidya-stop:hover { background: rgba(6, 21, 44, .08); }
.vidya-mute .icon-off { display: none; }
.vidya-mute.is-muted { background: var(--card-ink); color: var(--mustard-200); }
.vidya-mute.is-muted .icon-on { display: none; }
.vidya-mute.is-muted .icon-off { display: block; }
.vidya-stop { border-color: transparent; background: rgba(6, 21, 44, .1); }
.vidya-form { display: flex; gap: .5rem; margin-top: .6rem; }
.vidya-input {
  flex: 1;
  min-width: 0;
  min-height: 48px;
  padding: .75rem 1.1rem;
  border: 1px solid rgba(6, 21, 44, .28);
  border-radius: var(--r-pill);
  background: #fffcf5;
  color: var(--card-ink);
  font: 400 1rem/1.2 var(--font-body);
  transition: border-color var(--t-fast) var(--ease);
}
.vidya-input::placeholder { color: #4d5b70; }
.vidya-input:focus { border-color: var(--card-ink); }
.vidya-send {
  min-height: 48px;
  padding: .75rem 1.25rem;
  border: 0;
  border-radius: var(--r-pill);
  background: var(--card-ink);
  color: var(--ivory);
  font: 600 .8rem/1 var(--font-body);
  letter-spacing: .12em;
  text-transform: uppercase;
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease);
}
.vidya-send:hover { background: var(--card-ink-3); }

/* Audience toggle: show only the matching variant once JS has run */
.js[data-audience="attended"] [data-for="missed"],
.js[data-audience="missed"] [data-for="attended"] { display: none !important; }
.no-js .audience, .no-js .filters { display: none; }

/* ---------------------------------------------------------------- sections */
.section {
  padding-block: var(--section-pad);
  background: var(--surface);
  color: var(--fg);
  scroll-margin-top: var(--rail-h);
}
.section-paper { --surface: var(--paper); }
.section-clay { --surface: var(--clay-50); }
.section-navy { background: var(--navy-900); }

.section-head {
  display: flex;
  flex-direction: column;
  align-items: center;
  margin-bottom: clamp(44px, 6vw, 80px);
  text-align: center;
}
.eyebrow {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  font-size: .78rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .22em;
  text-transform: uppercase;
  color: var(--accent-text);
}
/* A fine vine on either side instead of a ruled line */
.eyebrow::before,
.eyebrow::after {
  content: "";
  flex: 0 1 auto;
  width: clamp(40px, 14vw, 220px);
  height: 14px;
  background: currentColor;
  opacity: .5;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='14' viewBox='0 0 140 14'%3E%3Cpath d='M0 7 C 23 0, 47 0, 70 7 C 93 14, 117 14, 140 7' fill='none' stroke='black' stroke-width='1'/%3E%3C/svg%3E") repeat-x left center / 140px 14px;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='14' viewBox='0 0 140 14'%3E%3Cpath d='M0 7 C 23 0, 47 0, 70 7 C 93 14, 117 14, 140 7' fill='none' stroke='black' stroke-width='1'/%3E%3C/svg%3E") repeat-x left center / 140px 14px;
}
.section-num {
  display: inline-grid;
  place-items: center;
  flex: none;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid currentColor;
  border-radius: 50%;
  font-size: .72rem;
  letter-spacing: .04em;
  font-variant-numeric: tabular-nums;
}
.section-title {
  margin-top: 1.5rem;
  max-width: 22ch;
  font: 600 clamp(2.5rem, 5.4vw, 4.75rem)/1.04 var(--font-display);
  letter-spacing: -.015em;
  color: var(--fg);
  text-wrap: balance;
}
.section-dek {
  margin-top: 1.4rem;
  max-width: 62ch;
  font: 400 clamp(1.08rem, 1.3vw, 1.22rem)/1.65 var(--font-body);
  color: var(--fg-muted);
}

.subhead {
  text-align: center;
  font-size: .86rem;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--accent-text);
}
.subhead-source { text-transform: none; letter-spacing: .02em; font-weight: 500; color: var(--fg-muted); }
.subhead-source a { color: inherit; text-underline-offset: 3px; }
.subhead-rule { margin-top: clamp(56px, 7vw, 96px); padding-top: 1.75rem; border-top: 1px solid var(--rule); }

/* Clip citations */
.cite {
  display: inline-block;
  padding: .12em .45em;
  border-radius: var(--r-pill);
  font: 600 .7em/1 var(--font-body);
  letter-spacing: .03em;
  white-space: nowrap;
  vertical-align: .1em;
  color: var(--accent-text);
  background: rgba(216, 182, 95, .14);
  text-decoration: none;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.cite:hover { background: var(--terracotta-deep); color: var(--white); }

/* Name lines: the title on its own line above the name, everywhere a person is named */
.name-role {
  display: block;
  margin-bottom: .25rem;
  font: 600 .72rem/1.35 var(--font-body);
  letter-spacing: .1em;
  text-transform: uppercase;
  color: var(--accent-text);
}

/* Photographs and captions */
.photo img { width: 100%; border-radius: var(--r-card); background: var(--clay-50); }
.photo figcaption { margin-top: .8rem; font: italic 400 .98rem/1.5 var(--font-display); color: var(--fg-muted); }
.photo-credit {
  margin-top: 1.4rem;
  font: 600 .66rem/1.3 var(--font-body);
  letter-spacing: .16em;
  text-transform: uppercase;
  color: var(--fg-muted);
}

/* --------------------------------------------------------------- 02 recap */
.recap-grid {
  display: grid;
  grid-template-columns: clamp(360px, 30vw, 560px) minmax(0, 1fr);   /* the Chief Guest on the left */
  gap: clamp(40px, 6vw, 104px);
  align-items: start;
}
.recap-intro > p { max-width: 64ch; font-size: 1.15rem; line-height: 1.78; color: var(--fg-2); }
.recap-intro > p + p { margin-top: 1.1rem; }
.recap-copy .subhead { margin-top: 3rem; }
.dropcap::first-letter {
  float: left;
  margin: .06em .12em 0 0;
  font: 600 4.4em/.8 var(--font-display);
  color: var(--terracotta);
}

.glance {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0 2.5rem;
  margin-top: 2.5rem;
  padding: .6rem clamp(20px, 2.4vw, 32px);
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-md);
}
.glance > div { padding: 1rem 0; border-bottom: 1px solid var(--stone); }
.glance > div:nth-last-child(-n+2) { border-bottom: 0; }
.glance dt { font: 600 .68rem/1.3 var(--font-body); letter-spacing: .18em; text-transform: uppercase; color: var(--gold-ink); }
.glance dd { margin-top: .35rem; font-size: 1rem; line-height: 1.5; color: var(--ink); }

/* The honored leaders: (photo,) company, title, name. Each card spans four shared rows, so names line up. */
.honorees { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: auto; column-gap: 16px; row-gap: 0; margin-top: 1.1rem; }
.honorees li {
  display: grid;
  grid-row: span 4;
  grid-template-rows: subgrid;
  align-content: start;
  margin-bottom: 16px;
  padding: 1.3rem 1.3rem 1.4rem;
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-sm);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.honorees li:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.honorees:not(.has-photos) li { grid-row: span 3; }
/* A square portrait at the top of the card, the same size in every card (the sources are 320-400px) */
.honoree-photo { display: block; width: clamp(120px, 12vw, 200px); height: auto; aspect-ratio: 1; margin-bottom: 1.1rem; border-radius: var(--r-md); object-fit: cover; background: var(--clay-50); box-shadow: var(--shadow-sm); }
.honoree-org { display: block; font: 600 .72rem/1.35 var(--font-body); letter-spacing: .1em; text-transform: uppercase; color: var(--accent-text); }
.honorees .name-role { margin: .35rem 0 .35rem; font: italic 400 1.02rem/1.35 var(--font-display); letter-spacing: 0; text-transform: none; color: var(--ink-muted); }
.honoree-name { display: block; align-self: end; font: 600 1.3rem/1.2 var(--font-display); color: var(--ink); }

.panel-list { display: flex; flex-wrap: wrap; justify-content: center; gap: .55rem; margin-top: 1.1rem; }
.panel-list a {
  display: inline-flex;
  align-items: center;
  min-height: 44px;
  padding: .5rem 1.1rem;
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-pill);
  background: var(--white);
  font: 500 .95rem/1.2 var(--font-body);
  color: var(--ink);
  text-decoration: none;
  transition: background-color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.panel-list a:hover { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.recap-source { margin-top: 1.75rem; font-size: .9rem; line-height: 1.55; color: var(--fg-muted); }

/* The Chief Guest: a portrait on a white card that stays in view beside the recap */
.chief-guest {
  position: sticky;
  top: calc(var(--rail-h) + 28px);
  padding: clamp(18px, 2vw, 26px);
  border-radius: var(--r-lg);
  background: var(--white);
  box-shadow: var(--shadow-xl);
}
.chief-photo { overflow: hidden; border-radius: var(--r-md); background: var(--clay-50); }
.chief-photo img {
  display: block;
  width: 100%;
  aspect-ratio: 1 / 1;
  object-fit: cover;
  object-position: 50% 12%;
  transition: transform var(--t-slower) var(--ease);
}
.chief-guest:hover .chief-photo img { transform: scale(1.05); }
.chief-body { padding: clamp(18px, 2vw, 26px) clamp(6px, 1vw, 12px) clamp(6px, 1vw, 10px); }
.chief-kicker { font: 600 .72rem/1.3 var(--font-body); letter-spacing: .2em; text-transform: uppercase; color: var(--terracotta-deep); }
.chief-name { margin-top: .7rem; font: 600 clamp(1.7rem, 2.3vw, 2.2rem)/1.12 var(--font-display); color: var(--ink); text-wrap: balance; }
.chief-name .name-role { margin-bottom: .3rem; font: italic 400 1.15rem/1.3 var(--font-display); letter-spacing: 0; text-transform: none; color: var(--ink-muted); }
.chief-text { margin-top: .9rem; font-size: 1rem; line-height: 1.65; color: var(--ink-2); }
.chief-quote { margin-top: 1.25rem; padding-left: 1rem; border-left: 1px solid var(--gold); }
.chief-quote p { font: italic 400 1.28rem/1.42 var(--font-display); color: var(--ink); }
.chief-quote footer,
.amb-quote footer,
.insight-quote footer { margin-top: .5rem; font: 600 .66rem/1.35 var(--font-body); letter-spacing: .14em; text-transform: uppercase; color: var(--fg-muted); }
.chief-watch { margin-top: 1.5rem; }
.chief-dur,
.amb-dur { margin-left: .5rem; padding-left: .6rem; border-left: 1px solid currentColor; font-variant-numeric: tabular-nums; opacity: .8; }

/* More from the day: collapsible leaves */
.story-tools { display: flex; justify-content: flex-end; margin-bottom: .75rem; }
.story-toggle {
  padding: .5rem 0;
  border: 0;
  background: none;
  font-size: .72rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--accent-text);
  text-decoration: underline;
  text-decoration-color: var(--gold);
  text-underline-offset: 6px;
  cursor: pointer;
  transition: color var(--t-fast) var(--ease);
}
.story-toggle:hover { color: var(--terracotta-deep); }
.story { display: grid; gap: 14px; }
.story-part {
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--t) var(--ease), transform var(--t) var(--ease);
}
.story-part:hover { box-shadow: var(--shadow-md); }
.story-part > summary {
  display: grid;
  grid-template-columns: 2.75rem minmax(0, 1fr) 2.5rem;
  align-items: center;
  gap: 0 1.1rem;
  padding: 1.35rem clamp(18px, 2vw, 30px);
  list-style: none;
  cursor: pointer;
  border-radius: var(--r-card);
}
.story-part > summary::-webkit-details-marker { display: none; }
/* A pale circle with a thin plus that turns into a cross when open */
.story-part > summary::after {
  content: "";
  justify-self: end;
  width: 2.25rem;
  height: 2.25rem;
  border-radius: 50%;
  background:
    linear-gradient(var(--ink), var(--ink)) center / 12px 1.5px no-repeat,
    linear-gradient(var(--ink), var(--ink)) center / 1.5px 12px no-repeat,
    var(--clay-50);
  transition: transform var(--t) var(--ease), background-color var(--t-fast) var(--ease);
}
.story-part[open] > summary::after { transform: rotate(135deg); }
.story-part > summary:focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
.story-num {
  display: inline-grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  border: 1px solid var(--gold);
  border-radius: 50%;
  font: 600 .72rem/1 var(--font-body);
  letter-spacing: .06em;
  color: var(--gold-ink);
}
.story-head { display: flex; flex-direction: column; gap: .35rem; min-width: 0; }
.story-head h3 {
  margin: 0;
  font: 600 clamp(1.35rem, 2vw, 1.75rem)/1.2 var(--font-display);
  color: var(--ink);
  transition: color var(--t-fast) var(--ease);
}
.story-part > summary:hover h3 { color: var(--terracotta-deep); }
.story-teaser { font: 400 1rem/1.5 var(--font-body); color: var(--fg-muted); }
.story-part[open] .story-teaser { display: none; }
.story-body {
  display: grid;
  gap: clamp(24px, 3vw, 48px);
  padding: 0 clamp(18px, 2vw, 30px) 2rem calc(clamp(18px, 2vw, 30px) + 3.85rem);
  animation: bloom var(--t) var(--ease) backwards;
}
.story-context { margin-top: 14px; background: var(--clay-200); }
.story-context > summary::after { background-color: rgba(249, 248, 244, .7); }
.story-context .story-num { border-color: var(--ink-muted); color: var(--ink); }
.story-context .story-teaser { color: var(--ink-2); }

.prose p { max-width: 68ch; font-size: 1.1rem; line-height: 1.78; color: var(--fg-2); }
.prose p + p { margin-top: 1.1rem; }
.prose a:not(.cite) { color: var(--fg); text-decoration-color: var(--gold); text-underline-offset: 4px; }
.name-list { margin: .9rem 0 1.2rem; }
.name-list li { padding: .75rem 0; border-top: 1px solid var(--stone); font: 500 1.08rem/1.45 var(--font-body); color: var(--ink); }
.name-list li:last-child { border-bottom: 1px solid var(--stone); }

.callout {
  padding: clamp(20px, 2.4vw, 32px);
  border-radius: var(--r-card);
  background: rgba(249, 248, 244, .7);
}
.callout p { font-size: 1rem; line-height: 1.65; color: var(--ink-2); }
.callout p + p { margin-top: .85rem; }
.callout a { color: var(--ink); text-decoration-color: var(--terracotta); text-underline-offset: 4px; }
.story-context .callout.context-2025 {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(0, .75fr);
  gap: 2rem;
  align-items: center;
}
.context-link { font: 600 .76rem/1.3 var(--font-body); letter-spacing: .16em; text-transform: uppercase; }
.context-thumb { display: block; border-radius: var(--r-card); }
.context-thumb img {
  display: block;
  width: 100%;
  height: auto;
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-md);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.context-thumb:hover img { transform: translateY(-4px); box-shadow: var(--shadow-xl); }

/* --------------------------------------------------------- 03 ambassadors */
.amb-grid {
  --amb-cols: 1;
  --amb-gap: 28px;
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--amb-gap);
}
.amb {
  flex: 0 0 calc((100% - (var(--amb-cols) - 1) * var(--amb-gap)) / var(--amb-cols));
  min-width: 0;
  border: 1px solid rgba(216, 182, 95, .16);
  display: flex;
  flex-direction: column;
  padding: 14px;
  border-radius: var(--r-lg);
  background: var(--card);
  box-shadow: 0 25px 50px -20px rgba(0, 0, 0, .35);
  scroll-margin-top: calc(var(--rail-h) + 24px);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.amb:hover { transform: translateY(-6px); box-shadow: 0 34px 60px -22px rgba(0, 0, 0, .45); }
.amb-media {
  position: relative;
  aspect-ratio: 4 / 3;
  border-radius: var(--r-md);
  background: radial-gradient(circle at 50% 38%, var(--navy-700), var(--navy-900) 76%);
  overflow: hidden;
}
.amb-photo {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 28%;
  transition: transform var(--t-slower) var(--ease);
}
.amb:hover .amb-photo { transform: scale(1.05); }
.amb-flag {
  position: absolute;
  left: 18px;
  bottom: 18px;
  width: 60px;
  height: auto;
  border-radius: 6px;
  box-shadow: 0 0 0 3px var(--paper), 0 10px 20px rgba(0, 0, 0, .3);
}
.amb-flag-only .amb-media { display: grid; place-items: center; }
.amb-flag-only .amb-flag { position: static; width: 52%; border-radius: 10px; box-shadow: 0 0 0 4px var(--paper), 0 18px 40px rgba(0, 0, 0, .4); }
.amb-body { display: flex; flex-direction: column; flex: 1; padding: 20px 12px 10px; }
.amb-country { font: 600 1.9rem/1.1 var(--font-display); color: var(--paper); }
.amb-name { margin: .45rem 0 1.25rem; font: 600 1.05rem/1.4 var(--font-body); color: var(--paper); }
.amb-quote { margin-bottom: 1.25rem; padding-left: 1rem; border-left: 1px solid var(--gold); }
.amb-quote p { font: italic 400 1.2rem/1.42 var(--font-display); color: var(--paper); }
.amb-note { margin-bottom: 1.25rem; font-size: .95rem; line-height: 1.5; color: var(--fg-2); }
.amb-watch { margin-top: auto; align-self: flex-start; }
/* A watch button never runs past its card: where the card is narrow (about 1100-1300px screens), the label wraps */
.chief-watch,
.amb-watch { max-width: 100%; white-space: normal; text-align: center; }
/* ...onto two lines at most: the Chief Guest's button fills a narrow card, and the narrowest ambassador cards say just "Watch" */
.chief-body,
.amb { container-type: inline-size; }
@container (max-width: 400px) {
  .chief-watch { width: 100%; padding-inline: 1rem; letter-spacing: .12em; }
}
@container (max-width: 240px) {
  .amb-watch .watch-more { display: none; }
}

.amb-extra {
  display: grid;
  gap: clamp(64px, 7vw, 104px);
  margin-top: clamp(72px, 9vw, 120px);
  padding-top: clamp(40px, 4vw, 56px);
  border-top: 1px solid var(--rule);
}
/* A heading for a block inside a section: centred, serif, larger than a label */
.block-title {
  text-align: center;
  font: 600 clamp(1.7rem, 2.6vw, 2.5rem)/1.15 var(--font-display);
  color: var(--fg);
  text-wrap: balance;
}
.former-card {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr);
  max-width: 1320px;
  margin: 1.8rem auto 0;
  border: 1px solid rgba(216, 182, 95, .16);
  border-radius: var(--r-lg);
  background: var(--card);
  box-shadow: 0 25px 50px -20px rgba(0, 0, 0, .35);
  overflow: hidden;
}
.former-media { position: relative; display: block; min-height: 100%; background: var(--navy-900); }
.former-media img { display: block; width: 100%; height: 100%; aspect-ratio: 16 / 9; object-fit: cover; transition: transform var(--t-slower) var(--ease); }
.former-media:hover img { transform: scale(1.04); }
.former-play {
  position: absolute;
  left: 50%;
  top: 50%;
  display: grid;
  place-items: center;
  width: 72px;
  height: 72px;
  margin: -36px 0 0 -36px;
  border-radius: 50%;
  background: rgba(249, 248, 244, .9);
  color: var(--ink);
  box-shadow: var(--shadow-lg);
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), transform var(--t) var(--ease);
}
.former-play svg { width: 24px; height: 24px; margin-left: 3px; }
.former-media:hover .former-play,
.former-media:focus-visible .former-play { background: var(--mustard-400); color: var(--navy-900); transform: scale(1.06); }
.former-media .clip-duration { z-index: 1; }
.former-body { display: flex; flex-direction: column; gap: 1.1rem; padding: clamp(24px, 2.8vw, 40px); }
.former-kicker { font: 600 .78rem/1.3 var(--font-body); letter-spacing: .18em; text-transform: uppercase; color: var(--accent-text); }
.former-list { display: grid; gap: 1rem; }
.former-list li { padding-bottom: 1rem; border-bottom: 1px solid var(--rule); }
.former-list li:last-child { padding-bottom: 0; border-bottom: 0; }
.former-name { display: block; font: 600 1.45rem/1.2 var(--font-display); color: var(--paper); }
.former-role { display: block; margin-top: .3rem; font-size: 1rem; line-height: 1.5; color: var(--fg-2); }
.former-source { font-size: .92rem; line-height: 1.55; color: var(--fg-muted); }
.former-watch { align-self: flex-start; margin-top: auto; }
.embassies-note { max-width: 62ch; margin: .9rem auto 0; font: italic 400 clamp(1.15rem, 1.5vw, 1.35rem)/1.5 var(--font-display); color: var(--fg-2); text-align: center; }
.flag-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
}
.flag-card {
  border: 1px solid rgba(216, 182, 95, .16);
  border-radius: var(--r-md);
  background: var(--card);
  box-shadow: 0 18px 36px -22px rgba(0, 0, 0, .55);
  transition: transform var(--t) var(--ease), border-color var(--t-fast) var(--ease);
}
.flag-card:hover { transform: translateY(-4px); border-color: rgba(216, 182, 95, .45); }
.flag-grid { --flag-cols: 3; margin-top: 2rem; }
.flag-card {
  flex: 0 0 calc((100% - (var(--flag-cols) - 1) * 16px) / var(--flag-cols));
  min-width: 0;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .75rem;
  padding: 14px 12px 16px;
  text-align: center;
}
.flag-img {
  width: 100%;
  aspect-ratio: 3 / 2;
  object-fit: cover;
  border-radius: 8px;
  background: var(--white);
  box-shadow: 0 0 0 1px rgba(255, 255, 255, .5);
}
.flag-name { font: 600 .72rem/1.3 var(--font-body); letter-spacing: .12em; text-transform: uppercase; color: var(--ivory); }
/* 24 flags, A to Z: 3, 4, 6, 8 and 12 across all make full rows */
@media (min-width: 600px) { .flag-grid { --flag-cols: 4; } }
@media (min-width: 820px) { .flag-grid { --flag-cols: 6; } }
@media (min-width: 1100px) { .flag-grid { --flag-cols: 8; } }
@media (min-width: 1600px) { .flag-grid { --flag-cols: 12; } }
/* The country specially invited: on its own under the grid, the same size as the flags above, edged in gold */
.flag-special { margin-top: clamp(40px, 4.5vw, 64px); }
.flag-special .eyebrow { font: italic 500 clamp(1.4rem, 2vw, 1.85rem)/1.2 var(--font-display); letter-spacing: 0; text-transform: none; }
.flag-special .flag-grid { margin-top: 1.4rem; }
.flag-special .flag-card { border-color: rgba(216, 182, 95, .5); }

/* ---------------------------------------------------------- 04 photo gallery */
.slides-stage { position: relative; max-width: calc((100svh - 170px) * 1.5); margin-inline: auto; }
.slides-track {
  display: flex;
  overflow-x: auto;
  scroll-snap-type: x mandatory;
  scroll-behavior: smooth;
  scrollbar-width: none;
  border-radius: var(--r-lg);
}
.slides-track::-webkit-scrollbar { display: none; }
.slides-track:focus-visible { outline: 2px solid var(--focus); outline-offset: 4px; }
.slide { flex: 0 0 100%; min-width: 0; scroll-snap-align: start; }
.slide img {
  width: 100%;
  aspect-ratio: 3 / 2;           /* the photos' own shape, so the organizer's DCNY Summit badge stays whole */
  object-fit: cover;
  object-position: 70% 30%;      /* for the few off-ratio photos: badges sit top right; data/photos.json can set a focus */
  border-radius: var(--r-lg);
  background: var(--clay-50);
}
.slide figcaption {
  margin-top: 1.1rem;
  padding-inline: 1rem;
  font: italic 400 1.15rem/1.5 var(--font-display);
  color: var(--ink-2);
  text-align: center;
}
.slides-nav {
  position: absolute;
  top: calc(50% - 2.5rem);
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  border: 1px solid var(--stone);
  border-radius: 50%;
  background: rgba(249, 248, 244, .9);
  color: var(--ink);
  box-shadow: var(--shadow-lg);
  cursor: pointer;
  transform: translateY(-50%);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), opacity var(--t-fast) var(--ease);
}
.slides-nav svg { stroke-width: 1.5; }
.slides-nav:hover { background: var(--terracotta-deep); border-color: var(--terracotta-deep); color: var(--white); }
.slides-nav:disabled { opacity: .35; cursor: default; }
.slides-nav:focus-visible { outline: 2px solid var(--ink); outline-offset: 3px; }
.slides-prev { left: 18px; }
.slides-next { right: 18px; }
.no-js .slides-nav { display: none; }
.slides-bar { display: flex; align-items: center; gap: 1.25rem; max-width: calc((100svh - 170px) * 1.5); margin: 1.5rem auto 0; }
.slides-count {
  flex: none;
  font: 600 .82rem/1 var(--font-body);
  letter-spacing: .14em;
  color: var(--gold-ink);
  font-variant-numeric: tabular-nums;
}
.slides-thumbs { display: flex; gap: .6rem; overflow-x: auto; padding: 5px; scrollbar-width: thin; }
.slides-thumbs li { flex: none; }
.slides-thumb {
  flex: none;
  padding: 0;
  border: 0;
  border-radius: var(--r-sm);
  background: none;
  cursor: pointer;
  opacity: .55;
  outline: 2px solid transparent;
  outline-offset: 2px;
  transition: opacity var(--t-fast) var(--ease), outline-color var(--t-fast) var(--ease);
}
.slides-thumb img { display: block; width: 104px; height: 66px; object-fit: cover; border-radius: var(--r-sm); }
.slides-thumb:hover { opacity: .9; }
.slides-thumb[aria-current="true"] { opacity: 1; outline-color: var(--gold); }
.slides-thumb:focus-visible { outline-color: var(--ink); }
#photos .photo-credit { margin-top: 1.2rem; }

/* ---------------------------------------------------------- 05 video gallery */
.gallery-bar { display: flex; flex-wrap: wrap; align-items: flex-start; justify-content: space-between; gap: 1rem 2rem; }
.gallery-bar .filters { margin-bottom: 2rem; }
.gallery-folder { flex: none; }

.filters { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1.25rem; margin-bottom: 2rem; }
.chips { display: flex; flex-wrap: wrap; gap: .5rem; }
.chip {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  min-height: 44px;
  padding: .5rem 1.05rem;
  border: 1px solid var(--rule-strong);
  border-radius: var(--r-pill);
  background: var(--white);
  color: var(--ink);
  font-size: .9rem;
  font-weight: 500;
  line-height: 1;
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.chip:hover { border-color: var(--ink); }
.chip-count { font-weight: 600; font-variant-numeric: tabular-nums; color: var(--gold-ink); }
.chip[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.chip[aria-pressed="true"] .chip-count { color: var(--mustard-300); }
.filter-status { font-size: .9rem; color: var(--fg-muted); }

.clip-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
  gap: clamp(20px, 2vw, 32px);
}
.clip {
  display: flex;
  flex-direction: column;
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  scroll-margin-top: calc(var(--rail-h) + 24px);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.clip:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.clip.is-featured { box-shadow: 0 0 0 1px var(--gold), var(--shadow-md); }
.clip:target,
.clip.is-target { box-shadow: 0 0 0 2px var(--terracotta), var(--shadow-lg); }

.clip-media { position: relative; aspect-ratio: 16 / 9; background: var(--ink); overflow: hidden; }
.clip-poster {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  gap: .3rem;
  padding: 16px 18px;
  text-align: left;
  background: radial-gradient(120% 100% at 50% 0%, var(--navy-700), var(--navy-900) 70%);
}
.clip-poster-num { font: italic 600 2.8rem/1 var(--font-display); color: var(--mustard-300); }
.clip-poster-name { font: 600 .68rem/1.3 var(--font-body); letter-spacing: .16em; text-transform: uppercase; color: var(--paper); }
.clip-frame {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform var(--t-slower) var(--ease), opacity var(--t-fast) var(--ease);
}
.clip:hover .clip-frame { transform: scale(1.05); }
.clip-media.is-missing .clip-frame { display: none; }
.clip-media::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(0deg, rgba(4, 15, 33, .55) 0%, rgba(4, 15, 33, 0) 45%);
  pointer-events: none;
}
.clip-play {
  position: absolute;
  z-index: 2;
  left: 50%;
  top: 50%;
  display: grid;
  place-items: center;
  width: 62px;
  height: 62px;
  margin: -31px 0 0 -31px;
  border-radius: 50%;
  background: rgba(249, 248, 244, .88);
  color: var(--ink);
  text-decoration: none;
  box-shadow: var(--shadow-lg);
  backdrop-filter: blur(6px);
  -webkit-backdrop-filter: blur(6px);
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), transform var(--t) var(--ease);
}
.clip-play svg { width: 22px; height: 22px; margin-left: 3px; }
.clip-play:hover,
.clip-play:focus-visible { background: var(--terracotta-deep); color: var(--white); transform: scale(1.08); }
.clip-feature {
  position: absolute;
  z-index: 2;
  top: 14px;
  left: 14px;
  padding: .45rem .8rem;
  border-radius: var(--r-pill);
  background: var(--terracotta-deep);
  color: var(--white);
  font: 600 .64rem/1 var(--font-body);
  letter-spacing: .16em;
  text-transform: uppercase;
}
.clip-duration {
  position: absolute;
  z-index: 2;
  right: 12px;
  bottom: 12px;
  padding: .32rem .6rem;
  border-radius: var(--r-pill);
  background: rgba(4, 15, 33, .78);
  color: var(--paper);
  font: 600 .72rem/1 var(--font-body);
  font-variant-numeric: tabular-nums;
  letter-spacing: .04em;
}

.clip-body { display: flex; flex-direction: column; flex: 1; padding: 20px 22px 20px; }
.clip-meta { display: flex; align-items: center; justify-content: space-between; gap: .75rem; }
.clip-file { font-size: .7rem; font-weight: 600; line-height: 1; letter-spacing: .16em; text-transform: uppercase; color: var(--gold-ink); }
.clip-speaker { margin-top: .7rem; font: 600 1.42rem/1.2 var(--font-display); color: var(--ink); }
.clip-speaker .name-role { margin-bottom: .35rem; }
.clip-title { margin-top: .35rem; font-size: .92rem; line-height: 1.45; color: var(--fg-muted); }
.clip-oneline {
  margin-top: 1rem;
  padding: .85rem 1rem;
  border-radius: var(--r-md);
  background: var(--clay-50);
  font: italic 400 1.05rem/1.45 var(--font-display);
  color: var(--ink);
}
.clip-oneline-label {
  display: block;
  margin-bottom: .35rem;
  font: 600 .62rem/1 var(--font-body);
  font-style: normal;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-ink);
}
.clip-quotes { margin-top: 1rem; display: grid; gap: .7rem; }
.clip-quotes li { padding-left: .95rem; border-left: 1px solid var(--gold); font: italic 400 1.08rem/1.45 var(--font-display); color: var(--ink); }
.q-time { font: 600 .66rem/1 var(--font-body); font-style: normal; letter-spacing: .08em; color: var(--gold-ink); white-space: nowrap; }
.ed { color: var(--terracotta-deep); font-style: normal; font-size: .94em; }
.tags { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: 1rem; }
.tags li {
  padding: .38rem .7rem;
  border-radius: var(--r-pill);
  background: var(--clay-50);
  font-size: .64rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--ink-2);
}
/* A flexible spacer (order 5) pushes the actions and transcript (order 6) to the card's foot,
   so action bars line up across a row. */
.clip-body::after { content: ""; flex: 1 0 0; order: 5; }
.clip-actions,
.transcript { order: 6; }
/* Play on the left; "Open in Drive" and "Copy link" stacked on the right, so the bar never wraps
   awkwardly however narrow the column. */
.clip-actions {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  align-items: center;
  column-gap: 1rem;
  margin-top: 1.2rem;
  padding-top: 1.05rem;
  border-top: 1px solid var(--stone);
}
.clip-actions > .btn { grid-row: 1 / span 2; }
.clip-actions > .action-link { justify-self: end; padding-block: .4rem; }
.action-link {
  background: none;
  border: 0;
  padding: .55rem 0;
  font-size: .7rem;
  font-weight: 600;
  line-height: 1;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold-ink);
  text-decoration: none;
  cursor: pointer;
  transition: color var(--t-fast) var(--ease);
}
.action-link:hover { color: var(--terracotta-deep); text-decoration: underline; text-underline-offset: 5px; }

.transcript { margin-top: .9rem; }
.transcript summary {
  display: flex;
  align-items: center;
  gap: .55rem;
  padding: .55rem 0;
  list-style: none;
  cursor: pointer;
  font: 600 .7rem/1 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold-ink);
}
.transcript summary::-webkit-details-marker { display: none; }
.transcript summary::before {
  content: "";
  width: 7px;
  height: 7px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(-45deg);
  transition: transform var(--t) var(--ease);
}
.transcript[open] summary::before { transform: rotate(45deg); }
.transcript summary span { font-weight: 500; letter-spacing: .02em; text-transform: none; color: var(--fg-muted); }
.transcript-body {
  max-height: 340px;
  overflow-y: auto;
  margin-top: .4rem;
  padding: 16px 18px;
  border-radius: var(--r-md);
  background: var(--clay-50);
  scrollbar-color: var(--gold) transparent;
}
.transcript-body p { font-size: .92rem; line-height: 1.68; color: var(--ink-2); }
.transcript-body p + p { margin-top: .75rem; }
.ts {
  display: inline-block;
  min-width: 2.6rem;
  margin-right: .35rem;
  font: 600 .68rem/1 var(--font-body);
  font-variant-numeric: tabular-nums;
  color: var(--gold-ink);
}
.gallery-note { margin-top: 2.25rem; max-width: 84ch; font-size: .92rem; line-height: 1.6; color: var(--fg-muted); }

/* ------------------------------------------------------------ 06 best wishes */
.wishes-tally { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center; gap: .4rem 1rem; margin-bottom: 2rem; text-align: center; }
.wishes-num { font: 600 clamp(3rem, 5vw, 4.5rem)/1 var(--font-display); color: var(--terracotta-deep); }
.wishes-tally-text { font: italic 400 clamp(1.15rem, 1.6vw, 1.4rem)/1.4 var(--font-display); color: var(--ink-2); }
.portrait-panels { display: grid; grid-template-columns: minmax(0, 1fr); gap: clamp(20px, 2.4vw, 36px); }
.portrait-panel {
  padding: clamp(22px, 2.6vw, 36px);
  border-radius: var(--r-lg);
  background: var(--white);
  box-shadow: var(--shadow-lg);
}
.portrait-panel-title {
  margin-bottom: 1.6rem;
  text-align: center;
  font: 600 .86rem/1.3 var(--font-body);
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--gold-ink);
}
.portrait-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px 18px; }
.portrait-card { display: flex; flex-direction: column; align-items: center; text-align: center; }
.portrait-img {
  width: min(150px, 86%);
  height: auto;
  aspect-ratio: 1;
  margin-bottom: 1rem;
  border-radius: 50%;
  object-fit: cover;
  box-shadow: 0 0 0 4px var(--white), 0 0 0 5px var(--stone), var(--shadow-md);
  transition: transform var(--t) var(--ease);
}
.portrait-card:hover .portrait-img { transform: translateY(-4px); }
.portrait-card .name-role { margin-bottom: .3rem; }
.portrait-name { font: 600 1.02rem/1.35 var(--font-body); color: var(--ink); }
.wish-groups {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 24px;
  margin-top: clamp(48px, 6vw, 72px);
}
.wish-group {
  padding: clamp(20px, 2.2vw, 30px);
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-sm);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.wish-group:hover { transform: translateY(-4px); box-shadow: var(--shadow-lg); }
.wish-head { display: flex; flex-wrap: wrap; align-items: center; gap: .35rem .6rem; padding-bottom: .9rem; border-bottom: 1px solid var(--stone); }
.wish-body { font: 600 1.25rem/1.2 var(--font-display); color: var(--ink); }
.wish-party {
  padding: .3rem .6rem;
  border-radius: var(--r-pill);
  background: var(--clay-50);
  font: 600 .62rem/1 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--gold-ink);
}
.wish-count {
  display: inline-grid;
  place-items: center;
  margin-left: auto;
  width: 2rem;
  height: 2rem;
  border: 1px solid var(--gold);
  border-radius: 50%;
  font: 600 .78rem/1 var(--font-body);
  font-variant-numeric: tabular-nums;
  color: var(--gold-ink);
}
.wish-list li { display: flex; flex-direction: column; padding: .7rem 0; border-bottom: 1px solid var(--stone); }
.wish-list li:last-child { border-bottom: 0; padding-bottom: 0; }
.wish-list .name-role { margin-bottom: .1rem; font-size: .64rem; letter-spacing: .12em; }
.wish-name { font: 600 1.05rem/1.35 var(--font-body); color: var(--ink); }
.wish-meta { margin-top: .1rem; font: italic 400 .92rem/1.4 var(--font-display); color: var(--terracotta-deep); }
/* The House, Cabinet and Governor cards sit two by two; a wide card sets its names in columns,
   so the cards side by side stay the same height. The last row drops its rule. */
.wish-group { container-type: inline-size; }
@container (min-width: 520px) and (max-width: 779.98px) {
  .wish-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1.5rem; }
  .wish-list li:nth-child(2n+1):nth-last-child(-n+2),
  .wish-list li:nth-child(2n+1):nth-last-child(-n+2) ~ li { border-bottom: 0; padding-bottom: 0; }
}
@container (min-width: 780px) {
  .wish-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: 1.5rem; }
  .wish-list li:nth-child(3n+1):nth-last-child(-n+3),
  .wish-list li:nth-child(3n+1):nth-last-child(-n+3) ~ li { border-bottom: 0; padding-bottom: 0; }
}
.wishes-note { margin-top: 1.75rem; font-size: .9rem; color: var(--fg-muted); }

/* ------------------------------------------------------------ 07 takeaways */
.insights { display: grid; grid-template-columns: minmax(0, 1fr); gap: 24px; }
.insight {
  padding: clamp(24px, 2.6vw, 36px);
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-md);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.insight:hover { transform: translateY(-6px); box-shadow: var(--shadow-xl); }
.insight-num {
  display: inline-grid;
  place-items: center;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background: rgba(216, 182, 95, .18);
  font: 600 .76rem/1 var(--font-body);
  letter-spacing: .04em;
  color: var(--gold-ink);
}
.insight-title { margin: 1.1rem 0 1rem; font: 600 clamp(1.45rem, 1.9vw, 1.8rem)/1.18 var(--font-display); color: var(--ink); text-wrap: balance; }
.insight-quote { margin-bottom: 1rem; padding-left: 1rem; border-left: 1px solid var(--gold); }
.insight-quote p { font: italic 400 1.22rem/1.42 var(--font-display); color: var(--ink); }
.insight-quote footer .name-role { margin: 0; font: inherit; letter-spacing: inherit; color: inherit; }
.insight-body { font-size: 1rem; line-height: 1.66; color: var(--fg-2); }

.host-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) clamp(340px, 30vw, 560px);
  gap: clamp(40px, 6vw, 104px);
  align-items: stretch;          /* the goals column runs as tall as the banner column; photos fill the rest */
}
.host-copy { display: flex; flex-direction: column; }
.host-copy > .photo-mosaic { flex: 1 1 0; margin-top: 2rem; }
.host-banner { align-self: start; }
.goals { margin-top: 1.1rem; counter-reset: goal; }
.goals li {
  counter-increment: goal;
  display: grid;
  grid-template-columns: 3.25rem 1fr;
  align-items: baseline;
  padding: 1.25rem 0;
  border-top: 1px solid var(--stone);
  font: 600 1.3rem/1.35 var(--font-display);
  color: var(--ink);
}
.goals li:last-child { border-bottom: 1px solid var(--stone); }
.goals li::before {
  content: counter(goal, decimal-leading-zero);
  display: inline-grid;
  place-items: center;
  width: 2.3rem;
  height: 2.3rem;
  border: 1px solid var(--gold);
  border-radius: 50%;
  font: 600 .7rem/1 var(--font-body);
  letter-spacing: .04em;
  color: var(--gold-ink);
  align-self: start;
}
.goal-day { grid-column: 2; margin-top: .55rem; font: 400 1rem/1.62 var(--font-body); color: var(--fg-2); }
.goal-day-label {
  margin-right: .55rem;
  font: 600 .64rem/1 var(--font-body);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--terracotta-deep);
}
.host-banner .photo { margin-bottom: 2.25rem; }
.host-banner .photo img {
  border-radius: var(--r-card);
  box-shadow: var(--shadow-xl);
}
.banner-list {
  margin-top: 1.1rem;
  padding: .5rem 1.6rem;
  border-radius: var(--r-card);
  background: var(--ink);
  box-shadow: var(--shadow-lg);
}
.banner-list li {
  padding: 1rem 0;
  text-align: center;
  font: italic 400 1.1rem/1.35 var(--font-display);
  color: var(--paper);
}
.banner-list li + li { border-top: 1px solid rgba(216, 182, 95, .3); }

.takeaways-subhead { margin-bottom: 2rem; }
.takeaways { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 28px; align-items: start; }
.takeaway {
  position: relative;
  padding: clamp(26px, 3vw, 44px);
  border-radius: var(--r-lg);
  background: var(--white);
  box-shadow: var(--shadow-md);
  scroll-margin-top: calc(var(--rail-h) + 24px);
  transition: box-shadow var(--t) var(--ease), transform var(--t) var(--ease);
}
.takeaway-tag {
  display: none;
  position: absolute;
  top: 22px;
  right: 22px;
  padding: .45rem .8rem;
  border-radius: var(--r-pill);
  background: var(--terracotta-deep);
  color: var(--white);
  font: 600 .62rem/1 var(--font-body);
  letter-spacing: .18em;
  text-transform: uppercase;
}
.js[data-audience="attended"] .takeaway[data-col="attended"],
.js[data-audience="missed"] .takeaway[data-col="missed"] {
  order: -1;
  box-shadow: 0 0 0 1px var(--gold), var(--shadow-xl);
}
.js[data-audience="attended"] .takeaway[data-col="attended"] .takeaway-tag,
.js[data-audience="missed"] .takeaway[data-col="missed"] .takeaway-tag { display: block; }
.takeaway-title { padding-right: 6rem; font: 600 clamp(1.8rem, 2.6vw, 2.3rem)/1.12 var(--font-display); color: var(--ink); }
.takeaway-lead { margin-top: .7rem; font: italic 400 1.22rem/1.45 var(--font-display); color: var(--ink-muted); }
.takeaway h4 {
  margin: 2.1rem 0 1rem;
  padding-top: 1.35rem;
  border-top: 1px solid var(--stone);
  font: 600 .74rem/1.3 var(--font-body);
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--gold-ink);
  scroll-margin-top: calc(var(--rail-h) + 24px);
}
.takeaway p { font-size: 1rem; line-height: 1.62; color: var(--fg-2); }
.takeaway strong { color: var(--ink); font-weight: 600; }
.takeaway a:not(.btn):not(.cite):not(.wp-play):not(.wp-clip) { color: var(--terracotta-deep); text-underline-offset: 4px; }
.plain li { padding: .75rem 0; border-bottom: 1px solid var(--stone); font-size: 1rem; line-height: 1.55; color: var(--fg-2); }
.plain li:first-child { padding-top: 0; }
.fine { margin-top: .8rem; font-size: .86rem !important; color: var(--fg-muted) !important; }
.takeaway-links { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: 1.2rem; }

/* Watch path */
.watchpath { display: grid; gap: 14px; }
.wp-group { padding: 1.1rem 1.25rem .6rem; border-radius: var(--r-md); background: var(--clay-50); }
.wp-group.is-core { background: rgba(216, 182, 95, .16); }
.wp-head { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
.wp-head h5 { font: 600 .76rem/1.3 var(--font-body); letter-spacing: .16em; text-transform: uppercase; color: var(--ink); }
.wp-total { font: 600 .74rem/1 var(--font-body) !important; font-variant-numeric: tabular-nums; letter-spacing: .06em; color: var(--gold-ink) !important; white-space: nowrap; }
.wp-note { margin-top: .35rem; font: italic 400 .98rem/1.45 var(--font-display) !important; color: var(--ink-muted) !important; }
.wp-list { margin-top: .6rem; }
.wp-item {
  display: grid;
  grid-template-columns: 44px minmax(0, 1fr) auto;
  align-items: center;
  gap: 14px;
  padding: .8rem 0;
  border-top: 1px solid rgba(6, 21, 44, .1);
}
.wp-play {
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border-radius: 50%;
  border: 1px solid var(--gold);
  color: var(--ink);
  background: var(--white);
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease);
}
.wp-play svg { width: 16px; height: 16px; margin-left: 2px; }
.wp-play:hover { background: var(--ink); border-color: var(--ink); color: var(--paper); }
.wp-who { font: 600 1rem/1.35 var(--font-body) !important; color: var(--ink) !important; }
.wp-who .name-role { margin-bottom: .1rem; font-size: .62rem; }
.wp-clip {
  margin-left: .35rem;
  font: 600 .64rem/1 var(--font-body);
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gold-ink);
  text-decoration: none;
}
.wp-clip:hover { color: var(--terracotta-deep); text-decoration: underline; }
.wp-why { margin-top: .2rem; font-size: .92rem !important; line-height: 1.5 !important; color: var(--fg-muted) !important; }
.wp-dur { font: 600 .84rem/1 var(--font-body) !important; font-variant-numeric: tabular-nums; color: var(--ink) !important; }

/* --------------------------------------------------------------- 08 roadmap */
.roadmap { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; align-items: stretch; }
.road {
  padding: clamp(24px, 2.6vw, 36px);
  border-radius: var(--r-card);
  background: var(--white);
  box-shadow: var(--shadow-md);
  transition: transform var(--t) var(--ease), box-shadow var(--t) var(--ease);
}
.road:hover { transform: translateY(-6px); box-shadow: var(--shadow-xl); }
.road-unpublished { background: var(--clay-50); box-shadow: none; border: 1px dashed var(--rule-strong); }
.road-kicker {
  display: flex;
  align-items: center;
  gap: .55rem;
  font-size: .7rem;
  font-weight: 600;
  line-height: 1.3;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--ink);
}
.road-kicker::before { content: ""; width: 9px; height: 9px; border-radius: 50%; background: var(--ink); }
.road-implied .road-kicker { color: var(--terracotta-deep); }
.road-implied .road-kicker::before { background: var(--terracotta); }
.road-unpublished .road-kicker { color: var(--gold-ink); }
.road-unpublished .road-kicker::before { background: var(--gold); }
.road-title { margin: .75rem 0 1.1rem; font: 600 1.55rem/1.2 var(--font-display); color: var(--ink); }
.road li { padding: .85rem 0; border-top: 1px solid var(--stone); font-size: 1rem; line-height: 1.55; color: var(--fg-2); }
.road li strong { color: var(--ink); font-weight: 600; }
.road cite {
  display: block;
  margin-top: .35rem;
  font: 600 .64rem/1.2 var(--font-body);
  font-style: normal;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--gold-ink);
}
.road-stamp {
  display: inline-block;
  margin-top: 1.35rem;
  padding: .7rem 1rem;
  border-radius: var(--r-pill);
  background: var(--white);
  font: 600 .68rem/1.45 var(--font-body);
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--ink-muted);
}
.cta-band {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  margin-top: clamp(48px, 6vw, 80px);
  padding-top: 2.25rem;
  border-top: 1px solid var(--stone);
}

/* ---------------------------------------------------------- acknowledgments */
/* The organizer's logos as supplied, all the same height: two rows on wide screens, wrapping on narrow ones.
   Rows are spaced with item margins, not row-gap, so the zero-height row break adds no space. */
.acks { padding-block: clamp(56px, 7vw, 96px); background: var(--white); border-top: 1px solid var(--stone); }
.acks .block-title { margin-bottom: clamp(20px, 2.6vw, 40px); }
.ack-logos { --ack-h: clamp(44px, 5.2vw, 92px); --ack-gap: clamp(12px, 1.4vw, 20px); display: flex; flex-wrap: wrap; justify-content: center; column-gap: var(--ack-gap); }
.ack-logos li { flex: none; margin-block: calc(var(--ack-gap) / 2); border-radius: 10px; overflow: hidden; box-shadow: 0 0 0 1px var(--stone); }
.ack-logos img { display: block; width: auto; height: var(--ack-h); }
.ack-logos .ack-break { display: none; }
@media (min-width: 1000px) {
  .ack-logos .ack-break { display: block; flex-basis: 100%; height: 0; margin: 0; box-shadow: none; }
}

/* ------------------------------------------------------------- photo grids */
/* Gallery photos that fill the space beside a shorter column (under the goals; under the shorter takeaway
   card). Size-contained, so they never make the row taller: they take exactly the space that is left. */
.photo-mosaic {
  container-type: size;
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  grid-auto-rows: minmax(0, 1fr);
  gap: 12px;
}
.photo-mosaic img { display: block; width: 100%; height: 100%; border-radius: var(--r-md); object-fit: cover; box-shadow: var(--shadow-sm); }
.photo-mosaic .more { display: none; }
@container (min-height: 760px) { .photo-mosaic .more { display: block; } }
@container (max-height: 200px) { .photo-mosaic img { display: none; } }
@media (min-width: 1025px) {
  /* Takeaways: the long card spans two rows; the short card and the photos share the other column */
  .takeaways { grid-template-rows: auto 1fr; }
  .takeaway[data-col="attended"] { grid-column: 1; grid-row: 1; }
  .takeaway[data-col="missed"] { grid-column: 2; grid-row: 1 / span 2; }
  .takeaways > .photo-mosaic { grid-column: 1; grid-row: 2; align-self: stretch; }
  .js[data-audience="missed"] .takeaway[data-col="missed"] { grid-column: 1; }
  .js[data-audience="missed"] .takeaway[data-col="attended"],
  .js[data-audience="missed"] .takeaways > .photo-mosaic { grid-column: 2; }
}
@media (max-width: 1024px) { .photo-mosaic { display: none; } }

/* -------------------------------------------------- upcoming events (panel) */
/* "Request invites for upcoming events": two cards across the full width of the navy band,
   their rows shared (subgrid); type and padding grow with the screen */
.events .section-head { margin-bottom: clamp(36px, 4vw, 56px); }
.event-cards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(20px, 2.4vw, 40px); row-gap: 0; }
.event-card {
  display: grid;
  grid-row: span 5;
  grid-template-rows: subgrid;      /* when, title, body, points, button */
  margin-bottom: clamp(20px, 2.4vw, 32px);
  padding: clamp(26px, 3.2vw, 64px);
  border: 1px solid rgba(216, 182, 95, .3);
  border-radius: var(--r-lg);
  background: var(--card);
  box-shadow: 0 30px 60px -28px rgba(0, 0, 0, .6);
}
.event-when { font: 600 clamp(.74rem, .72vw, .9rem)/1.3 var(--font-body); letter-spacing: .18em; text-transform: uppercase; color: var(--accent-text); }
.event-title { margin-top: .8rem; font: 600 clamp(1.8rem, 2.8vw, 3.4rem)/1.1 var(--font-display); color: var(--paper); text-wrap: balance; }
.event-title em { color: var(--accent-text); }
.event-body { margin-top: 1rem; max-width: 80ch; font-size: clamp(1.08rem, 1.1vw, 1.35rem); line-height: 1.65; color: var(--fg-2); }
.event-points { display: grid; align-content: start; gap: .55rem; margin-top: 1.25rem; }
.event-points li { position: relative; padding-left: 1.6rem; font-size: clamp(1rem, 1vw, 1.2rem); line-height: 1.5; color: var(--fg); }
.event-points li::before { content: ""; position: absolute; left: 0; top: .45em; width: 9px; height: 9px; border-radius: 50% 0; background: var(--accent); }
.event-cta { justify-self: start; align-self: end; margin-top: 1.8rem; }
.events-note { margin-top: .5rem; text-align: center; font-size: 1rem; color: var(--fg-2); }
.events-note a { color: var(--accent-text); text-underline-offset: 4px; }
@media (max-width: 860px) { .event-cards { grid-template-columns: minmax(0, 1fr); } }
/* On wide screens each card sets its three points side by side, each under a gold rule, instead of
   leaving its right half empty. A media query, not a container query: a card that is a size container
   can't be a subgrid, and the two cards would stop sharing their rows. */
@media (min-width: 1800px) {
  .event-points { grid-template-columns: repeat(3, minmax(0, 1fr)); column-gap: clamp(20px, 2.2vw, 36px); margin-top: 1.8rem; }
  .event-points li { padding: 1.1rem 0 0; border-top: 1px solid rgba(216, 182, 95, .35); }
  .event-points li::before { position: static; display: block; margin-bottom: .75rem; }
}

/* ---------------------------------------------------------------- footer */
/* (the footer keeps the class .sources for its navy colours; the Sources section itself was removed) */
.sources {
  padding-block: clamp(28px, 3vw, 40px) 36px;
  background: var(--navy-900);
  color: var(--fg);
}
.sources a { color: var(--mustard-300); text-underline-offset: 4px; word-break: break-word; transition: color var(--t-fast) var(--ease); }
.sources a:hover { color: var(--paper); }
.footer-bar {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .75rem 2rem;
  font-size: .7rem;
  font-weight: 600;
  line-height: 1.4;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--mustard-300);
}
.footer-brand { color: var(--paper); }
/* The same wordmark closes the page; print keeps the words instead (the mark is white) */
.footer-logo { display: block; width: auto; height: clamp(44px, 4.2vw, 64px); }
.footer-actions { display: flex; flex-wrap: wrap; gap: 1.25rem; }
.footer-actions a,
.footer-actions .linklike { color: var(--mustard-300); text-decoration: none; letter-spacing: inherit; text-transform: inherit; font: inherit; }
.footer-actions a:hover,
.footer-actions .linklike:hover { color: var(--paper); text-decoration: underline; }

/* ---------------------------------------------------------------- player */
.player {
  width: min(1480px, calc(100vw - 32px), calc((100dvh - 190px) * 16 / 9 + 24px));
  max-height: calc(100dvh - 32px);
  padding: 0;
  border: 0;
  border-radius: var(--r-lg);
  background: var(--paper);
  color: var(--ink);
  box-shadow: 0 40px 100px -30px rgba(4, 15, 33, .6);
  overflow: auto;
}
.player::backdrop { background: rgba(4, 15, 33, .72); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }
.player[open] { animation: bloom var(--t) var(--ease) both; }
.player-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 20px 20px 16px 28px; }
.player-kicker { font-size: .7rem; font-weight: 600; line-height: 1; letter-spacing: .18em; text-transform: uppercase; color: var(--gold-ink); }
.player-title { margin-top: .5rem; font: 600 1.55rem/1.22 var(--font-display); color: var(--ink); }
.player-close {
  display: grid;
  place-items: center;
  flex: none;
  width: 48px;
  height: 48px;
  border: 1px solid var(--stone);
  border-radius: 50%;
  background: var(--white);
  color: var(--ink);
  cursor: pointer;
  transition: background-color var(--t-fast) var(--ease), color var(--t-fast) var(--ease);
}
.player-close:hover { background: var(--ink); color: var(--paper); }
.player-frame { aspect-ratio: 16 / 9; margin-inline: 12px; border-radius: var(--r-card); overflow: hidden; background: #000; }
.player-frame iframe { display: block; width: 100%; height: 100%; border: 0; }
.player-foot {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: .5rem 1rem;
  padding: 14px 28px 20px;
  font-size: .88rem;
  color: var(--fg-muted);
}
.player-foot a { font: 600 .7rem/1 var(--font-body); letter-spacing: .14em; text-transform: uppercase; color: var(--terracotta-deep); text-decoration: none; }
.player-foot a:hover { text-decoration: underline; text-underline-offset: 5px; }

.toast {
  position: fixed;
  left: 50%;
  bottom: 28px;
  z-index: 70;
  padding: .85rem 1.3rem;
  border-radius: var(--r-pill);
  background: var(--ink);
  color: var(--paper);
  box-shadow: var(--shadow-xl);
  font: 600 .76rem/1.2 var(--font-body);
  letter-spacing: .12em;
  text-transform: uppercase;
  transform: translate(-50%, 16px);
  opacity: 0;
  visibility: hidden;
  transition: transform var(--t) var(--ease), opacity var(--t) var(--ease), visibility 0s linear var(--t);
  pointer-events: none;
}
.toast.is-visible { transform: translate(-50%, 0); opacity: 1; visibility: visible; transition-delay: 0s; }

/* ------------------------------------------------------------------ motion */
@keyframes bloom {
  from { opacity: 0; transform: translate3d(0, 16px, 0); }
  to { opacity: 1; transform: none; }
}
/* Scroll reveal (js/app.js adds .reveal, then .is-in as each element comes into view). The animation
   only runs forwards from hidden, so hover lifts and the staggered offsets keep working afterwards. */
.js .reveal { opacity: 0; }
.js .reveal.is-in { opacity: 1; animation: bloom var(--t-slower) var(--ease) var(--reveal-delay, 0s) backwards; }

/* ----------------------------------------------------------- responsive */
/* Card grids: every card in a row starts on the same top line, and cards in a row share a height */
@media (min-width: 768px) {
  .amb-grid { --amb-cols: 2; }
  .insights { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 32px; }
}
@media (min-width: 1100px) {
  .amb-grid { --amb-cols: 4; }
  .insights { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 36px; }
}

@media (min-width: 600px) {
  .wish-groups { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (min-width: 1100px) {
  .portrait-panels { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 480px) {
  .portrait-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 900px) {
  .former-card { grid-template-columns: minmax(0, 1fr); }
}
/* More from the day: three leaves side by side */
@media (min-width: 1280px) {
  .story { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .story .story-body { padding-left: clamp(18px, 2vw, 30px); }
}
/* Photos: the frame on the left sized to the screen's height, every thumbnail in a panel beside it */
@media (min-width: 1280px) {
  .slides {
    display: grid;
    grid-template-columns: minmax(0, calc((100svh - 170px) * 1.5)) minmax(300px, 1fr);
    gap: 28px;
  }
  .slides-stage { max-width: none; margin: 0; }
  .slides-bar {
    contain: size;              /* the panel takes the frame's height, and scrolls inside it */
    flex-direction: column;
    align-items: stretch;
    gap: .9rem;
    max-width: none;
    margin: 0;
  }
  .slides-thumbs {
    flex: 1 1 0;
    min-height: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
    align-content: start;
    gap: 10px;
    overflow-x: hidden;
    overflow-y: auto;
  }
  .slides-thumb { width: 100%; }
  .slides-thumb img { width: 100%; height: auto; aspect-ratio: 3 / 2; }
}
@media (min-width: 1680px) {
  .recap-copy {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    column-gap: clamp(40px, 3vw, 72px);
    align-items: start;
  }
  .recap-copy > * { grid-column: 1 / -1; }
  .recap-copy > .recap-intro { grid-column: 1; grid-row: 1; }
  .recap-copy > .glance { grid-column: 2; grid-row: 1; margin-top: 0; }
}
@media (min-width: 1800px) {
  .goals { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(32px, 3vw, 64px); }
  .goals li:nth-last-child(-n+2) { border-bottom: 1px solid var(--stone); }
}
@media (min-width: 2100px) {
  .insights { grid-template-columns: repeat(6, minmax(0, 1fr)); }
}

@media (max-width: 1024px) {
  .recap-grid,
  .host-grid { grid-template-columns: minmax(0, 1fr); }
  .chief-guest { position: static; max-width: 560px; }
  .takeaways { grid-template-columns: minmax(0, 1fr); }
  .roadmap { grid-template-columns: minmax(0, 1fr); }
  .host-banner { max-width: 560px; }
}

@media (max-width: 860px) {
  .stats { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stat:nth-child(3) { padding-left: 0; border-left: 0; }
  .stat:nth-child(n+3) { margin-top: 1.25rem; border-top: 1px solid rgba(216, 182, 95, .2); }
}

@media (max-width: 680px) {
  :root { --rail-h: 56px; }
  /* The band stacks: the logo across the width, then the three marks, then the two buttons */
  .masthead-inner { flex-wrap: wrap; justify-content: center; gap: 14px 12px; padding-block: 18px 24px; }
  .brand { flex: 0 0 100%; }
  .brand-logo { width: min(100%, 320px); margin-inline: auto; }
  .masthead-emblems { --emblem-h: 58px; gap: 18px; margin: 0; }
  .masthead-cta { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; margin: 2px 0 0; }
  .masthead-cta .cta { height: 38px; padding: 0 .95rem; font-size: .84rem; }
  .masthead-cta .cta-invite { border-color: rgba(255, 255, 255, .75); color: var(--white); }
  .masthead-cta .cta-invite:hover { background: var(--white); color: var(--navy-900); }
  .masthead-cta .cta-donate:hover { border-color: var(--white); background: var(--white); color: var(--navy-900); }
  .rail-cta { display: none; }
  .rail-list a { font-size: .9rem; padding: 0 .7rem; }
  .hero { min-height: auto; padding-top: 48px; }
  .hero-title { font-size: clamp(2.4rem, 10.5vw, 3.2rem); }
  .hero-sub { font-size: .66rem; letter-spacing: .14em; padding: .75rem 1.05rem; }
  .audience-options { display: flex; }
  .audience-option { flex: 1; }
  .audience-option span { padding: .85rem .6rem; text-align: center; font-size: .68rem; letter-spacing: .1em; }
  .hero-ctas .btn:not(.btn-text) { width: 100%; }
  .ask-prompts li:nth-child(n+4) { display: none; }
  .vidya-log { height: 300px; }
  .hero-credit { display: none; }
  .stat-flags img { width: 22px; height: 15px; }
  .section-title { font-size: clamp(2.3rem, 10vw, 3rem); }
  .glance,
  .honorees,
  .story-context .callout.context-2025 { grid-template-columns: minmax(0, 1fr); }
  .glance > div:nth-last-child(2) { border-bottom: 1px solid var(--stone); }
  .recap-intro > p,
  .prose p { font-size: 1.05rem; }
  .dropcap::first-letter { font-size: 3.6em; }
  .story-part > summary { grid-template-columns: 2.5rem minmax(0, 1fr) 2.25rem; gap: 0 .8rem; padding: 1.1rem 1rem; }
  .story-body { padding: 0 1rem 1.5rem; }
  .amb { padding: 10px; }
  .btn { white-space: normal; text-align: center; letter-spacing: .12em; }
  .chief-watch { width: 100%; padding-inline: 1rem; }
  .slides-nav { width: 44px; height: 44px; }
  .slides-prev { left: 10px; }
  .slides-next { right: 10px; }
  .slides-track,
  .slide img { border-radius: var(--r-card); }
  .slides-thumb img { width: 76px; height: 48px; }
  .gallery-bar { flex-direction: column; }
  .gallery-folder { width: 100%; }
  .wish-list { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: 1rem; }
  .wish-list li:nth-child(2n+1):nth-last-child(-n+2),
  .wish-list li:nth-child(2n+1):nth-last-child(-n+2) ~ li { border-bottom: 0; padding-bottom: 0; }
  .takeaway-title { padding-right: 0; }
  .takeaway-tag { position: static; display: none; width: max-content; margin-bottom: .9rem; }
  .cta-band .btn { width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .hero-img { animation: none; transform: none; }
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
  .slides-track { scroll-behavior: auto; }
}

@media (forced-colors: active) {
  .chip[aria-pressed="true"] { outline: 2px solid Highlight; }
  .grain { display: none; }
}

/* ================================================================== PRINT */
@page {
  size: letter;
  margin: 14mm 13mm 16mm;
}

@media print {
  html { font-size: 10pt; scroll-behavior: auto; }
  body { background: #fff; color: var(--ink); }
  .section-navy,
  .sources {
    --fg: var(--ink);
    --fg-2: var(--ink-2);
    --fg-muted: var(--ink-muted);
    --accent-text: var(--gold-ink);
    --card: #fff;
    --rule: var(--stone);
    --rule-strong: #cfc8bb;
  }
  .grain, .masthead, .rail, .audience, .hero-ctas, .ask-card, .filters, .gallery-folder, .clip-play, .clip-actions,
  .transcript, .player, .toast, .to-top, .vx-dock, .footer-logo, .skip-link, .hero-credit, .cta-band, .footer-actions, .takeaway-links, .wp-play,
  .takeaway-tag, .clip-media, .slides-nav, .slides-bar, .story-tools { display: none !important; }
  .print-only { display: block; }
  .js .reveal, .hero-main > *, .hero-inner > * { opacity: 1 !important; animation: none !important; }
  .js[data-audience] .lede[data-for] { display: block !important; }
  .js .lede-label { display: block; }
  .hero { -webkit-print-color-adjust: exact; print-color-adjust: exact; min-height: 0; height: 247mm; padding: 18mm 14mm 14mm; break-after: page; }
  .hero-img { animation: none; transform: none; }
  .hero-title { font-size: 34pt; }
  .stats { margin-top: 14mm; }
  .section, .sources { padding: 0 !important; background: #fff !important; color: var(--ink); break-before: page; }
  .section-head { margin-bottom: 7mm; }
  .section-title { font-size: 24pt; }
  .story-part, .clip, .insight, .road, .wish-group, .takeaway, .amb, .chief-guest, .glance, .honorees li {
    box-shadow: none !important; border: 1px solid var(--stone); translate: none !important; break-inside: avoid;
  }
  .story-part > summary::after { display: none; }
  .story-body { padding-left: 0; }
  .amb { background: #fff; }
  .amb-country, .amb-name, .amb-quote p, .former-name, .footer-brand { color: var(--ink); }
  .amb-note, .former-role, .embassies figcaption { color: var(--ink-2); }
  .slides-track { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 5mm; overflow: visible; }
  .clip-grid { display: block; column-count: 2; column-gap: 4mm; }
  .clip { display: block; margin: 0 0 3mm; }
  .clip[hidden] { display: block !important; }
  .clip-body { display: block; padding: 3mm 4mm; }
  .clip-body::after { content: none; }
  .clip-print-link { margin-top: 2mm; font: 500 7.5pt/1.3 var(--font-body); color: var(--ink-muted); }
  .clip-print-link a { font: 500 6.6pt/1.3 ui-monospace, Menlo, Consolas, monospace; word-break: break-all; color: var(--ink); }
  .insights { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 5mm; }
  .takeaways { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 6mm; }
  .roadmap { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4mm; }
  .banner-list { -webkit-print-color-adjust: exact; print-color-adjust: exact; }
  .sources a { color: var(--ink); }
  .footer-bar { color: var(--ink-muted); margin-top: 6mm; padding-top: 3mm; }
}
