/* ═══════════════════════════════════════════════════════════════
   Future Currence 2026
   Tokens lifted from the live Currence design system (currence.ai)
   ═══════════════════════════════════════════════════════════════ */

:root {
  /* Core neutrals — straight from the Currence Webflow variables */
  --plum:        #281a23;   /* neutral-950, the signature brand dark */
  --plum-deep:   #1b1118;   /* footer, one step deeper */
  --off-white:   #f6f6f3;   /* neutral-50  */
  --stone-100:   #edede8;   /* neutral-100 */
  --stone-150:   #dbdbd2;   /* neutral-150 */
  --stone-200:   #d0d0c8;   /* neutral-200 */
  --ink-900:     #292929;
  --ink-850:     #353535;
  --ink-600:     #747474;

  /* Key-art gradient — sampled from the Future Currence artwork */
  --kg-green:  #157c55;
  --kg-blue:   #225281;
  --kg-teal:   #15dfac;

  /* Brand bolt */
  --orange:      #f15a30;
  --cyan:        #48cae4;
  --grad-warm:   #e4572e;
  --grad-cool:   #79acc1;
  --bolt-gradient: linear-gradient(105deg, var(--grad-warm), var(--grad-cool));

  /* Type */
  --sans:  "Switzer", "Helvetica Neue", Arial, sans-serif;
  --display: "Manrope", "Switzer", "Helvetica Neue", Arial, sans-serif;
  --serif: "Newsreader", "Palatino Linotype", Palatino, Georgia, serif;

  /* Currence runs light: 300 is the default weight, 400 reads as bold */
  --w-light: 200;
  --w-body:  300;
  --w-bold:  400;
  --w-mid:   500;

  /* Geometry */
  --pill: 200px;
  --r-md: 12px;
  --r-lg: 18px;
  --r-xl: 24px;

  --nav-h: 68px;
  --wrap: 1180px;
  --gut: clamp(20px, 5vw, 56px);
}

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

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  margin: 0;
  background: var(--off-white);
  color: var(--ink-850);
  font-family: var(--sans);
  font-weight: var(--w-body);
  font-size: 17px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: hidden;
}

