/* ===========================================================
   כנס הלונג׳ביטי 2026 — Mews Unfold language, adapted.
   Materialized glass form + Lenis smooth scroll + GSAP +
   marquees + curved light/dark transitions + rounded cards.
   Type: Levit (Hagilda web license, purchased by client) + Assistant (free,
   SIL OFL) as variable-font body. Simpler/Aduma removed 2026-07-05 to cut
   licensing from three families to one.
   =========================================================== */

@font-face{ font-family:'Assistant'; font-weight:200 800; font-style:normal; font-display:swap; src:url('assets/fonts/Assistant-VF-hebrew.woff2') format('woff2'); unicode-range:U+0307-0308, U+0590-05FF, U+200C-2010, U+20AA, U+25CC, U+FB1D-FB4F; }
@font-face{ font-family:'Assistant'; font-weight:200 800; font-style:normal; font-display:swap; src:url('assets/fonts/Assistant-VF-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:'Assistant'; font-weight:200 800; font-style:normal; font-display:swap; src:url('assets/fonts/Assistant-VF-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; }

:root{
  --paper:  #F5F1E8;     /* warm cream base (longevity brand) */
  --paper2: #EDE7D9;
  --ink:    #1B1A16;
  --ink2:   #5c574d;
  --dark:   #1D2D32;     /* deep teal slabs (was near-black — fixes "morbid") */
  --dark2:  #26383E;
  --mist:   #F1ECE0;
  --mist2:  rgba(241,236,224,.64);
  --violet: #AA8E48;     /* brand gold accent (token name kept) */
  --mint:   #A0CE6F;     /* vitality green */
  --sans: 'Assistant', system-ui, -apple-system, sans-serif;
  --display: 'LevitExt', 'Assistant', system-ui, sans-serif;
  --wrap: 1380px; --pad: clamp(20px,4vw,64px);
  --r: 20px;
  --ease: cubic-bezier(.16,1,.3,1);
}
*{ box-sizing:border-box; margin:0; padding:0; }
html{ -webkit-text-size-adjust:100%; overflow-x:clip; }
/* overflow-x:clip (not hidden) stops wide children (marquees, 170% curves, the
   pinned spk-track) from inflating document width / window.innerWidth on mobile,
   without creating a scroll container that would fight ScrollTrigger pinning. */
body{ font-family:var(--sans); background:var(--paper); color:var(--ink); -webkit-font-smoothing:antialiased; overflow-x:clip; max-width:100vw; }
a{ color:inherit; text-decoration:none; }
img{ display:block; max-width:100%; }
.wrap{ max-width:var(--wrap); margin-inline:auto; padding-inline:var(--pad); }
b{ font-weight:700; }
/* display face (LevitExt) on the big type; numbers ride LevitMono; body is Assistant */
.hero__word, .sec-title, .marquee__track span, .cap, .stat__n, .intro__txt,
.foot__big, .loader__word, .tk__n{ font-family:var(--display); }
.tk__p{ font-family:'LevitMono',ui-monospace,monospace; }
.vcard__t{ font-family:var(--sans); font-weight:600; }
/* Levit — licensed webfont (Hagilda web license, purchased by client 2026-07-06) */
@font-face{ font-family:'LevitExt'; src:url('assets/fonts/Levit_1950-BlackExtended.woff2') format('woff2'); font-weight:900; font-display:swap; }
@font-face{ font-family:'LevitMono'; src:url('assets/fonts/Levit_Blended-BoldMono.woff2') format('woff2'); font-weight:700; font-display:swap; }
.sec-title, .foot__big{ font-family:'LevitExt','Assistant',sans-serif; letter-spacing:-.015em; }

/* ---------- preloader ---------- */
.loader{ position:fixed; inset:0; z-index:200; background:var(--paper); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1.3rem; transition:opacity .7s var(--ease), visibility .7s; }
.loader.done{ opacity:0; visibility:hidden; }
.loader__row{ display:flex; align-items:baseline; gap:1rem; }
.loader__word{ font-weight:800; font-size:clamp(1.5rem,4vw,2.6rem); letter-spacing:.2em; padding-inline-start:.2em; }
.loader__pct{ font-size:1rem; color:var(--ink2); font-variant-numeric:tabular-nums; }
.loader__bar{ width:min(260px,60vw); height:2px; background:rgba(22,23,28,.12); overflow:hidden; }
.loader__bar i{ display:block; height:100%; width:0; background:var(--violet); }

/* ---------- password gate ---------- */
/* (password gate removed 2026-07-05 — site is public) */

/* ---------- cookie consent (Hebrew, bottom-right card) ---------- */
/* physical right so it never collides with the WhatsApp/a11y fabs on the left */
.ck{ position:fixed; z-index:260; right:clamp(14px,2.5vw,26px); bottom:clamp(14px,2.5vh,26px); max-width:min(400px,calc(100vw - 28px)); background:var(--dark); color:var(--mist); border-radius:var(--r); padding:1.3rem 1.4rem; box-shadow:0 24px 60px -20px rgba(20,25,28,.6); opacity:0; transform:translateY(18px); transition:opacity .45s var(--ease), transform .45s var(--ease); }
.ck.show{ opacity:1; transform:none; }
.ck__txt{ font-size:.95rem; line-height:1.55; color:var(--mist2); margin-bottom:1rem; }
.ck__txt a{ color:var(--mint); text-decoration:underline; text-underline-offset:3px; }
.ck__btns{ display:flex; gap:.6rem; }
.ck__ok{ flex:1; background:var(--violet); color:#231d0c; border:none; border-radius:100px; padding:.8em 1.4em; font-family:var(--sans); font-weight:700; font-size:.95rem; cursor:pointer; }
.ck__ok:hover{ filter:brightness(1.08); }
.ck__no{ background:none; color:var(--mist2); border:1px solid rgba(241,236,224,.25); border-radius:100px; padding:.8em 1.3em; font-family:var(--sans); font-weight:600; font-size:.95rem; cursor:pointer; }
.ck__no:hover{ color:var(--mist); border-color:rgba(241,236,224,.5); }
.ck button:focus-visible{ outline:2px solid var(--mint); outline-offset:2px; }

/* ---------- accessibility widget (above the WhatsApp fab) ---------- */
.a11y{ position:fixed; z-index:80; left:clamp(16px,3vw,28px); bottom:calc(clamp(16px,3vh,28px) + 66px); }
.a11y__btn{ width:54px; height:54px; border-radius:50%; border:none; cursor:pointer; background:var(--dark); color:var(--mist); display:flex; align-items:center; justify-content:center; box-shadow:0 12px 30px -10px rgba(29,45,50,.65); transition:transform .3s var(--ease), background .3s; }
.a11y__btn:hover{ transform:translateY(-2px); background:var(--dark2); }
.a11y__btn:focus-visible, .a11y__opt:focus-visible, .a11y__link:focus-visible{ outline:2px solid var(--violet); outline-offset:2px; }
/* physical left anchor: the fab sits at the screen's left edge, and in RTL
   inset-inline-start would flip the panel offscreen */
.a11y__panel{ position:absolute; bottom:64px; left:0; width:230px; background:var(--dark); color:var(--mist); border-radius:16px; padding:.9rem; box-shadow:0 24px 60px -20px rgba(20,25,28,.65); }
.a11y__title{ font-weight:700; font-size:.92rem; color:var(--violet); margin:0 .3rem .55rem; }
.a11y__opt{ display:flex; align-items:center; justify-content:space-between; width:100%; background:none; border:none; color:var(--mist2); font-family:var(--sans); font-size:.92rem; padding:.55rem .3rem; cursor:pointer; border-radius:8px; text-align:start; }
.a11y__opt:hover{ background:rgba(241,236,224,.07); color:var(--mist); }
.a11y__opt i{ width:30px; height:16px; border-radius:100px; background:rgba(241,236,224,.18); position:relative; flex:0 0 auto; transition:background .25s; }
.a11y__opt i::after{ content:""; position:absolute; top:2px; inset-inline-start:2px; width:12px; height:12px; border-radius:50%; background:var(--mist); transition:transform .25s; }
.a11y__opt.on i{ background:var(--violet); }
.a11y__opt.on i::after{ transform:translateX(-14px); }
.a11y__reset{ border-top:1px solid rgba(241,236,224,.14); margin-top:.35rem; padding-top:.7rem; color:var(--mist2); }
.a11y__link{ display:block; font-size:.82rem; color:var(--mint); text-decoration:underline; text-underline-offset:3px; margin:.5rem .3rem 0; }

/* ---------- a11y modes ---------- */
html.a11y-font-1{ font-size:112.5%; }
html.a11y-font-2{ font-size:125%; }
html.a11y-links a{ text-decoration:underline !important; text-underline-offset:3px; }
html.a11y-gray img, html.a11y-gray canvas, html.a11y-gray video{ filter:grayscale(1); }
html.a11y-gray{ --violet:#8a8578; --mint:#9aa392; }
html.a11y-contrast{ --paper:#ffffff; --paper2:#ffffff; --ink:#000000; --ink2:#111111; --dark:#000000; --dark2:#111111; --mist:#ffffff; --mist2:rgba(255,255,255,.95); --violet:#6d5600; --mint:#14530f; }
html.a11y-contrast .slab, html.a11y-contrast .speakers, html.a11y-contrast .foot{ --violet:#e3c56b; --mint:#b7e392; }
html.a11y-contrast .hm-canvas{ display:none; }
html.a11y-contrast [class$="-stage"]{ background:#fff !important; }
html.a11y-contrast .hm-sub{ color:#000 !important; }

/* ---------- nav ---------- */
.nav{ position:fixed; inset-block-start:0; inset-inline:0; z-index:80; display:flex; align-items:center; justify-content:space-between; gap:2rem; padding:clamp(16px,2vw,26px) var(--pad); transition:color .4s, background .4s, backdrop-filter .4s, transform .45s var(--ease); }
.nav.hide{ transform:translateY(-115%); }
.nav.inv{ color:var(--mist); }
.nav.stuck{ background:rgba(236,232,245,.62); backdrop-filter:blur(16px) saturate(150%); }
.nav.stuck.inv{ background:rgba(17,16,22,.5); }
.nav__brand{ font-weight:800; letter-spacing:.24em; padding-inline-start:.24em; font-size:1.04rem; }
.nav__links{ display:flex; gap:2rem; margin-inline:auto; }
.nav__links a{ font-size:1rem; font-weight:500; opacity:.66; transition:opacity .25s; }
.nav__links a:hover{ opacity:1; }
.nav__pill{ display:inline-flex; align-items:center; gap:.6em; background:currentColor; padding:.72em 1.35em; border-radius:100px; font-weight:600; font-size:.95rem; transition:transform .35s var(--ease); }
.nav__pill, .nav.inv .nav__pill{ color:var(--ink); background:var(--mist); }
.nav:not(.inv) .nav__pill{ color:var(--mist); background:var(--ink); }
.nav__pill span{ width:7px; height:7px; border-radius:50%; background:var(--violet); }
/* registration lives in the hero + a bottom dock on scroll — hide the top nav pill */
#nav .nav__pill{ display:none; }
/* bottom-docked registration CTA: appears once you scroll past the hero, then follows */
.cta-dock{ position:fixed; z-index:75; bottom:clamp(16px,3vh,28px); left:50%; transform:translate(-50%,26px); opacity:0; pointer-events:none; display:inline-flex; align-items:center; gap:.6em; padding:1em 1.85em; border-radius:100px; background:var(--ink); color:var(--mist); font-family:var(--sans); font-weight:600; font-size:1rem; letter-spacing:.01em; text-decoration:none; box-shadow:0 18px 44px -16px rgba(20,19,25,.6); transition:opacity .5s var(--ease), transform .5s var(--ease); }
.cta-dock.show{ opacity:1; transform:translate(-50%,0); pointer-events:auto; }
.cta-dock span{ width:7px; height:7px; border-radius:50%; background:var(--violet); }
.cta-dock.show:hover{ transform:translate(-50%,-3px); }
/* WhatsApp contact FAB (bottom-left, clears the centre dock) */
.wa-fab{ position:fixed; z-index:74; bottom:clamp(16px,3vh,28px); left:clamp(16px,3vw,28px); width:54px; height:54px; border-radius:50%; background:#25D366; color:#fff; display:flex; align-items:center; justify-content:center; box-shadow:0 12px 30px -10px rgba(37,211,102,.6); transition:transform .3s var(--ease); }
.wa-fab:hover{ transform:scale(1.08); }
.nav__pill:hover{ transform:translateY(-2px); }
/* magnetic pill: JS drives transform, so disable the hover-lift transform when armed
   (keep a transition only on filter/background to avoid fighting quickTo) */
.nav__pill.magnetic{ transition:background .4s, color .4s; will-change:transform; }
.nav__pill.magnetic:hover{ transform:none; }

/* ---------- scroll-progress bar ---------- */
.scrollbar{ position:fixed; inset-block-start:0; inset-inline:0; height:3px; z-index:90; background:transparent; pointer-events:none; }
.scrollbar i{ display:block; height:100%; width:0%; background:linear-gradient(90deg,var(--violet),var(--mint)); transform-origin:right center; will-change:width; }
@media (prefers-reduced-motion: reduce){ .scrollbar{ display:none; } }

/* ===========================================================
   HERO
   =========================================================== */
.hero{ position:relative; min-height:100svh; overflow:hidden; isolation:isolate;
  background:
    radial-gradient(80% 70% at 80% 10%, rgba(170,142,72,.5), transparent 60%),
    radial-gradient(75% 60% at 15% 95%, rgba(160,206,111,.5), transparent 58%),
    linear-gradient(150deg,#F5F1E8,#EFEADD); }
.form{ position:absolute; inset:0; z-index:1; }
.form canvas{ width:100%; height:100%; }
.hero__stage{ position:relative; z-index:2; min-height:100svh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; padding:0 var(--pad); pointer-events:none; }
.hero__kick{ font-size:clamp(.82rem,1.4vw,1rem); font-weight:600; color:var(--ink2); margin-bottom:clamp(1rem,2vw,1.6rem); }
.hero__title{ font-family:var(--display); font-weight:900; font-size:clamp(3rem,12vw,10rem); line-height:.86; letter-spacing:-.025em; color:var(--ink); }
.hero__title .yr{ display:inline-block; font-weight:700; color:var(--violet); }
.hero__foot{ position:absolute; inset-block-end:clamp(40px,5.5vw,74px); inset-inline:0; z-index:2; display:flex; align-items:center; justify-content:center; gap:clamp(.9rem,2.2vw,2rem); flex-wrap:wrap; padding-inline:var(--pad); }
.hf{ font-size:clamp(.92rem,1.2vw,1.1rem); font-weight:500; color:var(--ink2); letter-spacing:.01em; }
.hdiv{ display:inline-block; background:rgba(22,23,28,.32); flex:none; }
.hdiv--pill{ width:clamp(26px,3vw,42px); height:clamp(9px,1.1vw,12px); border-radius:100px; }
.hdiv--dot{ width:8px; height:8px; border-radius:50%; }
.intro__body{ margin-top:1.5rem; max-width:50ch; font-size:clamp(1.05rem,1.5vw,1.25rem); line-height:1.65; color:var(--mist2); }

/* ===========================================================
   SHARED section heads
   =========================================================== */
.sec-head{ max-width:60ch; margin-bottom:clamp(2.4rem,5vw,4.2rem); }
.sec-idx{ font-size:.86rem; font-weight:600; letter-spacing:.04em; color:var(--violet); margin-bottom:1.2rem; }
.sec-title{ font-weight:800; font-size:clamp(2.2rem,6vw,5rem); line-height:.98; letter-spacing:-.03em; }
.sec-note{ margin-top:1.4rem; max-width:46ch; font-size:clamp(1.02rem,1.5vw,1.2rem); line-height:1.55; color:var(--ink2); }
.sec-head--light .sec-note{ color:var(--mist2); }
.sec-head--light .sec-idx{ color:var(--mint); }

/* ===========================================================
   DARK SLABS + curve + marquee
   =========================================================== */
.slab{ position:relative; background:var(--dark); color:var(--mist); padding-block:clamp(90px,12vw,180px); margin-top:0; }
.slab__curve{ position:absolute; inset-block-start:0; inset-inline-start:50%; transform:translate(-50%,-60%); width:170%; height:clamp(160px,20vw,320px); background:var(--paper); border-radius:50%; z-index:1; }
/* :not() keeps the curve absolute — a bare `.slab > *` ties this rule with
   .slab__curve (same specificity, later wins) and shoved the arc into flow,
   adding ~290px of dead dark space at the top of every slab */
.slab > *:not(.slab__curve){ position:relative; z-index:2; }

.marquee{ overflow:hidden; padding-block:clamp(1rem,2vw,1.8rem); border-block:1px solid rgba(241,236,224,.12); direction:ltr; }
.marquee__track{ display:flex; white-space:nowrap; width:max-content; direction:ltr; }
.mq-set{ direction:rtl; flex:0 0 auto; }
.marquee__track span{ font-weight:800; font-size:clamp(2rem,5vw,4.2rem); letter-spacing:-.02em; display:inline-flex; align-items:center; padding-inline-end:.3em; }
.marquee__track em{ color:var(--violet); font-style:normal; margin-inline:.5em; font-size:.7em; }

.intro{ padding-block:clamp(2.6rem,6vw,5rem) clamp(2rem,4vw,3rem); }
.intro__txt{ font-weight:600; font-size:clamp(1.5rem,3.6vw,3rem); line-height:1.22; letter-spacing:-.02em; max-width:24ch; }
.intro__txt em{ font-style:normal; color:var(--mint); }
.intro__kick{ font-family:'LevitMono',ui-monospace,monospace; font-weight:700; font-size:clamp(.72rem,.9vw,.86rem); letter-spacing:.16em; color:var(--violet); margin-bottom:clamp(.9rem,1.8vw,1.4rem); }

/* 2025 photo strip: full-bleed, drag-to-scroll, hover to expand (others compress) */
.gal-row{ display:flex; direction:ltr; gap:clamp(.7rem,1.1vw,1rem); overflow-x:auto; padding-inline:var(--pad); height:clamp(220px,26vw,360px); cursor:grab; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
.gal-row::-webkit-scrollbar{ display:none; }
.gal-row.grabbing{ cursor:grabbing; }
.gal-row.grabbing .gal-img{ pointer-events:none; }
.gal-img{ position:relative; flex:0 0 clamp(280px,30vw,420px); height:100%; border-radius:var(--r); overflow:hidden; transition:flex-basis .55s var(--ease); }
/* ONLY the hovered tile expands. Compressing the siblings (the old
   .gal-row:hover rule) shifted every tile left, slid the photo out from
   under the cursor and re-triggered hover on the neighbour — the "spring".
   With siblings frozen, the hovered tile's leading edge stays put. */
.gal-row .gal-img:hover{ flex-basis:clamp(330px,39vw,540px); }
.gal-img img{ width:100%; height:100%; object-fit:cover; }
/* event-details bar under the photo strip */
.evt{ margin-top:clamp(2rem,4vw,3.4rem); }
.evt__bar{ display:flex; align-items:center; gap:clamp(1.4rem,4vw,3.5rem); flex-wrap:wrap; border-block:1px solid rgba(241,236,224,.16); padding-block:clamp(1.6rem,3vw,2.6rem); }
.evt__cell{ display:flex; flex-direction:column; gap:.55rem; }
.evt__cell + .evt__cell{ padding-inline-start:clamp(1.4rem,4vw,3.5rem); border-inline-start:1px solid rgba(241,236,224,.16); }
.evt__cap{ font-size:.76rem; font-weight:700; letter-spacing:.1em; color:var(--mint); }
.evt__v{ font-family:'LevitMono',ui-monospace,monospace; font-weight:700; font-size:clamp(1.8rem,3.6vw,3rem); line-height:1; letter-spacing:-.01em; color:var(--mist); }
.evt__s{ font-size:clamp(.95rem,1.3vw,1.15rem); color:var(--mist2); }
.evt__cal{ margin-inline-start:auto; display:inline-flex; align-items:center; gap:.65em; background:var(--mist); color:var(--ink); padding:.95em 1.7em; border-radius:100px; font-weight:600; font-size:1rem; transition:transform .35s var(--ease); box-shadow:0 14px 40px -20px rgba(241,236,224,.45); }
.evt__cal span{ width:7px; height:7px; border-radius:50%; background:var(--violet); }
.evt__cal:hover{ transform:translateY(-2px); }
@media (max-width:760px){ .evt__cell + .evt__cell{ padding-inline-start:0; border-inline-start:0; } .evt__cal{ margin-inline-start:0; } }
/* touch: no hover-growth at all — sticky :hover after tap caused jumps */
@media (pointer:coarse){ .gal-row .gal-img:hover{ flex-basis:clamp(280px,30vw,420px); } }

/* ===========================================================
   SPEAKERS (dark)
   =========================================================== */
.speakers{ background:var(--dark); color:var(--mist); padding-block:clamp(70px,9vw,140px) clamp(90px,11vw,170px); }
.speakers .sec-idx{ color:var(--mint); } .speakers .sec-note{ color:var(--mist2); }

/* 2025 speaker index — editorial name grid (expandable cards return with 2026 content) */
.spx-cap{ font-family:'LevitMono',ui-monospace,monospace; font-weight:700; font-size:clamp(.72rem,.9vw,.84rem); letter-spacing:.16em; color:var(--violet); margin:clamp(2.2rem,4.5vw,3.6rem) 0 clamp(.4rem,1vw,.8rem); }
.spx-grid{ list-style:none; margin:0; padding:0; display:grid; grid-template-columns:repeat(auto-fill,minmax(min(320px,100%),1fr)); column-gap:clamp(1.4rem,3vw,3rem); }
.spx{ display:flex; align-items:center; gap:clamp(.8rem,1.4vw,1.1rem); padding-block:clamp(.85rem,1.5vw,1.25rem); border-top:1px solid rgba(241,236,224,.13); }
.spx__av{ flex:0 0 auto; width:clamp(50px,4.4vw,62px); height:clamp(50px,4.4vw,62px); border-radius:50%; object-fit:cover; object-position:center 22%; background:var(--dark2); }
.spx__av--m{ display:inline-flex; align-items:center; justify-content:center; background:linear-gradient(135deg,rgba(170,142,72,.34),rgba(160,206,111,.16)); border:1px solid rgba(241,236,224,.14); color:var(--mist); font-family:'LevitExt','Assistant',sans-serif; font-weight:800; font-size:clamp(1rem,1.3vw,1.25rem); line-height:1; }
.spx__t{ min-width:0; }
.spx__n{ margin:0; font-size:clamp(1rem,1.2vw,1.12rem); font-weight:700; color:var(--mist); line-height:1.25; }
.spx__r{ margin:.2rem 0 0; font-size:clamp(.8rem,.92vw,.9rem); color:var(--mist2); line-height:1.4; }

.spk-row{ overflow-x:auto; overflow-y:hidden; scrollbar-width:none; -webkit-overflow-scrolling:touch; cursor:grab; }
.spk-row::-webkit-scrollbar{ display:none; }
.spk-track{ display:flex; gap:clamp(1rem,1.5vw,1.4rem); width:max-content; padding-inline:var(--pad); }
.spk{ position:relative; flex:0 0 clamp(264px,28vw,384px); aspect-ratio:5/6; border-radius:var(--r); overflow:hidden; background:linear-gradient(165deg,#294048,#182830); border:1px solid rgba(241,236,224,.08); display:flex; flex-direction:column; justify-content:flex-end; transition:transform .4s var(--ease), border-color .3s; }
.spk:hover{ transform:translateY(-5px); border-color:rgba(241,236,224,.24); }
.spk__img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.spk::after{ content:""; position:absolute; inset:0; z-index:1; background:linear-gradient(to top, rgba(18,28,32,.95) 6%, rgba(18,28,32,.5) 34%, transparent 60%); }
.spk--noimg::before{ content:""; position:absolute; inset:0; z-index:0; background:radial-gradient(78% 66% at 50% 24%, rgba(170,142,72,.34), transparent 66%); }
.spk__tag{ position:absolute; z-index:3; inset-block-start:clamp(1.1rem,1.6vw,1.5rem); inset-inline-start:clamp(1.1rem,1.6vw,1.5rem); font-size:.74rem; font-weight:600; padding:.4em .85em; border-radius:100px; background:rgba(24,38,42,.55); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); color:var(--mist); }
.spk__tag--key{ background:var(--violet); color:#231d0c; }
.spk__toggle{ position:absolute; z-index:4; inset-block-start:clamp(1.1rem,1.6vw,1.5rem); inset-inline-end:clamp(1.1rem,1.6vw,1.5rem); width:34px; height:34px; border-radius:50%; border:1px solid rgba(241,236,224,.4); background:rgba(24,38,42,.5); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); cursor:pointer; padding:0; }
.spk__toggle::before,.spk__toggle::after{ content:""; position:absolute; inset:0; margin:auto; background:var(--mist); border-radius:2px; transition:transform .4s var(--ease); }
.spk__toggle::before{ width:13px; height:2px; }
.spk__toggle::after{ width:2px; height:13px; }
.spk.open .spk__toggle{ background:var(--violet); border-color:var(--violet); }
.spk.open .spk__toggle::before,.spk.open .spk__toggle::after{ background:#231d0c; }
.spk.open .spk__toggle::after{ transform:rotate(90deg); }
.spk__b{ position:relative; z-index:2; padding:clamp(1.1rem,1.6vw,1.5rem) clamp(1.1rem,1.6vw,1.5rem) clamp(.9rem,1.2vw,1.1rem); }
.spk__n{ font-weight:700; font-size:clamp(1.1rem,1.5vw,1.35rem); line-height:1.1; color:var(--mist); }
.spk__r{ margin-top:.4rem; font-size:.86rem; color:rgba(241,236,224,.72); }
.spk__panel{ position:relative; z-index:2; overflow:hidden; max-height:0; opacity:0; padding-inline:clamp(1.1rem,1.6vw,1.5rem); transition:max-height .5s var(--ease), opacity .35s var(--ease), padding .5s var(--ease); }
.spk.open .spk__panel{ max-height:260px; opacity:1; padding-bottom:clamp(1.1rem,1.6vw,1.5rem); }
.spk__topic{ font-size:.95rem; font-weight:600; color:var(--mist); line-height:1.32; margin-bottom:.85rem; }
.spk__topic span{ display:block; font-size:.66rem; font-weight:700; letter-spacing:.14em; color:var(--violet); margin-bottom:.35rem; }
.spk__link{ display:inline-flex; align-items:center; gap:.4em; font-size:.88rem; font-weight:600; color:var(--mint); margin-bottom:.9rem; text-decoration:none; }
.spk__link i{ font-style:normal; }
.spk__soc{ display:flex; gap:.5rem; }
.spk__soc a{ width:32px; height:32px; border-radius:50%; border:1px solid rgba(241,236,224,.24); display:flex; align-items:center; justify-content:center; font-size:.82rem; font-weight:600; color:var(--mist); text-decoration:none; transition:background .25s, color .25s; }
.spk__soc a:hover{ background:var(--violet); border-color:var(--violet); color:#231d0c; }

/* ===========================================================
   WHY (light) + value cards
   =========================================================== */
.why{ position:relative; background:var(--paper); padding-block:clamp(120px,15vw,220px) clamp(70px,9vw,130px); }
.why::before{ content:""; position:absolute; inset-block-start:0; inset-inline-start:50%; transform:translate(-50%,-58%); width:170%; height:clamp(160px,20vw,320px); background:var(--dark); border-radius:50%; }
.why > *{ position:relative; }
.why-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(1rem,1.6vw,1.4rem); }
.vcard{ border-radius:var(--r); background:#fff; border:1px solid rgba(22,23,28,.07); padding:clamp(1.6rem,2.4vw,2.4rem); min-height:clamp(240px,26vw,340px); display:flex; flex-direction:column; justify-content:space-between; gap:1.6rem; cursor:pointer; overflow:hidden; justify-self:center; width:100%; transition:box-shadow .4s var(--ease); }
.vcard:hover{ box-shadow:0 24px 60px -30px rgba(60,50,20,.35); }
/* clicked: the card morphs (via GSAP) into a circle of the same size; content re-centres */
.vcard.open{ justify-content:center; align-items:center; text-align:center; padding:clamp(1.3rem,2.3vw,2rem); }
.vcard.open .vcard__head{ justify-content:center; }
.vcard.open .vcard__bot{ align-items:center; gap:.45rem; }
.vcard.open .vcard__plus{ display:none; }
/* circle mode reveals the detail text, sized to fit the same-size circle */
.vcard.open .vcard__t{ font-size:clamp(.92rem,1.2vw,1.05rem); line-height:1.3; }
.vcard.open .vcard__more{ display:block; }
.vcard.open .vcard__more p{ margin-top:.45rem; font-size:.82rem; line-height:1.42; }
.vcard--hi{ background:var(--violet); color:var(--mist); }
.vcard__head{ display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.vcard__k{ font-size:.85rem; font-weight:600; opacity:.7; }
.vcard__plus{ position:relative; width:24px; height:24px; flex:none; opacity:.7; }
.vcard__plus::before,.vcard__plus::after{ content:""; position:absolute; inset:0; margin:auto; background:currentColor; border-radius:2px; transition:transform .45s var(--ease); }
.vcard__plus::before{ width:14px; height:2px; }
.vcard__plus::after{ width:2px; height:14px; }
.vcard.open .vcard__plus::after{ transform:rotate(90deg); }
.vcard__t{ font-weight:600; font-size:clamp(1.15rem,1.7vw,1.5rem); line-height:1.3; }
.vcard__more{ display:none; }
.vcard__more p{ margin-top:1rem; font-family:var(--sans); font-weight:400; font-size:1rem; line-height:1.55; color:var(--ink2); }
.vcard--hi .vcard__more p{ color:rgba(241,236,224,.82); }

/* ===========================================================
   EXPO (dark slab) — capsule marquee + image grid
   =========================================================== */
.slab--b{ } /* dark slab, uses .slab */
.cap-marquee{ overflow:hidden; padding-block:clamp(1rem,2vw,1.6rem); margin-bottom:clamp(2.4rem,5vw,4rem); direction:ltr; }
.cap-track{ display:flex; align-items:center; white-space:nowrap; width:max-content; direction:ltr; }
.cap-set{ direction:rtl; display:inline-flex; align-items:center; flex:0 0 auto; }
.cap{ font-weight:700; font-size:clamp(1.6rem,4vw,3.4rem); letter-spacing:-.02em; padding-inline:.4em; }
.cap-track .pill{ width:clamp(34px,5vw,64px); height:clamp(16px,2.2vw,26px); border-radius:100px; background:var(--violet); display:inline-block; margin-inline:.3em; }
/* hover-expand row: hovered figure grows, the others compress (smooth flex transition) */
.expo-grid{ display:flex; gap:clamp(.9rem,1.4vw,1.2rem); height:clamp(330px,42vw,520px); }
.ec{ position:relative; flex:1 1 0; min-width:0; height:100%; border-radius:var(--r); overflow:hidden; transition:flex .6s var(--ease); }
.ec--big{ flex:1.7 1 0; }
.expo-grid:hover .ec{ flex:1 1 0; }                 /* on any hover, all settle to base */
.expo-grid .ec:hover{ flex:2.8 1 0; }               /* hovered grows, the other two shrink */
.ec img{ width:100%; height:100%; object-fit:cover; }
.ec figcaption{ position:absolute; inset-block-end:1.1rem; inset-inline-start:1.1rem; font-weight:600; font-size:1rem; color:#fff; text-shadow:0 1px 16px rgba(0,0,0,.5); }

/* ===========================================================
   TICKETS (light) + curve
   =========================================================== */
.tickets{ position:relative; background:var(--paper); padding-block:clamp(120px,15vw,220px) clamp(70px,9vw,130px); }
.tickets::before{ content:""; position:absolute; inset-block-start:0; inset-inline-start:50%; transform:translate(-50%,-58%); width:170%; height:clamp(160px,20vw,320px); background:var(--dark); border-radius:50%; }
.tickets > *{ position:relative; }
.tk-grid{ display:grid; grid-template-columns:1.15fr 1fr; gap:clamp(1rem,1.6vw,1.6rem); }
.tk{ border-radius:var(--r); background:#fff; border:1px solid rgba(22,23,28,.08); padding:clamp(1.8rem,3vw,2.8rem); display:flex; flex-direction:column; }
.tk--primary{ background:var(--dark); color:var(--mist); border-color:var(--dark); }
.tk__top{ display:flex; align-items:baseline; justify-content:space-between; gap:1rem; padding-bottom:1.6rem; border-bottom:1px solid rgba(22,23,28,.1); }
.tk--primary .tk__top{ border-color:rgba(241,236,224,.18); }
.tk__n{ font-weight:700; font-size:clamp(1.3rem,2vw,1.7rem); }
.tk__p{ font-weight:800; font-size:clamp(2.4rem,4vw,3.4rem); letter-spacing:-.03em; line-height:1; }
.tk__p small{ font-size:1.1rem; font-weight:600; margin-inline-start:.1em; }
.tk__list{ list-style:none; margin:1.6rem 0 2rem; display:flex; flex-direction:column; gap:.8rem; }
.tk__list li{ font-size:1.02rem; color:var(--ink2); padding-inline-start:1.4em; position:relative; }
.tk--primary .tk__list li{ color:var(--mist2); }
.tk__list li::before{ content:""; position:absolute; inset-inline-start:0; inset-block-start:.55em; width:7px; height:7px; border-radius:50%; background:var(--violet); }
.tk__cta{ margin-top:auto; display:inline-flex; align-items:center; justify-content:center; gap:.6em; background:var(--violet); color:#fff; padding:1em 1.6em; border-radius:100px; font-weight:600; transition:transform .35s var(--ease); }
.tk__cta span{ width:7px; height:7px; border-radius:50%; background:currentColor; }
.tk__cta:hover{ transform:translateY(-2px); }
.tk__cta--ghost{ background:transparent; color:var(--ink); border:1px solid rgba(22,23,28,.2); }
/* presenters box (stands in for the hidden fair ticket) */
.tk--presenters{ background:linear-gradient(160deg,rgba(170,142,72,.12),rgba(160,206,111,.1)); border-color:rgba(170,142,72,.32); }
.tk__ptxt{ font-size:1.05rem; line-height:1.5; color:var(--ink2); margin:1.6rem 0 2rem; }

/* PROGRAM / schedule (3 plenaries) */
.program{ background:var(--paper); padding-block:clamp(90px,12vw,160px); }
.prog{ list-style:none; margin:0; padding:0; border-top:1px solid rgba(27,26,22,.14); }
.prog__s{ display:grid; grid-template-columns:auto 1fr; gap:clamp(1.4rem,4vw,4rem); align-items:baseline; padding-block:clamp(1.6rem,3vw,2.6rem); border-bottom:1px solid rgba(27,26,22,.14); }
.prog__t{ font-family:'LevitMono',ui-monospace,monospace; font-weight:700; font-size:clamp(1.3rem,2.4vw,2rem); color:var(--violet); letter-spacing:-.02em; }
.prog__k{ display:block; font-size:.78rem; font-weight:700; letter-spacing:.12em; color:var(--ink2); margin-bottom:.6rem; }
.prog__h{ font-family:var(--display); font-weight:800; font-size:clamp(1.5rem,3vw,2.4rem); line-height:1.05; letter-spacing:-.02em; color:var(--ink); }
.prog__d{ margin-top:.7rem; font-size:1rem; color:var(--ink2); }

/* PARTNERS / exhibitors marquee */
.partners{ background:var(--paper); padding-block:clamp(80px,10vw,140px); overflow:hidden; }
/* frameless logo bar: ink logos straight on the paper bg.
   direction:ltr on the WRAPPER too — in an RTL page the hidden overflow
   anchors to the right edge otherwise and the drifting track "escapes"
   (the recurring marquee-gap bug) */
.plogo{ overflow:hidden; margin-top:clamp(1.8rem,3.4vw,3rem); direction:ltr; }
.plogo-track{ display:flex; align-items:center; gap:clamp(2.4rem,4.5vw,4.5rem); width:max-content; direction:ltr; will-change:transform; }
.plogo-set{ display:inline-flex; align-items:center; gap:clamp(2.4rem,4.5vw,4.5rem); flex:0 0 auto; }
.plogo-item{ display:inline-flex; align-items:center; justify-content:center; flex:0 0 auto; }
.plogo-item img{ height:clamp(32px,3.6vw,50px); width:auto; max-width:clamp(130px,15vw,190px); object-fit:contain; }

/* production credits: frameless editorial band, hairline-ruled */
.creds{ display:grid; grid-template-columns:repeat(3,1fr); border-block:1px solid rgba(27,26,22,.14); }
.cred{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:clamp(.9rem,1.6vw,1.3rem); padding:clamp(1.6rem,2.6vw,2.4rem) 1.4rem; }
.cred + .cred{ border-inline-start:1px solid rgba(27,26,22,.14); }
.cred__k{ font-family:'LevitMono',ui-monospace,monospace; font-weight:700; font-size:clamp(.7rem,.85vw,.8rem); letter-spacing:.16em; color:var(--violet); }
.cred img{ height:clamp(30px,3.6vw,48px); width:auto; max-width:min(240px,76%); object-fit:contain; }
@media (max-width:720px){
  .creds{ grid-template-columns:1fr; }
  .cred{ flex-direction:row-reverse; justify-content:space-between; padding:1.1rem .4rem; }
  .cred + .cred{ border-inline-start:0; border-top:1px solid rgba(27,26,22,.14); }
  .cred img{ height:30px; max-width:44%; }
}

/* ===========================================================
   VIDEO carousel (dark slab)
   =========================================================== */
.slab--vid .wrap{ margin-bottom:clamp(2rem,4vw,3rem); }
.vid-row{ display:flex; align-items:flex-start; gap:clamp(.9rem,1.4vw,1.3rem); overflow-x:auto; padding-inline:var(--pad); scrollbar-width:none; cursor:grab; }
.vid-row.grabbing{ cursor:grabbing; }
.vid-row.grabbing .vc{ pointer-events:none; }
.vid-row::-webkit-scrollbar{ display:none; }
.vc{ position:relative; flex:0 0 clamp(260px,30vw,420px); aspect-ratio:16/11; border-radius:var(--r); overflow:hidden; scroll-snap-align:start; }
.vc img{ width:100%; height:100%; object-fit:cover; transition:transform .8s var(--ease); }
.vc:hover img{ transform:scale(1.06); }
.vc::after{ content:""; position:absolute; inset:0; background:linear-gradient(to top, rgba(10,9,14,.8), transparent 55%); }
.vc__play{ position:absolute; inset:0; margin:auto; width:58px; height:58px; border-radius:50%; background:rgba(241,236,224,.92); z-index:2; transition:transform .35s var(--ease); }
.vc__play::before{ content:""; position:absolute; inset:0; margin:auto; width:0; height:0; border-style:solid; border-width:9px 0 9px 14px; border-color:transparent transparent transparent var(--dark); transform:translateX(-2px); }
.vc:hover .vc__play{ transform:scale(1.08); }
.vc__t{ position:absolute; inset-block-end:1.1rem; inset-inline:1.2rem; z-index:2; color:#fff; font-weight:600; font-size:1rem; }

/* ===========================================================
   FOOTER
   =========================================================== */
.foot{ background:var(--dark); color:var(--mist); padding-block:clamp(90px,12vw,160px) 2.4rem; }
.foot__cta{ display:flex; align-items:flex-end; justify-content:space-between; gap:2rem; flex-wrap:wrap; padding-bottom:clamp(3rem,6vw,5rem); border-bottom:1px solid rgba(241,236,224,.14); }
.foot__big{ font-weight:800; font-size:clamp(2.4rem,7vw,6rem); line-height:.92; letter-spacing:-.03em; }
.nav__pill--lg{ font-size:1.05rem; padding:1em 1.7em; color:var(--ink)!important; background:var(--mist)!important; }
.foot__cols{ display:grid; grid-template-columns:1fr 1.2fr 1fr 1fr 1.4fr; gap:clamp(1.4rem,2.4vw,2.4rem); padding-block:clamp(2.6rem,5vw,4rem); }
.foot__cols--slim{ grid-template-columns:1fr 1fr; max-width:min(560px,100%); }
.tk-grid--solo{ grid-template-columns:minmax(0,560px); }
.tk[hidden]{ display:none !important; }
@media (max-width:1040px){ .foot__cols{ grid-template-columns:1fr 1fr; } }
.foot__h{ display:block; font-size:.82rem; font-weight:600; color:var(--mist2); margin-bottom:1.1rem; letter-spacing:.02em; }
.foot__cols a{ display:block; margin-bottom:.7rem; color:var(--mist); opacity:.82; }
.foot__cols a:hover{ opacity:1; }
.foot__nl form{ display:flex; gap:.5rem; flex-wrap:wrap; }
.foot__nl input{ flex:1; min-width:180px; background:rgba(241,236,224,.06); border:1px solid rgba(241,236,224,.2); color:var(--mist); border-radius:100px; padding:.9em 1.2em; font-family:var(--sans); }
.foot__nl input::placeholder{ color:var(--mist2); }
.foot__nl input:focus{ outline:none; border-color:var(--violet); }
.foot__nl button{ background:var(--mist); color:var(--ink); border:none; border-radius:100px; padding:.9em 1.4em; font-family:var(--sans); font-weight:600; cursor:pointer; }
.foot__base{ display:flex; justify-content:space-between; gap:1rem; flex-wrap:wrap; font-size:.84rem; color:var(--mist2); padding-top:1.6rem; border-top:1px solid rgba(241,236,224,.14); }
.foot__legal{ display:inline-flex; gap:1.3rem; }
.foot__legal a{ color:var(--mist2); }
.foot__legal a:hover{ color:var(--mist); }
.foot__credit{ opacity:.75; }
.foot__credit a{ color:var(--violet); }
.foot__credit a:hover{ color:var(--mist); }

/* ===========================================================
   GSAP UPGRADE — section behaviours
   =========================================================== */
/* SplitText line masks: the plugin adds visibility:clip wrappers; we only need
   the lines to start hidden when JS is active so there is no flash of unstyled
   reveal. .js-split is toggled on <html> the moment GSAP boots. */
.js-split .sec-title,
.js-split .intro__txt,
.js-split .intro__body,
.js-split .foot__big{ visibility:hidden; }
/* once SplitText has run we flip visibility back via the split wrappers */
.split-ready{ visibility:visible!important; }

/* SPEAKERS — pinned horizontal showcase.
   On desktop JS removes native scroll and drives .spk-track via transform.
   The row becomes the pin spacer; the viewport clips. Mobile keeps native scroll. */
.speakers.is-pinned{ padding-block:0; }
.speakers.is-pinned .spk-pin{ height:100svh; display:flex; flex-direction:column; justify-content:center; gap:clamp(1.2rem,3vh,2.4rem); overflow:hidden; padding-block:clamp(86px,11vh,120px) clamp(40px,6vh,70px); }
.speakers.is-pinned .spk-row{ overflow:visible; cursor:default; }
.speakers.is-pinned .spk-track{ width:max-content; will-change:transform; }
.spk-pin{ } /* wrapper only meaningful when .is-pinned */
/* compact the head inside the pin so the card band gets the room it needs */
.speakers.is-pinned .spk-head{ margin-bottom:0; flex:none; width:100%; }
.speakers.is-pinned .spk-head .sec-head{ margin-bottom:0; max-width:none; }
.speakers.is-pinned .spk-head .sec-title{ font-size:clamp(1.9rem,4.4vw,3.4rem); }
.speakers.is-pinned .spk-head .sec-note{ display:none; }
.speakers.is-pinned .spk-row{ flex:none; }
/* cap card height so the 5/6 cards always fit the band */
.speakers.is-pinned .spk{ aspect-ratio:auto; height:min(46vh,420px); }
.spk{ will-change:transform; }
/* progress rail under the pinned track */
.spk-rail{ display:none; height:3px; background:rgba(241,236,224,.12); border-radius:100px; margin:clamp(1.4rem,3vw,2.4rem) var(--pad) 0; overflow:hidden; }
.speakers.is-pinned .spk-rail{ display:block; }
.spk-rail i{ display:block; height:100%; width:100%; background:var(--mint); transform-origin:right center; will-change:transform; }

/* EXPO — parallax image frames. Pre-scale the inner img so translateY never
   exposes an edge; JS drives the inner translate on scrub. */
.ec{ }
.ec img{ will-change:transform; }
.js-parallax .ec img{ transform:scale(1.16); }            /* headroom for parallax travel */
/* clip-path wipe reveal when the figure enters */
.js-parallax .ec{ clip-path:inset(0% 0% 0% 0%); }

/* WHY cards — Flip expansion.
   When a card is .flip-open it spans the whole grid row and lays out its body
   horizontally; Flip animates the layout change. The plain height tween is kept
   as the reduced-motion / no-Flip fallback. */
.why-grid{ position:relative; }
.vcard.flip-open{ grid-column:1 / -1; }
@media (min-width:1041px){
  .vcard.flip-open{ flex-direction:row; align-items:flex-start; gap:clamp(2rem,4vw,4rem); min-height:clamp(240px,22vw,300px); }
  .vcard.flip-open .vcard__head{ flex:0 0 30%; flex-direction:column; align-items:flex-start; gap:1.2rem; }
  .vcard.flip-open .vcard__bot{ flex:1; }
  .vcard.flip-open .vcard__more{ height:auto!important; opacity:1!important; }
}
.vcard__bot{ display:flex; flex-direction:column; }
/* tilt on pointer (desktop only, JS-driven) */
.js-tilt .vcard{ transform-style:preserve-3d; }

/* ===========================================================
   MOTION
   =========================================================== */
[data-rise]{ opacity:0; transform:translateY(36px); }
[data-reveal]{ opacity:0; transform:translateY(34px); }
/* custom drag cursor for the speaker carousel */
.dragcur{ position:fixed; top:0; left:0; z-index:95; width:84px; height:84px; border-radius:50%; background:var(--violet); color:#fff; display:flex; align-items:center; justify-content:center; font-weight:600; font-size:.92rem; letter-spacing:.02em; pointer-events:none; will-change:transform; box-shadow:0 14px 40px -12px rgba(170,142,72,.7); }
body.dragging .dragcur{ background:var(--ink); }
body.dragging .spk:hover{ transform:none; }
@keyframes marq{ from{ transform:translateX(0); } to{ transform:translateX(50%); } } /* RTL: move right */
@keyframes slide{ 0%{ transform:translateX(120%); } 100%{ transform:translateX(-220%); } }
@media (prefers-reduced-motion: reduce){
  [data-rise],[data-reveal]{ opacity:1!important; transform:none!important; }
  .marquee__track,.cap-track{ animation:none; }
}

/* ===========================================================
   RESPONSIVE
   =========================================================== */
@media (max-width:1040px){
  .why-grid{ grid-template-columns:1fr; }
  .stats{ grid-template-columns:1fr; gap:0; }
  .stat{ padding-block:1.3rem; }
}
@media (max-width:760px){
  .spk{ flex-basis:clamp(240px,82vw,320px); }
}
@media (max-width:760px){
  .nav__links{ display:none; }
  .expo-grid{ flex-direction:column; height:auto; }
  .expo-grid .ec{ height:clamp(220px,62vw,320px); }
  .tk-grid{ grid-template-columns:1fr; }
  .foot__cols{ grid-template-columns:1fr; }
  .foot__cta{ flex-direction:column; align-items:flex-start; }
}
