:root{
  --bg:#f5f7fa;
  --bg-grid-line:rgba(255,255,255,.62);
  --bg-grid-line-strong:rgba(255,255,255,.9);
  --surface:#ffffff;
  --line:#e5ebf1;
  --text:#0d1621;
  --text-soft:#566476;
  --shadow:0 14px 36px rgba(17,41,71,.08);
  /* Vertical spacing source of truth */
  --space-1:4px;
  --space-2:8px;
  --space-3:12px;
  --space-4:16px;
  --space-5:24px;
  --space-6:32px;
  --space-7:48px;
  --space-8:64px;
  /* Card responsive width source of truth */
  --card-min-width:340px;
  --card-compact-min-width:300px;
  --card-person-min-width:320px;
  --card-event-min-width:340px;
  /* ── Section perforation divider — source of truth ─────── */
  --perf-dot-color:#c4d2df;     /* dot colour */
  --perf-dot-size:1.4px;        /* dot radius (-30%) */
  --perf-dot-step:10px;         /* dot pitch (centre-to-centre) */
  --perf-notch-r:14px;          /* notch radius (reserved) */
  --perf-notch-bg:var(--bg);    /* legacy fake-circle colour */
  --perf-h:3px;                 /* line height (-30%) */
  --perf-margin:32px;           /* horizontal inset of the line inside its wrapper */
  /* CTA hierarchy source of truth */
  --cta-red-bg:#E65E57;
  --cta-red-bg-hover:#D4524A;
  --cta-red-text:#ffffff;
  --cta-blue-bg:#1E5B91;
  --cta-blue-bg-hover:#184C79;
  --cta-blue-text:#ffffff;
  --cta-gray-bg:#F0F2F5;
  --cta-gray-bg-hover:#E5EAF0;
  --cta-gray-text:#4F5969;
  --cta-green-bg:#54a887;
  --cta-green-bg-hover:#468f72;
  --cta-green-text:#ffffff;
  /* System paragraph accent source of truth */
  --text-accent-block-border-width:3px;
  --text-accent-block-padding-left:10px;
  --text-accent-block-margin-y:14px;
  --text-accent-block-color:var(--text-soft);
  --text-accent-block-blue:var(--cta-blue-bg);
  --text-accent-block-coral:var(--cta-red-bg);
  --text-accent-block-sky:#8CD1E8;
  --text-accent-block-steel:#8EA0B2;
  --text-list-lead-weight:500;
  --text-list-lead-margin-top:14px;
  --text-list-lead-margin-bottom:6px;
  --text-list-marker-color:var(--cta-red-bg);
  /* Person avatar source of truth */
  --person-avatar-bg:#EAF2F9;
  --person-avatar-color:#355370;
  --person-avatar-border:rgba(13,22,33,.06);
  --person-avatar-font-weight:600;
  --table-font-family:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --table-font-size:16px;
  --table-line-height:22px;
  --table-header-weight:600;
  --table-body-weight:400;
  --table-cell-padding-x:12px;
  --table-cell-padding-y:10px;
  --table-cell-padding-y-compact:7px;
  --table-line-border-width:.75px;
  --table-header-border-width:2px;
  --table-line-border-color:#435469;
  --table-header-bg:#123f68;
  --table-header-color:#fff;
  --table-row-bg-a:#eef5fa;
  --table-row-bg-b:#f7fafd;
  --table-grid-color:#fff;
  --table-semantic-i-bg:#dff2e6;
  --table-semantic-iia-bg:#fff2bf;
  --table-semantic-iib-bg:#ffe1c2;
  --table-semantic-iii-bg:#f9c7c4;
}
*,
*::before,
*::after{box-sizing:border-box}
body{
  margin:0;
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  background-color:var(--bg);
  background-image:
    linear-gradient(var(--bg-grid-line) 1px, transparent 1px),
    linear-gradient(90deg, var(--bg-grid-line) 1px, transparent 1px),
    linear-gradient(var(--bg-grid-line-strong) 1px, transparent 1px),
    linear-gradient(90deg, var(--bg-grid-line-strong) 1px, transparent 1px);
  background-size:5px 5px, 5px 5px, 25px 25px, 25px 25px;
  color:var(--text);
  -webkit-font-smoothing:antialiased;
}
a{text-decoration:none;color:inherit}
.rko-text-accent-block{
  margin:var(--text-accent-block-margin-y) 0;
  padding-left:var(--text-accent-block-padding-left);
  border-left:var(--text-accent-block-border-width) solid var(--text-accent-block-blue);
  color:var(--text-accent-block-color);
  font-weight:400;
}
.rko-text-accent-block strong,
.rko-text-accent-block b{font-weight:inherit}
.rko-text-accent-block--blue{border-left-color:var(--text-accent-block-blue)}
.rko-text-accent-block--coral{border-left-color:var(--text-accent-block-coral)}
.rko-text-accent-block--sky{border-left-color:var(--text-accent-block-sky)}
.rko-text-accent-block--steel{border-left-color:var(--text-accent-block-steel)}
.rko-text-list-lead{
  margin:var(--text-list-lead-margin-top) 0 var(--text-list-lead-margin-bottom);
  color:var(--text-soft);
  font-weight:var(--text-list-lead-weight);
}
.rko-text-list-lead strong,
.rko-text-list-lead b{font-weight:inherit}
.text-accent{
  color:var(--cta-blue-bg);
  font-weight:500;
}
.text-accent--coral{color:var(--cta-blue-bg)}
.text-accent--sky{color:var(--token-sky-text,#1C597D)}
.text-accent--steel{color:var(--text-soft)}
.rko-table{
  display:block;
  width:100%;
  max-width:100%;
  overflow-x:auto;
  border-collapse:collapse;
  border-spacing:0;
  font-family:var(--table-font-family);
  font-size:var(--table-font-size);
  line-height:var(--table-line-height);
  font-weight:var(--table-body-weight);
  color:var(--text);
  white-space:normal;
}
.rko-table th,
.rko-table td{
  padding:var(--table-cell-padding-y) var(--table-cell-padding-x);
  vertical-align:middle;
  text-align:left;
  overflow-wrap:anywhere;
  font-weight:var(--table-body-weight);
}
.rko-table--compact th,
.rko-table--compact td{padding-top:var(--table-cell-padding-y-compact);padding-bottom:var(--table-cell-padding-y-compact)}
.rko-table__cell--header,
.rko-table th{font-weight:var(--table-header-weight)}
.rko-table__cell--numeric,
.rko-table__cell--right{text-align:right}
.rko-table__cell--center{text-align:center}
.rko-table__cell--top{vertical-align:top}
.rko-table__cell--middle{vertical-align:middle}
.rko-table--line th,
.rko-table--line td{
  border:0;
  border-bottom:var(--table-line-border-width) solid color-mix(in srgb, var(--table-line-border-color) 34%, transparent);
  background:transparent;
}
.rko-table--line thead th{border-bottom:var(--table-header-border-width) solid var(--table-line-border-color)}
.rko-table--filled th{
  background:var(--table-header-bg);
  color:var(--table-header-color);
  border:1px solid var(--table-grid-color);
}
.rko-table--filled td{
  border:1px solid var(--table-grid-color);
  background:var(--table-row-bg-a);
}
.rko-table--filled tbody tr:nth-child(even) td{background:var(--table-row-bg-b)}
.rko-table__cell--semantic-i{background:var(--table-semantic-i-bg)!important;font-weight:600}
.rko-table__cell--semantic-iia{background:var(--table-semantic-iia-bg)!important;font-weight:600}
.rko-table__cell--semantic-iib{background:var(--table-semantic-iib-bg)!important;font-weight:600}
.rko-table__cell--semantic-iii{background:var(--table-semantic-iii-bg)!important;font-weight:600}
.rko-legacy-project-page{
  width:100%;
  max-width:100%;
  overflow-x:auto;
  color:var(--text-soft);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  font-size:18px;
  line-height:1.55;
}
.rko-legacy-project-page *,
.rko-legacy-project-page *::before,
.rko-legacy-project-page *::after{box-sizing:border-box}
.rko-legacy-project-page img{
  max-width:100%;
  height:auto;
}
.rko-legacy-project-page iframe{
  display:block;
  max-width:100%;
  border:0;
  border-radius:12px;
  background:var(--line);
}
.rko-legacy-project-page table{
  max-width:100%;
  border-collapse:collapse;
}
.rko-legacy-project-page a{
  color:var(--cta-blue-bg);
  text-decoration:underline;
  text-decoration-thickness:1px;
  text-underline-offset:3px;
}
.rko-legacy-project-page p{margin-top:0}
.rko-entity-card{
  display:block;
  margin:var(--space-4) 0;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  box-shadow:0 10px 28px rgba(17,41,71,.06);
}
.rko-entity-card__link{
  display:grid;
  gap:6px;
  padding:14px 16px;
}
.rko-entity-card__type{
  width:max-content;
  padding:4px 10px;
  border-radius:999px;
  background:#eaf2f9;
  color:#1f5f9b;
  font-size:13px;
  line-height:1.2;
  font-weight:600;
}
.rko-entity-card__title{
  color:var(--text);
  font-size:18px;
  line-height:1.28;
  font-weight:600;
}
.rko-entity-card__meta{
  color:var(--text-soft);
  font-size:14px;
  line-height:1.45;
}
.rko-entity-link{color:#1f5f9b;font-weight:600}
.rko-entity-missing{color:var(--text-soft);font-weight:500}
/* ════════════════════════════════════════════════════════════════
   PERSON ENTITY CARDS
   Three canonical display modes: --inline | --compact | --full
   ════════════════════════════════════════════════════════════════ */

/* ── Legacy inline helper (used in program tables) ─────────── */
.rko-entity-person-link{color:inherit;text-decoration:none}
.rko-entity-person-link:hover .rko-entity-person-inline__name{text-decoration:underline;text-underline-offset:3px}
.rko-entity-person-inline{display:inline;max-width:100%;vertical-align:baseline;color:var(--text);font-weight:500;line-height:inherit}
a.rko-entity-person-inline{text-decoration:none}
a.rko-entity-person-inline:hover .rko-entity-person-inline__name{text-decoration:underline;text-underline-offset:3px}
.rko-entity-person-inline__avatar{flex:0 0 auto;width:20px;height:20px;position:relative;border-radius:999px;display:inline-grid;place-items:center;margin-right:0.26em;vertical-align:-0.18em;overflow:hidden;background:var(--person-avatar-bg);color:var(--person-avatar-color);box-shadow:inset 0 0 0 1px var(--person-avatar-border);font-size:9px;line-height:1;font-weight:var(--person-avatar-font-weight)}
.rko-entity-person-inline__avatar__image{position:absolute;inset:0;z-index:1}
.rko-entity-person-inline__avatar__initials{position:relative;z-index:0}
.rko-entity-person-inline__avatar img{width:100%;height:100%;object-fit:cover;display:block}
.rko-entity-person-inline__name{font-weight:500;color:var(--text)}

/* ── Chip (pill avatar + name, used in sidebars / tags) ──────── */
.rko-entity-person-chip{display:inline-flex;align-items:center;gap:7px;max-width:100%;padding:4px 10px 4px 5px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--text);vertical-align:middle;font-weight:600}
.rko-entity-person-chip__avatar{flex:0 0 auto;width:22px;height:22px;position:relative;border-radius:999px;display:inline-grid;place-items:center;overflow:hidden;background:var(--person-avatar-bg);color:var(--person-avatar-color);box-shadow:inset 0 0 0 1px var(--person-avatar-border);font-size:10px;line-height:1;font-weight:var(--person-avatar-font-weight)}
.rko-entity-person-chip__avatar img{width:100%;height:100%;object-fit:cover;display:block}
.rko-entity-person-chip__name{font-size:14px;line-height:1.25;font-weight:600}

/* ── Card: shared sub-element base styles ──────────────────── */
.rko-entity-person-card__avatar{
  flex:0 0 auto;
  border-radius:999px;
  display:grid;
  place-items:center;
  overflow:hidden;
  background:var(--person-avatar-bg);
  color:var(--person-avatar-color);
  box-shadow:inset 0 0 0 1px var(--person-avatar-border);
  line-height:1;
  font-weight:var(--person-avatar-font-weight);
}
.rko-entity-person-card__avatar img{width:100%;height:100%;object-fit:cover;display:block}
.rko-entity-person-card__body{display:grid;min-width:0}
.rko-entity-person-card__role{
  width:max-content;max-width:100%;
  padding:2px 8px;border-radius:999px;
  background:#eaf2f9;color:#1f5f9b;
  font-size:11px;line-height:1.3;font-weight:600;
  letter-spacing:.02em;
}
.rko-entity-person-card__name{font-weight:600;line-height:1.25}
.rko-entity-person-card__meta,.rko-entity-person-card__city{font-size:13px;line-height:1.4;font-weight:400;color:var(--text-soft)}
.rko-entity-person-card__city{display:inline-flex;align-items:center;gap:5px}
.rko-entity-person-card__city svg{flex:0 0 auto}

/* ══ MODE: inline ══════════════════════════════════════════════
   Runs within text flow — 20 px avatar, name only              */
.rko-entity-person-card--inline{
  display:inline;
  vertical-align:baseline;
  color:var(--text);
  font-weight:500;
  line-height:inherit;
}
a.rko-entity-person-card--inline{text-decoration:none}
a.rko-entity-person-card--inline:hover .rko-entity-person-card__name{text-decoration:underline;text-underline-offset:3px}
.rko-entity-person-card--inline .rko-entity-person-card__avatar{
  width:20px;height:20px;font-size:9px;
  display:inline-grid;margin-right:.26em;vertical-align:-.18em;
}
.rko-entity-person-card--inline .rko-entity-person-card__body{display:inline}
.rko-entity-person-card--inline .rko-entity-person-card__name{display:inline;font-size:inherit;font-weight:500;color:inherit}
.rko-entity-person-card--inline .rko-entity-person-card__role,
.rko-entity-person-card--inline .rko-entity-person-card__meta,
.rko-entity-person-card--inline .rko-entity-person-card__city{display:none}

/* ══ MODE: compact ═════════════════════════════════════════════
   Pill card — 40 px avatar, role + name, no meta/city          */
.rko-entity-person-card--compact{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:5px 14px 5px 5px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--surface);
  color:var(--text);
  width:auto;
  max-width:min(100%,340px);
  vertical-align:middle;
}
a.rko-entity-person-card--compact{text-decoration:none}
a.rko-entity-person-card--compact:hover .rko-entity-person-card__name{text-decoration:underline;text-underline-offset:3px}
.rko-entity-person-card--compact .rko-entity-person-card__avatar{width:40px;height:40px;font-size:14px}
.rko-entity-person-card--compact .rko-entity-person-card__body{gap:1px}
.rko-entity-person-card--compact .rko-entity-person-card__role{font-size:10px;padding:1px 6px}
.rko-entity-person-card--compact .rko-entity-person-card__name{font-size:14px;color:var(--text)}
.rko-entity-person-card--compact .rko-entity-person-card__meta,
.rko-entity-person-card--compact .rko-entity-person-card__city{display:none}

/* ══ MODE: full ════════════════════════════════════════════════
   Complete card — 64 px avatar, all fields, shadow             */
.rko-entity-person-card--full{
  display:inline-grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:14px;
  align-items:start;
  width:min(100%,400px);
  padding:16px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  box-shadow:0 4px 20px rgba(17,41,71,.07);
  vertical-align:top;
}
a.rko-entity-person-card--full{text-decoration:none}
a.rko-entity-person-card--full:hover .rko-entity-person-card__name{text-decoration:underline;text-underline-offset:3px}
.rko-entity-person-card--full .rko-entity-person-card__avatar{width:64px;height:64px;font-size:20px}
.rko-entity-person-card--full .rko-entity-person-card__body{gap:5px}
.rko-entity-person-card--full .rko-entity-person-card__name{font-size:17px;color:var(--text)}

/* Backwards-compat: bare .rko-entity-person-card = full mode style */
.rko-entity-person-card{
  display:inline-grid;
  grid-template-columns:auto minmax(0,1fr);
  gap:12px;
  align-items:center;
  width:min(100%,360px);
  margin:8px 10px 8px 0;
  padding:12px;
  border:1px solid var(--line);
  border-radius:12px;
  background:var(--surface);
  box-shadow:0 10px 28px rgba(17,41,71,.06);
  vertical-align:top;
}
.rko-entity-person-card__avatar--speaker,
.rko-entity-person-card--speaker .rko-entity-person-card__avatar{width:64px;height:64px;font-size:20px}
.rko-entity-person-card--speaker{width:min(100%,420px);align-items:start}

.container{width:min(1240px,calc(100vw - 48px));margin:0 auto}
.site-header{
  background:#fff;
  border-bottom:1px solid var(--line);
  position:sticky;
  top:0;
  z-index:40;
}
.site-header__inner{
  width:min(1240px,calc(100vw - 48px));
  margin:0 auto;
  min-height:76px;
  display:flex;
  align-items:center;
  gap:0;
}
.brand{
  display:flex;
  align-items:center;
  padding:26px;
  margin:-26px 0;
  margin-right:26px;
  flex:0 0 auto;
}
.brand img{width:226px;height:auto}
.top-nav{
  display:flex;
  align-items:center;
  gap:20px;
  flex:1;
  min-width:0;
  flex-wrap:wrap;
}
.top-nav__item{
  position:relative;
  display:flex;
  align-items:center;
  gap:4px;
}
.top-nav a{
  font-size:13px;
  font-weight:600;
  color:var(--text-soft);
  white-space:nowrap;
}
.top-nav a.active{color:var(--text)}
.top-nav__link{
  display:inline-flex;
  align-items:center;
  min-height:34px;
}
.top-nav__caret{
  width:22px;
  height:22px;
  padding:0;
  border:0;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  background:transparent;
  color:#8ea0b2;
  cursor:pointer;
  transition:background-color .18s ease,color .18s ease,transform .18s ease;
}
.top-nav__caret:hover{
  background:#f2f5f8;
  color:#6d8196;
}
.top-nav__caret svg{
  width:10px;
  height:10px;
}
.nav-dropdown{
  position:absolute;
  top:calc(100% + 18px);
  left:0;
  min-width:250px;
  padding:10px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  box-shadow:0 24px 60px rgba(17,41,71,.12);
  display:none;
  z-index:80;
}
.nav-dropdown__list{
  display:flex;
  flex-direction:column;
  gap:4px;
}
.nav-dropdown__link{
  display:flex;
  align-items:center;
  min-height:38px;
  padding:0 12px;
  border-radius:10px;
  line-height:1.3;
}
.nav-dropdown__link:hover{
  background:#f5f8fb;
  color:var(--text);
}
.topics-menu{
  position:absolute;
  top:calc(100% + 18px);
  left:-20px;
  width:min(1120px,calc(100vw - 72px));
  padding:18px;
  border:1px solid var(--line);
  border-radius:12px;
  background:#fff;
  box-shadow:0 24px 60px rgba(17,41,71,.12);
  display:none;
  z-index:80;
}
.top-nav__item:hover .nav-dropdown,
.top-nav__item:focus-within .nav-dropdown,
.top-nav__item.is-open .nav-dropdown,
.top-nav__item:hover .topics-menu,
.top-nav__item:focus-within .topics-menu,
.top-nav__item.is-open .topics-menu{
  display:block;
}
.top-nav__item.is-open .top-nav__caret{
  background:#f2f5f8;
  color:#6d8196;
}
.top-nav__item.is-open .top-nav__caret svg{
  transform:rotate(180deg);
}
.topics-menu__grid{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:14px;
}
.topics-menu__group{
  background:#fbfcfd;
  border:1px solid var(--line);
  border-radius:12px;
  padding:14px 14px 12px;
}
.topics-menu__title{
  margin:0 0 10px;
  font-size:13px;
  line-height:1.3;
  font-weight:600;
}
.topics-menu__list{
  display:flex;
  flex-direction:column;
  gap:8px;
}
.topics-menu__link{
  line-height:1.35;
}
.topics-menu__link:hover{
  color:var(--text);
}
.page{
  padding:36px 0 56px;
}
.hero-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:var(--shadow);
  padding:28px;
}
.eyebrow{
  display:inline-flex;
  align-items:center;
  min-height:32px;
  padding:0 14px;
  border-radius:999px;
  background:#eaf1f7;
  color:#315472;
  font-size:12px;
  font-weight:600;
}
h1,h2,h3{margin:0;text-wrap:balance}
.page-title{
  margin-top:18px;
  font-size:42px;
  line-height:1.04;
  font-weight:600;
}
.page-text{
  margin-top:14px;
  max-width:760px;
  font-size:18px;
  line-height:1.5;
  color:rgba(13,22,33,.8);
}
.ui-microstats{
  display:flex;
  justify-content:flex-end;
  align-items:flex-start;
  align-content:flex-start;
  flex-wrap:wrap;
  gap:14px;
  margin-left:auto;
}
.ui-microstat{
  display:inline-flex;
  align-items:baseline;
  gap:6px;
  color:#8ea0b2;
  white-space:nowrap;
}
.ui-microstat strong{
  font-size:15px;
  line-height:1.1;
  font-weight:700;
  color:var(--text);
}
.ui-microstat span{
  font-size:13px;
  line-height:1.3;
  font-weight:600;
  color:#6f8192;
}
.date-inline svg{
  flex:0 0 auto;
}
.content-cta-group{
  display:flex;
  flex-wrap:wrap;
  justify-content:flex-start;
  align-items:flex-start;
  gap:12px;
  margin:18px 0;
}
.site-cta,
.content-cta,
.content-cta-primary,
.content-cta-secondary,
.content-cta-tertiary{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  align-self:flex-start;
  width:auto;
  max-width:max-content;
  min-height:36px;
  padding:0 14px;
  border-radius:999px;
  border:0;
  font-size:13px;
  font-weight:600;
  line-height:1.2;
  text-decoration:none;
  transition:background-color .18s ease,color .18s ease,transform .18s ease;
}
.site-cta--primary,
.content-cta-primary{
  background:var(--cta-red-bg);
  color:var(--cta-red-text);
}
.site-cta--primary:hover,
.content-cta-primary:hover{
  background:var(--cta-red-bg-hover);
  color:var(--cta-red-text);
  transform:translateY(-1px);
}