h1, h2, h3 { margin: 0; font-weight: var(--w-light); letter-spacing: -0.025em; line-height: 1.08; }
p { margin: 0; }
ul, ol, dl, dd { margin: 0; padding: 0; }
li { list-style: none; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
strong, b { font-weight: var(--w-bold); }
em { font-style: italic; }

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

.skip-link {
  position: absolute; left: -9999px; top: 0; z-index: 200;
  background: #fff; color: var(--plum); padding: 12px 20px; border-radius: 0 0 var(--r-md) 0;
}
.skip-link:focus { left: 0; }

.wrap { width: 100%; max-width: var(--wrap); margin-inline: auto; padding-inline: var(--gut); }
.muted { color: var(--ink-600); }

/* ═══════════════════════ NAV ═══════════════════════ */
.nav {
  position: fixed; inset: 0 0 auto 0; z-index: 100;
  height: var(--nav-h);
  display: flex; align-items: center;
  transition: background .35s ease, backdrop-filter .35s ease, border-color .35s ease;
  border-bottom: 1px solid transparent;
}
.nav.is-scrolled {
  background: rgba(40, 26, 35, .88);
  backdrop-filter: blur(14px) saturate(140%);
  -webkit-backdrop-filter: blur(14px) saturate(140%);
  border-bottom-color: #ffffff1f;
}
.nav__inner {
  width: 100%; max-width: var(--wrap); margin-inline: auto;
  padding-inline: var(--gut);
  display: flex; align-items: center; gap: 32px;
}

/* Logo lockup */
.lockup { display: inline-flex; align-items: center; color: #fff; }
/* Official Brand Book lockup. Ratio is 979:127 — keep width/height in step. */
.lockup__logo { display: block; height: 21px; width: 162px; }

.nav__links { display: flex; gap: 28px; margin-left: auto; }
.nav__links a {
  position: relative;
  font-size: 14.5px; letter-spacing: .01em;
  color: #ffffffb3;
  padding: 6px 0;
  transition: color .2s ease;
}
.nav__links a:hover { color: #fff; }
.nav__links a::after {
  content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 1.5px;
  background: var(--bolt-gradient);
  transform: scaleX(0); transform-origin: left;
  transition: transform .28s cubic-bezier(.4,0,.2,1);
}
.nav__links a.is-active { color: #fff; }
.nav__links a.is-active::after { transform: scaleX(1); }

.nav__nycw {
  font-size: 11px; font-weight: var(--w-bold);
  letter-spacing: .16em; text-transform: uppercase;
  color: #ffffffb3;
  padding: 5px 10px; margin-left: 14px;
  border: 1px solid #ffffff3d; border-radius: var(--pill);
  line-height: 1;
}

.nav__actions { display: flex; align-items: center; gap: 14px; }

.nav__burger {
  display: none;
  width: 40px; height: 40px; padding: 0;
  background: none; border: 0; cursor: pointer;
  flex-direction: column; align-items: center; justify-content: center; gap: 5px;
}
.nav__burger span {
  display: block; width: 20px; height: 1.5px; background: #fff;
  transition: transform .3s ease, opacity .3s ease;
}
.nav__burger[aria-expanded="true"] span:first-child { transform: translateY(3.25px) rotate(45deg); }
.nav__burger[aria-expanded="true"] span:last-child  { transform: translateY(-3.25px) rotate(-45deg); }

/* ═══════════════════════ BUTTONS ═══════════════════════ */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  height: 48px; padding-inline: 24px;
  border-radius: var(--pill);
  font-family: var(--sans); font-size: 15px; font-weight: var(--w-bold);
  letter-spacing: -0.005em; white-space: nowrap;
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform .2s cubic-bezier(.4,0,.2,1), background .2s ease, color .2s ease, border-color .2s ease;
}
.btn--sm { height: 38px; padding-inline: 18px; font-size: 14px; }
.btn--lg { height: 56px; padding-inline: 32px; font-size: 16px; }

.btn--primary { background: #fff; color: var(--plum); }
.btn--primary:hover { background: var(--stone-150); transform: translateY(-1px); }

.btn--ghost { background: transparent; color: #fff; border-color: #ffffff40; }
.btn--ghost:hover { border-color: #fff; background: #ffffff14; transform: translateY(-1px); }

/* On light sections the primary flips to plum */
.section--light .btn--primary,
.section--stone .btn--primary { background: var(--plum); color: #fff; }
.section--light .btn--primary:hover,
.section--stone .btn--primary:hover { background: var(--ink-900); }

/* ═══════════════════════ LIGHT-STREAK MOTIF ═══════════════════════
   Recreates the Currence long-exposure hero photography in pure CSS,
   skewed to echo the slant of the bolt logomark.                     */
.streaks {
  position: absolute; inset: -10% -20%;
  transform: skewX(-9deg) scale(1.05);
  opacity: .62;
  background-image:
    repeating-linear-gradient(90deg, transparent 0 5px, #9fd0dedb 5px 6.5px, transparent 6.5px 17px),
    repeating-linear-gradient(90deg, transparent 0 13px, #48cae4b3 13px 14.5px, transparent 14.5px 41px),
    repeating-linear-gradient(90deg, transparent 0 29px, #e4572ea6 29px 31px, transparent 31px 73px),
    repeating-linear-gradient(90deg, transparent 0 53px, #f15a3080 53px 55px, transparent 55px 131px),
    repeating-linear-gradient(90deg, transparent 0 97px, #ffffff8c 97px 99px, transparent 99px 211px);
  -webkit-mask-image: linear-gradient(180deg, transparent 4%, #000 34%, #000 74%, transparent 96%);
  mask-image: linear-gradient(180deg, transparent 4%, #000 34%, #000 74%, transparent 96%);
  filter: blur(.5px);
}

/* ═══════════════════════ HERO ═══════════════════════ */
.hero {
  position: relative;
  display: flex; flex-direction: column; justify-content: center;
  padding: calc(var(--nav-h) + clamp(48px, 7vw, 96px)) var(--gut) clamp(56px, 7vw, 92px);
  color: #fff;
  overflow: hidden;
}
/* Layered to match the artwork: green across the top, blue up the left and
   along the bottom, teal glowing out of the bottom-right corner. */
.hero__bg {
  position: absolute; inset: 0;
  background:
    radial-gradient(58% 126% at 114% 90%, #18e8b4 0%, #15cc9c 26%, #16a67e 50%, rgba(22,166,126,0) 74%),
    radial-gradient(78% 122% at -10% 84%, #26497f 0%, #235287 42%, rgba(35,82,135,0) 76%),
    radial-gradient(110% 52% at 34% 114%, #22548a 0%, rgba(34,84,138,0) 72%),
    linear-gradient(162deg, #167859 0%, var(--kg-green) 34%, #147279 70%, #1f5484 100%);
}

.hero__inner {
  position: relative;
  width: 100%; max-width: var(--wrap); margin-inline: auto;
}

.hero__title {
  font-family: var(--display);
  font-size: clamp(3rem, 10.6vw, 8.8rem);
  font-weight: 700;
  letter-spacing: -0.035em;
  line-height: .95;
  margin-bottom: clamp(24px, 3vw, 40px);
}
.hero__title span { display: block; }

/* Oversized logomark paired with the date, as in the artwork */
.hero__lockup {
  display: flex; align-items: center; gap: clamp(20px, 3.4vw, 46px);
  margin-bottom: clamp(28px, 3.6vw, 44px);
}
.hero__bolt { width: auto; height: clamp(84px, 11.5vw, 168px); flex: none; }
.hero__when { font-family: var(--display); }
.hero__date, .hero__time {
  font-size: clamp(1.15rem, 2.5vw, 1.95rem);
  font-weight: 700; letter-spacing: -0.02em; line-height: 1.18;
}
.hero__place {
  font-family: var(--sans);
  font-size: clamp(.9rem, 1.4vw, 1.05rem);
  color: #ffffffc4;
  margin-top: 10px;
}

.hero__theme {
  font-family: var(--serif);
  text-wrap: balance;
  font-size: clamp(1.15rem, 2.4vw, 1.85rem);
  font-weight: 300; line-height: 1.3; letter-spacing: -0.015em;
  color: #ffffffe0;
  max-width: 24ch;
  margin-bottom: clamp(28px, 3.6vw, 40px);
}
.hero__theme em { color: #fff; }

.hero__cta { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: clamp(40px, 5.5vw, 68px); }

/* Sponsor tiers, using the artwork's own labels. Stacked vertically: each
   tier under the last, each logo on its own line. */
.hero__partners {
  display: flex; flex-direction: column; gap: clamp(24px, 3vw, 34px);
  padding-top: clamp(22px, 3vw, 30px);
  border-top: 1px solid #ffffff33;
}
.tier__label {
  font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: #ffffff9e; margin-bottom: 14px;
}
/* Tiers stack; the marks within a tier sit in a row and wrap on narrow screens. */
.tier__marks {
  display: flex; flex-wrap: wrap; align-items: center;
  gap: 18px clamp(28px, 4vw, 54px);
}

/* Heights are tuned per mark rather than shared: these lockups run from 1.3:1
   (AWS) to 3.2:1 (Edison), so a single height would leave them optically
   unequal. Widths follow from each viewBox. */
.mark { display: block; width: auto; }
/* Sized for equal optical weight, not equal height. These lockups run from
   1.3:1 (AWS) to 3.2:1 (Edison); matching heights leaves AWS looking half the
   size of the wordmarks. Heights come from blending equal-bounding-box-area
   with equal-height, so the compact AWS mark sits ~25% taller than the
   wordmarks beside it. HSBC stays larger again as the senior tier. */
.mark--hsbc    { height: clamp(46px, 5.6vw, 62px); }
.mark--edison  { height: clamp(32px, 3.9vw, 44px); }
.mark--sabanci { height: clamp(32px, 3.9vw, 44px); }
.mark--aws     { height: clamp(40px, 4.9vw, 55px); }

.hero__scroll {
  position: absolute; left: 50%; bottom: 22px; translate: -50% 0;
  width: 26px; height: 42px; border: 1px solid #ffffff40; border-radius: var(--pill);
  display: grid; place-items: center;
}
.hero__scroll span {
  width: 3px; height: 3px; border-radius: 50%; background: #fff;
  animation: scrollDot 1.9s ease-in-out infinite;
}
@keyframes scrollDot {
  0%, 100% { transform: translateY(-7px); opacity: 0; }
  35%      { opacity: 1; }
  70%      { transform: translateY(7px); opacity: 0; }
}

/* ═══════════════════════ FOOTER SPONSOR ROW ═══════════════════════ */
.partners__label {
  font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--ink-600); margin-bottom: 12px;
}
.partners__row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 26px; }
.partners__label--stacked { margin-top: 22px; }
.partner__mark { font-size: 15px; letter-spacing: -0.01em; }
.partner img { max-height: 24px; width: auto; object-fit: contain; }

/* ═══════════════════════ SECTIONS ═══════════════════════ */
.section {
  position: relative;
  padding: clamp(72px, 10vw, 132px) 0;
  scroll-margin-top: var(--nav-h);
}
.section--light { background: var(--off-white); }
.section--stone { background: var(--stone-100); }
.section--dark  { background: var(--plum); color: #ffffffd9; overflow: hidden; }

.eyebrow {
  font-size: 11.5px; letter-spacing: .18em; text-transform: uppercase;
  color: var(--ink-600); margin-bottom: 20px;
}
.eyebrow--light { color: #ffffff8c; }

/* Section permalinks — hover reveals a # so a direct link is copyable */
.anchor-link {
  display: inline-flex; align-items: baseline; gap: 6px;
  color: inherit;
}
.anchor-link__hash {
  opacity: 0; transform: translateX(-3px);
  transition: opacity .18s ease, transform .18s ease;
}
.anchor-link:hover .anchor-link__hash,
.anchor-link:focus-visible .anchor-link__hash { opacity: .65; transform: none; }
.anchor-link:hover { color: var(--plum); }
.eyebrow--light .anchor-link:hover { color: #fff; }
/* When a section label stands alone (no headline under it), drop the gap
   that was there to separate it from the h2. */
.sec-head > div > .eyebrow:only-child { margin-bottom: 0; }

.h2 {
  font-size: clamp(1.85rem, 4.4vw, 3.1rem);
  text-wrap: balance;
  color: var(--plum);
  max-width: 20ch;
}
.h2--light { color: #fff; }
.h2--lead { max-width: 24ch; margin-bottom: clamp(36px, 5vw, 56px); }

.sec-head {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between;
  gap: 20px 40px;
  margin-bottom: clamp(40px, 5.5vw, 64px);
  padding-bottom: 28px;
  border-bottom: 1px solid var(--stone-150);
}
.section--dark .sec-head { border-bottom-color: #ffffff26; }
/* Agenda only. Every row already carries its own top padding, so any margin
   here double-counts on the first row and leaves breakfast sitting far lower
   than the breaks below it. Zero it and the first row matches the rest.
   Scoped so Speakers and Venue keep their spacing. */
#agenda .sec-head { margin-bottom: 0; }
.sec-head__note {
  font-size: 14px; color: var(--ink-600); max-width: 30ch;
}
.section--dark .sec-head__note { color: #ffffff8c; }

/* ═══════════════════════ EVENT PROSE ═══════════════════════ */
.prose {
  max-width: 68ch;
  display: flex; flex-direction: column; gap: 22px;
  font-size: clamp(1rem, 1.6vw, 1.1rem);
  line-height: 1.68;
}
.prose__lead {
  font-family: var(--serif);
  text-wrap: balance;
  font-size: clamp(1.3rem, 2.6vw, 1.75rem);
  font-weight: 300; line-height: 1.35; letter-spacing: -0.01em;
  color: var(--plum);
}
.prose__kicker {
  font-family: var(--serif);
  font-size: clamp(1.2rem, 2.3vw, 1.6rem);
  font-style: italic; font-weight: 300;
  color: var(--plum);
  padding-top: 8px;
}

/* Event details block */
.details {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 1px;
  margin-top: clamp(48px, 6vw, 72px);
  background: var(--stone-150);
  border: 1px solid var(--stone-150);
  border-radius: var(--r-lg);
  overflow: hidden;
}
.detail { background: var(--off-white); padding: 26px 24px; }
.section--stone .detail { background: var(--stone-100); }
.detail__k {
  font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: var(--ink-600); margin-bottom: 10px;
}
.detail__v {
  font-size: 16.5px; font-weight: var(--w-bold); color: var(--plum); line-height: 1.35;
}

/* ═══════════════════════ SPEAKERS ═══════════════════════ */
.speakers {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: clamp(20px, 2.6vw, 32px);
}
.spk {
  background: #fff;
  border: 1px solid var(--stone-150);
  border-radius: var(--r-lg);
  padding: 20px 20px 24px;
  transition: transform .28s cubic-bezier(.4,0,.2,1), box-shadow .28s ease;
}
.spk:hover {
  transform: translateY(-3px);
  box-shadow: 0 14px 34px -18px #281a2352;
}
/* Monogram placeholder: a cohesive plum set with a low-key brand sheen,
   so a wall of 16 reads as one considered system rather than 16 loud tiles.
   Swapping in a headshot <img> covers it entirely. */
.spk__photo {
  position: relative;
  display: grid; place-items: center;
  aspect-ratio: 1;
  margin-bottom: 18px;
  border-radius: var(--r-md);
  overflow: hidden;
  background: var(--plum);
}
.spk__photo::after {
  content: ""; position: absolute; inset: 0;
  background: var(--bolt-gradient);
  opacity: .26;
}
.spk__photo img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; z-index: 2; }
.spk__photo img ~ .spk__mono { display: none; }
.spk__mono {
  position: relative; z-index: 1;
  font-size: clamp(1.6rem, 3.4vw, 2.1rem);
  font-weight: var(--w-light);
  letter-spacing: -0.02em;
  color: #fff;
}
/* Shift the sheen angle in a slow cycle — variety without noise */
.spk:nth-child(3n+2) .spk__photo::after { background: linear-gradient(200deg, var(--grad-warm), var(--grad-cool)); }
.spk:nth-child(3n+3) .spk__photo::after { background: linear-gradient(40deg, var(--grad-cool), var(--grad-warm)); }
.spk:hover .spk__photo::after { opacity: .38; transition: opacity .3s ease; }

.spk__name {
  font-size: 18px; font-weight: var(--w-bold); letter-spacing: -0.02em;
  color: var(--plum); margin-bottom: 6px;
}
.spk__role { font-size: 13.5px; line-height: 1.45; color: var(--ink-850); }
.spk__role:empty { display: none; }
.spk__org {
  font-size: 13.5px; font-weight: var(--w-bold); color: var(--ink-600);
  margin-top: 2px;
}

.spk--tba { background: transparent; border-style: dashed; border-color: var(--stone-200); }
.spk--tba:hover { transform: none; box-shadow: none; }
.spk__photo--tba {
  background: transparent;
  border: 1px dashed var(--stone-200);
  color: var(--ink-600);
}
.spk__photo--tba::after { display: none; }
.spk__photo--tba svg { width: 30px; height: 30px; fill: none; }

/* ═══════════════════════ AGENDA ═══════════════════════ */
/* No top rule: .sec-head already draws one, and the gap between the two
   read as an empty row. The last row drops its rule so the list ends clean. */
.agenda > li:last-child { border-bottom: 0; }
.ag {
  display: grid;
  grid-template-columns: 152px 1fr;
  gap: 8px 32px;
  padding: 26px 0;
  border-bottom: 1px solid var(--stone-150);
  position: relative;
}
.ag__time {
  font-size: 13.5px; font-weight: var(--w-bold);
  letter-spacing: .01em;
  color: var(--plum);
  padding-top: 3px;
  font-variant-numeric: tabular-nums;
}
.ag__title {
  font-size: clamp(1.05rem, 2vw, 1.3rem);
  text-wrap: pretty;
  font-weight: var(--w-body);
  letter-spacing: -0.02em; line-height: 1.28;
  color: var(--plum);
  max-width: 40ch;
}
.ag__title em { font-family: var(--serif); font-size: 1.02em; }
.ag__desc {
  font-size: 15px; line-height: 1.6; color: var(--ink-850);
  max-width: 62ch; margin-top: 10px;
}

.ag__people { display: flex; flex-direction: column; gap: 4px; margin-top: 14px; }
.ag__people li { font-size: 14px; line-height: 1.45; }
.ag__people b { font-weight: var(--w-bold); color: var(--plum); }
.ag__people span { color: var(--ink-600); }
.ag__people b::after { content: " ·"; color: var(--stone-200); }
.ag__people span:empty { display: none; }
.ag__people li:has(span:empty) b::after { content: none; }

.ag__tracks { display: flex; flex-direction: column; gap: 10px; margin-top: 16px; }
/* Breakouts now carry a name plus several participant lines, so each track is
   a block rather than a single row. */
.ag__tracks li {
  padding: 14px 18px;
  background: var(--stone-100);
  border-radius: var(--r-md);
  border-left: 2px solid transparent;
  border-image: var(--bolt-gradient) 1;
  border-top: 0; border-right: 0; border-bottom: 0;
}
.ag__track-name {
  font-size: 15px; font-weight: var(--w-bold); letter-spacing: -0.01em;
  color: var(--plum);
  margin-bottom: 8px;
}
.ag__track-name i {
  font-style: normal;
  font-size: 10px; letter-spacing: .12em; text-transform: uppercase;
  color: var(--ink-600);
  border: 1px solid var(--stone-200); border-radius: var(--pill);
  padding: 3px 9px; margin-left: 8px;
  white-space: nowrap;
}
.ag__track-line {
  font-size: 13.5px; line-height: 1.5; color: var(--ink-850);
  margin-top: 3px;
}
.ag__track-line b {
  font-weight: var(--w-bold); color: var(--plum);
  font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase;
}
.ag__track-line b::after { content: " ·"; color: var(--stone-200); }

/* Breaks / meals recede */
.ag--break { padding: 16px 0; }
.ag--break .ag__title {
  font-size: 14.5px; font-weight: var(--w-body);
  letter-spacing: .02em; color: var(--ink-600);
}
.ag--break .ag__time { color: var(--ink-600); font-weight: var(--w-body); }

/* The playbook reveal is the payoff of the day */
.ag--feature { background: linear-gradient(90deg, #e4572e0a, transparent 62%); }
.ag--feature .ag__title { font-weight: var(--w-bold); }



/* ═══════════════════════ VENUE ═══════════════════════ */
/* Atmospheric echo of the hero, not a repeat of it — sits low and fades
   out before the section edge so it never cuts off hard. */
.streaks--venue {
  position: absolute; inset: auto -20% 0 -20%; height: 76%;
  opacity: .17;
  transform: skewX(-9deg);
  filter: blur(1px);
  pointer-events: none;
}
.section--dark .wrap { position: relative; z-index: 1; }

.venue {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(32px, 5vw, 80px);
  align-items: start;
}
.venue__desc {
  font-family: var(--serif);
  font-size: clamp(1.15rem, 2.2vw, 1.5rem);
  font-weight: 300; line-height: 1.4; letter-spacing: -0.01em;
  color: #fff;
  margin-bottom: 30px;
}
.venue__facts { display: flex; flex-direction: column; gap: 28px; }
.venue__facts dt {
  font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: #ffffff8c; margin-bottom: 9px;
}
.venue__facts dd { font-size: 16px; line-height: 1.55; color: #ffffffdb; }
.venue__facts .muted { color: #ffffff80; font-size: 14.5px; }

.subway {
  display: inline-grid; place-items: center;
  width: 21px; height: 21px; border-radius: 50%;
  background: #b933ad; color: #fff;
  font-size: 12px; font-weight: var(--w-mid);
  vertical-align: -4px;
}


.floorplan {
  margin-top: clamp(40px, 5vw, 64px);
  padding: 24px 28px;
  border: 1px dashed #ffffff33;
  border-radius: var(--r-lg);
}
.floorplan__k {
  font-size: 11px; letter-spacing: .16em; text-transform: uppercase;
  color: #ffffff8c; margin-bottom: 8px;
}
.floorplan__v { font-size: 15px; color: #ffffffb3; }

/* ═══════════════════════ CTA ═══════════════════════ */
.cta {
  background: var(--plum);
  padding: clamp(72px, 10vw, 128px) 0;
  text-align: center;
  border-top: 1px solid #ffffff1a;
}
.cta__title {
  font-family: var(--serif);
  text-wrap: balance;
  font-size: clamp(1.8rem, 4.6vw, 3.4rem);
  font-weight: 300; line-height: 1.16; letter-spacing: -0.02em;
  color: #fff;
  max-width: 24ch; margin: 0 auto 20px;
}
.cta__sub {
  font-size: 15.5px; color: #ffffff99;
  margin-bottom: 38px;
}

/* ═══════════════════════ FOOTER ═══════════════════════ */
.footer { background: var(--plum-deep); color: #ffffffb3; padding-top: clamp(56px, 7vw, 80px); }
.footer__inner {
  display: flex; flex-wrap: wrap; justify-content: space-between;
  gap: 40px;
  padding-bottom: 48px;
}
.lockup--footer .lockup__logo { height: 27px; width: 208px; }
.footer__tag {
  font-family: var(--serif);
  font-size: 16px; font-weight: 300; color: #ffffff99;
  margin-top: 14px; max-width: 34ch;
  text-wrap: balance;
}
.footer__sponsors { min-width: 260px; }
.footer__sponsors .partners__label { color: #ffffff73; text-align: left; margin-bottom: 18px; }
.partners__row--footer { justify-content: flex-start; gap: 14px 28px; max-width: none; }
.partners__row--footer .partner__mark { font-size: 15px; color: #ffffffcc; font-weight: var(--w-body); }

.footer__base {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
  gap: 14px 28px;
  padding-block: 22px;
  border-top: 1px solid #ffffff1a;
  font-size: 13.5px; color: #ffffff80;
}
.footer__links { display: flex; flex-wrap: wrap; gap: 22px; }
.footer__links a { transition: color .2s ease; }
.footer__links a:hover { color: #fff; }

/* ═══════════════════════ REVEAL ON SCROLL ═══════════════════════ */
.reveal { opacity: 0; transform: translateY(18px); }
.reveal.is-in {
  opacity: 1; transform: none;
  transition: opacity .7s cubic-bezier(.2,0,.2,1), transform .7s cubic-bezier(.2,0,.2,1);
}
@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; }
}

/* ═══════════════════════ RESPONSIVE ═══════════════════════ */
@media (max-width: 980px) {
  .venue { grid-template-columns: 1fr; }
    }

@media (max-width: 820px) {
  .nav__burger { display: flex; }
  .nav__links {
    position: fixed; inset: var(--nav-h) 0 auto 0;
    flex-direction: column; gap: 0;
    background: var(--plum);
    border-bottom: 1px solid #ffffff1f;
    box-shadow: 0 24px 48px -24px #00000080;
    padding: 8px var(--gut) 22px;
    margin-left: 0;
    transform: translateY(-12px);
    opacity: 0; visibility: hidden; pointer-events: none;
    transition: opacity .25s ease, transform .25s ease, visibility .25s;
  }
  .nav__links.is-open { opacity: 1; visibility: visible; transform: none; pointer-events: auto; }
  .nav__links a {
    font-size: 19px; padding: 15px 0;
    border-bottom: 1px solid #ffffff14;
  }
  .nav__links a::after { display: none; }
  .nav.is-menu-open {
    background: var(--plum);
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }
  .nav__inner { gap: 12px; }
  .nav__actions { margin-left: auto; }
}

@media (max-width: 700px) {
  body { font-size: 16px; }
  .hero { min-height: auto; padding-top: calc(var(--nav-h) + 56px); padding-bottom: 80px; }
  .hero__theme { max-width: none; }
  .hero__meta { flex-direction: column; }
  .hero__meta > div {
    border-right: 0; border-bottom: 1px solid #ffffff1a;
    margin-right: 0; padding: 14px 0;
  }
  .hero__meta > div:last-child { border-bottom: 0; }
  .hero__cta .btn { flex: 1 1 100%; }
  .hero__scroll { display: none; }

  .ag { grid-template-columns: 1fr; gap: 6px; }
  .ag__time { padding-top: 0; }
  .ag__tracks li { padding: 12px 14px; }

  .speakers { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 14px; }
  .spk { padding: 14px 14px 18px; }
  .spk__name { font-size: 16px; }
  .spk__role, .spk__org { font-size: 12.5px; }

    .btn--sm { padding-inline: 14px; font-size: 13px; }

  .partners__row { gap: 18px 30px; }
}

@media (max-width: 420px) {
  .lockup__logo { height: 18px; width: 139px; }
  /* Logo + CTA + burger already fill the bar at this width */
  .nav__nycw { display: none; }
  .nav__links { --gut: 20px; }
}
