/* ==========================================================================
   MBIFL 2027 · Home page V2 (Figma "V2 – Homepage Redesign" 1446:3930 · "Mobile – Homepage Redesign" 1476:8365)
   Loaded after styles.css on the home page only. Every element sits at its Figma position (design units:
   1920 wide on desktop, 390 on mobile); the pinball route in js/main.js uses the same coordinates.
   Layers: section background → pipes & lettering (1) → ball (2, .pinball-layer) → image, panels, cards, footer (3)
   ========================================================================== */
.v2 { position: relative; }
.v2 > section { position: relative; overflow: hidden; }
.v2-bg { position: absolute; inset: 0; background-repeat: no-repeat; background-size: 100% 100%; }
.v2-pipe { position: absolute; z-index: 1; left: calc(var(--x) * var(--u)); top: calc(var(--y) * var(--u)); width: calc(var(--w) * var(--u)); height: calc(var(--h) * var(--u)); overflow: visible; pointer-events: none; }
.v2-lettering { position: absolute; inset: 0; z-index: 1; pointer-events: none; }
.v2-lettering .hero__art { position: absolute; overflow: visible; }
.v2-hero__strip, .v2-theme__image, .v2-theme__panel, .v2-theme__copy, .v2-speakers__title, .v2-speakers__intro, .v2-carousel, .v2-more, .v2-reg__panel, .v2-footer { z-index: 3; }
.v2-hero__strip > *, .v2-theme__copy p, .v2-reg__panel p, .v2-footer p { margin: 0; }