.site-cta--secondary,
.content-cta-secondary{
  background:var(--cta-blue-bg);
  color:var(--cta-blue-text);
}

.site-cta--secondary:hover,
.content-cta-secondary:hover{
  background:var(--cta-blue-bg-hover);
  color:var(--cta-blue-text);
  transform:translateY(-1px);
}

.site-cta--tertiary,
.content-cta,
.content-cta-tertiary{
  background:var(--cta-gray-bg);
  color:var(--cta-gray-text);
}

.site-cta--tertiary:hover,
.content-cta:hover,
.content-cta-tertiary:hover{
  background:var(--cta-gray-bg-hover);
  color:var(--cta-gray-text);
  transform:translateY(-1px);
}
.content-link{
  color:#24538b;
  text-decoration:underline;
  text-underline-offset:2px;
}
.content-link:hover{
  color:#173f6b;
}
.grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%, var(--card-min-width)),1fr));
  gap:16px;
  margin-top:24px;
  /* Equal-height rows: cards fill their row so bottom edges align.
     Override with .grid--masonry or .grid--auto-height when intentional. */
  align-items:stretch;
}
.grid > *{
  height:100%;
}
/* Alias kept for backwards compatibility */
.card-grid-equal{
  align-items:stretch;
}
.card-grid-equal > *{
  height:100%;
}
.card-with-cta{
  display:flex;
  flex-direction:column;
  min-height:100%;
  height:100%;
}
.card-cta-anchor{
  margin-top:auto;
}
.stub-card{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:var(--shadow);
  padding:18px;
}
.stub-card h3{
  font-size:20px;
  line-height:1.2;
  font-weight:600;
}
.stub-card p{
  margin:10px 0 0;
  font-size:14px;
  line-height:1.55;
  color:var(--text-soft);
}

