/* Fonts are self-hosted (SIL Open Font License): Big Shoulders Display and
   Rubik, variable, Latin and Latin Extended. No request leaves gaisb.ai for type. */
@font-face{font-family:'Big Shoulders Display';font-style:normal;font-weight:600 900;font-display:swap;src:url(fonts/big-shoulders-display-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Big Shoulders Display';font-style:normal;font-weight:600 900;font-display:swap;src:url(fonts/big-shoulders-display-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Rubik';font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/rubik-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Rubik';font-style:normal;font-weight:400 800;font-display:swap;src:url(fonts/rubik-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}

/* ============================================================
   GAISB AI World Summit 2027 — shared stylesheet
   Structure and visual system modelled on ai4.io.
   Loaded by index.html, speakers.html, agenda.html.
   ============================================================ */

/* ---------- tokens ---------- */
:root{
  --navy:#141138;         /* ground: header, stat card, footer, save-the-date */
  --navy-2:#1D1950;
  --navy-3:#262061;
  --violet:#6D3BF5;       /* primary action */
  --violet-2:#5E2DE3;     /* pressed / borders */
  --violet-lt:#7776EC;    /* links, speaker names */
  --violet-soft:#EFEBFE;  /* tinted fills */
  --peach:#FFBB7F;        /* eyebrow on dark grounds */
  --gold:#D9B65C;         /* GAISB mark; rules and accents */

  /* Caribbean accents. Not decoration for its own sake: the sweep runs sea
     to sunset, so aqua and coral sit either side of the violet we already
     own. Used only on rules, dividers and gradient borders, never on text. */
  --aqua:#2FD3C0;         /* the water off the north coast */
  --coral:#FF5E7A;        /* flamboyant, hibiscus, bougainvillea */
  --carib-v:linear-gradient(180deg,var(--aqua) 0,var(--violet-lt) 42%,var(--coral) 76%,var(--gold) 100%);
  --carib-h:linear-gradient(90deg,var(--aqua) 0,var(--violet) 34%,var(--coral) 70%,var(--gold) 100%);
  --carib-d:linear-gradient(135deg,var(--aqua) 0,var(--violet) 38%,var(--coral) 74%,var(--gold) 100%);

  --cream:#F9F4EF;        /* primary light section */
  --cream-2:#F7F2ED;
  --white:#FFFFFF;

  --ink:#141138;
  --ink-2:#565175;
  --ink-3:#6A6688;  /* 5.4:1 on white, 5.0:1 on cream (WCAG AA) */
  --on-dark:#EFEDF7;
  --on-dark-2:#A6A2C4;
  --hair:rgba(20,17,56,.12);

  --maxw:1560px;   /* was 1200; the frame now sits near the screen edge on laptops, as TOKEN2049 does */
  --pad:clamp(20px,4vw,56px);
  --head-h:96px;
  --tick-h:38px;
  --r:12px;
  /* Display face for the page headlines and the event lockup only. Rubik
     stays for every paragraph, button, menu and card. */
  --display:"Big Shoulders Display",Rubik,sans-serif;
  --ease:cubic-bezier(.22,.8,.3,1);
}

/* ---------- base ---------- */
*{box-sizing:border-box}
/* overflow-x:clip, not hidden. `hidden` turns the element into a scroll
   container, which strands window.scrollY at 0 and kills every scroll-driven
   behavior on the page. `clip` crops without creating that container. */
html{scroll-behavior:smooth;overflow-x:clip}
body{
  margin:0;background:var(--white);color:var(--ink);
  font-family:Rubik,"Helvetica Neue",Helvetica,Arial,sans-serif;
  font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;
  overflow-x:clip;text-rendering:optimizeLegibility;
}
/* height:auto is mandatory alongside max-width:100% once images carry
   width/height attributes, or the attribute height holds while CSS
   shrinks the width and the image stretches vertically */
img{max-width:100%;height:auto;display:block}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4{font-family:Rubik,sans-serif;font-weight:700;letter-spacing:-.015em;line-height:1.08;margin:0;text-wrap:balance}
p{margin:0 0 1em}
p:last-child{margin-bottom:0}
:focus-visible{outline:3px solid var(--violet);outline-offset:3px;border-radius:4px}
.hero :focus-visible,.venue :focus-visible,.savedate :focus-visible,
.site-head :focus-visible,footer :focus-visible,.drawer :focus-visible{outline-color:var(--peach)}

.wrap{max-width:var(--maxw);margin:0 auto;padding-inline:var(--pad);width:100%}
section{position:relative;scroll-margin-top:calc(var(--head-h) + var(--tick-h) + 8px)}
.pad{padding-block:clamp(72px,8vw,112px)}
.center{text-align:center}
.sec-h{font-family:var(--display);font-weight:900;font-size:clamp(33px,4.6vw,53px);letter-spacing:.005em;line-height:.96;text-transform:uppercase;color:var(--navy)}
.sec-sub{color:var(--ink-2);font-size:16.5px;max-width:70ch;margin:16px auto 0}
.eyebrow{font-size:12px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3);margin:0 0 14px}
.visually-hidden{
  position:absolute;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.skip{
  position:fixed;top:8px;left:8px;z-index:200;transform:translateY(-160%);
  background:var(--violet);color:#fff;padding:12px 22px;border-radius:8px;font-weight:600;
  transition:transform .2s var(--ease);
}
.skip:focus{transform:translateY(0)}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:14px 32px;border-radius:1000px;font-weight:500;font-size:16px;font-family:inherit;
  background:var(--violet);color:#fff;border:1.5px solid var(--violet);cursor:pointer;
  transition:background .18s var(--ease),border-color .18s var(--ease),transform .18s var(--ease),box-shadow .18s var(--ease);
  white-space:nowrap;
}
.btn:hover{background:var(--violet-2);border-color:var(--violet-2);transform:translateY(-2px);box-shadow:0 12px 30px rgba(109,59,245,.32)}
.btn:active{transform:translateY(0)}
.btn-ghost{background:transparent;color:#fff;border-color:rgba(255,255,255,.45)}
.btn-ghost:hover{background:rgba(255,255,255,.12);border-color:#fff;box-shadow:none}
.btn-outline{background:transparent;color:var(--violet);border-color:var(--violet)}
.btn-outline:hover{background:var(--violet);color:#fff;box-shadow:none}
.btn-sm{padding:10px 24px;font-size:15px}

/* ---------- scroll progress ---------- */
.progress{
  position:fixed;top:0;left:0;height:3px;width:100%;z-index:130;transform-origin:0 50%;
  transform:scaleX(0);background:var(--carib-h);
}

/* ---------- reveal on scroll ---------- */
.js .rv{opacity:0;transform:translateY(22px);transition:opacity .7s var(--ease),transform .7s var(--ease)}
.js .rv.in{opacity:1;transform:none}
.rv-d1{transition-delay:.07s}
.rv-d2{transition-delay:.14s}
.rv-d3{transition-delay:.21s}
.rv-d4{transition-delay:.28s}

/* ---------- circuit motif ---------- */
.circuit{
  position:absolute;left:0;right:0;height:190px;pointer-events:none;opacity:.55;
  background-repeat:repeat-x;background-size:auto 190px;
}
.circuit.bottom{bottom:0;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='190' fill='none' stroke='%236D3BF5' stroke-width='1.4' stroke-opacity='.34'%3E%3Cpath d='M10 190v-52h34v-30M60 190v-84h40v-26M110 190v-40M150 190v-66h44v-34M210 190v-52M250 190v-96h38v-28M300 190v-44h34v-38M360 190v-72h40v-30M400 190v-40'/%3E%3Cg fill='%236D3BF5' fill-opacity='.5' stroke='none'%3E%3Ccircle cx='44' cy='108' r='4'/%3E%3Ccircle cx='100' cy='80' r='4'/%3E%3Ccircle cx='110' cy='150' r='4'/%3E%3Ccircle cx='194' cy='90' r='4'/%3E%3Ccircle cx='210' cy='138' r='4'/%3E%3Ccircle cx='288' cy='66' r='4'/%3E%3Ccircle cx='334' cy='108' r='4'/%3E%3Ccircle cx='400' cy='88' r='4'/%3E%3C/g%3E%3C/svg%3E");
}
.circuit.top{top:0;transform:scaleY(-1);
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='420' height='190' fill='none' stroke='%236D3BF5' stroke-width='1.4' stroke-opacity='.22'%3E%3Cpath d='M20 190v-60h38v-34M80 190v-90M130 190v-46h40v-40M190 190v-70M240 190v-52h36v-32M300 190v-88h42v-26M370 190v-50h34v-36'/%3E%3Cg fill='%236D3BF5' fill-opacity='.34' stroke='none'%3E%3Ccircle cx='58' cy='96' r='4'/%3E%3Ccircle cx='80' cy='100' r='4'/%3E%3Ccircle cx='170' cy='104' r='4'/%3E%3Ccircle cx='276' cy='106' r='4'/%3E%3Ccircle cx='342' cy='76' r='4'/%3E%3Ccircle cx='404' cy='104' r='4'/%3E%3C/g%3E%3C/svg%3E");
}

/* ---------- ticker ---------- */
.ticker{
  height:var(--tick-h);background:var(--navy);color:var(--on-dark);
  display:flex;align-items:center;overflow:hidden;position:fixed;top:0;left:0;right:0;z-index:120;
  font-size:13.5px;border-bottom:1px solid rgba(255,255,255,.09);
}
.ticker-track{display:flex;white-space:nowrap;animation:tick 52s linear infinite;will-change:transform}
.ticker:hover .ticker-track,.ticker:focus-within .ticker-track{animation-play-state:paused}
.ticker-track span{padding:0 24px;border-right:1px solid rgba(255,255,255,.14);display:inline-flex;align-items:center;gap:7px}
.ticker-track a{color:var(--peach);font-weight:600;text-decoration:underline;text-underline-offset:3px}
@keyframes tick{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- header ---------- */
.site-head{
  position:fixed;top:var(--tick-h);left:0;right:0;z-index:110;height:var(--head-h);
  display:flex;align-items:center;background:var(--navy);transition:box-shadow .25s var(--ease)
}
.site-head.solid{box-shadow:0 6px 30px rgba(0,0,0,.30)}
.head-in{display:flex;align-items:center;gap:24px;width:100%}
.brand{display:flex;align-items:center;flex:0 0 auto;text-decoration:none;color:#fff}
/* The header wordmark is the event, stacked the way an event poster reads.
   Two voices, the way TOKEN2049 does it: the organisation wide and geometric
   in Rubik, the event and the place condensed and heavy in the display face. */
/* Three lines, one face. GAISB carries the weight on line one (900 against
   the event's 700, the TOKEN/2049 contrast); the place line opens up its
   tracking; the date steps back in weight and opacity. */
.brand-lockup{display:flex;flex-direction:column;line-height:1;white-space:nowrap}
.brand-lockup b{display:flex;align-items:baseline;flex-wrap:wrap;gap:0 .32em;font-family:var(--display);font-weight:700;font-size:27px;letter-spacing:-.005em;text-transform:uppercase;color:#fff}
.brand-lockup .org{font:inherit;font-weight:900;color:inherit}
.brand-lockup i{font-family:var(--display);font-style:normal;font-weight:900;font-size:16.5px;letter-spacing:.10em;text-transform:uppercase;color:var(--peach);margin-top:3px}
.brand-lockup em{font-family:var(--display);font-style:normal;font-weight:600;font-size:12px;letter-spacing:.13em;text-transform:uppercase;color:rgba(255,255,255,.72);margin-top:4px}
/* Hidden at every width: the hero card carries the date and venue two hundred
   pixels below, and inner pages carry them in their own heroes. */
.brand-meta{display:none;border-left:2px solid var(--gold);padding-left:14px;line-height:1.35}
.brand-meta b{display:block;font-size:11.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--peach)}
.brand-meta span{display:block;font-size:10.5px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.72)}
nav.main{margin:0 auto;display:flex;align-items:center;gap:2px}
.nav-item{position:relative}
.nav-item>a{
  display:inline-flex;align-items:center;gap:7px;padding:11px 14px;
  color:#fff;font-size:15px;font-weight:500;transition:color .16s var(--ease);white-space:nowrap;
  position:relative;
}
.nav-item>a::after{
  content:"";position:absolute;left:14px;right:14px;bottom:4px;height:2px;border-radius:2px;
  background:var(--peach);transform:scaleX(0);transform-origin:0 50%;transition:transform .24s var(--ease);
}
.nav-item>a:hover{color:var(--peach)}
.nav-item.active>a{color:var(--peach)}
.nav-item.active>a::after{transform:scaleX(1)}
.caret{width:0;height:0;border-left:4.5px solid transparent;border-right:4.5px solid transparent;border-top:5.5px solid currentColor;transition:transform .2s var(--ease)}
.nav-item:hover .caret,.nav-item:focus-within .caret{transform:rotate(180deg)}
.dropdown{
  position:absolute;top:100%;left:50%;transform:translate(-50%,10px);min-width:236px;
  background:#fff;border-radius:var(--r);box-shadow:0 24px 60px rgba(20,17,56,.28);
  padding:9px;opacity:0;visibility:hidden;transition:.2s var(--ease);
}
.nav-item:hover .dropdown,.nav-item:focus-within .dropdown{opacity:1;visibility:visible;transform:translate(-50%,0)}
.dropdown a{display:block;padding:10px 14px;border-radius:8px;color:var(--ink);font-size:15px;font-weight:500}
.dropdown a:hover{background:var(--violet-soft);color:var(--violet-2)}
.burger{
  display:none;width:46px;height:46px;border-radius:50%;background:var(--navy-2);
  border:0;cursor:pointer;padding:0;place-items:center;flex:0 0 auto;
}
.burger i{display:block;width:20px;height:2.4px;border-radius:2px;background:#fff;margin:4px auto;transition:.25s var(--ease)}
.burger i:nth-child(2){background:var(--gold)}
.burger i:nth-child(3){background:var(--violet-lt)}
.burger.on i:nth-child(1){transform:translateY(6.4px) rotate(45deg)}
.burger.on i:nth-child(2){opacity:0}
.burger.on i:nth-child(3){transform:translateY(-6.4px) rotate(-45deg)}

.drawer{
  position:fixed;inset:calc(var(--tick-h) + var(--head-h)) 0 0 0;background:var(--navy);z-index:105;
  padding:20px var(--pad) 60px;overflow-y:auto;transform:translateX(100%);transition:transform .3s var(--ease);
  visibility:hidden;
}
.drawer.on{transform:translateX(0);visibility:visible}
.drawer details{border-bottom:1px solid rgba(255,255,255,.14)}
.drawer summary{list-style:none;cursor:pointer;padding:17px 0;color:#fff;font-size:18px;font-weight:600;display:flex;justify-content:space-between;align-items:center}
.drawer summary::-webkit-details-marker{display:none}
.drawer summary::after{content:"+";color:var(--peach);font-size:24px;font-weight:400;line-height:1}
.drawer details[open] summary::after{content:"–"}
.drawer .sub{padding-bottom:14px}
.drawer .sub a{display:block;padding:9px 0;color:var(--on-dark-2);font-size:16px}
.drawer .sub a:hover{color:var(--peach)}
.drawer>a.solo{display:block;padding:17px 0;color:#fff;font-size:18px;font-weight:600;border-bottom:1px solid rgba(255,255,255,.14)}
.drawer .btn{margin-top:26px;width:100%}

/* ---------- hero ---------- */
.hero{position:relative;min-height:clamp(560px,90vh,860px);display:flex;align-items:center;overflow:hidden;background:var(--navy)}
.hero video,.hero>img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,17,56,.86) 0%,rgba(20,17,56,.50) 30%,rgba(20,17,56,.62) 62%,rgba(20,17,56,.95) 100%),
             linear-gradient(90deg,rgba(20,17,56,.72) 0%,rgba(20,17,56,.10) 68%);
}
/* the ticker + header are 114px of fixed chrome; the top padding has to clear
   that before the headline starts, or the h1 sits flush against the nav */
.hero-in{position:relative;z-index:2;width:100%;padding-block:clamp(190px,24vh,250px) clamp(110px,14vh,160px)}
.hero h1{font-family:var(--display);font-size:clamp(46px,7.3vw,94px);font-weight:900;color:#fff;letter-spacing:-.005em;line-height:.94;text-transform:uppercase;max-width:14ch}
.hero h1 em{font-style:normal;color:var(--peach)}
.hero-sub{font-family:var(--display);font-weight:800;text-transform:uppercase;color:#fff;font-size:clamp(25px,3.3vw,44px);line-height:1;letter-spacing:.005em;margin:.42em 0 0;max-width:none}
/* hero five-word line — same lockup language as .hero-card .when */
.hero-words{
  margin-top:18px;font-family:Rubik,sans-serif;font-weight:600;
  font-size:clamp(15px,1.7vw,19px);letter-spacing:.14em;text-transform:uppercase;color:var(--peach);
}
.hero-lede{color:rgba(255,255,255,.82);font-size:clamp(16px,1.4vw,18.5px);max-width:58ch;margin-top:22px}
.hero-card{
  margin-top:clamp(26px,3.4vw,38px);display:inline-flex;flex-wrap:wrap;align-items:center;gap:clamp(18px,2.6vw,34px);
  /* Gradient edge, Caribbean sweep. The padding-box fill has to be close to
     opaque or the border-box gradient bleeds through and washes the card. */
  border:1.5px solid transparent;backdrop-filter:blur(12px);
  background:linear-gradient(rgba(20,17,56,.88),rgba(20,17,56,.88)) padding-box,var(--carib-d) border-box;
  border-radius:14px;padding:16px 18px 16px 24px;
}
.hero-card .when b{display:block;font-size:13.5px;font-weight:600;letter-spacing:.17em;text-transform:uppercase;color:var(--peach)}
.hero-card .when span{display:block;font-size:12.5px;letter-spacing:.15em;text-transform:uppercase;color:rgba(255,255,255,.84);margin-top:5px}
.hero-note{margin-top:18px;font-size:13.5px;color:rgba(255,255,255,.58)}

/* countdown strip inside the hero */
.countdown{display:flex;gap:10px;margin-top:26px;flex-wrap:wrap}
.cd-unit{
  min-width:78px;padding:12px 8px;border-radius:10px;text-align:center;
  background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.16);backdrop-filter:blur(10px);
}
.cd-unit b{display:block;font-size:26px;font-weight:700;color:#fff;line-height:1;font-variant-numeric:tabular-nums}
.cd-unit span{display:block;margin-top:6px;font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--peach)}

/* ---------- page hero (subpages) ---------- */
.page-hero{
  position:relative;background:var(--navy);color:#fff;overflow:hidden;
  padding-block:calc(var(--head-h) + var(--tick-h) + clamp(52px,7vw,82px)) clamp(56px,7vw,86px);
}
.page-hero>img.bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.30}
.page-hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,17,56,.92),rgba(20,17,56,.80) 60%,rgba(20,17,56,.97))}
.page-hero .wrap{position:relative;z-index:2}
.page-hero .eyebrow{color:var(--peach)}
.page-hero h1{font-family:var(--display);font-weight:900;font-size:clamp(39px,6vw,76px);letter-spacing:-.005em;line-height:.94;text-transform:uppercase;color:#fff;max-width:16ch}
.page-hero p{color:rgba(255,255,255,.80);max-width:62ch;margin-top:20px;font-size:17px}
.page-hero .btn-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.crumbs{font-size:13px;color:var(--on-dark-2);margin-bottom:16px;display:flex;gap:8px;align-items:center}
.crumbs a:hover{color:var(--peach)}
.crumbs span{opacity:.5}

/* ---------- floating stat card ---------- */
.stats-band{background:var(--cream);position:relative}
.stat-card{
  max-width:var(--maxw);margin:0 auto;transform:translateY(-58px);
  background:var(--navy);border-radius:18px;padding:clamp(26px,3.4vw,40px) clamp(18px,3vw,36px);
  /* a hairline of cool blue lifts the card off the hero without reading as a box */
  border:1px solid rgba(119,118,236,.30);
  box-shadow:0 0 0 1px rgba(119,118,236,.07), 0 30px 70px rgba(20,17,56,.30);
  display:grid;grid-template-columns:repeat(4,1fr);
}
.stat{position:relative;text-align:center;padding-inline:12px}
.stat::after{
  content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);
  width:2px;height:74px;border-radius:2px;background:var(--carib-v);
}
.stat:last-child::after{display:none}
.stat .n{font-size:clamp(34px,4.6vw,56px);font-weight:700;line-height:1;color:#fff;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.stat .l{margin-top:11px;font-size:11.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;color:var(--on-dark-2)}

/* ---------- community marquee ---------- */
.community{background:var(--cream);padding-bottom:clamp(56px,7vw,86px);overflow:hidden}
.community .kicker{text-align:center;font-size:13px;font-weight:600;letter-spacing:.30em;text-transform:uppercase;color:var(--ink-3);margin:0 0 30px}
.marq{overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.marq-track{display:flex;gap:12px;width:max-content;animation:marq 44s linear infinite}
.marq:hover .marq-track{animation-play-state:paused}
.marq-track.rev{animation-direction:reverse}
@keyframes marq{from{transform:translateX(0)}to{transform:translateX(-50%)}}
.chip{
  display:inline-flex;align-items:center;gap:9px;padding:13px 24px;border-radius:10px;
  background:#fff;border:1px solid var(--hair);color:var(--ink);font-size:14.5px;font-weight:500;white-space:nowrap;
}
.chip b{font-weight:700;letter-spacing:.09em;color:var(--violet);font-size:12.5px}

/* ---------- epicenter ---------- */
.epicenter{background:var(--cream-2);position:relative;overflow:hidden}
.epicenter .wrap{position:relative;z-index:1}
.split{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(34px,4.6vw,66px);align-items:center;margin-top:46px}
.split img{border-radius:var(--r);box-shadow:0 26px 60px rgba(20,17,56,.16)}
/* About page: the organizer card. The logo sits on navy, as in the header. */
.org-card{background:var(--navy);border-radius:var(--r);padding:clamp(28px,4vw,44px);box-shadow:0 26px 60px rgba(20,17,56,.16)}
.org-card img{width:min(100%,320px);height:auto;display:block;border-radius:0;box-shadow:none;margin-bottom:28px}
.org-card ul{list-style:none;margin:0;padding:0;display:grid;gap:14px}
.org-card li{padding-top:14px;border-top:1px solid rgba(255,255,255,.14)}
.org-card li b{display:block;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:11px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:var(--peach);margin-bottom:5px}
.org-card li span{display:block;font-size:14.5px;color:var(--on-dark-2);line-height:1.5}
/* light variant for partner logos drawn on white */
.org-card.light{background:#fff;border:1px solid rgba(20,17,56,.08)}
.org-card.light img{width:min(100%,240px);margin-inline:auto}
.org-card.light li{border-top-color:rgba(20,17,56,.1)}
.org-card.light li b{color:var(--violet-2)}
.org-card.light li span{color:var(--ink-2)}
.pull{margin-top:26px;padding:20px 24px;border-left:4px solid var(--violet);background:#fff;border-radius:0 var(--r) var(--r) 0}
.pull p{font-size:18px;font-weight:500;color:var(--navy);margin:0}
.mini{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:44px}
.mini div{background:#fff;border:1px solid var(--hair);border-radius:var(--r);padding:20px 22px;transition:.22s var(--ease)}
.mini div:hover{border-color:var(--violet);transform:translateY(-3px);box-shadow:0 14px 36px rgba(20,17,56,.09)}
.mini b{display:block;font-size:15px;color:var(--navy);margin-bottom:6px}
.mini p{font-size:14px;color:var(--ink-2);margin:0}

/* ---------- speaker rail + cards ---------- */
.speakers{background:var(--cream);position:relative;overflow:hidden}
.speakers .wrap{position:relative;z-index:1}
.spk-rail{display:flex;gap:20px;overflow-x:auto;scroll-snap-type:x mandatory;margin-top:44px;padding:4px 2px 16px;scrollbar-width:none}
.spk-rail::-webkit-scrollbar{display:none}
.spk{
  flex:0 0 clamp(210px,20vw,246px);scroll-snap-align:start;
  background:none;border:0;padding:0;font-family:inherit;text-align:left;cursor:pointer;color:inherit;
  /* a button is not a block container by default: without this the name and
     role escape the card box and overlap the row below in the grid layout */
  display:flex;flex-direction:column;align-items:stretch;
}
.spk .ph{display:block;width:100%;border-radius:10px;overflow:hidden;aspect-ratio:1/1;background:var(--navy);position:relative}
.spk .ph img{width:100%;height:100%;object-fit:cover;object-position:center 20%;transition:transform .5s var(--ease)}
/* The frame is a hairline that turns into the violet-to-gold gradient on hover. */
.spk .ph{padding:2px;background:linear-gradient(var(--hair),var(--hair)) padding-box,linear-gradient(135deg,var(--hair),var(--hair)) border-box;border:2px solid transparent;transition:background .3s var(--ease),transform .3s var(--ease),box-shadow .3s var(--ease)}
.spk .ph img{border-radius:7px}
.spk:hover .ph,.spk:focus-visible .ph{
  transform:translateY(-3px);box-shadow:0 18px 40px rgba(20,17,56,.16);
  background:linear-gradient(var(--navy),var(--navy)) padding-box,var(--carib-d) border-box;
}
/* Living portraits, the Ai4 treatment: a short muted clip sits behind the
   still and fades in under the pointer. The clip is only created on first
   hover (see site.js), so pages carry no video weight until someone asks. */
.spk .ph video{position:absolute;inset:2px;width:calc(100% - 4px);height:calc(100% - 4px);object-fit:cover;object-position:center 20%;border-radius:7px;opacity:0;transition:opacity .35s var(--ease);pointer-events:none}
.spk.is-live .ph video{opacity:1}
@media (prefers-reduced-motion:reduce){.spk .ph video{display:none}}
@media (prefers-reduced-motion:reduce){
  .spk .ph,.spk .ph img{transition:none}
  .spk:hover .ph,.spk:focus-visible .ph{transform:none}
}
.spk .ph::after{
  content:"View session";position:absolute;left:0;right:0;bottom:0;padding:11px 14px;
  background:linear-gradient(180deg,transparent,rgba(20,17,56,.92));color:#fff;font-size:13px;font-weight:600;
  opacity:0;transform:translateY(8px);transition:.28s var(--ease);
}
.spk:hover .ph img,.spk:focus-visible .ph img{transform:scale(1.05)}
.spk:hover .ph::after,.spk:focus-visible .ph::after{opacity:1;transform:none}
.spk h3{font-size:18px;font-weight:500;color:var(--violet-lt);margin:16px 0 7px;letter-spacing:-.005em}
.spk .role{font-size:15px;color:var(--ink);line-height:1.45;margin:0 0 9px}
.spk .org{font-size:15px;font-weight:700;color:var(--navy);margin:0}

.rail-wrap{position:relative}
.rail-btn{
  position:absolute;top:38%;width:48px;height:48px;border-radius:50%;border:0;cursor:pointer;
  background:#fff;box-shadow:0 8px 26px rgba(20,17,56,.20);display:grid;place-items:center;
  color:var(--navy);transition:.2s var(--ease);z-index:3;
}
.rail-btn:hover{background:var(--violet);color:#fff}
.rail-btn[disabled]{opacity:.32;cursor:default;box-shadow:none}
.rail-btn[disabled]:hover{background:#fff;color:var(--navy)}
.rail-btn svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.4}
.rail-btn.prev{left:-22px}
.rail-btn.next{right:-22px}

/* ---------- speaker detail sheet ---------- */
.sheet-veil{
  position:fixed;inset:0;z-index:150;background:rgba(12,10,32,.62);backdrop-filter:blur(4px);
  opacity:0;visibility:hidden;transition:.3s var(--ease);
}
.sheet-veil.on{opacity:1;visibility:visible}
.sheet{
  position:fixed;top:0;right:0;bottom:0;z-index:151;width:min(520px,100%);
  background:#fff;box-shadow:-30px 0 80px rgba(12,10,32,.36);
  transform:translateX(100%);transition:transform .36s var(--ease);
  display:flex;flex-direction:column;overflow-y:auto;
}
.sheet.on{transform:none}
.sheet-close{
  position:absolute;top:18px;right:18px;width:44px;height:44px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(255,255,255,.92);color:var(--navy);display:grid;place-items:center;transition:.2s var(--ease);z-index:2;
}
.sheet-close:hover{background:var(--violet);color:#fff}
.sheet-close svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2.6}
.sheet-ph{aspect-ratio:16/11;background:var(--navy);overflow:hidden;flex:0 0 auto}
.sheet-ph img{width:100%;height:100%;object-fit:cover;object-position:center 18%}
.sheet-body{padding:clamp(24px,4vw,34px)}
.sheet-body .flag{
  display:inline-flex;align-items:center;gap:8px;font-size:11.5px;font-weight:700;letter-spacing:.16em;
  text-transform:uppercase;color:var(--violet);background:var(--violet-soft);padding:7px 13px;border-radius:1000px;
}
.sheet-body h2{font-size:clamp(26px,3.4vw,34px);color:var(--navy);margin:16px 0 8px}
.sheet-body .role{font-size:16px;color:var(--ink-2);margin:0 0 4px}
.sheet-body .org{font-size:16px;font-weight:700;color:var(--navy);margin:0}
.sheet-sess{margin-top:26px;padding-top:24px;border-top:1px solid var(--hair)}
.sheet-sess .lbl{font-size:11.5px;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin-bottom:10px}
.sheet-sess h3{font-size:20px;color:var(--navy);margin-bottom:12px}
.sheet-sess p{font-size:15.5px;color:var(--ink-2)}
.sheet-meta{display:flex;gap:10px;flex-wrap:wrap;margin-top:20px}
.sheet-meta span{
  font-size:13px;font-weight:500;color:var(--ink-2);background:var(--cream-2);
  border:1px solid var(--hair);padding:8px 14px;border-radius:1000px;
}
.sheet-foot{margin-top:28px;display:flex;gap:11px;flex-wrap:wrap}
.sheet-note{margin-top:22px;font-size:13px;color:var(--ink-3)}

/* ---------- tracks ---------- */
.tracks{background:var(--cream-2)}
.track-layout{display:grid;grid-template-columns:330px 1fr;gap:clamp(28px,4vw,56px);margin-top:46px;align-items:start}
.tab-list{display:grid;gap:12px}
.tab{
  display:flex;align-items:center;justify-content:space-between;gap:14px;width:100%;
  padding:17px 22px;border-radius:10px;border:1.5px solid var(--violet);background:#fff;
  color:var(--violet-2);font-family:inherit;font-size:16px;font-weight:600;cursor:pointer;
  text-align:left;transition:.2s var(--ease);
}
.tab:hover{background:var(--violet-soft)}
.tab[aria-selected="true"]{background:var(--violet-2);border-color:var(--violet-2);color:#fff}
.tab::after{content:"";width:8px;height:8px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg);flex:0 0 auto}
.panel[hidden]{display:none}
.panel ul{list-style:none;margin:0;padding:0;columns:2;column-gap:36px}
.panel li{
  break-inside:avoid;padding:11px 0 11px 20px;position:relative;font-size:15.5px;color:var(--ink);
  border-bottom:1px solid var(--hair);
}
.panel li::before{content:"";position:absolute;left:2px;top:19px;width:6px;height:6px;border-radius:50%;background:var(--violet)}
.panel li b{display:block;font-weight:600;color:var(--navy)}
.panel li span{display:block;font-size:14px;color:var(--ink-2);margin-top:3px}

/* ---------- agenda preview + agenda page ---------- */
.agenda-sec{background:#fff}
.day-tabs{display:flex;gap:10px;justify-content:center;margin:36px 0 6px;flex-wrap:wrap}
.day-tab{
  padding:13px 26px;border-radius:1000px;border:1.5px solid var(--hair);background:#fff;
  font-family:inherit;font-size:15px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:.2s var(--ease);
}
.day-tab:hover{border-color:var(--violet);color:var(--violet-2)}
.day-tab[aria-selected="true"]{background:var(--navy);border-color:var(--navy);color:#fff}
.day-tab small{display:block;font-weight:400;font-size:12px;opacity:.72;margin-top:2px}

.sched{margin-top:34px;border-top:1px solid var(--hair)}
.slot{
  display:grid;grid-template-columns:118px 1fr auto;gap:clamp(14px,2.4vw,30px);align-items:start;
  padding:22px 4px;border-bottom:1px solid var(--hair);transition:background .2s var(--ease);
}
.slot:hover{background:var(--cream-2)}
.slot .time{font-size:15px;font-weight:700;color:var(--violet);font-variant-numeric:tabular-nums;padding-top:2px}
.slot h3{font-size:19px;color:var(--navy);margin-bottom:7px}
.slot p{font-size:15px;color:var(--ink-2);margin:0;max-width:74ch}
.slot .room{
  font-size:11.5px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);
  border:1px solid var(--hair);border-radius:1000px;padding:7px 13px;white-space:nowrap;
}
.slot.key{background:linear-gradient(90deg,var(--violet-soft),transparent 62%)}
.slot.key .room{border-color:var(--violet);color:var(--violet-2)}
.slot.social .time{color:#8A6A22}
.slot.social .room{border-color:var(--gold);color:#8A6A22}
.slot.cont .time{color:var(--ink-3);font-weight:500}
.slot .tba{
  display:inline-block;vertical-align:middle;margin-left:8px;font-size:10.5px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--violet-2);background:var(--violet-soft);padding:4px 9px;border-radius:1000px;
}

/* ---------- agenda roadmap + founding stake ---------- */
.roadmap{background:var(--cream-2)}
.road{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(6,1fr);gap:0;position:relative}
.road::before{content:"";position:absolute;left:0;right:0;top:9px;height:2px;background:var(--hair)}
.road li{position:relative;padding:34px 22px 0 0}
.road li::before{
  content:"";position:absolute;left:0;top:2px;width:16px;height:16px;border-radius:50%;
  background:var(--cream-2);border:2px solid var(--hair);box-sizing:border-box;
}
.road li.done::before{background:var(--violet);border-color:var(--violet)}
.road li.mark::before{background:var(--gold);border-color:var(--gold)}
.road li b{
  display:block;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:11px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--violet-2);margin-bottom:8px;
}
.road li.mark b{color:#8A6A22}
.road h3{font-size:18px;color:var(--navy);margin-bottom:6px}
.road p{font-size:14px;color:var(--ink-2);margin:0}

.stake{background:var(--navy);color:#fff}
.stake .sec-h{color:#fff}
.stake-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,6vw,80px);align-items:center}
.stake .btn-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}
.stake-list{list-style:none;margin:0;padding:0;counter-reset:stake}
.stake-list li{
  counter-increment:stake;position:relative;padding:22px 0 22px 58px;border-top:1px solid rgba(255,255,255,.13);
}
.stake-list li:last-child{border-bottom:1px solid rgba(255,255,255,.13)}
.stake-list li::before{
  content:"0" counter(stake);position:absolute;left:0;top:24px;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:13px;font-weight:600;color:var(--peach);letter-spacing:.1em;
}
.stake-list b{display:block;font-size:19px;font-weight:700;color:#fff;margin-bottom:5px}
.stake-list span{display:block;font-size:15px;color:var(--on-dark-2)}
.scarce.founding{margin-top:12px;color:#fff}
.scarce.founding a{color:var(--peach)}

/* ---------- partners ---------- */
.partners{background:#fff}
.tier-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:48px}
.tier{border:1.5px solid var(--hair);border-radius:16px;padding:32px 28px;display:flex;flex-direction:column;background:var(--cream-2);transition:.22s var(--ease)}
.tier:hover{border-color:var(--violet);transform:translateY(-4px);box-shadow:0 20px 50px rgba(20,17,56,.10)}
.tier.feature{background:var(--navy);border-color:var(--navy)}
.tier.feature h3{color:#fff}
.tier.feature li,.tier.feature .price{color:var(--on-dark-2)}
.tier .badge{font-size:11.5px;font-weight:700;letter-spacing:.20em;text-transform:uppercase;color:var(--violet);margin-bottom:12px}
.tier.feature .badge{color:var(--peach)}
.tier h3{font-size:24px;color:var(--navy);margin-bottom:6px}
.tier .price{font-size:14.5px;color:var(--ink-2);margin-bottom:22px}
.tier ul{list-style:none;margin:0 0 28px;padding:0;display:grid;gap:10px}
.tier li{font-size:15px;color:var(--ink-2);padding-left:22px;position:relative;line-height:1.5}
.tier li::before{content:"";position:absolute;left:0;top:8px;width:8px;height:8px;border-radius:50%;background:var(--violet)}
.tier.feature li::before{background:var(--peach)}
.tier .btn{margin-top:auto;align-self:flex-start}

/* ---------- highlight cards ---------- */
.highlights{background:var(--cream)}
.rail{display:flex;gap:22px;overflow-x:auto;scroll-snap-type:x mandatory;margin-top:46px;padding:4px 2px 22px;scrollbar-width:none}
.rail::-webkit-scrollbar{display:none}
.hcard{flex:0 0 clamp(272px,27vw,344px);scroll-snap-align:start;position:relative;display:flex;flex-direction:column}
.hcard .ph{border-radius:var(--r);overflow:hidden;aspect-ratio:16/10;flex:0 0 auto}
.hcard .ph img{width:100%;height:100%;object-fit:cover;transition:transform .5s var(--ease)}
.hcard:hover .ph img{transform:scale(1.06)}
.hcard .panel-box{
  position:relative;margin:-46px 16px 0 0;background:#fff;border-radius:var(--r);
  padding:20px 22px 24px;box-shadow:0 16px 40px rgba(20,17,56,.14);flex:1 1 auto;
  transition:transform .28s var(--ease),box-shadow .28s var(--ease);
}
.hcard:hover .panel-box{transform:translateY(-6px);box-shadow:0 26px 56px rgba(20,17,56,.20)}
.hcard h3{font-size:19px;font-weight:600;color:var(--violet-lt);margin-bottom:9px}
.hcard p{font-size:14.5px;color:var(--ink-2);margin:0}
.dots{display:flex;gap:0;justify-content:center;margin-top:6px}
/* 24px tap target (WCAG 2.2), 11px visible dot */
.dot{position:relative;width:24px;height:24px;border-radius:50%;background:transparent;border:0;padding:0;cursor:pointer}
.dot::before{content:"";position:absolute;inset:6.5px;border-radius:50%;background:#CFCBDE;transition:.2s var(--ease)}
.dot[aria-current="true"]::before{background:var(--violet);transform:scale(1.15)}

/* ---------- venue ---------- */
.venue{position:relative;color:#fff;min-height:600px;display:flex;align-items:center;background:var(--navy)}
.venue .bg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.venue video.bg{z-index:0;opacity:0;transition:opacity .9s var(--ease)}
.venue video.bg.on{opacity:1}
.venue::after{z-index:1}
.venue::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(96deg,rgba(20,17,56,.96) 0%,rgba(20,17,56,.88) 40%,rgba(45,25,120,.62) 72%,rgba(78,44,170,.44) 100%);
}
.venue .wrap{position:relative;z-index:2}
.venue-inner{max-width:600px}
.venue .eyebrow{color:rgba(255,255,255,.66)}
.venue h2{font-family:var(--display);font-weight:900;font-size:clamp(35px,5vw,58px);letter-spacing:.005em;line-height:.96;text-transform:uppercase;color:#fff}
.venue p{color:rgba(255,255,255,.82);margin-top:18px;max-width:52ch}
.venue ul{list-style:none;margin:26px 0 32px;padding:0;display:grid;gap:12px;max-width:52ch}
.venue li{padding-left:24px;position:relative;color:rgba(255,255,255,.86);font-size:15.5px}
.venue li::before{content:"";position:absolute;left:0;top:9px;width:8px;height:8px;border-radius:50%;background:var(--peach)}

/* ---------- islands ---------- */
.islands{background:#fff}

/* ---------- save the date ---------- */
.savedate{background:var(--navy);color:#fff;text-align:center;position:relative;overflow:hidden}
.savedate::before{content:"";position:absolute;inset:0;background:radial-gradient(760px 380px at 50% 0%,rgba(109,59,245,.42),transparent 70%)}
.savedate::after{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--carib-h)}
.savedate .wrap{position:relative;z-index:1}
.savedate h2{font-family:var(--display);font-weight:900;font-size:clamp(37px,5.9vw,76px);letter-spacing:.005em;line-height:.94;text-transform:uppercase;color:#fff}
.savedate .when{margin-top:20px;font-size:14px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--peach)}
.savedate .btn{margin-top:32px}
.savedate .fine{margin-top:18px;font-size:13.5px;color:var(--on-dark-2)}

/* ---------- newsletter ---------- */
.news{background:var(--cream-2);text-align:center}
.news form{display:flex;gap:11px;max-width:540px;margin:30px auto 0;flex-wrap:wrap}
.news input{
  flex:1 1 250px;padding:15px 22px;border-radius:1000px;border:1.5px solid var(--hair);
  font-family:inherit;font-size:16px;background:#fff;color:var(--ink);
}
.news input:focus{outline:none;border-color:var(--violet);box-shadow:0 0 0 4px rgba(109,59,245,.18)}
.news .fine{margin-top:16px;font-size:13px;color:var(--ink-3)}
.news .ok{color:var(--violet-2);font-weight:600}

/* ---------- footer ---------- */
footer{background:var(--navy);color:var(--on-dark-2);padding-block:clamp(50px,6vw,78px) 30px;font-size:15px}
.foot-grid{display:grid;grid-template-columns:1.5fr repeat(3,1fr);gap:clamp(26px,4vw,54px)}
footer img.logo{height:48px;width:auto;margin-bottom:18px}
footer h3{font-size:12px;font-weight:700;letter-spacing:.20em;text-transform:uppercase;color:#fff;margin-bottom:17px}
footer ul{list-style:none;margin:0;padding:0;display:grid;gap:10px}
footer a:hover{color:var(--peach)}
.socials{display:flex;gap:11px;margin-top:20px}
.socials a{width:38px;height:38px;border-radius:50%;background:var(--navy-2);display:grid;place-items:center;transition:.2s var(--ease);color:#fff}
.socials a:hover{background:var(--violet)}
.socials svg{width:16px;height:16px;fill:currentColor}
.foot-base{margin-top:48px;padding-top:24px;border-top:1px solid rgba(255,255,255,.13);display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;font-size:13px}

/* ---------- sticky mobile CTA ---------- */
.mobile-cta{
  position:fixed;left:0;right:0;bottom:0;z-index:100;display:none;gap:10px;align-items:center;
  padding:12px var(--pad) calc(12px + env(safe-area-inset-bottom));
  background:rgba(20,17,56,.96);backdrop-filter:blur(14px);border-top:1px solid rgba(255,255,255,.14);
  transform:translateY(110%);transition:transform .3s var(--ease);
}
.mobile-cta.on{transform:none}
.mobile-cta .txt{flex:1 1 auto;min-width:0}
.mobile-cta b{display:block;font-size:13px;color:#fff;font-weight:600}
.mobile-cta span{display:block;font-size:11.5px;color:var(--peach);letter-spacing:.08em}

/* ---------- speakers page ---------- */
.filter-bar{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:0 0 38px}
.fchip{
  padding:10px 20px;border-radius:1000px;border:1.5px solid var(--hair);background:#fff;
  font-family:inherit;font-size:14.5px;font-weight:600;color:var(--ink-2);cursor:pointer;transition:.2s var(--ease);
}
.fchip:hover{border-color:var(--violet);color:var(--violet-2)}
.fchip[aria-pressed="true"]{background:var(--violet);border-color:var(--violet);color:#fff}
.spk-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:26px}
.spk-grid .spk{flex:none;width:100%}
.spk-grid .spk .role{flex:1 1 auto}
.empty{text-align:center;padding:60px 0;color:var(--ink-3)}
.rules{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:46px}
.rule{background:#fff;border:1px solid var(--hair);border-radius:16px;padding:30px 28px;transition:.22s var(--ease)}
.rule:hover{border-color:var(--violet);transform:translateY(-4px);box-shadow:0 18px 44px rgba(20,17,56,.09)}
.rule .no{
  width:38px;height:38px;border-radius:50%;background:var(--violet);color:#fff;display:grid;place-items:center;
  font-size:15px;font-weight:700;margin-bottom:18px;
}
.rule h3{font-size:20px;color:var(--navy);margin-bottom:10px}
.rule p{font-size:15px;color:var(--ink-2);margin:0}


/* ---------- World imagery ----------
   The six Worlds were the longest section on the page and carried no image at
   all. Each card's right column had dead space above the tag block, so the
   image goes there: it fills the column without touching the reading order,
   and needs no change to the grid. All six are generated at a common 4:3, so
   no cover-crop is needed and the column keeps one rhythm down the page. */
.world-img{
  margin:0 0 22px;border-radius:14px;overflow:hidden;background:var(--navy);
  border:1px solid rgba(20,17,56,.10);
  box-shadow:0 16px 40px rgba(20,17,56,.14);
}
.world-img img{width:100%;height:auto;display:block}
@media (max-width:1020px){ .world-img{max-width:520px} }


/* Worlds opening: the emblem and the section intro share a row rather than the
   intro sitting centred above nothing. Collapses to a single column early,
   because the emblem loses its force at small sizes and should lead instead. */
.worlds-open{
  display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);
  gap:clamp(24px,4vw,54px);align-items:center;margin-bottom:clamp(34px,5vw,64px);
}
.worlds-emblem{
  margin:0;border-radius:18px;overflow:hidden;background:var(--navy);
  border:1px solid rgba(20,17,56,.10);box-shadow:0 24px 60px rgba(20,17,56,.20);
}
.worlds-emblem img{width:100%;height:auto;display:block}
.worlds-intro .sec-h{margin-top:6px}
.worlds-note{
  margin-top:18px;padding-top:16px;border-top:1px solid var(--hair);
  font-size:14.5px;color:var(--ink-2);font-style:italic;max-width:46ch;
}
@media (max-width:860px){
  .worlds-open{grid-template-columns:1fr;gap:26px}
  .worlds-emblem{max-width:420px;margin-inline:auto}
  .worlds-intro{text-align:center}
  .worlds-note{margin-inline:auto;text-align:left}
}


/* Footer links were under the 32px comfortable tap minimum on phones.
   Padding on the anchor, not the li, so the whole hit area grows. */
.foot-grid ul a{display:inline-block;padding:5px 0}
.foot-base a{display:inline-block;padding:4px 0}


/* Hero: the summit name and the tagline sit between the lede and the
   countdown. Both are secondary to the h1, so they are sized down and the
   name is set in the mono face to read as a mark rather than a sentence. */
.hero-summit{margin-top:22px;display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
.hero-summit b{font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:12.5px;
  font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--peach)}
.hero-summit span{font-size:15px;color:var(--on-dark-2)}
.hero-tag{margin-top:10px;font-size:clamp(16px,2vw,19px);font-weight:600;color:#fff;letter-spacing:-.01em}

/* The premise reads as a list of consequences rather than one long sentence,
   so each line lands on its own. The rule is a left border, not a bullet. */
.premise-list{list-style:none;margin:24px 0 0;padding:0;border-left:2px solid var(--violet);
  padding-left:20px;display:grid;gap:7px}
.premise-list li{font-size:clamp(16px,1.9vw,19px);line-height:1.45;color:var(--ink)}
.premise-list li:last-child{color:var(--navy);font-weight:600}


/* The three recurring formats sit a step below the six: no numeral, smaller
   heading, quieter card, so the hierarchy reads before anyone starts reading. */


/* Premise collage: one tall frame beside two stacked, the arrangement that
   shows the room, the stage and the evening in a single glance. The tall
   frame spans both rows, so the block keeps one clean outer edge; every
   photo is cropped by object-fit rather than by aspect-ratio boxes, which
   lets three landscape originals sit in two different shapes. */
.premise-collage{display:grid;grid-template-columns:1.06fr .94fr;grid-template-rows:1fr 1fr;
  gap:14px;min-height:clamp(320px,38vw,470px)}
.premise-collage figure{margin:0;border-radius:14px;overflow:hidden;background:var(--navy);
  box-shadow:0 18px 44px rgba(20,17,56,.16)}
.premise-collage img{width:100%;height:100%;object-fit:cover;display:block}
.premise-collage .tall{grid-row:span 2}
@media (max-width:900px){
  .premise-collage{grid-template-columns:1fr 1fr;grid-template-rows:auto auto;min-height:0}
  .premise-collage .tall{grid-column:1 / -1;grid-row:auto;aspect-ratio:16/9}
  .premise-collage figure:not(.tall){aspect-ratio:4/3}
}


/* ---------- Six Worlds as tabs ----------
   The six ran to about four screens stacked. As a tablist the section is one
   screen and the reader picks. Layout, tab chrome and panel hiding all come
   from the .track-layout / .tab / .panel rules above; what follows is only
   what the Worlds add on top: the numeral inside the tab, and the panel's
   own two-column body. */
.worlds .tab{align-items:flex-start}
.worlds .tab span{display:flex;align-items:baseline;gap:11px;min-width:0}
.worlds .tab em{
  font-style:normal;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:12.5px;font-weight:700;letter-spacing:.06em;opacity:.62;flex:0 0 auto;
}
.worlds .tab[aria-selected="true"] em{opacity:.85}
.worlds .tab b{font-weight:inherit;display:block;min-width:0}
.worlds .tab small{display:block;font-weight:400;font-size:12.5px;line-height:1.35;opacity:.68;margin-top:3px}

/* When / where / which pass, on one mono line under the World's name. */
.wp-meta{
  display:flex;flex-wrap:wrap;gap:6px 0;margin:-4px 0 16px;
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:11.5px;font-weight:600;
  letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);
}
.wp-meta > *{position:relative;white-space:nowrap}
.wp-meta > * + *{padding-left:24px}
.wp-meta > * + *::before{content:"";position:absolute;left:10px;top:50%;width:3px;height:3px;border-radius:50%;background:var(--violet);transform:translateY(-50%)}
.wp-meta a{color:var(--violet-2);text-decoration:none;border-bottom:1px solid transparent}
.wp-meta a:hover{border-bottom-color:currentColor}

/* Speakers already confirmed for this World. Clicking opens the same sheet
   as the speaker rail, so the card data lives in one place. */
.wp-voices{background:#fff;border:1px solid var(--hair);border-radius:var(--r);padding:20px 22px;margin-bottom:16px}
.wp-voices .lbl{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-bottom:12px;
}
.voices{display:grid;gap:8px}
.voice{
  display:flex;align-items:center;gap:12px;width:100%;padding:8px;border-radius:10px;border:0;background:transparent;
  font-family:inherit;text-align:left;cursor:pointer;transition:background .2s var(--ease);
}
.voice:hover,.voice:focus-visible{background:var(--violet-soft);outline:none}
.voice img{width:44px;height:44px;border-radius:50%;object-fit:cover;flex:0 0 auto;border:2px solid var(--violet-soft)}
.voice b{display:block;font-size:15px;font-weight:600;color:var(--navy)}
.voice i{display:block;font-style:normal;font-size:13px;color:var(--ink-2);margin-top:1px}
.voices-more,.voices-empty{font-size:13px;color:var(--ink-3);margin:10px 0 0}
.voices-empty{color:var(--ink-2);margin:0}
.voices-empty a{color:var(--violet-2)}

/* Topic tags run as one quiet full-width row under the split, so neither
   column carries them and the two columns land at roughly the same height. */
.wp-beneath{
  display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;
  margin-top:clamp(22px,3vw,30px);padding-top:18px;border-top:1px solid var(--hair);
}
.wp-beneath .lbl{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin:0 6px 0 0;flex:0 0 auto;
}
.wp-beneath .tags{display:contents}
.wp-nav{margin-top:18px!important}

/* Walk the six in order without going back to the tab column. */
.wp-nav{display:flex;justify-content:space-between;gap:16px;margin-top:clamp(26px,3.4vw,38px);padding-top:18px;border-top:1px solid var(--hair)}
.wp-nav button{
  background:transparent;border:0;padding:6px 0;font-family:inherit;font-size:15px;font-weight:600;color:var(--navy);
  cursor:pointer;display:flex;flex-direction:column;gap:3px;transition:color .2s var(--ease);
}
.wp-nav button small{font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.wp-nav .wp-next{text-align:right;align-items:flex-end}
.wp-nav button:hover{color:var(--violet-2)}

.world-panel{animation:wp-in .34s var(--ease) both}
@keyframes wp-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.world-panel{animation:none}}

.world-panel h3{font-size:clamp(23px,3vw,33px);color:var(--navy);letter-spacing:-.022em;margin-bottom:14px}
.wp-lede{font-size:17px;line-height:1.6;color:var(--ink-2);max-width:68ch}
.wp-lede b{color:var(--navy)}
.world-panel .world-q{margin-top:14px}
.wp-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(22px,3vw,42px);
  align-items:start;margin-top:clamp(22px,3vw,30px)}

/* The sessions list borrows .panel li styling but stays single column here,
   because it now sits in the narrower half of a split rather than full width. */
.panel .wp-sessions{list-style:none;margin:0;padding:0;columns:1}
.wp-sessions li{break-inside:avoid;padding:11px 0 11px 20px;position:relative;
  font-size:15.5px;color:var(--ink);border-bottom:1px solid var(--hair)}
.wp-sessions li:last-child{border-bottom:0}
.wp-sessions li::before{content:"";position:absolute;left:2px;top:19px;width:6px;height:6px;
  border-radius:50%;background:var(--violet)}
.wp-sessions li b{display:block;font-weight:600;color:var(--navy)}
.wp-sessions li span{display:block;font-size:14px;color:var(--ink-2);margin-top:3px}

.wp-side .world-img{margin:0 0 18px}
.wp-side .signature-note{margin-top:16px}

@media (max-width:980px){
  /* The tab column becomes a scrolling row above the panel, which keeps the
     six reachable without a 6-item stack pushing the content off-screen. */
  .worlds .track-layout{grid-template-columns:1fr;gap:24px}
  .worlds .tab-list{grid-auto-flow:column;grid-auto-columns:minmax(210px,1fr);
    overflow-x:auto;padding-bottom:6px;scroll-snap-type:x proximity}
  .worlds .tab{scroll-snap-align:start}
  .worlds .tab::after{display:none}
  .worlds .tab small{display:none}
  .wp-grid{grid-template-columns:1fr}
}


/* The weekly cadence is a promise, not a caption, so it gets its own line
   under the section subhead rather than a second clause inside it. */
.speakers-drumbeat{
  margin-top:12px;display:inline-flex;align-items:center;gap:9px;
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--violet-2);
}
.speakers-drumbeat::before{
  content:"";width:7px;height:7px;border-radius:50%;background:var(--violet);flex:0 0 auto;
}

/* ---------- responsive ---------- */
/* Six nav items rather than five. The header runs out of room between
   roughly 1180 and 1440: the nav grows, and the Register button gets
   pushed past the right edge where overflow-x:clip hides it silently.
   Tighten the nav first, then drop the date block - the ticker and the
   hero both state the date and venue anyway, so nothing is lost. */
@media (max-width:1440px){
  nav.main{gap:0}
  .nav-item>a{padding:11px 9px;font-size:14.5px}
  .nav-item>a::after{left:9px;right:9px}
}
@media (max-width:1340px){
  .brand-meta{display:none}
  /* Compact the header CTA rather than losing the whole nav to the burger:
     the shorter button buys back about seventy pixels, which keeps the six
     desktop menu items on screen down to roughly 980 instead of 1060. */
  .head-in>.btn{padding:10px 16px;font-size:13.5px}
}

@media (max-width:1300px){
  .rail-btn.prev{left:-8px}
  .rail-btn.next{right:-8px}
}
@media (max-width:1180px){
  nav.main{gap:0}
  .nav-item>a{padding:11px 10px;font-size:14.5px}
  .nav-item>a::after{left:10px;right:10px}
  .spk-grid{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:1020px){
  .track-layout{grid-template-columns:1fr}
  .tab-list{grid-template-columns:repeat(3,1fr)}
  .tier-grid,.rules{grid-template-columns:1fr}
  .foot-grid{grid-template-columns:1fr 1fr}
}
/* The burger used to take over at 900. With a sixth nav item the header
   stops fitting at about 995, so the swap happens there instead. */
@media (max-width:1000px){
  nav.main{display:none}
  .burger{display:grid;margin-left:auto}
  .head-in{gap:12px}
}
@media (max-width:900px){
  .split{grid-template-columns:1fr}
  .split .art{order:-1}
  .stat-card{grid-template-columns:repeat(2,1fr);gap:28px 0;transform:translateY(-44px)}
  .stat:nth-child(2){border-right:0}
  .panel ul{columns:1}
  .mobile-cta{display:flex}
  footer{padding-bottom:90px}
  .slot{grid-template-columns:78px 1fr;row-gap:12px}
  .slot .tba{display:block;margin:6px 0 0}
  .slot .room{grid-column:2;justify-self:start}
}
@media (max-width:640px){
  /* Phones: GAISB wraps to its own line above the event name so the lockup,
     the register button and the burger all fit inside 350px. */
  .brand-lockup b{font-size:17px;line-height:1.02}
  .brand-lockup .org{flex-basis:100%}
  .brand-lockup i{font-size:11.5px}
  .brand-lockup em{display:none}
  .head-in{gap:10px}
  .head-in>.btn{padding:10px 14px;font-size:13px}
  .btn-sm{padding:9px 18px;font-size:14px}
  .ticker{font-size:12.5px}
  .ticker-track span{padding:0 17px}
  .mini,.foot-grid,.tab-list{grid-template-columns:1fr}
  .spk-grid{grid-template-columns:repeat(2,1fr);gap:18px}
  .hero-card{flex-direction:column;align-items:stretch;width:100%;padding:20px}
  .hero-card .btn{width:100%}
  .spk-rail .spk{flex:0 0 62vw}
  .hcard{flex:0 0 80vw}
  .rail-btn{display:none}
  .cd-unit{min-width:0;flex:1 1 0;padding:10px 4px}
  .cd-unit b{font-size:21px}
}

/* ---------- motion preferences ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important;
  }
  .js .rv{opacity:1;transform:none}
  .ticker-track,.marq-track{animation:none}
}

/* ---------- print ---------- */
@media print{
  .ticker,.site-head,.drawer,.mobile-cta,.rail-btn,.progress,.sheet,.sheet-veil,.circuit{display:none!important}
  body{background:#fff;color:#000;font-size:11pt}
  .hero,.page-hero,.venue,.savedate,footer{background:#fff!important;color:#000!important;min-height:0}
  .hero::after,.page-hero::after,.venue::after,.savedate::before{display:none}
  .hero h1,.page-hero h1,.venue h2,.savedate h2{color:#000!important}
  .rv{opacity:1;transform:none}
  .slot{break-inside:avoid}
}

/* ============================================================
   2027 PROGRAM — Worlds, Promise, Signature Experiences,
   Certifications, Ticket tiers, Three Days
   ============================================================ */

/* ---------- big statement lines ---------- */
.statement{
  font-family:Rubik,sans-serif;font-weight:700;letter-spacing:-.025em;line-height:1.08;
  font-size:clamp(26px,4.4vw,50px);color:var(--navy);max-width:20ch;
}
.statement.on-dark{color:#fff}
.statement em{font-style:normal;color:var(--violet-lt)}
.lede-lg{font-size:clamp(17px,1.9vw,21px);color:var(--ink-2);max-width:60ch;line-height:1.6}
.on-dark .lede-lg,.lede-lg.on-dark{color:var(--on-dark-2)}

/* ---------- the promise ---------- */
.promise{background:var(--navy);color:#fff;position:relative;overflow:hidden}
.promise::before{content:"";position:absolute;inset:0;background:radial-gradient(900px 420px at 78% 0%,rgba(109,59,245,.34),transparent 68%)}
.promise .wrap{position:relative;z-index:1}
.promise h2{color:#fff}
.promise-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:22px;margin-top:48px}
.pcard{border-top:2px solid var(--violet);padding-top:22px}
.pcard b{
  display:block;font-family:Rubik,sans-serif;font-size:clamp(20px,2.4vw,26px);font-weight:700;
  color:#fff;letter-spacing:-.02em;margin-bottom:10px;
}
.pcard p{font-size:15px;color:var(--on-dark-2);margin:0}

/* ---------- the six worlds ---------- */
.worlds{background:var(--cream)}
.world{border-top:1.5px solid var(--hair);padding-block:clamp(44px,6vw,72px)}
.world:first-of-type{border-top:0}
.world-head{display:grid;grid-template-columns:auto 1fr;gap:clamp(18px,3vw,38px);align-items:start}
.world-no{
  font-family:Rubik,sans-serif;font-weight:800;font-size:clamp(44px,7vw,86px);line-height:.8;
  color:var(--violet);opacity:.28;letter-spacing:-.05em;font-variant-numeric:tabular-nums;
}
.world-name{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:12px;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--violet);margin:0 0 12px;
}
.world h3{font-size:clamp(24px,3.4vw,38px);color:var(--navy);margin-bottom:18px;letter-spacing:-.022em}
.world-q{
  font-family:Rubik,sans-serif;font-weight:700;font-size:clamp(19px,2.5vw,28px);line-height:1.2;
  color:var(--violet-2);letter-spacing:-.02em;margin:22px 0 0;max-width:24ch;
}
.world-body{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(26px,4vw,52px);margin-top:30px;align-items:start}
.xp{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.xp-lbl{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin:0 0 12px;
}
.xp li{padding:14px 0;border-bottom:1px solid var(--hair)}
.xp li:first-child{border-top:1px solid var(--hair)}
.xp b{display:block;font-family:Rubik,sans-serif;font-size:16px;font-weight:600;color:var(--navy);letter-spacing:-.01em}
.xp span{display:block;font-size:14.5px;color:var(--ink-2);margin-top:4px}
.beneath{background:#fff;border:1px solid var(--hair);border-radius:var(--r);padding:22px 24px}
.beneath .lbl{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-bottom:14px;
}
.tags{display:flex;flex-wrap:wrap;gap:7px}
.tags span{
  font-size:13px;color:var(--ink-2);background:var(--cream-2);border:1px solid var(--hair);
  border-radius:1000px;padding:5px 12px;
}
.signature-note{
  margin-top:20px;padding:13px 18px;border-left:3px solid var(--gold);background:#FFFBF2;
  border-radius:0 8px 8px 0;font-size:14.5px;color:#6B5417;
}

/* ---------- signature experiences ---------- */
.sigs{background:var(--navy);color:#fff}
.sigs h2{color:#fff}
.sig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px}
.sig{
  background:rgba(255,255,255,.05);border:1px solid rgba(255,255,255,.13);border-radius:16px;
  padding:28px 26px;display:flex;flex-direction:column;transition:.24s var(--ease);
}
.sig:hover{background:rgba(255,255,255,.09);border-color:var(--violet-lt);transform:translateY(-4px)}
.sig .no{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:11px;font-weight:600;
  letter-spacing:.2em;color:var(--peach);margin-bottom:14px;
}
.sig h3{font-size:23px;color:#fff;margin-bottom:6px;letter-spacing:-.02em}
.sig .tagline{font-size:14.5px;color:var(--violet-lt);font-weight:500;margin-bottom:14px}
.sig p{font-size:14.5px;color:var(--on-dark-2);margin:0}

/* Signatures are grouped under the four promises from the section above,
   so the grid reads as proof of the promise rather than a list of formats. */
.sig-group{
  display:grid;grid-template-columns:220px 1fr;gap:clamp(20px,3vw,44px);align-items:start;
  padding:clamp(28px,3.6vw,40px) 0;border-top:1px solid rgba(255,255,255,.13);
}
.sig-group:first-of-type{margin-top:48px}
.sig-group:last-of-type{padding-bottom:0}
.sig-rail{position:sticky;top:96px}
.sig-rail .verb{font-size:clamp(22px,2.6vw,28px);font-weight:700;color:#fff;letter-spacing:-.02em;margin:0 0 8px;line-height:1.1}
.sig-rail .verb em{
  display:block;font-style:normal;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:11px;font-weight:600;letter-spacing:.2em;color:var(--peach);margin-bottom:10px;
}
.sig-rail p{font-size:14.5px;color:var(--on-dark-2);margin:0;max-width:24ch}
.sig-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:16px}
/* Three cards in a row ran narrow and tall. "Build it" stacks them instead:
   name and tagline on the left, the description and the when/where line on
   the right, so the three read as a sequence at a consistent height. */
.sig-cards.stack{grid-template-columns:1fr;gap:14px}
.sig-cards.stack .sig{
  display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.5fr);column-gap:clamp(20px,3vw,40px);row-gap:0;
  grid-template-areas:"r b" "t b" "g b" ". m";grid-template-rows:auto auto 1fr auto;align-items:start;padding:24px 28px;
}
.sig-cards.stack .sig:hover{transform:none}
.sig-cards.stack .returns{grid-area:r;justify-self:start}
.sig-cards.stack h3{grid-area:t;margin-bottom:4px}
.sig-cards.stack .tagline{grid-area:g;margin-bottom:0}
.sig-cards.stack .sig > p:not(.tagline):not(.sig-meta){grid-area:b;margin:0}
.sig-cards.stack .sig .sig-meta{grid-area:m;margin-top:0;padding-top:14px}
.sig .returns{
  align-self:flex-start;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10px;font-weight:600;
  letter-spacing:.16em;text-transform:uppercase;color:var(--peach);border:1px solid rgba(255,187,127,.45);
  border-radius:1000px;padding:4px 9px;margin-bottom:14px;
}
.sig .sig-meta{
  margin-top:auto;padding-top:16px;display:flex;flex-wrap:wrap;gap:4px 0;
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.12em;text-transform:uppercase;color:var(--on-dark-2);
}
.sig .sig-meta span{position:relative;white-space:nowrap}
.sig .sig-meta span + span{padding-left:22px}
.sig .sig-meta span + span::before{content:"";position:absolute;left:9px;top:50%;width:3px;height:3px;border-radius:50%;background:var(--peach);transform:translateY(-50%)}
.sig .sig-meta span:last-child{color:var(--peach)}
.sig p + p{margin-top:10px}
.sig .sig-meta + p{margin-top:0}

/* ---------- certifications ---------- */
.certs{background:#fff}
.cert-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:48px}
.cert{
  border:1.5px solid var(--hair);border-radius:16px;overflow:hidden;display:flex;flex-direction:column;
  background:var(--cream-2);transition:.24s var(--ease);
}
.cert:hover{border-color:var(--violet);transform:translateY(-4px);box-shadow:0 22px 52px rgba(20,17,56,.11)}
.cert-top{background:var(--navy);color:#fff;padding:24px 26px}
.cert-top .code{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:10.5px;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:var(--peach);margin-bottom:12px;
}
.cert-top h3{font-size:22px;color:#fff;letter-spacing:-.02em;line-height:1.14}
.cert-top .dur{
  display:inline-block;margin-top:14px;font-size:12px;font-weight:600;letter-spacing:.1em;
  text-transform:uppercase;background:var(--violet);color:#fff;border-radius:1000px;padding:5px 13px;
}
.cert-body{padding:24px 26px 28px;display:flex;flex-direction:column;flex:1 1 auto}
.cert-body .promise-line{font-size:16px;font-weight:600;color:var(--navy);margin-bottom:12px}
.cert-body p{font-size:14.5px;color:var(--ink-2)}
.cert-tutor{
  margin-top:auto;padding-top:20px;border-top:1px solid var(--hair);
  display:flex;align-items:center;gap:12px;
}
.cert-tutor .who b{display:block;font-size:15px;color:var(--navy);font-weight:600}
.cert-tutor .who span{display:block;font-size:13px;color:var(--ink-3);margin-top:2px}
.cert-tutor .av{
  width:44px;height:44px;border-radius:50%;overflow:hidden;flex:0 0 auto;background:var(--navy);
  display:grid;place-items:center;color:#fff;font-family:Rubik,sans-serif;font-weight:600;font-size:15px;
}
.cert-tutor .av img{width:100%;height:100%;object-fit:cover;object-position:center 18%}

/* ---------- certification price table ---------- */
.price-table{
  max-width:820px;margin:44px auto 0;background:#fff;
  border:1px solid var(--hair);border-radius:var(--r);overflow:hidden;
}
.price-row{
  display:grid;grid-template-columns:1fr auto 130px;gap:clamp(16px,3vw,32px);align-items:center;
  padding:22px clamp(20px,3vw,30px);border-bottom:1px solid var(--rule-2);
}
.price-row:last-of-type{border-bottom:0}
.price-row .nm{font-family:Rubik,sans-serif;font-size:17px;font-weight:600;color:var(--navy);letter-spacing:-.012em}
.price-row .nm span{
  display:block;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-weight:500;
  font-size:11.5px;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin-top:6px;
}
.price-row .len{
  font-size:12px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--violet-2);
  background:var(--violet-soft);border-radius:1000px;padding:6px 14px;white-space:nowrap;
}
.price-row .amt{
  font-family:Rubik,sans-serif;font-size:clamp(24px,2.6vw,30px);font-weight:800;color:var(--navy);
  letter-spacing:-.03em;text-align:right;font-variant-numeric:tabular-nums;
}
.price-row .amt sup{font-size:.5em;font-weight:600;position:relative;top:-.75em;margin-right:1px}
.price-foot{
  background:var(--cream-2);padding:18px clamp(20px,3vw,30px);
  font-size:14.5px;color:var(--ink-2);border-top:1px solid var(--rule-2);
}
.price-foot b{color:var(--navy);font-weight:600}
@media (max-width:640px){
  .price-row{grid-template-columns:1fr auto;row-gap:12px}
  .price-row .len{grid-column:1;justify-self:start}
  .price-row .amt{grid-column:2;grid-row:1}
}

/* ---------- three days ---------- */
.days{background:var(--cream-2)}
.day-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:48px}
.dcard{background:#fff;border:1.5px solid var(--hair);border-radius:16px;padding:30px 28px;display:flex;flex-direction:column}
.dcard .tag{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:11px;font-weight:600;
  letter-spacing:.2em;text-transform:uppercase;color:var(--violet);margin-bottom:12px;
}
.dcard h3{font-size:clamp(24px,3vw,32px);color:var(--navy);letter-spacing:-.03em;margin-bottom:8px}
.dcard .when{font-size:13.5px;color:var(--ink-3);margin-bottom:20px;font-weight:500}
.dcard ul{list-style:none;margin:0;padding:0;display:grid;gap:9px}
.dcard li{font-size:14.5px;color:var(--ink-2);padding-left:18px;position:relative}
.dcard li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;border-radius:50%;background:var(--violet)}
.dcard.feature{background:var(--navy);border-color:var(--navy)}
.dcard.feature h3{color:#fff}
.dcard.feature .tag{color:var(--peach)}
.dcard.feature .when,.dcard.feature li{color:var(--on-dark-2)}
.dcard .closer{
  margin-top:22px;padding-top:18px;border-top:1px solid var(--hair);
  font-family:Rubik,sans-serif;font-size:16px;font-weight:600;color:var(--navy);line-height:1.25;
}
.dcard.feature .closer{border-top-color:rgba(255,255,255,.18);color:#fff}

/* ---------- tickets ---------- */
.tickets{background:var(--navy);color:#fff}
.tickets h2{color:#fff}
.tk-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:48px}
.tk{
  background:rgba(255,255,255,.05);border:1.5px solid rgba(255,255,255,.14);border-radius:16px;
  padding:32px 28px;display:flex;flex-direction:column;transition:.24s var(--ease);
}
.tk:hover{border-color:var(--violet-lt);transform:translateY(-4px)}
.tk.feature{background:var(--violet);border-color:var(--violet)}
.tk h3{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:13px;font-weight:600;
  letter-spacing:.24em;text-transform:uppercase;color:var(--peach);margin-bottom:16px;
}
.tk.feature h3{color:#fff}
.tk .price{font-family:Rubik,sans-serif;font-size:clamp(30px,3vw,40px);font-weight:800;color:#fff;letter-spacing:-.035em;line-height:1}
.tk .price sup{font-size:.44em;font-weight:600;top:-.8em;position:relative;margin-right:2px}
.tk .price-note{font-size:13px;color:var(--on-dark-2);margin-top:8px}
.tk.feature .price-note{color:rgba(255,255,255,.9)}
.tk .cap{
  display:inline-block;margin-top:14px;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:11px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;
  color:var(--on-dark-2);border:1px solid rgba(255,255,255,.22);border-radius:1000px;padding:5px 12px;
}
.tk.feature .cap{color:#fff;border-color:rgba(255,255,255,.45)}
.tk ul{list-style:none;margin:24px 0 28px;padding:0;display:grid;gap:10px}
.tk li{font-size:14.5px;color:var(--on-dark-2);padding-left:22px;position:relative;line-height:1.5}
.tk li::before{content:"";position:absolute;left:0;top:8px;width:7px;height:7px;border-radius:50%;background:var(--violet-lt)}
.tk.feature li{color:rgba(255,255,255,.92)}
.tk.feature li::before{background:#fff}
.tk .btn{margin-top:auto;width:100%}
.tk.feature .btn{background:#fff;color:var(--violet-2);border-color:#fff}
.tk.feature .btn:hover{background:var(--peach);border-color:var(--peach);color:var(--navy)}
.scarce{
  text-align:center;margin-top:26px;font-size:14px;color:var(--on-dark-2);
}

/* ---------- responsive ---------- */
@media (max-width:1020px){
  .promise-grid{grid-template-columns:repeat(2,1fr);gap:28px}
  .sig-grid,.cert-grid,.day-grid{grid-template-columns:1fr}
  .sig-group{grid-template-columns:1fr;gap:18px}
  .sig-cards.stack .sig{display:flex;padding:28px 26px}
  .sig-rail{position:static}
  .sig-rail p{max-width:none}
  .tk-grid{grid-template-columns:repeat(2,1fr)}
  .world-body{grid-template-columns:1fr}
  .road{grid-template-columns:repeat(3,1fr);row-gap:30px}
  .road::before{display:none}
  .road li{padding-top:30px}
  .road li::before{top:0}
}
@media (max-width:640px){
  .promise-grid{grid-template-columns:1fr}
  .tk-grid{grid-template-columns:1fr}
  .world-head{grid-template-columns:1fr;gap:8px}
  .world-no{font-size:40px}
}

/* ============================================================
   TRINIDAD & TOBAGO — editorial destination page
   ============================================================ */
.tt-hero{
  position:relative;min-height:min(88vh,860px);display:flex;align-items:flex-end;
  overflow:hidden;background:var(--navy);
}
.tt-hero>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tt-hero::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,17,56,.82) 0%,rgba(20,17,56,.24) 38%,rgba(20,17,56,.55) 72%,rgba(20,17,56,.94) 100%);
}
.tt-hero .wrap{position:relative;z-index:2;padding-block:0 clamp(48px,7vw,86px)}
.tt-hero h1{font-family:var(--display);font-weight:900;font-size:clamp(39px,6vw,76px);letter-spacing:-.005em;line-height:.94;text-transform:uppercase;color:#fff;max-width:16ch}
.tt-hero .kick{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:12px;font-weight:600;
  letter-spacing:.26em;text-transform:uppercase;color:var(--peach);margin:0 0 18px;
}
.tt-hero p.lede{color:rgba(255,255,255,.86);font-size:clamp(17px,1.7vw,20px);max-width:56ch;margin-top:22px}

/* full-bleed feature band */
.tt-band{position:relative;min-height:clamp(420px,58vh,640px);display:flex;align-items:center;overflow:hidden;background:var(--navy)}
.tt-band>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.tt-band::after{content:"";position:absolute;inset:0;background:linear-gradient(92deg,rgba(20,17,56,.94) 0%,rgba(20,17,56,.80) 44%,rgba(20,17,56,.30) 100%)}
.tt-band.right::after{background:linear-gradient(268deg,rgba(20,17,56,.94) 0%,rgba(20,17,56,.80) 44%,rgba(20,17,56,.30) 100%)}
.tt-band .wrap{position:relative;z-index:2}
.tt-band .inner{max-width:560px}
.tt-band.right .inner{margin-left:auto}
.tt-band h2{font-size:clamp(28px,4vw,44px);color:#fff;letter-spacing:-.025em;margin-bottom:18px}
.tt-band p{color:rgba(255,255,255,.86);font-size:16.5px}
.tt-band .kick{
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-size:11.5px;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;color:var(--peach);margin:0 0 14px;
}

/* editorial split with a portrait-ish image */
.tt-split{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,72px);align-items:center}
.tt-split img{border-radius:var(--r);box-shadow:0 28px 64px rgba(20,17,56,.20);width:100%}
.tt-split.flip .txt{order:2}

/* mosaic gallery */
.tt-mosaic{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:46px}
.tt-mosaic figure{margin:0;position:relative;border-radius:var(--r);overflow:hidden;background:var(--navy)}
.tt-mosaic img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .6s var(--ease)}
.tt-mosaic figure:hover img{transform:scale(1.05)}
.tt-mosaic figcaption{
  position:absolute;left:0;right:0;bottom:0;padding:26px 18px 14px;
  background:linear-gradient(180deg,transparent,rgba(20,17,56,.88));
  color:#fff;font-size:13.5px;font-weight:500;letter-spacing:.01em;
}
.tt-mosaic .tall{grid-row:span 2;aspect-ratio:3/4}
.tt-mosaic .wide{grid-column:span 2;aspect-ratio:16/9}
.tt-mosaic .sq{aspect-ratio:1/1}

/* numbers strip */
.tt-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:44px}
.tt-fact{border-top:2px solid var(--violet);padding-top:20px}
.tt-fact b{display:block;font-family:Rubik,sans-serif;font-size:clamp(26px,3.2vw,38px);font-weight:800;color:var(--navy);letter-spacing:-.03em;line-height:1}
.tt-fact span{display:block;margin-top:10px;font-size:14.5px;color:var(--ink-2)}

/* pull quote */
.tt-quote{
  max-width:800px;margin:clamp(40px,6vw,72px) auto 0;text-align:center;
}
.tt-quote p{
  font-family:Rubik,sans-serif;font-size:clamp(22px,3.2vw,34px);font-weight:500;line-height:1.28;
  color:var(--navy);letter-spacing:-.02em;
}
.tt-quote cite{
  display:block;margin-top:22px;font-style:normal;
  font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;
  font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);
}

@media (max-width:900px){
  .tt-split{grid-template-columns:1fr}
  .tt-split.flip .txt{order:0}
  .tt-mosaic{grid-template-columns:repeat(2,1fr)}
  .tt-mosaic .wide{grid-column:span 2}
  .tt-facts{grid-template-columns:repeat(2,1fr);gap:28px 20px}
  .tt-band{min-height:0;padding-block:clamp(56px,9vw,90px)}
  .tt-band::after,.tt-band.right::after{background:linear-gradient(180deg,rgba(20,17,56,.72),rgba(20,17,56,.94))}
  .tt-band .inner,.tt-band.right .inner{max-width:none;margin-left:0}
}
@media (max-width:600px){
  .tt-mosaic .tall{grid-row:span 1;aspect-ratio:1/1}
  .tt-facts{grid-template-columns:1fr}
}

/* Roadmap collapses to a vertical timeline on phones. Lives at the end of
   the file so it outranks the three-column tablet rule above it. */
@media (max-width:640px){
  .road{grid-template-columns:1fr;row-gap:0}
  .road::before{display:block;left:7px;right:auto;top:0;bottom:0;width:2px;height:auto}
  .road li{padding:0 0 26px 34px}
  .road li:last-child{padding-bottom:0}
  .road li::before{top:4px}
  .stake-grid{grid-template-columns:1fr}
}

/* ---------- event lockup ----------
   AI World Summit / Trinidad & Tobago / date. Used where a stranger meets the
   event with no context: the register hero and the link-preview image. The
   GAISB mark stays in the header and footer as the organisation. */
.lockup{margin:0;font-family:var(--display);text-transform:uppercase;line-height:.92;color:#fff;text-wrap:balance}
.lockup b{display:block;font-weight:900;font-size:clamp(40px,6.4vw,76px);letter-spacing:-.005em}
.lockup i{display:block;font-style:normal;font-weight:900;font-size:clamp(24px,3.5vw,42px);letter-spacing:.04em;color:var(--peach);margin-top:8px}
.lockup small{display:block;font-family:"IBM Plex Mono","SFMono-Regular",Consolas,monospace;font-weight:600;font-size:12.5px;letter-spacing:.2em;color:rgba(255,255,255,.82);margin-top:16px}

/* ---------- toast: the mailto fallback's on-screen confirmation ---------- */
.toast{
  position:fixed;left:50%;bottom:calc(24px + env(safe-area-inset-bottom,0px));z-index:300;
  transform:translate(-50%,16px);max-width:min(92vw,560px);padding:14px 20px;border-radius:12px;
  color:#fff;font-size:14.5px;line-height:1.45;border:1.5px solid transparent;
  background:linear-gradient(var(--navy),var(--navy)) padding-box,var(--carib-h) border-box;
  box-shadow:0 18px 40px rgba(0,0,0,.35);opacity:0;pointer-events:none;
  transition:opacity .25s var(--ease),transform .25s var(--ease);
}
.toast.on{opacity:1;transform:translate(-50%,0)}
@media (max-width:640px){.toast{bottom:calc(92px + env(safe-area-inset-bottom,0px))}}

/* ---------- The Future of Money track page ---------- */
.fm-meta{display:flex;flex-wrap:wrap;gap:8px 10px;margin:22px 0 4px}
.fm-meta span{font-size:12.5px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#fff;
  border:1px solid rgba(255,255,255,.34);border-radius:1000px;padding:7px 13px;background:rgba(20,17,56,.35)}
.fm-chapters{display:grid;gap:18px;margin-top:46px}
.fm-ch{display:grid;grid-template-columns:minmax(240px,.82fr) 2fr;gap:clamp(22px,3.4vw,52px);
  background:#fff;border:1px solid var(--hair);border-radius:var(--r);padding:clamp(24px,3vw,38px)}
.fm-ch .code{font-family:var(--display);font-weight:900;font-size:15px;letter-spacing:.14em;color:var(--violet);margin:0 0 8px}
.fm-ch h3{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:clamp(27px,2.6vw,36px);
  line-height:.98;color:var(--navy);margin:0 0 12px;letter-spacing:.005em}
.fm-ch .q{font-size:16px;font-weight:500;color:var(--ink-2);margin:0 0 16px}
.fm-ch .when{font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3);margin:0}
.fm-ch .when b{color:var(--violet);font-weight:700}
.fm-ch ul{list-style:none;margin:0;padding:0}
.fm-ch li{padding:13px 0 13px 20px;position:relative;border-bottom:1px solid var(--hair)}
.fm-ch li:first-child{padding-top:2px}
.fm-ch li:last-child{border-bottom:0;padding-bottom:0}
.fm-ch li::before{content:"";position:absolute;left:2px;top:21px;width:6px;height:6px;border-radius:50%;background:var(--violet)}
.fm-ch li:first-child::before{top:10px}
.fm-ch li b{display:block;font-weight:600;color:var(--navy);font-size:16px}
.fm-ch li span{display:block;font-size:14.5px;color:var(--ink-2);margin-top:4px}
.fm-access{display:block;margin-top:auto;padding-top:18px;font-size:12px;font-weight:600;letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.fm-access a{color:var(--violet)}
@media (max-width:800px){.fm-ch{grid-template-columns:1fr}}
/* Inline links inside agenda slots, the World panel, FAQ answers and sponsor notes */
.slot p a,.wp-more a,.panel li span a,.where .w span a{color:var(--violet);font-weight:600;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.wp-more{margin:16px 0 0;font-size:15px}
.wp-more a::after{content:" \2192"}

/* ---------- Early registration (assets/er.js sets html.er-closed when it ends) ---------- */
.er{max-width:760px;margin:40px auto 0;text-align:center;border:1px solid rgba(255,255,255,.16);border-radius:16px;padding:26px clamp(18px,3vw,34px) 24px;background:rgba(255,255,255,.04)}
.er-k{font-size:12px;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:var(--peach);margin:0}
.er-h{font-family:var(--display);font-weight:800;text-transform:uppercase;font-size:clamp(26px,3vw,36px);line-height:1;color:#fff;margin:8px 0 0}
.er .countdown{justify-content:center;margin-top:18px}
.er-note{font-size:13.5px;color:var(--on-dark-2);margin:16px auto 0;max-width:56ch}
.er-done{display:none;font-size:15px;color:#fff;margin:0}
.tk .tk-er{font-size:11.5px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--peach);margin:0 0 10px}
.tk.feature .tk-er{color:#fff}
.tk .price .p-reg{display:none}
.tk .p-was{display:inline-block;margin-left:.4em;font-size:.52em;font-weight:700;letter-spacing:-.01em;color:rgba(255,255,255,.5);text-decoration:line-through;text-decoration-thickness:.09em;text-decoration-color:rgba(255,255,255,.7);vertical-align:baseline}
.tk.feature .p-was{color:rgba(255,255,255,.9);text-decoration-color:rgba(255,255,255,.85)}
.tk .p-save{display:inline-block;margin:14px 0 0;padding:6px 12px;border-radius:1000px;background:var(--peach);color:var(--navy);font-size:12.5px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;align-self:flex-start;line-height:1.2}
.tk.feature .p-save{background:#fff;color:var(--violet-2)}
.er-closed .tk .tk-er,.er-closed .tk .p-now,.er-closed .tk .p-was,.er-closed .tk .p-save,.er-closed .er-open{display:none}
.er-closed .tk .price .p-reg{display:inline}
.er-closed .er-done{display:block}

.tk li.tk-club{color:#fff}
.tk li.tk-club b{color:var(--peach);font-weight:700}
.tk li.tk-club::before{background:var(--peach)}
.tk.feature li.tk-club b{color:#fff}
.tk.feature li.tk-club::before{background:var(--peach)}

/* ---------- Phone legibility (audit 2026-10-01) ----------
   Uppercase micro-labels drop to 10-10.5px on desktop by design; on a phone
   they carry real information (which pass a session needs, form labels,
   countdown units), so they get a 12px floor. Standalone text links get a
   taller hit area. */
@media (max-width:600px){
  .cd-unit span{font-size:11px;letter-spacing:.12em}
  .wp-voices .lbl,.wp-beneath .lbl,.beneath .lbl,.wp-nav button small{font-size:12px}
  .sig .sig-meta{font-size:12px}
  .sig .sig-meta span{white-space:normal}
  .sig .returns{font-size:11.5px}
  .tk .cap{font-size:12px}
  .stat .l{font-size:12px;letter-spacing:.16em}
  .cert-top .code{font-size:12px}
  .fm-ch .when{font-size:12px}
  .updated{font-size:12.5px}
  body .lp-form label,body .sp-form label{font-size:12px;letter-spacing:.12em}
  .fm-access a,.cert-tutor .who b a{display:inline-block;padding:12px 0}
  .lbl.xp-lbl{font-size:12px}
  body .sp-stats .l{font-size:12px}
}

/* Notes under the passes: three labelled facts instead of centred lines */
.tk-notes{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:22px clamp(18px,3vw,40px);margin-top:38px}
.tk-note{border-top:1.5px solid rgba(255,255,255,.16);padding-top:16px;text-align:left}
.tk-note b{display:block;font-size:12px;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--peach)}
.tk-note p{margin:8px 0 0;font-size:14.5px;line-height:1.6;color:var(--on-dark-2)}
.tk-note a{color:#fff;font-weight:600;text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;white-space:nowrap}
.tk-note a:hover{color:var(--peach)}

/* honeypot: hidden from people, filled by bots */
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.fm-legal{max-width:74ch;margin:22px auto 0;text-align:center;font-size:13px;line-height:1.6;color:var(--ink-3)}
.fm-also{margin:28px 0 0;text-align:center;font-size:15px;color:var(--ink-2)}
.fm-also a{color:var(--violet);font-weight:600}