/* the new ball: yellow, glowing (Figma "Pinball — Ball"; assets/img/v2/ball.png when downloaded) */
.pinball-layer .pinball {
  background:
    url("../assets/img/v2/ball.png") center / 100% 100% no-repeat,
    radial-gradient(circle at 40% 36%, #fffef0 0 10%, #fff86a 28%, #f3e600 55%, #cfc300 76%, rgba(207, 195, 0, 0) 79%);
  box-shadow: 0 0 calc(10 * var(--u)) calc(3 * var(--u)) rgba(255, 244, 80, .55);
}

/* ---------- 01 · Hero ---------- */
.v2-hero .v2-bg { background-color: #234adc; }
.v2-hero__wordmark { display: block; }
.v2-hero__edition, .v2-hero__tagline { color: #83cdff; position: absolute; }
.v2-hero__edition { font-weight: 500; }
.v2-hero__tagline { font-weight: 900; }
.v2-hero__strip { position: absolute; inset: 0; pointer-events: none; }
.v2-hero__wordmark { position: absolute; }

/* ---------- 02 · Theme ---------- */
.v2-theme .v2-bg { background-color: #0d6b4e; }
.v2-theme__image { position: absolute; margin: 0; overflow: hidden; background: #1b2a3a; }
.v2-theme__image img { display: block; width: 100%; height: 100%; object-fit: cover; }
.v2-theme__panel { position: absolute; background: #0d6b4e; }
.v2-theme__copy { position: absolute; color: #56eda1; }
.v2-theme__heading { margin: 0; display: flex; flex-direction: column; }
.v2-theme__eyebrow { font-weight: 500; line-height: 1.2; }
.v2-theme__title { font-weight: 900; line-height: 1.15; }
.v2-theme__ml { font-family: "Noto Sans Malayalam", "Creato Display", sans-serif; font-weight: 500; line-height: 1.35; }
.v2-theme__copy p { font-weight: 500; }

/* ---------- 03 · Speakers ---------- */
.v2-speakers .v2-bg { background-color: #d20d1a; }
.v2-speakers__tag { position: absolute; z-index: 1; background: #ff4d5e; }
.v2-speakers__title { position: absolute; margin: 0; color: #fff; font-weight: 500; line-height: 1.15; letter-spacing: -.01em; }
.v2-speakers__intro { position: absolute; background: #d20d1a; color: #fff; }
.v2-speakers__intro p { margin: 0; font-weight: 500; }
.v2-speakers__lead { line-height: 1.2; }
.v2-carousel { position: absolute; margin: 0; }
.v2-carousel .spk-carousel__viewport { position: absolute; inset: 0; overflow: hidden; padding: 0; margin: 0; width: auto; height: auto; touch-action: pan-y; }
.v2-carousel .spk-carousel__track { display: flex; height: 100%; margin: 0; padding: 0; list-style: none; will-change: transform; }
.v2-carousel .cs-card { flex: 0 0 auto; height: 100%; margin: 0; padding: 0; }
.v2-carousel .cs-card[data-tone="0"] { --tone: #56eda1; }
.v2-carousel .cs-card[data-tone="1"] { --tone: #4be0fe; }
.v2-carousel .cs-card[data-tone="2"] { --tone: #ff8fd8; }
.v2-carousel .cs-card__link { display: flex; flex-direction: column; width: 100%; height: 100%; overflow: hidden; background: var(--tone, #56eda1);
  border: 0; box-shadow: none; color: #113abf; text-decoration: none; transform: none; }
.v2-carousel .cs-card__media { position: relative; display: block; flex: 0 0 auto; width: 100%; overflow: hidden; background: var(--tone, #56eda1); border-radius: 0; }
.v2-carousel .cs-card__media img { display: block; width: 100%; height: 100%; object-fit: cover; object-position: center top; filter: grayscale(1) contrast(1.06); mix-blend-mode: multiply; transition: transform .5s ease; }
.v2-carousel .cs-card__body { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; padding: 0 4%; background: var(--tone, #56eda1); }
.v2-carousel .cs-card__name { display: block; width: 100%; margin: 0; color: #113abf; font-weight: 900; text-align: center; text-transform: uppercase; line-height: 1.05;
  overflow: hidden; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; }
.v2-carousel .cs-card__cue { display: none; }
@media (hover: hover) { .v2-carousel .cs-card__link:hover .cs-card__media img { transform: scale(1.04); } }
.v2-carousel .cs-card--skel .cs-card__link { opacity: .55; }
.v2-carousel .spk-carousel__error { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; text-align: center; }
.v2-carousel .spk-carousel__error[hidden] { display: none; }
.v2-carousel.is-static .v2-arrow, .v2-carousel.is-loading .v2-arrow, .v2-carousel.is-error .v2-arrow { visibility: hidden; }
.v2-arrow { position: absolute; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%; background: #ffc5cd; color: #113abf; cursor: pointer; }
.v2-arrow svg { width: 55%; height: 55%; }
.v2-arrow--prev svg { transform: rotate(180deg); }
.v2-arrow:focus-visible { outline: 3px solid #fff; outline-offset: 3px; }
.v2-more { position: absolute; display: flex; align-items: center; justify-content: center; gap: .35em; border-radius: 999px; background: #ffc5cd; color: #113abf;
  font-weight: 900; text-decoration: none; line-height: 1; transition: background-color .2s, transform .2s; }
.v2-more svg { width: .75em; height: .75em; }
@media (hover: hover) { .v2-more:hover { background: #fff; transform: translateY(-2px); } }

/* ---------- 04 · Registration + footer ---------- */
.v2-reg .v2-bg { background-color: #4be0fe; }
.v2-reg__panel { position: absolute; background: #abf5ff; border: solid #234adc; color: #113abf; }
.v2-reg__chip { position: absolute; left: 50%; transform: translateX(-50%); display: inline-flex; align-items: center; white-space: nowrap; background: #fff; color: #113abf; font-weight: 500; line-height: 1; border-radius: 999px; }
.v2-reg__chip b { font-weight: 900; }
.v2-reg__title { position: absolute; margin: 0; display: flex; flex-direction: column; font-weight: 500; line-height: 1.1; color: #113abf; }
.v2-reg__btn { position: absolute; display: block; text-decoration: none; }
.v2-reg__btn::before { content: ""; position: absolute; left: 10%; right: 10%; bottom: 0; top: 30%; background: #00298e; clip-path: polygon(0 0, 100% 0, 92% 100%, 8% 100%); }
.v2-reg__face { position: absolute; left: 0; right: 0; top: 0; display: flex; align-items: center; justify-content: center; text-align: center; background: #234adc; color: #fff; font-weight: 900; line-height: .98;
  box-shadow: 0 0 0 0 #00298e; transition: transform .15s ease; }
@media (hover: hover) { .v2-reg__btn:hover .v2-reg__face { transform: translateY(4%); } }
.v2-reg__btn:active .v2-reg__face { transform: translateY(9%); }
.v2-reg__btn:focus-visible { outline: 3px solid #113abf; outline-offset: 4px; }
.v2-reg__text { position: absolute; color: #234adc; font-weight: 500; }
.v2-reg__when { position: absolute; left: 0; right: 0; text-align: center; color: #113abf; font-weight: 500; line-height: 1.15; }
.v2-reg__when b { font-weight: 900; }
.v2-footer { position: absolute; left: 0; right: 0; bottom: 0; color: #fff; }
.v2-footer__band { position: absolute; left: 0; right: 0; background: #234adc; }
.v2-footer__logo { position: absolute; }
.v2-footer__nav { position: absolute; display: flex; align-items: baseline; font-weight: 500; line-height: 1; }
.v2-footer__nav a { color: #fff; text-decoration: none; }
.v2-footer__nav a:hover { text-decoration: underline; text-underline-offset: .2em; }
.v2-footer__meta { position: absolute; display: flex; align-items: flex-start; color: #fff; line-height: .95; }
.v2-footer__meta p { display: flex; flex-direction: column; }
.v2-footer__dates .em-a, .v2-footer__dates .em-b, .v2-footer__venue .em-a { font-weight: 900; }
.v2-footer__venue .em-c { font-weight: 400; }
.v2-footer__venue .em-d { display: flex; align-items: center; font-weight: 500; }
.v2-footer__venue .em-e { font-weight: 400; }
.v2-footer__divider, .v2-footer__small-div { background: #fff; display: block; flex: 0 0 auto; }
.v2-venue { position: absolute; display: block; color: #234adc; text-decoration: none; }
.v2-venue__pin { position: absolute; }
.v2-venue__card { position: absolute; display: flex; flex-direction: column; justify-content: center; background: #abf5ff; }
.v2-venue__kicker { font-weight: 400; line-height: 1.1; }
.v2-venue__name { font-weight: 900; line-height: 1.05; }
.v2-venue:hover .v2-venue__name { text-decoration: underline; text-underline-offset: .15em; }
.v2-footer__copy { position: absolute; left: 0; right: 0; display: flex; justify-content: space-between; color: #abf5ff; }

/* ======================= desktop (Figma 1920 × 4320) ======================= */
@media (min-width: 1024px) {
  .v2 > section { height: calc(1080 * var(--u)); }
  .pinball-layer .pinball { width: calc(53 * var(--u)); height: calc(53 * var(--u)); }
  .v2-hero .v2-bg { background-image: url("../assets/img/v2/hero-bg.png"); }
  .v2-lettering .hero__art.d-only { left: calc(5 * var(--u)); top: calc(283 * var(--u)); width: calc(1920 * var(--u)); height: calc(899 * var(--u)); }
  .v2-hero__edition { left: calc(252 * var(--u)); top: calc(1006 * var(--u)); font-size: calc(36 * var(--u)); line-height: 1.2; }
  .v2-hero__wordmark { left: calc(553 * var(--u)); top: calc(996 * var(--u)); width: calc(315 * var(--u)); height: calc(63 * var(--u)); }
  .v2-hero__tagline { left: calc(889 * var(--u)); top: calc(1010 * var(--u)); font-size: calc(29.5 * var(--u)); line-height: 1.2; white-space: nowrap; letter-spacing: .06em; }

  .v2-theme .v2-bg { background-image: url("../assets/img/v2/theme-bg.png"); }
  .v2-theme__image { left: calc(820 * var(--u)); top: calc(177 * var(--u)); width: calc(998 * var(--u)); height: calc(732 * var(--u)); }
  .v2-theme__panel { left: calc(72 * var(--u)); top: calc(228 * var(--u)); width: calc(748 * var(--u)); height: calc(631 * var(--u)); }
  .v2-theme__copy { left: calc(120 * var(--u)); top: calc(255 * var(--u)); width: calc(645 * var(--u)); }
  .v2-theme__eyebrow { font-size: calc(30 * var(--u)); }
  .v2-theme__title { font-size: calc(48 * var(--u)); margin-top: calc(6 * var(--u)); }
  .v2-theme__ml { font-size: calc(40 * var(--u)); margin-top: calc(8 * var(--u)); }
  .v2-theme__copy p { font-size: calc(27 * var(--u)); line-height: calc(31 * var(--u)); margin-top: calc(22 * var(--u)); }
  .v2-theme__copy p + p { margin-top: calc(23 * var(--u)); }

  .v2-speakers .v2-bg { background-image: url("../assets/img/v2/speakers-bg.png"); }
  .v2-speakers__tag { left: calc(-40 * var(--u)); top: calc(116 * var(--u)); width: calc(440 * var(--u)); height: calc(64 * var(--u)); border-radius: calc(32 * var(--u)); }
  .v2-speakers__title { left: calc(105 * var(--u)); top: calc(121 * var(--u)); font-size: calc(48 * var(--u)); }
  .v2-carousel { left: calc(205 * var(--u)); top: calc(226 * var(--u)); width: calc(1474 * var(--u)); height: calc(660 * var(--u)); }
  .v2-carousel .spk-carousel__track { gap: calc(41 * var(--u)); }
  .v2-carousel .cs-card { width: calc(464 * var(--u)); }
  .v2-carousel .cs-card__link { border-radius: calc(26 * var(--u)); }
  .v2-carousel .cs-card__media { height: calc(563 * var(--u)); }
  .v2-carousel .cs-card__name { font-size: calc(39 * var(--u)); }
  .v2-arrow { width: calc(48 * var(--u)); height: calc(48 * var(--u)); top: calc(298 * var(--u)); }
  .v2-arrow--prev { left: calc(-89 * var(--u)); }
  .v2-arrow--next { left: calc(1515 * var(--u)); }
  .v2-more { left: calc(1340 * var(--u)); top: calc(923 * var(--u)); width: calc(338 * var(--u)); height: calc(58 * var(--u)); font-size: calc(40 * var(--u)); }

  .v2-reg .v2-bg { background-image: url("../assets/img/v2/reg-bg.png"); }
  .v2-reg__panel { left: calc(437 * var(--u)); top: calc(83 * var(--u)); width: calc(1061 * var(--u)); height: calc(396 * var(--u)); border-width: calc(3 * var(--u)); border-radius: calc(22 * var(--u)); }
  .v2-reg__chip { top: calc(47 * var(--u)); height: calc(36 * var(--u)); padding: 0 calc(18 * var(--u)); font-size: calc(26.2 * var(--u)); }
  .v2-reg__title { left: calc(49 * var(--u)); top: calc(150 * var(--u)); }
  .v2-reg__title span:first-child { font-size: calc(35.8 * var(--u)); }
  .v2-reg__title-b { font-size: calc(44.3 * var(--u)); }
  .v2-reg__btn { left: calc(313 * var(--u)); top: calc(118 * var(--u)); width: calc(414 * var(--u)); height: calc(228 * var(--u)); }
  .v2-reg__face { height: calc(184 * var(--u)); font-size: calc(76.4 * var(--u)); border-radius: calc(14 * var(--u)); }
  .v2-reg__text { left: calc(763 * var(--u)); top: calc(149 * var(--u)); width: calc(269 * var(--u)); font-size: calc(24 * var(--u)); line-height: calc(29 * var(--u)); }
  .v2-footer { height: calc(340 * var(--u)); }
  .v2-footer__band { top: 0; bottom: 0; }
  .v2-footer__logo { --lw: calc(296 * var(--u)); left: calc(129 * var(--u)); top: calc(71 * var(--u)); }
  .v2-footer__nav { left: calc(504 * var(--u)); top: calc(47 * var(--u)); gap: calc(21 * var(--u)); font-size: calc(28 * var(--u)); }
  .v2-footer__meta { left: calc(487 * var(--u)); top: calc(132 * var(--u)); gap: 0; }
  .v2-footer__dates { width: calc(104 * var(--u)); }
  .v2-footer__dates .em-a { font-size: calc(48 * var(--u)); }
  .v2-footer__dates .em-b { font-size: calc(37.9 * var(--u)); }
  .v2-footer__divider { width: calc(2 * var(--u)); height: calc(112 * var(--u)); margin: calc(6 * var(--u)) calc(14 * var(--u)) 0 0; }
  .v2-footer__venue .em-a { font-size: calc(48 * var(--u)); }
  .v2-footer__venue .em-c { font-size: calc(34 * var(--u)); margin-top: calc(4 * var(--u)); }
  .v2-footer__venue .em-d { font-size: calc(34 * var(--u)); gap: calc(12 * var(--u)); margin-top: calc(2 * var(--u)); }
  .v2-footer__venue .em-e { font-size: calc(28 * var(--u)); }
  .v2-footer__small-div { width: calc(2 * var(--u)); height: calc(26 * var(--u)); }
  .v2-venue { left: calc(1288 * var(--u)); top: calc(16 * var(--u)); width: calc(483 * var(--u)); height: calc(220 * var(--u)); }
  .v2-venue__pin { left: calc(222 * var(--u)); top: 0; width: calc(44 * var(--u)); height: calc(55 * var(--u)); }
  .v2-venue__card { left: 0; top: calc(74 * var(--u)); width: calc(483 * var(--u)); height: calc(123 * var(--u)); padding: 0 calc(22 * var(--u)); border-radius: calc(14 * var(--u)); }
  .v2-venue__kicker { font-size: calc(23.8 * var(--u)); }
  .v2-venue__name { font-size: calc(33.5 * var(--u)); }
}

/* ======================= mobile (Figma 390 × 2901) ======================= */
@media (max-width: 1023.98px) {
  .v2-hero { height: calc(618 * var(--u)); }
  .v2 > .v2-theme, .v2 > .v2-speakers, .v2 > .v2-reg { height: calc(693 * var(--u)); }
  .pinball-layer .pinball { width: calc(20.5 * var(--u)); height: calc(20.5 * var(--u)); }
  .v2-hero .v2-bg { background-image: url("../assets/img/v2/hero-bg-m.png"); }
  .v2-lettering .hero__art.m-only { left: 0; top: calc(13 * var(--u)); width: calc(390 * var(--u)); height: calc(597 * var(--u)); }
  .v2-hero__stub { position: absolute; left: calc(30 * var(--u)); top: calc(597 * var(--u)); width: calc(20 * var(--u)); height: calc(21 * var(--u)); background: #1e9afe; }
  .v2-hero__edition { left: calc(117 * var(--u)); top: calc(576 * var(--u)); font-size: calc(10.2 * var(--u)); line-height: 1.2; }
  .v2-hero__wordmark { left: calc(103 * var(--u)); top: calc(587 * var(--u)); width: calc(114 * var(--u)); height: calc(22.7 * var(--u)); }
  .v2-hero__tagline { left: calc(228 * var(--u)); top: calc(571 * var(--u)); width: calc(150 * var(--u)); font-size: calc(10.7 * var(--u)); line-height: 1.22; letter-spacing: .04em; }

  .v2-theme .v2-bg { background-image: url("../assets/img/v2/theme-bg-m.png"); }
  .v2-theme__image { left: calc(29 * var(--u)); top: calc(64 * var(--u)); width: calc(342 * var(--u)); height: calc(251 * var(--u)); }
  .v2-theme__panel { left: calc(33 * var(--u)); top: calc(343 * var(--u)); width: calc(333 * var(--u)); height: calc(293 * var(--u)); }
  .v2-theme__copy { left: calc(45 * var(--u)); top: calc(356 * var(--u)); width: calc(310 * var(--u)); }
  .v2-theme__eyebrow { font-size: calc(18 * var(--u)); }
  .v2-theme__title { font-size: calc(30 * var(--u)); margin-top: calc(3 * var(--u)); }
  .v2-theme__ml { font-size: calc(21 * var(--u)); margin-top: calc(3 * var(--u)); }
  .v2-theme__copy p { font-size: calc(13 * var(--u)); line-height: calc(13.4 * var(--u)); margin-top: calc(8 * var(--u)); }

  .v2-speakers .v2-bg { background-image: url("../assets/img/v2/speakers-bg-m.png"); }
  .v2-speakers__title { left: calc(22 * var(--u)); top: calc(30 * var(--u)); font-size: calc(20.5 * var(--u)); }
  .v2-speakers__intro { left: calc(11 * var(--u)); top: calc(125 * var(--u)); width: calc(379 * var(--u)); height: calc(110 * var(--u)); padding: calc(7 * var(--u)) calc(15 * var(--u)) 0; }
  .v2-speakers__lead { font-size: calc(25.5 * var(--u)); }
  .v2-speakers__intro p + p { margin-top: calc(4 * var(--u)); width: calc(171 * var(--u)); font-size: calc(14 * var(--u)); line-height: calc(15 * var(--u)); }
  .v2-carousel { left: calc(24 * var(--u)); top: calc(276 * var(--u)); width: calc(338.5 * var(--u)); height: calc(230.4 * var(--u)); }
  .v2-carousel .spk-carousel__track { gap: calc(14.5 * var(--u)); }
  .v2-carousel .cs-card { width: calc(162 * var(--u)); }
  .v2-carousel .cs-card__link { border-radius: calc(10 * var(--u)); }
  .v2-carousel .cs-card__media { height: calc(197 * var(--u)); }
  .v2-carousel .cs-card__name { font-size: calc(13.6 * var(--u)); }
  .v2-arrow { width: calc(11.3 * var(--u)); height: calc(11.3 * var(--u)); top: calc(110 * var(--u)); }
  .v2-arrow--prev { left: calc(-16.5 * var(--u)); }
  .v2-arrow--next { left: calc(356.8 * var(--u)); }
  .v2-more { left: calc(117.5 * var(--u)); top: calc(534 * var(--u)); width: calc(147 * var(--u)); height: calc(25 * var(--u)); font-size: calc(17.3 * var(--u)); }

  .v2-reg .v2-bg { background-image: url("../assets/img/v2/reg-bg-m.png"); }
  .v2-reg__panel { left: calc(90 * var(--u)); top: calc(16.5 * var(--u)); width: calc(209.6 * var(--u)); height: calc(285 * var(--u)); border-width: calc(1.5 * var(--u)); border-radius: calc(10 * var(--u)); }
  .v2-reg__chip { top: calc(24 * var(--u)); height: calc(13 * var(--u)); padding: 0 calc(5 * var(--u)); font-size: calc(10.5 * var(--u)); }
  .v2-reg__title { left: 0; right: 0; top: calc(48 * var(--u)); align-items: center; text-align: center; }
  .v2-reg__title span:first-child { font-size: calc(18.2 * var(--u)); }
  .v2-reg__title-b { font-size: calc(22.6 * var(--u)); }
  .v2-reg__btn { left: calc(26.5 * var(--u)); top: calc(103.5 * var(--u)); width: calc(156.7 * var(--u)); height: calc(79.5 * var(--u)); }
  .v2-reg__face { height: calc(63 * var(--u)); font-size: calc(28.6 * var(--u)); border-radius: calc(6 * var(--u)); }
  .v2-reg__text { left: calc(12 * var(--u)); right: calc(12 * var(--u)); top: calc(195 * var(--u)); text-align: center; font-size: calc(9.84 * var(--u)); line-height: calc(10.9 * var(--u)); color: #113abf; }
  .v2-reg__when { top: calc(244 * var(--u)); font-size: calc(10.5 * var(--u)); }
  .v2-footer { top: calc(325 * var(--u)); bottom: auto; height: calc(368 * var(--u)); }
  .v2-footer__band { top: 0; height: calc(124.5 * var(--u)); }
  .v2-footer__band--low { top: calc(216 * var(--u)); height: calc(152 * var(--u)); }
  .v2-footer__logo { --lw: calc(113.5 * var(--u)); left: calc(28.5 * var(--u)); top: calc(31 * var(--u)); }
  .v2-footer__nav { left: calc(171 * var(--u)); top: calc(18 * var(--u)); gap: calc(7.6 * var(--u)); font-size: calc(10.1 * var(--u)); }
  .v2-footer__meta { left: calc(158 * var(--u)); top: calc(58 * var(--u)); }
  .v2-footer__dates { width: calc(41 * var(--u)); }
  .v2-footer__dates .em-a { font-size: calc(18.5 * var(--u)); }
  .v2-footer__dates .em-b { font-size: calc(14.6 * var(--u)); }
  .v2-footer__divider { width: calc(1 * var(--u)); height: calc(38 * var(--u)); margin: calc(5 * var(--u)) calc(4 * var(--u)) 0 0; }
  .v2-footer__venue .em-a { font-size: calc(18.5 * var(--u)); }
  .v2-footer__venue .em-c { font-size: calc(13.2 * var(--u)); margin-top: calc(1 * var(--u)); }
  .v2-footer__venue .em-d { font-size: calc(13.2 * var(--u)); gap: calc(4 * var(--u)); margin-top: calc(1 * var(--u)); }
  .v2-footer__venue .em-e { font-size: calc(10.9 * var(--u)); }
  .v2-footer__small-div { width: calc(1 * var(--u)); height: calc(9.6 * var(--u)); }
  .v2-venue { left: calc(99.9 * var(--u)); top: calc(232.5 * var(--u)); width: calc(189.6 * var(--u)); height: calc(75 * var(--u)); }
  .v2-venue__pin { left: calc(91.6 * var(--u)); top: 0; width: calc(18 * var(--u)); height: calc(24.9 * var(--u)); }
  .v2-venue__card { left: 0; top: calc(22.5 * var(--u)); width: calc(189.6 * var(--u)); height: calc(48.2 * var(--u)); padding: 0 calc(8 * var(--u)); border-radius: calc(6 * var(--u)); }
  .v2-venue__kicker { font-size: calc(9.4 * var(--u)); }
  .v2-venue__name { font-size: calc(13.2 * var(--u)); }
  .v2-footer__copy { top: calc(344 * var(--u)); padding: 0 calc(12 * var(--u)) 0 calc(12 * var(--u)); font-size: calc(8 * var(--u)); }
  /* sticky Register (fixed above the bottom nav); steps aside near the Register panel and while the menu is open */
  .v2-sticky-reg { position: fixed; z-index: 85; left: calc((var(--vw, 100vw) - min(var(--vw, 100vw), 540px)) / 2 + calc(56 * var(--u))); width: calc(294 * var(--u));
    bottom: calc(var(--botnav-h, 0px) + calc(12 * var(--u))); transition: opacity .25s ease, transform .25s ease; }
  html.menu-open .v2-sticky-reg, html.reg-sticky-off .v2-sticky-reg { opacity: 0; transform: translateY(12px); pointer-events: none; }
}
@media (prefers-reduced-motion: reduce) { .v2-carousel .cs-card__media img, .v2-reg__face, .v2-more, .v2-sticky-reg { transition: none; } }

/* venue: a cyan box cut into the footer band, with the pin (where the ball ends) above the address */
.v2-venue { background: #abf5ff; }
.v2-venue__card { background: none; }
.v2-venue__name, .v2-venue__kicker { white-space: nowrap; }
@media (min-width: 1024px) {
  .v2-venue { left: calc(1278 * var(--u)); top: 0; width: calc(502 * var(--u)); height: calc(216 * var(--u)); border-radius: 0 0 calc(22 * var(--u)) calc(22 * var(--u)); }
  .v2-venue__pin { left: calc(229 * var(--u)); top: calc(18 * var(--u)); }
  .v2-venue__card { left: 0; right: 0; top: calc(96 * var(--u)); width: auto; height: auto; padding: 0 calc(32 * var(--u)); border-radius: 0; }
}
@media (max-width: 1023.98px) {
  .v2-venue { left: calc(99.9 * var(--u)); top: calc(223 * var(--u)); width: calc(189.6 * var(--u)); height: calc(80 * var(--u)); border-radius: calc(8 * var(--u)); }
  .v2-venue__pin { left: calc(85.8 * var(--u)); top: calc(6 * var(--u)); }
  .v2-venue__card { left: 0; right: 0; top: calc(33 * var(--u)); width: auto; height: auto; padding: 0 calc(8 * var(--u)); border-radius: 0; }
}

/* pipes join up across section edges: Theme → Speakers → Registration may run into the next section
   (side-to-side stays clipped); the decorative left bar still stops at its own section */
.v2 > .v2-theme, .v2 > .v2-speakers { overflow-x: clip; overflow-y: visible; }
.v2-pipe--clip { overflow: hidden; }
.v2-pipe--exit { clip-path: inset(0 0 -40% 14px); }   /* hide the slanted end under the vertical pipe */

/* Festival film in the Theme section: the riddle image is the thumbnail; click → the video plays in its place */
.v2-theme__image .film__poster { position: absolute; inset: 0; display: block; width: 100%; height: 100%; margin: 0; padding: 0; border: 0; border-radius: 0;
  background: #1b2a3a; cursor: pointer; overflow: hidden; box-shadow: none; }
.v2-theme__image .film__poster[hidden], .v2-theme__image .film__player[hidden] { display: none; }
.v2-theme__image .film__thumb { position: absolute; inset: 0; display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.v2-film__play { position: absolute; left: 50%; top: 50%; display: grid; place-items: center; border-radius: 50%; background: #56eda1; color: #0d6b4e;
  transform: translate(-50%, -50%); box-shadow: 0 6px 24px rgba(0, 0, 0, .35); transition: transform .25s ease, background-color .25s ease; }
.v2-film__play svg { width: 46%; height: 46%; margin-left: 8%; }
@media (hover: hover) {
  .v2-theme__image .film__poster:hover .film__thumb { transform: scale(1.03); }
  .v2-theme__image .film__poster:hover .v2-film__play { transform: translate(-50%, -50%) scale(1.1); background: #fff; }
}
.v2-theme__image .film__poster:focus-visible { outline: 4px solid #56eda1; outline-offset: 4px; }
.v2-theme__image .film__player { position: absolute; inset: 0; margin: 0; background: #000; border-radius: 0; }
.v2-theme__image .film__stage { position: absolute; inset: 0; }
.v2-theme__image .film__stage video, .v2-theme__image .film__stage iframe { display: block; width: 100%; height: 100%; border: 0; object-fit: contain; background: #000; }
.v2-film__close { position: absolute; z-index: 2; top: 2.5%; right: 2%; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%;
  background: rgba(13, 107, 78, .9); color: #fff; cursor: pointer; }
.v2-film__close svg { width: 42%; height: 42%; }
.v2-film__close:hover { background: #56eda1; color: #0d6b4e; }
.v2-film__close:focus-visible { outline: 3px solid #56eda1; outline-offset: 3px; }
@media (min-width: 1024px) { .v2-film__play { width: calc(120 * var(--u)); height: calc(120 * var(--u)); } .v2-film__close { width: calc(52 * var(--u)); height: calc(52 * var(--u)); } }
@media (max-width: 1023.98px) { .v2-film__play { width: calc(54 * var(--u)); height: calc(54 * var(--u)); } .v2-film__close { width: calc(30 * var(--u)); height: calc(30 * var(--u)); } }
@media (prefers-reduced-motion: reduce) { .v2-theme__image .film__thumb, .v2-film__play { transition: none; } }

/* ---- fixes: section edges + footer to match the design ---- */
/* every section clips its pipes at its own edge again (as in Figma); the joints line up exactly at the edges */
.v2 > .v2-theme, .v2 > .v2-speakers { overflow: hidden; }
/* footer band: blue with a notch above the venue; the pin sits in the notch on the maze, the address card below */
.v2-footer__band { position: absolute; left: auto; right: auto; background: #234adc; }
.v2-venue { position: absolute; display: flex; flex-direction: column; justify-content: center; background: #abf5ff; color: #234adc; text-decoration: none; }
.v2-venue__card { position: static; display: flex; flex-direction: column; width: auto; height: auto; padding: 0; background: none; border-radius: 0; }
.v2-venue__pin { position: absolute; z-index: 1; }
.v2-footer__dates { width: auto; white-space: nowrap; }
.v2-footer__dates span { white-space: nowrap; }
@media (min-width: 1024px) {
  .v2-footer__band--top { display: none; }
  .v2-footer__band--l { left: 0; top: 0; width: calc(1268 * var(--u)); bottom: 0; border-top-right-radius: calc(34 * var(--u)); }
  .v2-footer__band--r { left: calc(1790 * var(--u)); top: 0; right: 0; width: auto; bottom: 0; border-top-left-radius: calc(34 * var(--u)); }
  .v2-footer__band--m { left: calc(1260 * var(--u)); top: calc(98 * var(--u)); width: calc(540 * var(--u)); bottom: 0; }
  .v2-venue__pin { left: calc(1510 * var(--u)); top: calc(11 * var(--u)); width: calc(44 * var(--u)); height: calc(55 * var(--u)); }
  .v2-venue { left: calc(1288 * var(--u)); top: calc(95 * var(--u)); width: calc(483 * var(--u)); height: calc(123 * var(--u)); padding: 0 calc(22 * var(--u)); border-radius: calc(18 * var(--u)); }
  .v2-footer__dates { margin-right: calc(14 * var(--u)); }
  .v2-footer__divider { margin-left: 0; }
}
@media (max-width: 1023.98px) {
  .v2-footer__band--top { left: 0; right: 0; top: 0; height: calc(124.5 * var(--u)); }
  .v2-footer__band--l { left: 0; top: calc(216.8 * var(--u)); width: calc(92 * var(--u)); bottom: 0; border-top-right-radius: calc(12 * var(--u)); }
  .v2-footer__band--r { left: calc(298 * var(--u)); top: calc(216.8 * var(--u)); right: 0; width: auto; bottom: 0; border-top-left-radius: calc(12 * var(--u)); }
  .v2-footer__band--m { left: calc(88 * var(--u)); top: calc(255 * var(--u)); width: calc(214 * var(--u)); bottom: 0; }
  .v2-venue__pin { left: calc(191.5 * var(--u)); top: calc(232.5 * var(--u)); width: calc(18 * var(--u)); height: calc(24.9 * var(--u)); }
  .v2-venue { left: calc(99.9 * var(--u)); top: calc(255 * var(--u)); width: calc(189.6 * var(--u)); height: calc(48.2 * var(--u)); padding: 0 calc(8 * var(--u)); border-radius: calc(7 * var(--u)); }
}
.v2-footer__band--l, .v2-footer__band--r, .v2-footer__band--m { height: auto; }   /* stretch to the bottom (an earlier mobile rule fixed the band height) */

/* ---- footer like Figma: the band has a notch (rounded corners) reaching just below the venue card; the pipe runs
   down through the notch behind the pin and the card. Layer order: pipes → band (1) → ball (2) → pin, card, text (3) ---- */
.v2-footer { z-index: auto; }
.v2-footer > * { z-index: 3; }
.v2-footer > .v2-footer__band, .v2-footer > .v2-footer__wedge { position: absolute; z-index: 1; }
.v2-footer__wedge { display: block; }
@media (min-width: 1024px) {
  .v2-footer__band--l { left: 0; width: calc(1268 * var(--u)); top: 0; bottom: 0; height: auto; border-top-right-radius: calc(34 * var(--u)); }
  .v2-footer__band--r { left: calc(1790 * var(--u)); right: 0; width: auto; top: 0; bottom: 0; height: auto; border-top-left-radius: calc(34 * var(--u)); }
  .v2-footer__band--m { left: calc(1268 * var(--u)); width: calc(522 * var(--u)); top: calc(227 * var(--u)); bottom: 0; height: auto; border-radius: 0; }
  .v2-footer__wedge { top: calc(197 * var(--u)); width: calc(30 * var(--u)); height: calc(30 * var(--u)); }
  .v2-footer__wedge--l { left: calc(1268 * var(--u)); background: radial-gradient(circle at 100% 0, transparent calc(29.5 * var(--u)), #234adc calc(30 * var(--u))); }
  .v2-footer__wedge--r { left: calc(1760 * var(--u)); background: radial-gradient(circle at 0 0, transparent calc(29.5 * var(--u)), #234adc calc(30 * var(--u))); }
  .v2-venue__pin { left: calc(1510 * var(--u)); top: calc(19 * var(--u)); width: calc(44 * var(--u)); height: calc(55 * var(--u)); }
  .v2-venue { left: calc(1288 * var(--u)); top: calc(95 * var(--u)); width: calc(483 * var(--u)); height: calc(123 * var(--u)); border-radius: calc(22 * var(--u)); }
}
@media (max-width: 1023.98px) {
  .v2-footer__band--l { left: 0; width: calc(90 * var(--u)); top: calc(216.8 * var(--u)); bottom: 0; height: auto; border-top-right-radius: calc(11 * var(--u)); }
  .v2-footer__band--r { left: calc(300 * var(--u)); right: 0; width: auto; top: calc(216.8 * var(--u)); bottom: 0; height: auto; border-top-left-radius: calc(11 * var(--u)); }
  .v2-footer__band--m { left: calc(90 * var(--u)); width: calc(210 * var(--u)); top: calc(307 * var(--u)); bottom: 0; height: auto; border-radius: 0; }
  .v2-footer__wedge { top: calc(297 * var(--u)); width: calc(10 * var(--u)); height: calc(10 * var(--u)); }
  .v2-footer__wedge--l { left: calc(90 * var(--u)); background: radial-gradient(circle at 100% 0, transparent calc(9.6 * var(--u)), #234adc calc(10 * var(--u))); }
  .v2-footer__wedge--r { left: calc(290 * var(--u)); background: radial-gradient(circle at 0 0, transparent calc(9.6 * var(--u)), #234adc calc(10 * var(--u))); }
  .v2-venue__pin { left: calc(192 * var(--u)); top: calc(230 * var(--u)); width: calc(18 * var(--u)); height: calc(24.9 * var(--u)); }
  .v2-venue { left: calc(99.9 * var(--u)); top: calc(255 * var(--u)); width: calc(189.6 * var(--u)); height: calc(48.2 * var(--u)); border-radius: calc(8 * var(--u)); }
}

/* venue card text: Figma padding (22 / 9) and a size that keeps "Thiruvananthapuram, Kerala" inside the card */
@media (min-width: 1024px) {
  .v2-venue { padding: 0 calc(9 * var(--u)) 0 calc(22 * var(--u)); }
  .v2-venue__name { font-size: calc(31 * var(--u)); letter-spacing: -.01em; }
  .v2-venue__kicker { font-size: calc(23 * var(--u)); }
}
@media (max-width: 1023.98px) {
  .v2-venue { padding: 0 calc(4 * var(--u)) 0 calc(8 * var(--u)); }
  .v2-venue__name { font-size: calc(12.4 * var(--u)); letter-spacing: -.01em; }
}

/* Register button (Figma): a wide REGISTER block, a navy bevel narrowing to a smaller NOW! block, and its own bevel.
   Positions are fractions of the Figma group (156.7 × 79.5 on mobile; the same shape × 2.675 on desktop). */
.v2-reg__btn::before { content: none; }
.v2-reg__f, .v2-reg__bev { position: absolute; display: block; }
.v2-reg__bev { background: #00298e; }
.v2-reg__bev--1 { left: 1.1%; top: 52.8%; width: 98%; height: 20.4%; clip-path: polygon(0 0, 100% 0, 84.5% 100%, 15.5% 100%); }
.v2-reg__bev--2 { left: 17.7%; top: 88.8%; width: 65.1%; height: 11.2%; clip-path: polygon(0 0, 100% 0, 95% 100%, 5% 100%); }
.v2-reg__f { display: flex; align-items: center; justify-content: center; background: #234adc; color: #fff; font-weight: 900; line-height: 1; letter-spacing: -.01em;
  border: solid #8ea3ff; box-sizing: border-box; transition: transform .15s ease; }
.v2-reg__f--top { left: 0; top: 0; width: 100%; height: 54.5%; }
.v2-reg__f--now { left: 16.7%; top: 46%; width: 67.1%; height: 43.8%; }
@media (hover: hover) { .v2-reg__btn:hover .v2-reg__f { transform: translateY(3%); } }
.v2-reg__btn:active .v2-reg__f { transform: translateY(7%); }
@media (min-width: 1024px) {
  .v2-reg__btn { left: calc(309.8 * var(--u)); top: calc(128.5 * var(--u)); width: calc(419.2 * var(--u)); height: calc(212.7 * var(--u)); }
  .v2-reg__f { font-size: calc(76.4 * var(--u)); border-width: calc(2.5 * var(--u)); border-radius: calc(10 * var(--u)); }
}
@media (max-width: 1023.98px) {
  .v2-reg__btn { left: calc(26.5 * var(--u)); top: calc(103.9 * var(--u)); width: calc(156.7 * var(--u)); height: calc(79.5 * var(--u)); }
  .v2-reg__f { font-size: calc(28.6 * var(--u)); border-width: calc(1 * var(--u)); border-radius: calc(4 * var(--u)); }
}
@media (prefers-reduced-motion: reduce) { .v2-reg__f { transition: none; } }

/* speaker cards (Figma update): white cards, greyscale photos, blue names — no colour tint */
.v2-carousel .cs-card[data-tone] { --tone: #fff; }
.v2-carousel .cs-card__link { background: #fff; }
.v2-carousel .cs-card__media { background: #fff; }
.v2-carousel .cs-card__media img { mix-blend-mode: normal; filter: grayscale(1) contrast(1.04); }
.v2-carousel .cs-card__body { background: #fff; }
.v2-carousel .cs-card--skel .cs-card__link { opacity: .7; }
@media (min-width: 1024px) {
  .v2-carousel .cs-card__link { border-radius: calc(18 * var(--u)); }
  .v2-carousel .cs-card__name { font-size: calc(34 * var(--u)); }
}
@media (max-width: 1023.98px) {
  .v2-carousel .cs-card__link { border-radius: calc(8 * var(--u)); }
  .v2-carousel .cs-card__name { font-size: calc(12.5 * var(--u)); }
}

/* ======================= mobile — Figma "mobile home" (1716:7733) update ======================= */
@media (max-width: 1023.98px) {
  /* 02 · Theme: narrower panel, text at x 50, Figma sizes and line spacing */
  .v2-theme__panel { left: calc(42 * var(--u)); top: calc(343 * var(--u)); width: calc(320.8 * var(--u)); height: calc(293 * var(--u)); }
  .v2-theme__copy { left: calc(50.2 * var(--u)); top: calc(357.1 * var(--u)); width: calc(310 * var(--u)); }
  .v2-theme__eyebrow { font-size: calc(16.9 * var(--u)); line-height: calc(23 * var(--u)); }
  .v2-theme__title { font-size: calc(28.1 * var(--u)); line-height: calc(36 * var(--u)); margin-top: 0; }
  .v2-theme__ml { font-size: calc(24 * var(--u)); line-height: calc(34.8 * var(--u)); margin-top: 0; white-space: nowrap; }
  .v2-theme__copy p { font-size: calc(13 * var(--u)); line-height: calc(13.4 * var(--u)); margin-top: 0; width: calc(301 * var(--u)); }
  .v2-theme__copy p + p { margin-top: calc(10.5 * var(--u)); width: calc(310 * var(--u)); }

  /* 03 · Speakers: bigger title (no pill), white cards with a 41.8 name band, level arrows */
  .v2-speakers__title { left: calc(14 * var(--u)); top: calc(25 * var(--u)); font-size: calc(24.5 * var(--u)); }
  .v2-carousel .cs-card__media { height: calc(188.6 * var(--u)); }
  .v2-carousel .cs-card__body { padding: 0 calc(6 * var(--u)); }
  .v2-carousel .cs-card__name { font-size: calc(17.2 * var(--u)); line-height: 1.05; }
  .v2-arrow { top: calc(109.5 * var(--u)); }
  .v2-arrow--prev { left: calc(-16.5 * var(--u)); }
  .v2-arrow--next { left: calc(345.5 * var(--u)); }

  /* 04 · Registration + footer: 773 tall (room for the bottom nav below the © line) */
  .v2 > .v2-reg { height: calc(773 * var(--u)); }
  .v2-footer { height: calc(448 * var(--u)); }
  .v2-reg .v2-bg { background-size: 100% auto; background-position: top center; }
  .v2-reg__btn { left: calc(17.7 * var(--u)); top: calc(101 * var(--u)); width: calc(174.2 * var(--u)); height: calc(88.4 * var(--u)); }
  .v2-reg__f { font-size: calc(31.8 * var(--u)); }
  .v2-reg__when { top: calc(240 * var(--u)); line-height: 1.12; }
  .v2-reg__when b { font-size: calc(14 * var(--u)); }
  .v2-reg__when { font-size: calc(12 * var(--u)); }
}

/* mobile: the top footer band sits above the ball, so the ball goes behind it (as in the PDF) */
@media (max-width: 1023.98px) { .v2-footer > .v2-footer__band--top { z-index: 3; } }

/* mobile Festival Voices panel (Figma): sits under the pipes — the pink pipe runs over it — and the description is regular weight */
@media (max-width: 1023.98px) {
  .v2-speakers__intro { z-index: 0; }
  .v2-speakers__intro p + p { font-weight: 400; }
}

/* ===== mobile fixes (Nov 2026) ===== */
@media (max-width: 1023.98px) {
  /* the design's mobile pipes are 18–20 wide, narrower than the ball (20.5): widen every pipe by 4 (2 each side,
     same colour, centre lines unchanged so joints still line up) */
  .v2-theme .v2-pipe.m-only path { stroke: #56eda1; }
  .v2-speakers .v2-pipe.m-only path { stroke: #ffc5cd; }
  .v2-reg .v2-pipe.m-only path { stroke: #abf5ff; }
  .v2 .v2-pipe.m-only path { stroke-width: 4px; stroke-linejoin: round; }
  /* Speakers: the pipe coming in from the right ended 2 px past the vertical pipe it joins — end it inside it */
  .v2-speakers .v2-pipe.m-only[style*="--x:161;"] { clip-path: inset(-10px -10px -10px calc(6 * var(--u))); }
  /* Festival Voices: rounded panel that grows with its text (kept clear of the pipe at x 275) */
  .v2-speakers__intro { height: auto; padding-bottom: calc(14 * var(--u)); border-radius: calc(14 * var(--u)); }
  .v2-speakers__intro p + p { width: calc(240 * var(--u)); }
}
/* speaker cards: the name sits in the middle of its band; the photo turns to colour on hover / keyboard focus */
.v2-carousel .cs-card__body { flex-direction: row; align-items: center; justify-content: center; }
.v2-carousel .cs-card__name { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.v2-carousel .cs-card__media img { transition: filter .35s ease, transform .5s ease; }
@media (hover: hover) { .v2-carousel .cs-card__link:hover .cs-card__media img { filter: none; } }
.v2-carousel .cs-card__link:focus-visible .cs-card__media img { filter: none; }

/* mobile: the hero lettering pipes are 4 wider too (20 → 24), like the section pipes — the ball (20.5) fits and
   the lettering stem meets the Theme pipe at the same width */
@media (max-width: 1023.98px) { #letters-m path { stroke: #1e9afe; stroke-width: 4px; stroke-linejoin: round; } }
/* speaker names: the line box is trimmed to the capital letters, so the (uppercase) names sit in the true middle of
   their band whatever the font's built-in spacing (Chrome/Edge/Safari; elsewhere they stay box-centred) */
.v2-carousel .cs-card__name { text-box: trim-both cap alphabetic; }

/* mobile: the short stub that carries the lettering stem down to the Theme pipe — 4 wider too (24, centre unchanged) */
@media (max-width: 1023.98px) { .v2-hero__stub { left: calc(28 * var(--u)) !important; width: calc(24 * var(--u)) !important; } }

/* ===== desktop Speakers (Figma "03 — Speakers" 1873:16536): 1251 tall, title accent, Festival Voices panel on
   the red "KA emblem" patch, cards at 397, View More at 1094 ===== */
.v2-speakers__accent, .v2-speakers__emblem { position: absolute; z-index: 0; display: block; overflow: visible; }
@media (min-width: 1024px) {
  .v2 > .v2-speakers { height: calc(1251 * var(--u)); }
  .v2-speakers__accent { left: calc(-139 * var(--u)); top: calc(118 * var(--u)); width: calc(483 * var(--u)); height: calc(217 * var(--u)); }
  .v2-speakers__emblem { left: calc(360 * var(--u)); top: calc(100 * var(--u)); width: calc(413 * var(--u)); height: calc(262 * var(--u)); overflow: hidden; }
  .v2-speakers__intro { z-index: 0; left: calc(375 * var(--u)); top: calc(212 * var(--u)); width: calc(581 * var(--u)); height: auto; padding: calc(23 * var(--u)) calc(21 * var(--u)) calc(23 * var(--u)); border-radius: calc(14 * var(--u)); }
  .v2-speakers__intro .v2-speakers__lead { font-size: calc(40 * var(--u)); line-height: calc(48 * var(--u)); font-weight: 500; }
  .v2-speakers__intro p + p { margin-top: calc(8 * var(--u)); width: auto; max-width: calc(551 * var(--u)); font-size: calc(20 * var(--u)); line-height: calc(26 * var(--u)); font-weight: 500; }
  .v2-carousel { top: calc(397 * var(--u)); }
  .v2-more { top: calc(1094 * var(--u)); }
  /* the cards start at the top of the carousel frame (an older rule moved them 24 down, which cut off the bottom
     of every card — the name looked low because the lower part of its band was hidden) */
  .v2-carousel .spk-carousel__track { top: 0; }
}

/* mobile spacing (Nov 2026): the footer dates get the same 4 gap before the divider as the venue has after it;
   the Malayalam theme line is a little smaller so it ends inside the panel with any Malayalam font */
@media (max-width: 1023.98px) {
  .v2-footer__meta .v2-footer__dates { margin-right: calc(4 * var(--u)); }   /* outranks .v2-footer__meta p { margin: 0 } */
  .v2-theme__ml { font-size: calc(22 * var(--u)); }
}

@media (min-width: 1024px) { .v2-footer__meta .v2-footer__dates { margin-right: calc(14 * var(--u)); } }   /* same gap either side of the divider */

/* desktop: the "SPEAKERS" heading (pink accent + title) sits above the pipe and the ball — the ball passes under it
   (as in Figma); the accent can no longer be covered by the section background */
@media (min-width: 1024px) { .v2-speakers__accent { z-index: 3; } }

/* desktop Festival Voices (Figma 1898:15438): a narrower panel (310 at 384,206) on the red shape at 369,125;
   heading 35, description 16/20 in four lines */
@media (min-width: 1024px) {
  .v2-speakers__emblem { left: calc(369 * var(--u)); top: calc(125 * var(--u)); width: calc(417 * var(--u)); height: calc(251 * var(--u)); overflow: visible; }
  .v2-speakers__intro { left: calc(384 * var(--u)); top: calc(206 * var(--u)); width: calc(310 * var(--u)); padding: calc(7.5 * var(--u)) 0 calc(17 * var(--u)) calc(42 * var(--u)); border-radius: calc(14 * var(--u)); }
  .v2-speakers__intro .v2-speakers__lead { font-size: calc(35 * var(--u)); line-height: calc(42 * var(--u)); }
  .v2-speakers__intro p + p { margin-top: calc(7.5 * var(--u)); width: calc(268 * var(--u)); max-width: none; font-size: calc(16 * var(--u)); line-height: calc(20 * var(--u)); }
}

@media (min-width: 1024px) { .v2-speakers__intro p + p { width: auto; white-space: nowrap; } }   /* the four Figma lines, exactly */

/* home page (mobile): the Registration section ends at 680 so the secondary footer band follows it */
@media (max-width: 1023.98px) { .v2 > .v2-reg { height: calc(680 * var(--u)); } .v2-footer { height: calc(355 * var(--u)); } }

/* ===== Malayalam display font: FN Charutha Semi-Light (Figma) for "(കാലത്തിന്റെ കടങ്കഥകൾ)" =====
   Put the font files in /fonts/ (FN-Charutha-Semi-Light.woff2, and/or .ttf). js/charutha.js adds html.has-charutha once
   the font has really loaded — only then does the heading switch to the Figma size (65 desktop / 28.1 mobile, +5 %
   letter spacing); without the font it keeps the narrower fallback size so it can never overflow the panel. */
@font-face {
  font-family: "FN Charutha";
  src: url("../fonts/FN-Charutha-Semi-Light.woff2") format("woff2"), url("../fonts/FN-Charutha-Semi-Light.ttf") format("truetype"), url("../fonts/FN-Charutha-Semi-Light.otf") format("opentype");
  font-weight: 300; font-style: normal; font-display: swap;
  unicode-range: U+0D00-0D7F, U+200C-200D, U+25CC, U+0028-0029;
}
html.has-charutha .v2-theme__ml { font-family: "FN Charutha", "Noto Sans Malayalam", sans-serif; font-weight: 300; letter-spacing: .05em; white-space: nowrap; }
@media (min-width: 1024px) {
  html.has-charutha .v2-theme__ml { font-size: calc(65 * var(--u)); line-height: calc(56 * var(--u)); margin-top: calc(13.8 * var(--u)); }        /* Figma: 366–422 */
  html.has-charutha .v2-theme__copy > p:first-of-type { margin-top: calc(17 * var(--u)); }                       /* Figma: paragraph at 439 */
}
@media (max-width: 1023.98px) { html.has-charutha .v2-theme__ml { font-size: calc(28.1 * var(--u)); } }