.project-card-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(min(100%, var(--card-min-width)),1fr));
  gap:var(--space-4);
  margin-top:var(--space-4);
  align-items:stretch;
}
.project-card-grid > *{
  height:100%;
}

.project-card{
  position:relative;
  display:flex;
  flex-direction:column;
  /* height fills grid cell; min-height keeps card taller than its content */
  height:100%;
  min-height:0;
  padding:var(--content-card-padding, 8px);
  border:1px solid var(--content-card-border, var(--line));
  border-radius:var(--content-card-radius, 12px);
  background:var(--content-card-bg, var(--surface));
  box-shadow:var(--content-card-shadow, var(--shadow));
  overflow:visible;
  color:inherit;
  text-decoration:none;
  cursor:pointer;
  transition:border-color .18s ease,transform .18s ease,box-shadow .18s ease;
}

.project-card:hover{
  border-color:var(--content-card-hover-border, #d4e0ea);
  transform:translateY(var(--content-card-hover-y, -1px));
  box-shadow:var(--content-card-hover-shadow, 0 12px 28px rgba(17,41,71,.08));
}

.project-card:focus,
.project-card:focus-visible{
  border-color:#bdd2e4;
  box-shadow:0 0 0 3px rgba(42,99,168,.12),0 12px 28px rgba(17,41,71,.08);
  outline:none;
}

.project-card__overlay{
  position:absolute;
  inset:0;
  z-index:1;
  border-radius:var(--content-card-radius, 12px);
}

.project-card__media{
  display:block;
  aspect-ratio:var(--content-card-media-ratio, 16 / 9);
  border-radius:var(--content-card-media-radius, 8px);
  background:var(--content-card-media-bg, #dce6f1);
  overflow:hidden;
}

.project-card__media-frame{
  display:block;
  width:100%;
  height:100%;
}

.media-fill{
  position:relative;
  overflow:hidden;
  background:transparent;
}

.media-fill > img,
.media-fill > video,
.media-fill > picture > img{
  position:absolute;
  inset:-2px;
  display:block;
  width:calc(100% + 4px);
  height:calc(100% + 4px);
  max-width:none;
  object-fit:cover;
  object-position:center center;
}

.media-fill--top > img,
.media-fill--top > video,
.media-fill--top > picture > img{
  object-position:center top;
}

.project-card__body{
  display:flex;
  flex:1 1 auto;
  flex-direction:column;
  gap:var(--space-3);
  padding:var(--content-card-body-padding, 12px 6px 4px);
  min-height:232px;
}

.project-card__chips,
.project-card__topics{
  display:flex;
  flex-wrap:wrap;
  gap:var(--content-card-chip-gap, var(--space-2));
}

.project-card__title{
  margin:0;
  font-size:var(--content-card-title-featured-size, 17px);
  line-height:var(--content-card-title-featured-line, 1.24);
  font-weight:var(--content-card-title-weight, 600);
  color:var(--content-card-title-color, var(--text));
  display:-webkit-box;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

.project-card__title a{
  color:inherit;
  text-decoration:none;
}

.project-card__summary{
  margin:0;
  font-size:var(--content-card-summary-size, 14px);
  line-height:var(--content-card-summary-line, 1.5);
  color:var(--content-card-summary-color, var(--text-soft));
  display:-webkit-box;
  -webkit-line-clamp:3;
  -webkit-box-orient:vertical;
  overflow:hidden;
}

.project-card__footer{
  display:flex;
  flex-direction:column;
  gap:var(--space-2);
  margin-top:auto;
}

.project-card__meta{
  margin:0;
  font-size:var(--content-card-meta-size, 12px);
  line-height:1.4;
  color:var(--content-card-meta-color, #7b8ea2);
}

.project-card__cta{
  display:inline-flex;
  align-items:center;
  gap:6px;
  min-height:28px;
  font-size:13px;
  line-height:1.2;
  font-weight:600;
  color:#315472;
}

.project-card__cta::after{
  content:"→";
  font-size:12px;
  line-height:1;
}

.project-card--compact .project-card__body{
  min-height:188px;
  padding:var(--content-card-body-padding-compact, 8px 4px 2px);
}

.project-card--compact .project-card__title{
  font-size:var(--content-card-title-size, 15px);
  line-height:var(--content-card-title-line, 1.3);
}

@media (max-width:1080px){
  .project-card-grid{
    grid-template-columns:repeat(auto-fit,minmax(min(100%, var(--card-min-width)),1fr));
  }

  .project-card__title{
    font-size:var(--content-card-title-featured-size, 17px);
  }
}

@media (max-width:720px){
  .project-card-grid{
    grid-template-columns:1fr;
  }

  .project-card__title{
    font-size:var(--content-card-title-size, 15px);
  }

  .project-card__body{
    min-height:0;
  }
}

.topic-group{
  background:var(--surface);
  border:1px solid var(--line);
  border-radius:12px;
  box-shadow:var(--shadow);
  padding:18px;
}
.topic-group h2{
  font-size:20px;
  line-height:1.2;
  font-weight:600;
  margin-bottom:12px;
}
.topic-list{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
}
.topic-list span{
  display:inline-flex;
  align-items:center;
  min-height:34px;
  padding:0 12px;
  border-radius:999px;
  border:1px solid #d7e3ee;
  color:#60748a;
  font-size:13px;
  font-weight:500;
}

.pdf-indicator{
  display:inline-flex;
  align-items:center;
  gap:6px;
  font-size:12px;
  font-weight:700;
  line-height:1.2;
  color:var(--token-purple-text,#5252c2);
  text-decoration:none;
}
.pdf-indicator img{
  width:16px;
  height:16px;
  flex:0 0 auto;
}
.meta-city{
  display:inline-flex;
  align-items:center;
  gap:4px;
  white-space:nowrap;
}
.meta-city svg{
  width:11px;
  height:11px;
  flex:0 0 auto;
}

/* Unified control layer
   Source of truth: calendar filters toolbar */
:root{
  --control-surface:#eef3f7;
  --control-border:#dce5ed;
  --control-field-border:#d7e1ea;
  --control-label:#8ea0b2;
  --control-text:#445669;
  --dropdown-height:36px;
  --dropdown-height-compact:34px;
  --dropdown-radius:7px;
  --dropdown-padding-x:12px;
  --dropdown-menu-radius:7px;
  --dropdown-item-height:32px;
  --dropdown-item-radius:5px;
}
.control-layer{
  background:var(--control-surface);
  border:1px solid var(--control-border);
  border-radius:12px;
  box-shadow:none;
  padding:var(--space-3);
}
.surface.control-layer{
  background:var(--control-surface);
  border-color:var(--control-border);
  box-shadow:none;
}
.control-layer__row{
  display:flex;
  flex-wrap:wrap;
  align-items:flex-end;
  gap:var(--space-2);
}
.control-layer__row + .control-layer__row{
  margin-top:var(--space-2);
}
.control-field{
  display:flex;
  flex-direction:column;
  gap:var(--space-1);
  min-width:0;
}
.control-field--grow{
  flex:1 1 280px;
}
.control-field__label{
  font-size:11px;
  font-weight:700;
  letter-spacing:.08em;
  text-transform:uppercase;
  color:var(--control-label);
}
.control-input-wrap{
  display:flex;
  align-items:center;
  gap:var(--space-2);
  min-width:0;
  height:var(--dropdown-height);
  padding:0 12px;
  border:1px solid var(--control-field-border);
  border-radius:var(--dropdown-radius);
  background:#fff;
}
.control-input,
.control-select{
  width:100%;
  border:0;
  outline:0;
  background:transparent;
  font-size:13px;
  font-weight:600;
  line-height:1.3;
  color:var(--control-text);
}
.control-input::placeholder{
  color:#8ea0b2;
  opacity:1;
  font-size:13px;
  font-weight:600;
}
.control-select{
  -webkit-appearance:none;
  -moz-appearance:none;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%23536677' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-position:right 12px center;
  background-size:10px 6px;
  background-repeat:no-repeat;
  padding-right:28px;
}
.control-select::-ms-expand{display:none}
.control-chip,
.control-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:var(--dropdown-height);
  padding:0 14px;
  border:1px solid var(--control-field-border);
  border-radius:var(--dropdown-radius);
  background:#fff;
  color:var(--control-text);
  font-size:13px;
  font-weight:600;
  line-height:1.25;
  text-decoration:none;
  white-space:nowrap;
}
.control-layer .chip--filter{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:var(--dropdown-height);
  padding:0 14px;
  border:1px solid var(--control-field-border);
  border-radius:var(--dropdown-radius);
  background:#fff;
  color:var(--control-text);
  font-size:13px;
  font-weight:600;
  text-decoration:none;
  white-space:nowrap;
}
.control-layer .chip--filter.is-active{
  background:#dce9f5;
  border-color:#b9d0e6;
  color:#1c597e;
}
.control-chip.is-active,
.control-action.is-active{
  background:#dce9f5;
  border-color:#b9d0e6;
  color:#1c597e;
}
.control-checkbox{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-height:var(--dropdown-height);
  padding:0 12px;
  border:1px solid var(--control-field-border);
  border-radius:var(--dropdown-radius);
  background:#fff;
  color:var(--control-text);
  font-size:13px;
  font-weight:500;
  line-height:1.25;
}
.control-checkbox input{
  margin:0;
}
.control-layer .view-switch{
  display:inline-flex;
  align-items:center;
  gap:2px;
  padding:2px;
  border:1px solid var(--control-field-border);
  border-radius:var(--dropdown-radius);
  background:#fff;
}
.control-layer .view-switch__button{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:38px;
  min-height:var(--dropdown-height-compact);
  border:0;
  border-radius:var(--dropdown-item-radius);
  background:transparent;
  color:#7a8da1;
  text-decoration:none;
}
.control-layer .view-switch__button.is-active{
  background:#e7eef5;
  color:#255b86;
}
.control-layer .view-switch__button svg{
  width:20px;
  height:20px;
}
.control-layer .active-filters{
  display:flex;
  flex-wrap:wrap;
  gap:var(--space-2);
}
.control-layer .control-dropdown,
.control-dropdown{
  position:relative;
}
.control-input-wrap--dropdown{
  padding:0;
}
.control-input-wrap--dropdown .control-dropdown{
  width:100%;
}
.control-input-wrap--dropdown .control-dropdown__trigger{
  width:100%;
  min-width:0;
  height:var(--dropdown-height-compact);
  border:0;
  border-radius:var(--dropdown-radius);
  background:transparent;
  padding:0 var(--dropdown-padding-x);
}
.control-layer .control-dropdown__trigger,
.control-dropdown__trigger{
  display:inline-flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  min-width:170px;
  height:var(--dropdown-height);
  padding:0 var(--dropdown-padding-x);
  border:1px solid var(--control-field-border);
  border-radius:var(--dropdown-radius);
  background:#fff;
  color:var(--control-text);
  font-size:13px;
  font-weight:600;
  line-height:1.25;
  cursor:pointer;
}
.control-layer .control-dropdown__label,
.control-dropdown__label{
  display:inline-flex;
  align-items:center;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.control-layer .control-dropdown__trigger::after,
.control-dropdown__trigger::after{
  content:"";
  width:8px;
  height:8px;
  border-right:1.5px solid currentColor;
  border-bottom:1.5px solid currentColor;
  transform:rotate(45deg) translateY(-1px);
  transition:transform .18s ease;
}
.control-layer .control-dropdown.is-open .control-dropdown__trigger::after,
.control-dropdown.is-open .control-dropdown__trigger::after{
  transform:rotate(225deg) translateY(-1px);
}
.control-layer .control-dropdown__menu,
.control-dropdown__menu{
  position:absolute;
  top:calc(100% + var(--space-2));
  left:0;
  min-width:100%;
  padding:var(--space-2);
  border:1px solid #dfe7ef;
  border-radius:var(--dropdown-menu-radius);
  background:#fff;
  box-shadow:0 18px 40px rgba(17,41,71,.12);
  z-index:30;
  display:none;
}
.control-layer .control-dropdown.is-open .control-dropdown__menu,
.control-dropdown.is-open .control-dropdown__menu{
  display:block;
}
.control-layer .control-dropdown__menu a,
.control-layer .control-dropdown__menu button,
.control-dropdown__menu a,
.control-dropdown__menu button{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:var(--space-2);
  width:100%;
  min-height:var(--dropdown-item-height);
  padding:0 10px;
  border:0;
  border-radius:var(--dropdown-item-radius);
  background:transparent;
  color:#536577;
  font-size:13px;
  font-weight:600;
  text-align:left;
  text-decoration:none;
  cursor:pointer;
}
.control-field--w-sm{flex:0 0 190px}
.control-field--w-md{flex:0 0 210px}
.control-layer .control-dropdown__menu a:hover,
.control-layer .control-dropdown__menu button:hover,
.control-dropdown__menu a:hover,
.control-dropdown__menu button:hover{
  background:#f4f8fb;
  color:#1f567c;
}
.control-layer .control-dropdown__menu a.is-active,
.control-layer .control-dropdown__menu button.is-active,
.control-dropdown__menu a.is-active,
.control-dropdown__menu button.is-active{
  background:#dce9f5;
  color:#1c597e;
}
.control-layer .control-dropdown__count,
.control-dropdown__count{
  font-size:12px;
  color:#8aa0b4;
}
.person-compact{
  position:relative;
  display:grid;
  grid-template-columns:56px minmax(0,1fr);
  gap:14px;
  align-items:start;
  min-height:108px;
  padding:16px;
  border:1px solid #e5ebf1;
  border-radius:16px;
  background:#fff;
  box-shadow:0 10px 28px rgba(17,41,71,.04);
  overflow:hidden;
}
.person-compact__overlay{
  position:absolute;
  inset:0;
  z-index:1;
}
.person-compact__avatar{
  width:56px;
  height:56px;
  border-radius:999px;
  overflow:hidden;
  background:var(--person-avatar-bg);
  box-shadow:inset 0 0 0 1px var(--person-avatar-border);
}
.person-compact__avatar img,
.person-compact__avatar__image{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.person-compact__avatar--initials{
  display:flex;
  align-items:center;
  justify-content:center;
}
.person-compact__avatar__initials{
  font-size:18px;
  font-weight:var(--person-avatar-font-weight);
  color:var(--person-avatar-color);
  letter-spacing:.04em;
}
.person-historical__avatar,
.speaker-card__avatar,
.person-share-card__avatar{
  display:grid;
  place-items:center;
  border-radius:999px;
  overflow:hidden;
  background:var(--person-avatar-bg);
  color:var(--person-avatar-color);
  box-shadow:inset 0 0 0 1px var(--person-avatar-border);
}
.person-historical__avatar img,
.person-historical__avatar__image,
.speaker-card__avatar img,
.speaker-card__avatar__image,
.person-share-card__avatar img,
.person-share-card__avatar__image{
  display:block;
  width:100%;
  height:100%;
  object-fit:cover;
}
.person-historical__avatar__initials,
.speaker-card__avatar__initials,
.person-share-card__avatar__initials{
  font-weight:var(--person-avatar-font-weight);
  color:var(--person-avatar-color);
  letter-spacing:.04em;
}
.person-historical__avatar{width:72px;height:72px}
.speaker-card__avatar{width:64px;height:64px}
.person-share-card__avatar{width:88px;height:88px}
.person-compact__body{
  display:flex;
  flex-direction:column;
  gap:8px;
  min-width:0;
}
.person-compact__meta{
  position:relative;
  z-index:2;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}
.person-compact__title{
  position:relative;
  z-index:2;
  margin:0;
  font-size:18px;
  line-height:1.18;
  font-weight:700;
  color:#0d1621;
}
.person-compact__title a{
  color:inherit;
  text-decoration:none;
}
.person-compact__subtitle{
  position:relative;
  z-index:2;
  color:#5f7286;
  font-size:14px;
  line-height:1.5;
}
.person-compact__city,
.speaker-card__city{
  position:relative;
  z-index:2;
  color:#8093a6;
  font-size:13px;
  line-height:1.4;
  font-weight:500;
  display:inline-flex;
  align-items:center;
  gap:5px;
}
.person-compact__city svg,
.speaker-card__city svg{flex:0 0 auto}
@media (max-width:960px){
  .site-header__inner,.container{width:min(100%,calc(100vw - 24px))}
  .site-header__inner{padding:14px 0;align-items:flex-start}
  .brand{padding:12px 0;margin:0 16px 0 0}
  .brand img{width:180px}
  .control-layer{padding:12px}
  .control-field--grow{flex:1 1 100%}
  .control-chip,
  .control-action,
  .control-layer .control-dropdown__trigger{min-width:150px}
  .topics-menu{
    left:0;
    width:min(100vw - 24px,760px);
  }
  .topics-menu__grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .grid{grid-template-columns:repeat(auto-fit,minmax(min(100%, var(--card-min-width)),1fr))}
  .page-title{font-size:34px}
}
@media (max-width:720px){
  .top-nav{gap:12px}
  .nav-dropdown,
  .topics-menu{
    position:fixed;
    top:84px;
    left:12px;
    right:12px;
    width:auto;
    max-height:min(70vh,560px);
    overflow:auto;
  }
  .top-nav__item{position:static}
  .topics-menu__grid{grid-template-columns:1fr}
  .grid{grid-template-columns:1fr}
  .page{padding:20px 0 36px}
  .hero-card{padding:18px}
  .page-title{font-size:28px}
  .page-text{font-size:16px}
}

/* ── Section perforation divider ────────────────────────────
   System component: round-dot line with half-circle notches
   cut into the edges of the containing card.

   Usage — between two sections inside a card:
     <div class="section-perf-wrap">
       <div class="section-perf" aria-hidden="true"></div>
     </div>

   Context tokens (set on parent or inline):
     White card on page bg (default) → nothing needed
     White card inside another white card → --perf-notch-bg:#f5f7fa
─────────────────────────────────────────────────────────── */

.section-perf{
  /* Horizontal inset of the dot line from the container edge.
     ::before/::after sit at -perf-notch-offset from the line's OWN left edge,
     so notch-centre = margin - offset = 32-52 = -20px → half-circle visible
     when container clips at 0 via overflow:hidden. */
  margin:0 var(--perf-margin);
  position:relative;
  height:var(--perf-h);
  background:
    radial-gradient(
      circle at var(--perf-dot-size) var(--perf-dot-size),
      var(--perf-dot-color) var(--perf-dot-size),
      transparent 0
    );
  background-size:var(--perf-dot-step) var(--perf-h);
}
.section-perf::before,
.section-perf::after{
  content:'';
  display:var(--perf-notch-display,block); /* set to none when two-card layout handles shape */
  position:absolute;
  top:50%;
  width:calc(var(--perf-notch-r) * 2);
  height:calc(var(--perf-notch-r) * 2);
  border-radius:50%;
  background:var(--perf-notch-bg);
  transform:translateY(-50%);
}
/* notch-centre relative to ELEMENT left/right edge; container clips the rest */
.section-perf::before{left:calc(-1 * var(--perf-notch-offset))}
.section-perf::after{right:calc(-1 * var(--perf-notch-offset))}

/* ── Wrapper: semantic container for the perf line ─────────────────────── */
/* The notch cutout is handled by mask-image on the parent [data-perf] card.
   This wrapper just provides vertical breathing room and a measurement anchor.
   Usage: <div class="section-perf-wrap"><div class="section-perf" aria-hidden="true"></div></div> */
.section-perf-wrap{
  /* Vertical space around the dot line — contexts may override to 0 */
  padding:var(--perf-wrap-v,0) 0;
}
