/*
 * Lung Summit — Design Tokens + Utility Classes
 * Canonical reference: ~/.claude/skills/lungsummit-design/references/DESIGN.md
 * Loaded from PEAKmedicalsChild/functions.php (filemtime cache-bust).
 * Locked 2026-05-22; v3 corrections + aggressive cleanup 2026-05-23;
 * reduce-motion universal-* kill narrowed to card hover-lift only 2026-05-23
 * after it suppressed all site motion under iOS Low Power Mode. Do NOT
 * reintroduce the universal-* pattern — see Anti-patterns in DESIGN.md §6.
 */

:root {
  /* Color palette (9 named tokens) */
  --ls-color-navy-900: #10132A;
  --ls-color-navy-800: #1B2440;
  --ls-color-blue-500: #33669B;
  --ls-color-blue-300: #8CA5D6;
  --ls-color-blue-200: #C4D3E3;
  --ls-color-blue-100: #DCE5EF;
  --ls-color-blue-50:  #F5F8FB;
  --ls-color-white:    #FFFFFF;
  --ls-color-display-text: #E2E9FF;

  /* Reading-column text */
  --ls-color-text-body:        #1B2440;
  --ls-color-text-muted-light: rgba(28, 50, 80, 0.55);
  --ls-color-text-muted-dark:  rgba(255, 255, 255, 0.65);

  /* Frosted-glass (3 tiers — light / mid / strong) */
  --ls-frost-light-bg:     rgba(255, 255, 255, 0.04);
  --ls-frost-light-border: rgba(255, 255, 255, 0.10);
  --ls-frost-mid-bg:       rgba(16, 19, 42, 0.42);
  --ls-frost-mid-border:   rgba(140, 165, 214, 0.30);
  --ls-frost-mid-border-hover: rgba(140, 165, 214, 0.40);
  --ls-frost-mid-shadow:   0 8px 24px rgba(0, 0, 0, 0.35);
  --ls-frost-mid-shadow-hover: 0 12px 36px -12px rgba(140, 165, 214, 0.35);
  --ls-frost-strong-bg:     rgba(16, 19, 42, 0.96);
  --ls-frost-strong-border: rgba(140, 165, 214, 0.30);
  --ls-frost-strong-shadow: 0 16px 40px rgba(16, 19, 42, 0.45);
  --ls-frosted-blur: 14px;

  /* Unified hover + active (clickable surfaces) */
  --ls-hover-bg-dark:      rgba(140, 165, 214, 0.20);
  --ls-hover-bg-light:     rgba(54, 105, 155, 0.08);
  --ls-hover-border-dark:  var(--ls-color-blue-300);
  --ls-hover-border-light: var(--ls-color-blue-500);
  --ls-hover-text-on-dark: var(--ls-color-white);
  --ls-hover-text-on-light: var(--ls-color-blue-500);
  --ls-active-bg:   var(--ls-color-blue-300);
  --ls-active-text: var(--ls-color-navy-900);

  /* Dividers */
  --ls-divider-dark:  rgba(255, 255, 255, 0.10);
  --ls-divider-light: rgba(16, 19, 42, 0.10);

  /* Hero gradient (stops 0% / 33% / 65% — locked) */
  --ls-gradient-hero: radial-gradient(
    ellipse at bottom right,
    var(--ls-color-blue-300) 0%,
    var(--ls-color-blue-500) 33%,
    var(--ls-color-navy-900) 65%
  );

  /* --ls-grad-primary (navy→blue gradient) RETIRED 2026-06-25 — primary buttons now
     use the pill's hovered look (translucent blue-300 fill + blue-300 border). */

  /* Radius scale */
  --ls-radius-sm:   4px;
  --ls-radius-md:   8px;
  --ls-radius-lg:   12px;
  --ls-radius-xl:   16px;
  --ls-radius-2xl:  24px;
  --ls-radius-pill: 999px;

  /* Spacing scale (4px grid) */
  --ls-space-1:  4px;
  --ls-space-2:  8px;
  --ls-space-3: 12px;
  --ls-space-4: 16px;
  --ls-space-5: 20px;
  --ls-space-6: 24px;
  --ls-space-8: 32px;
  --ls-space-10: 40px;
  --ls-space-12: 48px;
  --ls-space-14: 56px;
  --ls-space-16: 64px;
  --ls-space-20: 80px;
  --ls-space-24: 96px;

  /* Font */
  --ls-font: 'Montserrat', Helvetica, Arial, Lucida, sans-serif;

  /* Type scale */
  --ls-fs-display:   clamp(28px, 4vw, 40px);
  --ls-fs-content-h: clamp(22px, 3vw, 28px);
  --ls-fs-sub-h:     18px;
  --ls-fs-lede:      19px;
  --ls-fs-body:      16px;
  --ls-fs-dek:       14px;
  --ls-fs-caption:   12px;
  --ls-fs-eyebrow:   11px;
  --ls-fs-pill:      11px;

  /* Line-heights */
  --ls-lh-body:      1.6;
  --ls-lh-dek:       1.55;
  --ls-lh-display:   1.1;
  --ls-lh-content-h: 1.2;

  /* Tracking */
  --ls-ls-display:   -2px;
  --ls-ls-content-h: -1px;
  --ls-ls-sub-h:     0.05em;
  --ls-ls-eyebrow:   0.20em;
  --ls-ls-pill:      0.18em;
  --ls-ls-btn:       0.16em;

  /* Weights */
  --ls-fw-eyebrow:   700;
  --ls-fw-btn:       600;
  --ls-fw-pill:      700;
  --ls-fw-display:   800;
  --ls-fw-content-h: 700;
  --ls-fw-sub-h:     700;
  --ls-fw-body:      400;
  --ls-fw-lede:      600;

  /* Motion (single duration + easing; back-compat aliases below) */
  --ls-dur:  250ms;
  --ls-ease: cubic-bezier(0.165, 0.84, 0.44, 1);
  --ls-dur-fast:    var(--ls-dur);
  --ls-dur-slow:    var(--ls-dur);
  --ls-ease-out:    var(--ls-ease);
  --ls-ease-in:     var(--ls-ease);
  --ls-ease-spring: var(--ls-ease);

  /* Back-compat frosted aliases */
  --ls-frosted-bg:           var(--ls-frost-mid-bg);
  --ls-frosted-border:       var(--ls-frost-mid-border);
  --ls-frosted-border-hover: var(--ls-frost-mid-border-hover);
  --ls-frosted-shadow:       var(--ls-frost-mid-shadow);
  --ls-frosted-shadow-hover: var(--ls-frost-mid-shadow-hover);
}

/* ===========================================================================
   SYSTEM MAPPINGS — apply tokens to Divi/Divi-Pixel-emitted selectors.
   !important required because Divi emits inline !important on most attrs.
   =========================================================================== */

/* Header nav menu — eyebrow scale (matches sidebar blurbs + filter tab labels).
   Scoped to `.et-menu` (Divi's desktop ul class) so mobile dropdown
   `.et_mobile_menu` is unconstrained and DP customizer Mobile Menu section
   controls mobile typography. `.dipi-cta-button` excluded so DP customizer
   also controls the header LOGIN button on desktop. */
body .et_pb_menu_0_tb_header.et_pb_menu .et-menu li a:not(.dipi-cta-button),
body .et_pb_menu_1_tb_header.et_pb_menu .et-menu li a:not(.dipi-cta-button) {
  font-family: var(--ls-font) !important;
  font-weight: var(--ls-fw-eyebrow) !important;
  font-size: var(--ls-fs-eyebrow) !important;
  letter-spacing: var(--ls-ls-eyebrow) !important;
  text-transform: uppercase !important;
  color: var(--ls-color-display-text) !important;
}
body .et_pb_menu_0_tb_header.et_pb_menu .et-menu li:hover > a:not(.dipi-cta-button),
body .et_pb_menu_1_tb_header.et_pb_menu .et-menu li:hover > a:not(.dipi-cta-button) { color: var(--ls-color-white) !important; }

/* Drug-class menu blurbs (header bar + body sidebar + footer balloon) — unified hover.
   `[class*="_tb_"]` matches any TB-context emission (header / body / footer),
   so the same Divi Library item picks up identical styling wherever it's reused. */
body [class*="et_pb_blurb_"][class*="_tb_"].et_pb_blurb {
  border-radius: var(--ls-radius-md) !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  margin: 4px 8px 4px 0 !important;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease) !important;
}
body [class*="et_pb_blurb_"][class*="_tb_"].et_pb_blurb:hover {
  background: var(--ls-hover-bg-dark) !important;
  border-color: var(--ls-hover-border-dark) !important;
}
body [class*="et_pb_blurb_"][class*="_tb_"].et_pb_blurb .et_pb_module_header,
body [class*="et_pb_blurb_"][class*="_tb_"].et_pb_blurb .et_pb_module_header a {
  font-family: var(--ls-font) !important;
  font-weight: var(--ls-fw-eyebrow) !important;
  font-size: var(--ls-fs-eyebrow) !important;
  letter-spacing: var(--ls-ls-eyebrow) !important;
  text-transform: uppercase !important;
  color: var(--ls-color-text-muted-dark) !important;
  line-height: 1.2 !important;
}
body [class*="et_pb_blurb_"][class*="_tb_"].et_pb_blurb:hover .et_pb_module_header,
body [class*="et_pb_blurb_"][class*="_tb_"].et_pb_blurb:hover .et_pb_module_header a {
  color: var(--ls-color-white) !important;
}

/* Footer balloon blurbs — nav-large tier (18px display) */
body .et_pb_blurb_0.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_1.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_2.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_3.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_4.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_5.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_6.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header,
body .et_pb_blurb_7.et_pb_blurb:not([class*="_tb_"]) .et_pb_module_header {
  font-family: var(--ls-font) !important;
  font-weight: 700 !important;
  font-size: 18px !important;
  letter-spacing: 0.18em !important;
  text-transform: uppercase !important;
  color: var(--ls-color-white) !important;
}

/* Filter tabs (dipi_advanced_tabs) — container + tab + hover + active */
body .dipi_advanced_tabs_0_tb_body .dipi-at-tabs,
body .dipi_advanced_tabs_0_tb_header .dipi-at-tabs {
  background: var(--ls-frost-light-bg) !important;
  border: 1px solid var(--ls-frost-light-border) !important;
  border-radius: var(--ls-radius-md) !important;
  padding: 4px !important;
}
body .dipi_advanced_tabs_0_tb_body .dipi-at-tabs .dipi-at-tab,
body .dipi_advanced_tabs_0_tb_header .dipi-at-tabs .dipi-at-tab {
  border-radius: var(--ls-radius-md) !important;
  background: transparent !important;
  border: 1px solid transparent !important;
  padding: 8px 16px !important;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease) !important;
}
body .dipi_advanced_tabs_0_tb_body .dipi-at-tabs .dipi-at-tab:hover:not(.dipi-at-tab--active),
body .dipi_advanced_tabs_0_tb_header .dipi-at-tabs .dipi-at-tab:hover:not(.dipi-at-tab--active) {
  background: var(--ls-hover-bg-dark) !important;
  border-color: var(--ls-hover-border-dark) !important;
}
body .dipi_advanced_tabs_0_tb_body .dipi-at-tabs .dipi-at-tab:hover:not(.dipi-at-tab--active) .dipi-at-tab-title,
body .dipi_advanced_tabs_0_tb_header .dipi-at-tabs .dipi-at-tab:hover:not(.dipi-at-tab--active) .dipi-at-tab-title {
  color: var(--ls-hover-text-on-dark) !important;
}
body .dipi_advanced_tabs_0_tb_body .dipi-at-tabs .dipi-at-tab.dipi-at-tab--active,
body .dipi_advanced_tabs_0_tb_header .dipi-at-tabs .dipi-at-tab.dipi-at-tab--active {
  background: var(--ls-active-bg) !important;
  border-color: var(--ls-active-bg) !important;
}
body .dipi_advanced_tabs_0_tb_body .dipi-at-tabs .dipi-at-tab.dipi-at-tab--active .dipi-at-tab-title,
body .dipi_advanced_tabs_0_tb_header .dipi-at-tabs .dipi-at-tab.dipi-at-tab--active .dipi-at-tab-title {
  color: var(--ls-active-text) !important;
}

/* Article share-row icon buttons (blue-300 stroke; hover blue-300 bg + white) */
body .ls-art-share-btn {
  width: 36px !important;
  height: 36px !important;
  border-radius: 50% !important;
  background: transparent !important;
  border: 1px solid var(--ls-color-blue-300) !important;
  color: var(--ls-color-blue-300) !important;
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease) !important;
}
body .ls-art-share-btn svg { stroke: var(--ls-color-blue-300) !important; color: var(--ls-color-blue-300) !important; }
body .ls-art-share-btn:hover {
  background: var(--ls-color-blue-300) !important;
  border-color: var(--ls-color-blue-300) !important;
  color: var(--ls-color-white) !important;
}
body .ls-art-share-btn:hover svg { stroke: var(--ls-color-white) !important; color: var(--ls-color-white) !important; }

/* Article TOC active indicator */
body .dipi_table_of_content .dipi-toc__active-bar,
body .dipi_table_of_content .dipi-toc__list a.dipi-toc__current-link::before {
  background: var(--ls-color-blue-300) !important;
  color: var(--ls-color-blue-300) !important;
}

/* Default Divi button (footer "View All Sessions" etc.) — applies .ls-btn-primary spec.
   .dipi-cta-button excluded so DP customizer controls the header LOGIN button. */
body .et_pb_button:not(.dipi-more-link):not(.ls-art-share-btn):not(.dipi-cta-button) {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  font-family: var(--ls-font) !important;
  font-size: 14px !important;
  font-weight: var(--ls-fw-btn) !important;
  letter-spacing: var(--ls-ls-btn) !important;
  text-transform: uppercase !important;
  line-height: 1 !important;
  padding: 14px 24px !important;
  border-radius: var(--ls-radius-lg) !important;
  color: var(--ls-color-white) !important;
  background: var(--ls-hover-bg-dark) !important;
  border: 1px solid var(--ls-color-blue-300) !important;
  box-shadow: none !important;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease) !important;
}
body .et_pb_button:not(.dipi-more-link):not(.ls-art-share-btn):not(.dipi-cta-button):hover {
  background: rgba(140, 165, 214, 0.30) !important;
  color: var(--ls-color-white) !important;
  border-color: var(--ls-color-blue-200) !important;
  padding: 14px 24px !important;
}
body .et_pb_button:not(.dipi-more-link):not(.ls-art-share-btn):not(.dipi-cta-button):after { display: none !important; }

/* Slider "More" link (.dipi-more-link) — icon-only circle */
body .et_pb_button.dipi-more-link {
  display: inline-flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 40px !important;
  height: 40px !important;
  padding: 0 !important;
  border-radius: 50% !important;
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.20) !important;
  color: var(--ls-color-white) !important;
}
body .et_pb_button.dipi-more-link:hover {
  background: var(--ls-hover-bg-dark) !important;
  border-color: var(--ls-hover-border-dark) !important;
}

/* Article body headings — apply .ls-h-content / .ls-h-sub canon to .ap-prose.
   These exist because the Divi module-attr strip removed Divi's emitted
   header_2/3/4_* attrs from body_layout 27011037; without these rules the
   .ap-prose H2/H3/H4 lose all typography. Do NOT remove unless reverting the
   strip on 27011037. */
.ap-prose h2 {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-content-h);
  font-weight: var(--ls-fw-content-h);
  letter-spacing: var(--ls-ls-content-h);
  text-transform: uppercase;
  color: var(--ls-color-navy-900);
  line-height: var(--ls-lh-content-h);
}
.ap-prose h3 {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-sub-h);
  font-weight: var(--ls-fw-sub-h);
  letter-spacing: var(--ls-ls-sub-h);
  text-transform: uppercase;
  color: var(--ls-color-navy-900);
  line-height: 1.25;
}
.ap-prose h4 {
  font-family: var(--ls-font);
  font-size: 16px;
  font-weight: var(--ls-fw-sub-h);
  letter-spacing: var(--ls-ls-sub-h);
  text-transform: uppercase;
  color: var(--ls-color-navy-900);
  line-height: 1.3;
}

/* Slider card title — content-h typography scaled down to 22px (card context) */
body [class*="dipi_blog_slider_"] .dipi-blog-post .dipi-entry-title,
body [class*="dipi_blog_slider_"] .dipi-entry-title {
  font-family: var(--ls-font) !important;
  font-size: 22px !important;
  font-weight: var(--ls-fw-content-h) !important;
  letter-spacing: var(--ls-ls-content-h) !important;
  text-transform: uppercase !important;
  color: var(--ls-color-white) !important;
  line-height: 1.15 !important;
}
body [class*="dipi_blog_slider_"] .dipi-entry-title a {
  color: var(--ls-color-white) !important;
  text-decoration: none !important;
}

/* ===========================================================================
   BRIDGE FIXES — Divi/Divi-Pixel bugs documented in DESIGN.md §9
   =========================================================================== */

/* Divi Pixel serializes letter-spacing as text-decoration-style (invalid). */
.dipi-at-tab-title {
  font-family: var(--ls-font) !important;
  font-size: var(--ls-fs-eyebrow) !important;
  font-weight: var(--ls-fw-eyebrow) !important;
  letter-spacing: var(--ls-ls-eyebrow) !important;
  text-decoration-style: solid !important;
  text-transform: uppercase !important;
}

/* ===========================================================================
   UTILITY CLASSES — documented in DESIGN.md §5
   =========================================================================== */

/* Eyebrow */
.ls-eyebrow {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-eyebrow);
  font-weight: var(--ls-fw-eyebrow);
  letter-spacing: var(--ls-ls-eyebrow);
  text-transform: uppercase;
  line-height: 1.2em;
  color: var(--ls-color-blue-300);
  margin: 0;
}
.ls-eyebrow--on-light { color: var(--ls-color-blue-500); }

/* Button — primary. Mobin 2026-06-25: dropped the brand gradient (disliked) for the
   pill's HOVERED look — translucent blue-300 fill (--ls-hover-bg-dark) + blue-300
   border + white ink — so the primary reads like .ls-btn-pill:hover at rest. Hover
   deepens the fill + brightens the border to blue-200. --on-light keeps a real
   light-surface treatment (blue-50 fill / blue-500 ink): the translucent fill + white
   ink would vanish on white. Shared geometry; colour split per surface. */
.ls-btn-primary,
.ls-btn-primary--on-light {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ls-font);
  font-size: 14px;
  font-weight: var(--ls-fw-btn);
  letter-spacing: var(--ls-ls-btn);
  text-transform: uppercase;
  line-height: 1;
  padding: 14px 24px;
  border-radius: var(--ls-radius-lg);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease);
}
.ls-btn-primary {
  color: var(--ls-color-white);
  background: var(--ls-hover-bg-dark);
  border: 1px solid var(--ls-color-blue-300);
}
.ls-btn-primary:hover {
  background: rgba(140, 165, 214, 0.30);
  border-color: var(--ls-color-blue-200);
}
.ls-btn-primary--on-light {
  color: var(--ls-color-blue-500);
  background: var(--ls-color-blue-50);
  border: 1px solid rgba(54, 105, 155, 0.25);
}
.ls-btn-primary--on-light:hover {
  color: var(--ls-color-white);
  background: var(--ls-color-blue-500);
  border-color: var(--ls-color-blue-500);
}

/* Button — secondary (shares PRIMARY geometry — 14px/600/0.16em, 14×24, radius-lg).
   Mobin 2026-06-14: resized from the pill geometry to sit alongside .ls-btn-primary
   as its quieter sibling. Recedes from the primary via blue-300 ink + a dimmed tint
   fill (vs the primary's gradient); border matches the primary's frosted 0.22.
   On-dark is the primary use; the on-light variant is a blue-500 outline
   (blue-300 is too low-contrast on white). */
.ls-btn-secondary {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 14px 24px;
  font-family: var(--ls-font);
  font-size: 14px;
  font-weight: var(--ls-fw-btn);
  letter-spacing: var(--ls-ls-btn);
  text-transform: uppercase;
  line-height: 1;
  border-radius: var(--ls-radius-lg);
  background: rgba(255, 255, 255, 0.04);
  color: var(--ls-color-blue-300);
  border: 1px solid rgba(255, 255, 255, 0.22);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease);
}
.ls-btn-secondary:hover {
  background: var(--ls-color-navy-800);
  border-color: var(--ls-color-blue-300);
  color: var(--ls-color-blue-300);
}
.ls-btn-secondary svg {
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
}

/* Pill / chip */
.ls-pill {
  display: inline-block;
  font-family: var(--ls-font);
  font-size: var(--ls-fs-pill);
  font-weight: var(--ls-fw-pill);
  letter-spacing: var(--ls-ls-pill);
  text-transform: uppercase;
  line-height: 1.2;
  padding: 8px 16px;
  border-radius: var(--ls-radius-md);
  background: rgba(255, 255, 255, 0.06);
  color: var(--ls-color-white);
  border: 1px solid rgba(255, 255, 255, 0.18);
  text-decoration: none;
  cursor: pointer;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease);
}
.ls-pill:hover {
  background: var(--ls-hover-bg-dark);
  border-color: var(--ls-color-blue-300);
}
.ls-pill--on-light {
  background: var(--ls-color-blue-50);
  color: var(--ls-color-blue-500);
  border-color: rgba(54, 105, 155, 0.25);
}
.ls-pill--on-light:hover {
  background: var(--ls-color-blue-500);
  color: var(--ls-color-white);
  border-color: var(--ls-color-blue-500);
}

/* Button — PILL (small icon + label action button).
   Use for download / share / "add to calendar" / "view slides" style actions
   — anywhere a small button-like pill with optional leading icon is needed.
   Distinct from `.ls-pill` (taxonomy chip) by:
     - 40px min-height tap target (vs pill's content-driven height)
     - 12px radius (canonical --ls-radius-lg, vs pill's 8px --ls-radius-md)
     - explicit flex layout for leading icon
     - hover lifts toward blue-300 border (vs pill's pure bg shift)
   First live consumer: Featured CPT chapter SLIDES download
   (`.ls-feat-chapter__slides` in lung-summit-featured.php v0.6.10+).
   The Featured CPT speaker pill (`.ls-feat-chapter__speaker`) uses the same
   chrome spec internally but stays bespoke because its semantic role is
   identity-link, not action; if we extract a `.ls-faculty-chip` primitive
   later, this would become its shorthand consumer. */
.ls-btn-pill {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  padding: 0 12px;
  min-height: 40px;
  font-family: var(--ls-font);
  font-size: var(--ls-fs-pill);
  font-weight: var(--ls-fw-pill);
  letter-spacing: var(--ls-ls-pill);
  line-height: 1;
  text-transform: uppercase;
  text-decoration: none;
  color: var(--ls-color-white);
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.22);
  border-radius: var(--ls-radius-lg);
  cursor: pointer;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease);
}
.ls-btn-pill:hover {
  background: var(--ls-hover-bg-dark);
  border-color: var(--ls-color-blue-300);
}
.ls-btn-pill svg {
  width: 14px;
  height: 14px;
  flex: 0 0 14px;
}
/* Light-context variant — for use on white reading columns */
.ls-btn-pill--on-light {
  color: var(--ls-color-blue-500);
  background: var(--ls-color-blue-50);
  border-color: rgba(54, 105, 155, 0.25);
}
.ls-btn-pill--on-light:hover {
  color: var(--ls-color-white);
  background: var(--ls-color-blue-500);
  border-color: var(--ls-color-blue-500);
}

/* Frosted glass — Mobin 2026-06-25: blur whatever sits behind the translucent
   buttons (hero image, gradient cards). A no-op over solid fills, a frost over
   imagery. On-light/solid variants omitted (nothing to blur on white). */
.ls-btn-primary,
.ls-btn-secondary,
.ls-btn-pill,
body .et_pb_button:not(.dipi-more-link):not(.ls-art-share-btn):not(.dipi-cta-button),
.page-id-27012256 .lsh-btn-primary .et_pb_button,
.page-id-27012256 a.et_pb_button.lsh-btn-primary,
.page-id-27012256 .lsh-btn-ghost .et_pb_button,
.page-id-27012256 a.et_pb_button.lsh-btn-ghost,
.page-id-27012256 .lsh-up .btn,
.page-id-27012256 .lsh-up .cal-trigger,
.page-id-27012256 #lshNews .lsh-newsform button,
.page-id-27012256 #et-boc .ls-hero-cta .ls-cta-primary a {
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
}

/* Heading — DISPLAY (italic uppercase on dark hero).
   Selector list also catches Divi-emitted .et_pb_post_title + .ls-section-heading
   where header_2_font Divi attr doesn't emit italic (cache-state dependent). */
.ls-h-display,
.et_pb_post_title .entry-title,
.ls-section-heading h2 {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-display);
  font-weight: var(--ls-fw-display);
  letter-spacing: var(--ls-ls-display);
  font-style: italic;
  text-transform: uppercase;
  color: var(--ls-color-display-text);
  line-height: var(--ls-lh-display);
  margin: 0;
}
.ls-h-display em,
.et_pb_post_title .entry-title em,
.ls-section-heading h2 em { font-style: italic; color: inherit; }

/* Heading — CONTENT (uppercase in light reading column) */
.ls-h-content {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-content-h);
  font-weight: var(--ls-fw-content-h);
  letter-spacing: var(--ls-ls-content-h);
  text-transform: uppercase;
  color: var(--ls-color-navy-900);
  line-height: var(--ls-lh-content-h);
  margin: 0;
}
.ls-h-content--on-dark { color: var(--ls-color-white); }

/* Heading — SUB (callout / card head) */
.ls-h-sub {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-sub-h);
  font-weight: var(--ls-fw-sub-h);
  letter-spacing: var(--ls-ls-sub-h);
  text-transform: uppercase;
  line-height: 1.3;
  margin: 0;
}

/* Body roles */
.ls-body {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-body);
  font-weight: var(--ls-fw-body);
  line-height: var(--ls-lh-body);
  color: var(--ls-color-text-body);
  margin: 0 0 20px;
}
.ls-dek {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-dek);
  font-weight: 500;
  line-height: var(--ls-lh-dek);
  color: rgba(255, 255, 255, 0.82);
  margin: 0;
}
.ls-lede {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-lede);
  font-weight: var(--ls-fw-lede);
  letter-spacing: 0.02em;
  line-height: 1.45;
  color: var(--ls-color-navy-900);
  margin: 0 0 32px;
  padding-bottom: 32px;
  border-bottom: 1px solid var(--ls-divider-light);
}
.ls-caption {
  font-family: var(--ls-font);
  font-size: var(--ls-fs-caption);
  font-weight: 500;
  line-height: 1.4;
  color: var(--ls-color-text-muted-light);
  margin: 0;
}

/* Card system (base + 3 modifiers) */
.ls-card {
  border-radius: var(--ls-radius-lg);
  padding: 24px;
  transition: transform var(--ls-dur) var(--ls-ease),
              box-shadow var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              background var(--ls-dur) var(--ls-ease);
}
.ls-card--frosted {
  background: var(--ls-frost-mid-bg);
  backdrop-filter: blur(var(--ls-frosted-blur)) saturate(150%);
  -webkit-backdrop-filter: blur(var(--ls-frosted-blur)) saturate(150%);
  border: 1px solid var(--ls-frost-mid-border);
  box-shadow: var(--ls-frost-mid-shadow);
  color: var(--ls-color-white);
}
.ls-card--frosted:hover {
  transform: translateY(-2px);
  border-color: var(--ls-frost-mid-border-hover);
  box-shadow: var(--ls-frost-mid-shadow-hover);
}
.ls-card--light {
  background: var(--ls-color-white);
  border: 1px solid rgba(16, 19, 42, 0.08);
  box-shadow: 0 8px 32px rgba(16, 19, 42, 0.06);
  color: var(--ls-color-text-body);
}
.ls-card--accent {
  background: linear-gradient(180deg, var(--ls-color-navy-900) 0%, var(--ls-color-navy-800) 100%);
  color: var(--ls-color-white);
  box-shadow: 0 12px 32px rgba(16, 19, 42, 0.16);
  position: relative;
  padding: 28px;
}
.ls-card--accent::before {
  content: '';
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 3px;
  background: linear-gradient(90deg, var(--ls-color-blue-300), transparent);
  border-radius: var(--ls-radius-lg) var(--ls-radius-lg) 0 0;
}

/* Links */
.ls-link {
  color: var(--ls-color-blue-500);
  border-bottom: 1px solid rgba(54, 105, 155, 0.35);
  text-decoration: none;
  transition: border-color var(--ls-dur) var(--ls-ease);
}
.ls-link:hover { border-bottom-color: var(--ls-color-navy-900); }
.ls-link--on-dark {
  color: var(--ls-color-white);
  border-bottom-color: rgba(255, 255, 255, 0.40);
}
.ls-link--on-dark:hover { border-bottom-color: var(--ls-color-blue-300); }

/* Icon-only button (36×36 circle) */
.ls-icon-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.30);
  color: var(--ls-color-white);
  cursor: pointer;
  text-decoration: none;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease);
}
.ls-icon-btn:hover {
  background: var(--ls-hover-bg-dark);
  border-color: var(--ls-hover-border-dark);
  color: var(--ls-color-white);
}
.ls-icon-btn.ls-on-light {
  border-color: var(--ls-color-blue-500);
  color: var(--ls-color-blue-500);
}
.ls-icon-btn.ls-on-light:hover {
  background: var(--ls-color-blue-500);
  border-color: var(--ls-color-blue-500);
  color: var(--ls-color-white);
}

/* Unified interactive hover + active (any clickable surface) */
.ls-interactive {
  cursor: pointer;
  transition: background var(--ls-dur) var(--ls-ease),
              border-color var(--ls-dur) var(--ls-ease),
              color var(--ls-dur) var(--ls-ease),
              transform var(--ls-dur) var(--ls-ease);
  text-decoration: none;
}
.ls-interactive:hover {
  background: var(--ls-hover-bg-dark);
  border-color: var(--ls-hover-border-dark);
  color: var(--ls-hover-text-on-dark);
}
.ls-interactive.ls-on-light:hover {
  background: var(--ls-hover-bg-light);
  border-color: var(--ls-hover-border-light);
  color: var(--ls-hover-text-on-light);
}
.ls-interactive--lift:hover { transform: translateY(-2px); }
.ls-is-active {
  background: var(--ls-active-bg) !important;
  color: var(--ls-active-text) !important;
  border-color: var(--ls-active-bg) !important;
}

/* ===========================================================================
   ROUTE-G ARTICLE-HEADER TOGGLE — Divi Pixel deferred-display mirror
   Mirrors Divi Pixel's deferred display rule on the article-header toggle so
   first-open scrollHeight measures correctly (see feedback memory
   [[divi-pixel-deferred-css-race]]).
   =========================================================================== */
.et_pb_toggle_0_tb_header .dipi_advanced_tabs_item { display: none !important; }
.et_pb_toggle_0_tb_header .dipi_advanced_tabs_item.dipi-at-panel--active { display: block !important; }

/* ===========================================================================
   ACCESSIBILITY — reduced motion
   Cancel ONLY the explicit hover-lift translateY on cards. Do NOT add the
   universal `*, *::before, *::after { transition-duration: 0.01ms !important }`
   pattern — it kills Swiper sliders, hamburger animation, toggle slide, logo
   carousel etc. site-wide whenever iOS Low Power Mode or "Reduce Motion" is on
   (verified mobile-jank root cause 2026-05-23).
   =========================================================================== */
@media (prefers-reduced-motion: reduce) {
  .ls-card:hover,
  .dipi-blog-post:hover,
  .ls-art-author-card:hover { transform: none !important; }
}

/* ============================================================
 * Route-G sidebar tab — restore line-height: 1em (Phase 0)
 * Divi skips emitting this rule for library-embedded
 * dipi_advanced_tabs, so the title inherits 24px from body.
 * Without this fix, sidebar tab items are 76px vs main 39px.
 * ============================================================ */
@media (min-width: 981px) {
  .dipi_advanced_tabs_0_tb_body .dipi-at-tabs .dipi-at-tab .dipi-at-tab-title {
    line-height: 1em !important;
  }
}

/* === Homepage hero (homepage-v3-build) === rev3 2026-06-24
   Both hero CTAs use the mockup's "WATCH ON DEMAND" ghost style (user request).
   CME badge reverted to prod (no custom chip). On-brand rotating subtitle kept.
   #et-boc raises specificity above Divi's default-button rule + DiPi per-child CSS. */

/* Rotating subtitle -> brand colour, no shadow, hierarchy spacing */
#et-boc .ls-hero-sub { margin: 14px 0 28px !important; }
#et-boc .ls-hero-sub .fancy-text,
#et-boc .ls-hero-sub .fancy-text * {
  color: var(--ls-color-blue-100) !important; text-shadow: none !important;
}

/* Hero CTAs -> shared geometry (matches .ls-btn-primary 14/600/0.16em, 14x24, radius-lg) */
#et-boc .ls-hero-cta a.et_pb_button {
  display: inline-flex !important; align-items: center !important; justify-content: center !important;
  width: auto !important; padding: 14px 24px !important; line-height: 1 !important;
  font-family: var(--ls-font) !important; font-size: 14px !important;
  font-weight: var(--ls-fw-btn) !important; letter-spacing: var(--ls-ls-btn) !important;
  text-transform: uppercase !important; border-radius: var(--ls-radius-lg) !important;
  transition: background var(--ls-dur) var(--ls-ease), border-color var(--ls-dur) var(--ls-ease), color var(--ls-dur) var(--ls-ease) !important;
}
/* Keep Sign Up / Explore leading, Download / Upcoming following (grid DOM order is mixed) */
#et-boc .ls-cta-primary { order: 1 !important; }
#et-boc .ls-cta-secondary { order: 2 !important; }
/* BOTH buttons = ghost (mockup .btn-ghost / "WATCH ON DEMAND"):
   blue-300 ink, faint white fill, blue-300/.30 border; hover -> blue-300 tint + blue-300 border + white text */
#et-boc .ls-hero-cta a.et_pb_button {
  color: var(--ls-color-blue-300) !important;
  background: rgba(255, 255, 255, 0.05) !important;
  border: 1px solid rgba(140, 165, 214, 0.30) !important;
  box-shadow: none !important;
}
#et-boc .ls-hero-cta a.et_pb_button:hover {
  background: rgba(140, 165, 214, 0.16) !important;
  border-color: var(--ls-color-blue-300) !important;
  color: var(--ls-color-white) !important;
}

/* LSH-HOME START === Homepage v3 reskin (build page 27012256) ===
   Ported from the v3 mockup, scoped to .page-id-27012256 + .lsh-* so nothing
   can bleed onto the live homepage (which shares #ILCS/#Agenda/#Sponsors ids).
   Native Divi modules carry .lsh-* module_class hooks. Updated 2026-06-25. */

/* ---------- flat-navy section backgrounds ---------- */
.page-id-27012256 #lshChairs,
.page-id-27012256 #ILCS,
.page-id-27012256 #Agenda,
.page-id-27012256 #lshFaculty,
.page-id-27012256 #lshVenue,
.page-id-27012256 #lshRecap,
.page-id-27012256 #lshYearRound,
.page-id-27012256 #lshUpHead,
.page-id-27012256 #Upcoming,
.page-id-27012256 #ComingSoon,
.page-id-27012256 #WatchOnDemand,
.page-id-27012256 #lshTopics,
.page-id-27012256 #lshCases,
.page-id-27012256 #Sponsors,
.page-id-27012256 #lshNews { background:#10132A !important; background-image:none !important; }
.page-id-27012256 #Agenda .et_pb_row.et_pb_gutters,
.page-id-27012256 #lshFaculty, .page-id-27012256 #lshVenue, .page-id-27012256 #lshRecap { background-image:none !important; }

/* ---------- shared typography primitives ---------- */
.page-id-27012256 .lsh-eyebrow .et_pb_text_inner p,
.page-id-27012256 .lsh-eyebrow .et_pb_text_inner {
  font:700 11px/1 var(--ls-font) !important; letter-spacing:0.20em !important;
  text-transform:uppercase !important; color:var(--ls-color-blue-300) !important; margin:0 !important;
}
.page-id-27012256 .lsh-h2 .et_pb_text_inner h2 {
  font:800 italic clamp(30px,3.9vw,52px)/0.98 var(--ls-font) !important;
  letter-spacing:-1.6px !important; text-transform:uppercase !important;
  color:var(--ls-color-display-text) !important; margin:14px 0 0 !important;
}
.page-id-27012256 .lsh-h2sub .et_pb_text_inner h2 {
  font:800 italic clamp(21px,2.5vw,33px)/1 var(--ls-font) !important;
  letter-spacing:-0.8px !important; text-transform:uppercase !important;
  color:var(--ls-color-display-text) !important; margin:14px 0 0 !important;
}
.page-id-27012256 .lsh-lead .et_pb_text_inner p,
.page-id-27012256 .lsh-lead .et_pb_text_inner {
  font:500 15px/1.6 var(--ls-font) !important; color:rgba(255,255,255,0.74) !important; margin:0 !important;
}
.page-id-27012256 .lsh-lead .et_pb_text_inner b { color:#fff !important; }

/* ---------- shared buttons (target a.et_pb_button) ---------- */
.page-id-27012256 .lsh-btn-ghost .et_pb_button,
.page-id-27012256 a.et_pb_button.lsh-btn-ghost,
.page-id-27012256 .lsh-btn-primary .et_pb_button,
.page-id-27012256 a.et_pb_button.lsh-btn-primary {
  display:inline-flex !important; align-items:center !important; justify-content:center !important;
  font:600 13px/1 var(--ls-font) !important; letter-spacing:0.14em !important; text-transform:uppercase !important;
  padding:15px 26px !important; border-radius:12px !important; box-shadow:none;
  transition:background var(--ls-dur) var(--ls-ease),border-color var(--ls-dur) var(--ls-ease),color var(--ls-dur) var(--ls-ease),background-position .45s var(--ls-ease) !important;
}
.page-id-27012256 .lsh-btn-ghost .et_pb_button,
.page-id-27012256 a.et_pb_button.lsh-btn-ghost {
  color:var(--ls-color-blue-300) !important; background:rgba(255,255,255,0.05) !important;
  border:1px solid rgba(140,165,214,0.30) !important;
}
.page-id-27012256 .lsh-btn-ghost .et_pb_button:hover,
.page-id-27012256 a.et_pb_button.lsh-btn-ghost:hover {
  background:rgba(140,165,214,0.16) !important; border-color:var(--ls-color-blue-300) !important; color:#fff !important;
}
.page-id-27012256 .lsh-btn-primary .et_pb_button,
.page-id-27012256 a.et_pb_button.lsh-btn-primary {
  color:#fff !important;
  background:rgba(140,165,214,0.20) !important;
  border:1px solid #8CA5D6 !important; box-shadow:none !important;
}
.page-id-27012256 .lsh-btn-primary .et_pb_button:hover,
.page-id-27012256 a.et_pb_button.lsh-btn-primary:hover { background:rgba(140,165,214,0.30) !important; border-color:#C4D3E3 !important; }
.page-id-27012256 .lsh-btn-ghost .et_pb_button::after,
.page-id-27012256 .lsh-btn-primary .et_pb_button::after { display:none !important; }

/* ---------- shared section-head (heading left, lead bottom-right) ---------- */
.page-id-27012256 .lsh-sechead.et_pb_row {
  display:flex !important; align-items:flex-end !important; justify-content:space-between !important;
  flex-wrap:wrap !important; width:90% !important; max-width:1320px !important;
}
.page-id-27012256 .lsh-sechead .lsh-lead .et_pb_text_inner p { max-width:380px; }

/* ============================================================
   #lshChairs — "A word from the chairs"  (mockup .invite)
   ============================================================ */
.page-id-27012256 #lshChairs .lsh-invite.et_pb_row {
  display:flex !important; align-items:center !important; flex-wrap:wrap !important;
}
.page-id-27012256 #lshChairs .lsh-chairs-h .et_pb_text_inner h2 {
  font:800 italic clamp(28px,3.4vw,44px)/1 var(--ls-font) !important;
  letter-spacing:-1.2px !important; text-transform:uppercase !important;
  color:var(--ls-color-display-text) !important; margin:14px 0 18px !important;
}
.page-id-27012256 #lshChairs .lsh-lead .et_pb_text_inner p { margin:0 0 26px !important; max-width:430px; }
.page-id-27012256 #lshChairs .lsh-vframe .lsh-vframe-inner {
  position:relative; border-radius:20px; overflow:hidden; aspect-ratio:16/9;
  border:1px solid rgba(140,165,214,0.30); box-shadow:0 24px 60px rgba(0,0,0,0.45); background:#0B0E20;
}
.page-id-27012256 #lshChairs .lsh-vframe .lsh-vframe-inner iframe {
  position:absolute; inset:0; width:100%; height:100%; border:0;
}
@media (max-width:980px){
  .page-id-27012256 #lshChairs .lsh-invite.et_pb_row { gap:28px; }
}

/* ============================================================
   #lshYearRound — "Year-round education"  (mockup .zone-open)
   ============================================================ */
.page-id-27012256 #lshYearRound .et_pb_row { width:90% !important; max-width:760px !important; }
.page-id-27012256 #lshYearRound .lsh-hairline .et_pb_code_inner { text-align:center; }
.page-id-27012256 #lshYearRound .lsh-hairline-c {
  display:block; width:64px; height:3px; margin:0 auto 22px;
  border-radius:999px; background:linear-gradient(90deg,#33669B,#8CA5D6);
}
.page-id-27012256 #lshYearRound .lsh-eyebrow .et_pb_text_inner p { text-align:center; }
.page-id-27012256 #lshYearRound .lsh-h2 .et_pb_text_inner h2 {
  font-size:clamp(36px,5vw,62px) !important; letter-spacing:-2px !important;
  text-align:center; margin:18px 0 0 !important;
}
.page-id-27012256 #lshYearRound .lsh-lead .et_pb_text_inner p {
  max-width:640px; margin:18px auto 0 !important; text-align:center;
}

/* ============================================================
   #ILCS — "Save the date 2026" band  (mockup .prog-rail)
   ============================================================ */
.page-id-27012256 #ILCS .lsh-stats .et_pb_text_inner {
  display:flex; gap:34px; flex-wrap:wrap; margin:6px 0 24px;
}
.page-id-27012256 #ILCS .lsh-stat { display:flex; flex-direction:column; gap:4px; }
.page-id-27012256 #ILCS .lsh-stat b {
  font:800 italic clamp(26px,3vw,34px)/1 var(--ls-font); letter-spacing:-1px;
  color:var(--ls-color-display-text);
}
.page-id-27012256 #ILCS .lsh-stat span {
  font:700 11px/1.3 var(--ls-font); letter-spacing:0.14em;
  text-transform:uppercase; color:var(--ls-color-blue-300);
}
.page-id-27012256 #ILCS .lsh-btnrow .et_pb_button_module_wrapper {
  display:inline-block !important; margin:0 12px 12px 0 !important;
}

/* ============================================================
   #Agenda — 2025 programme list  (mockup .contents / .crow)
   ============================================================ */
.page-id-27012256 #Agenda .et_pb_row { width:90% !important; max-width:1080px !important; }
.page-id-27012256 #Agenda h2 {
  font:800 italic clamp(26px,3.2vw,40px)/1 var(--ls-font) !important; letter-spacing:-1.2px !important;
  text-transform:uppercase !important; color:var(--ls-color-display-text) !important;
}
.page-id-27012256 #Agenda h3 {
  font:700 13px/1.4 var(--ls-font) !important; letter-spacing:0.04em !important;
  color:var(--ls-color-blue-300) !important; text-transform:uppercase !important;
}
.page-id-27012256 #Agenda .et_pb_column_1_4 h4 {
  font:700 15px/1.2 var(--ls-font) !important; letter-spacing:0.02em !important;
  color:var(--ls-color-blue-300) !important;
}
.page-id-27012256 #Agenda .et_pb_column_1_2 h4 {
  font:700 15px/1.35 var(--ls-font) !important; letter-spacing:-0.2px !important;
  text-transform:uppercase !important; color:#fff !important;
}
.page-id-27012256 #Agenda .et_pb_column_1_2 h6 {
  font:600 12px/1.4 var(--ls-font) !important; letter-spacing:0.03em !important;
  color:rgba(255,255,255,0.6) !important; text-transform:none !important;
}
.page-id-27012256 #Agenda .et_pb_row.et_pb_gutters {
  border-bottom:1px solid rgba(140,165,214,0.14) !important;
  padding-top:12px !important; padding-bottom:12px !important; margin-bottom:0 !important;
}

/* ============================================================
   #lshFaculty — "The people in the room"  (sec-head + prod accordion)
   ============================================================ */
.page-id-27012256 #lshFaculty .et_pb_row { width:90% !important; max-width:1240px !important; }
.page-id-27012256 #lshFaculty .lsh-lead .et_pb_text_inner p { max-width:560px; }

/* ============================================================
   #lshVenue — "On site & online"  (mockup .venue)
   ============================================================ */
.page-id-27012256 #lshVenue .lsh-venue.et_pb_row { display:flex !important; align-items:center !important; }
.page-id-27012256 #lshVenue .lsh-lead .et_pb_text_inner p { max-width:400px; margin-bottom:6px !important; }
.page-id-27012256 #lshVenue .lsh-vrows .et_pb_text_inner { margin:18px 0 24px; }
.page-id-27012256 #lshVenue .lsh-vrow {
  display:flex; justify-content:space-between; gap:16px; padding:13px 0;
  border-bottom:1px solid rgba(140,165,214,0.16);
}
.page-id-27012256 #lshVenue .lsh-vrow:first-child { border-top:1px solid rgba(140,165,214,0.16); }
.page-id-27012256 #lshVenue .lsh-vrow b {
  font:700 11px/1.4 var(--ls-font); letter-spacing:0.16em; text-transform:uppercase;
  color:var(--ls-color-blue-300);
}
.page-id-27012256 #lshVenue .lsh-vrow span {
  font:500 14px/1.4 var(--ls-font); color:rgba(255,255,255,0.82); text-align:right;
}
.page-id-27012256 #lshVenue iframe {
  border-radius:16px !important; width:100% !important; min-height:440px;
  border:1px solid rgba(140,165,214,0.22) !important;
}

/* ============================================================
   #lshRecap — "Last year, in Lausanne"  (mockup .gallery)
   ============================================================ */
.page-id-27012256 #lshRecap .lsh-after-head .et_pb_column { margin-top:34px !important; }

/* ============================================================
   #lshUpHead / #Upcoming / #ComingSoon — "Upcoming events"
   ============================================================ */
.page-id-27012256 #lshUpHead { padding:90px 0 0 !important; }
.page-id-27012256 #Upcoming { padding-top:24px !important; padding-bottom:0 !important; }
.page-id-27012256 #ComingSoon { padding-top:24px !important; }
.page-id-27012256 #ComingSoon h2 {
  font:800 italic clamp(21px,2.5vw,30px)/1 var(--ls-font) !important; letter-spacing:-0.8px !important;
  text-transform:uppercase !important; color:var(--ls-color-display-text) !important;
}

/* ============================================================
   #Sponsors — "Backed, independently"  (mockup logo wall)
   ============================================================ */
.page-id-27012256 #Sponsors .et_pb_row { width:90% !important; max-width:1200px !important; }
.page-id-27012256 #Sponsors .lsh-eyebrow .et_pb_text_inner p,
.page-id-27012256 #Sponsors .lsh-h2sub .et_pb_text_inner h2 { text-align:center !important; }
.page-id-27012256 #Sponsors .lsh-h2sub .et_pb_text_inner h2 {
  font:800 italic clamp(21px,2.5vw,33px)/1 var(--ls-font) !important; letter-spacing:-0.8px !important;
  text-transform:uppercase !important; color:var(--ls-color-display-text) !important; margin:14px 0 36px !important;
}
.page-id-27012256 #Sponsors .et_pb_image { display:flex !important; align-items:center !important; justify-content:center !important; min-height:54px; }
.page-id-27012256 #Sponsors .et_pb_image img { max-height:34px !important; width:auto !important; opacity:0.92; transition:opacity var(--ls-dur) var(--ls-ease); }
.page-id-27012256 #Sponsors .et_pb_image:hover img { opacity:1; }
.page-id-27012256 #Sponsors h6 {
  font:500 12px/1.5 var(--ls-font) !important; letter-spacing:0.02em !important;
  color:rgba(255,255,255,0.5) !important; text-transform:none !important;
}

/* ============================================================
   #lshTopics — "Browse by topic"  (mockup .topic-pills)
   ============================================================ */
.page-id-27012256 #lshTopics .lsh-pills { display:flex; flex-wrap:wrap; gap:12px; margin-top:8px; }
.page-id-27012256 #lshTopics .lsh-pill {
  display:inline-flex; align-items:center; gap:11px; padding:13px 20px 13px 16px;
  border-radius:14px; background:rgba(255,255,255,0.04); border:1px solid rgba(140,165,214,0.22);
  text-decoration:none; transition:background var(--ls-dur) var(--ls-ease),border-color var(--ls-dur) var(--ls-ease),transform var(--ls-dur) var(--ls-ease);
}
.page-id-27012256 #lshTopics .lsh-pill:hover { background:rgba(140,165,214,0.14); border-color:var(--ls-color-blue-300); transform:translateY(-2px); }
.page-id-27012256 #lshTopics .lsh-pill img { width:26px; height:26px; object-fit:contain; }
.page-id-27012256 #lshTopics .lsh-pill span {
  font:700 13px/1 var(--ls-font); letter-spacing:0.02em; color:#fff; text-transform:uppercase;
}

/* ============================================================
   #lshCases — "Patient cases" CTA  (mockup .cases-band)
   ============================================================ */
.page-id-27012256 #lshCases .lsh-cases.et_pb_column {
  position:relative; border-radius:22px; overflow:hidden; text-align:center;
  background:rgba(16,19,42,0.6); backdrop-filter:blur(14px) saturate(150%);
  border:1px solid rgba(140,165,214,0.30); box-shadow:0 16px 40px rgba(0,0,0,0.35);
  padding:48px 48px !important;
}
.page-id-27012256 #lshCases .lsh-cases.et_pb_column::before {
  content:""; position:absolute; top:0; left:0; right:0; height:3px;
  background:linear-gradient(90deg,#8CA5D6,transparent);
}
.page-id-27012256 #lshCases .lsh-cases .lsh-eyebrow .et_pb_text_inner p { text-align:center; }
.page-id-27012256 #lshCases .lsh-cases .lsh-h2 .et_pb_text_inner h2 {
  font:800 italic clamp(24px,2.8vw,36px)/1.06 var(--ls-font) !important; letter-spacing:-0.9px !important;
  text-transform:uppercase !important; color:var(--ls-color-display-text) !important;
  margin:12px auto 12px !important; max-width:760px; text-align:center;
}
.page-id-27012256 #lshCases .lsh-cases .lsh-lead .et_pb_text_inner p { max-width:580px; margin:0 auto 20px !important; text-align:center; }
.page-id-27012256 #lshCases .lsh-cases .et_pb_button_module_wrapper { text-align:center !important; }

/* ============================================================
   #lshNews — "Join our network" newsletter  (mockup .news-band)
   ============================================================ */
.page-id-27012256 #lshNews .lsh-news.et_pb_row {
  position:relative; border-radius:22px; overflow:hidden; display:flex !important; align-items:center !important;
  background:linear-gradient(120deg,rgba(51,102,155,0.22),rgba(16,19,42,0.5));
  border:1px solid rgba(140,165,214,0.30); box-shadow:0 16px 40px rgba(0,0,0,0.35);
  padding:40px 44px !important; width:90% !important; max-width:1100px !important;
}
.page-id-27012256 #lshNews .lsh-news .lsh-lead .et_pb_text_inner p { max-width:420px; }
.page-id-27012256 #lshNews .lsh-newsform { display:flex; gap:12px; flex-wrap:wrap; margin-top:6px; }
.page-id-27012256 #lshNews .lsh-newsform input {
  flex:1 1 220px; min-height:52px; padding:0 18px; border-radius:12px;
  background:rgba(255,255,255,0.06); border:1px solid rgba(140,165,214,0.30); color:#fff;
  font:500 14px/1 var(--ls-font);
}
.page-id-27012256 #lshNews .lsh-newsform input::placeholder { color:rgba(255,255,255,0.45); }
.page-id-27012256 #lshNews .lsh-newsform button {
  min-height:52px; padding:0 26px; border-radius:12px; border:1px solid #8CA5D6; cursor:pointer;
  font:600 13px/1 var(--ls-font); letter-spacing:0.14em; text-transform:uppercase; color:#fff;
  background:rgba(140,165,214,0.20);
  transition:background .25s var(--ls-ease),border-color .25s var(--ls-ease);
}
.page-id-27012256 #lshNews .lsh-newsform button:hover { background:rgba(140,165,214,0.30); border-color:#C4D3E3; }

/* ============================================================
   Hero — primary CTA -> brand gradient (mockup Register btn); secondary stays ghost
   (overrides the prior hero block which forced BOTH ghost)
   ============================================================ */
.page-id-27012256 #et-boc .ls-hero-cta .ls-cta-primary a {
  color:#fff !important;
  background:rgba(140,165,214,0.20) !important;
  border:1px solid #8CA5D6 !important;
  box-shadow:none !important;
}
.page-id-27012256 #et-boc .ls-hero-cta .ls-cta-primary a:hover { background:rgba(140,165,214,0.30) !important; border-color:#C4D3E3 !important; }
/* LSH-UP START */
.page-id-27012256 .lsh-up{--navy:#10132A;--blue500:#33669B;--blue300:#8CA5D6;--blue200:#C4D3E3;--disp:#E2E9FF;--cardln:rgba(140,165,214,0.30);--hair:rgba(140,165,214,0.16);font-family:var(--ls-font);}
.page-id-27012256 .lsh-up .btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;font:600 13px/1 var(--ls-font);letter-spacing:0.14em;text-transform:uppercase;padding:15px 26px;border-radius:12px;cursor:pointer;transition:background-position .45s cubic-bezier(.165,.84,.44,1),background .25s,border-color .25s,transform .25s;border:1px solid transparent;}
.page-id-27012256 .lsh-up .btn svg{width:15px;height:15px;}
.page-id-27012256 .lsh-up .btn-primary{color:#fff;background:rgba(140,165,214,0.20);border-color:#8CA5D6;box-shadow:none;}
.page-id-27012256 .lsh-up .btn-primary:hover{background:rgba(140,165,214,0.30);border-color:#C4D3E3;}
.page-id-27012256 .lsh-up .ticket{flex:none;align-self:center;text-align:center;padding:16px 22px;border-radius:16px;background:rgba(140,165,214,0.12);border:1px solid rgba(140,165,214,0.32);}
.page-id-27012256 .lsh-up .ticket .mon{font:700 11px/1 var(--ls-font);letter-spacing:0.18em;text-transform:uppercase;color:var(--blue300);}
.page-id-27012256 .lsh-up .ticket .day{font:800 44px/1 var(--ls-font);color:var(--disp);margin:6px 0;}
.page-id-27012256 .lsh-up .ticket .yr{font:700 11px/1 var(--ls-font);letter-spacing:0.16em;color:var(--blue300);}
.page-id-27012256 .lsh-up .event-meta{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px;}
.page-id-27012256 .lsh-up .event-meta .chip{font:700 10px/1 var(--ls-font);letter-spacing:0.10em;text-transform:uppercase;color:#fff;background:rgba(255,255,255,0.06);border:1px solid rgba(140,165,214,0.28);padding:9px 13px;border-radius:999px;}
.page-id-27012256 .lsh-up .up-agenda-h{font:700 9px/1 var(--ls-font);letter-spacing:0.18em;text-transform:uppercase;color:var(--blue300);margin:18px 0 12px;}
.page-id-27012256 .lsh-up .up-topic{display:flex;align-items:baseline;gap:12px;padding:11px 0;border-bottom:1px solid var(--hair);}
.page-id-27012256 .lsh-up .up-topic .dot{flex:none;width:6px;height:6px;border-radius:50%;background:var(--blue300);align-self:center;}
.page-id-27012256 .lsh-up .up-topic b{flex:1;font:700 13px/1.32 var(--ls-font);letter-spacing:-0.1px;text-transform:uppercase;color:#fff;}
.page-id-27012256 .lsh-up .up-topic i{flex:none;font:600 11px/1.3 var(--ls-font);color:var(--blue300);font-style:normal;}
.page-id-27012256 .lsh-up .up-cta{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:4px;}
.page-id-27012256 .lsh-up .up-slider{display:flex;gap:24px;flex-wrap:wrap;align-items:stretch;}
.page-id-27012256 .lsh-up .up-card{flex:1 1 calc(50% - 12px);min-width:300px;display:flex;flex-direction:column;border-radius:24px;background:linear-gradient(120deg,#1B2440,#10132A);border:1px solid rgba(140,165,214,0.24);box-shadow:0 16px 40px rgba(0,0,0,0.35);padding:0;position:relative;}
.page-id-27012256 .lsh-up .up-card .hairline{position:absolute;top:0;left:1px;right:1px;height:3px;border-radius:24px 24px 0 0;background:linear-gradient(90deg,#8CA5D6,transparent);}
.page-id-27012256 .lsh-up .up-card-head{display:flex;gap:18px;align-items:flex-start;padding:32px 32px 24px;border-bottom:1px solid var(--hair);min-height:172px;}
.page-id-27012256 .lsh-up .up-card-head > div:last-child{flex:1;min-width:0;}
.page-id-27012256 .lsh-up .up-card h3{font:800 italic clamp(20px,2vw,25px)/1.12 var(--ls-font);letter-spacing:-0.6px;text-transform:uppercase;color:var(--disp);margin:9px 0 14px;min-height:2.24em;}
.page-id-27012256 .lsh-up .up-card .event-meta{margin-bottom:0;}
.page-id-27012256 .lsh-up .up-mini{font:700 9px/1 var(--ls-font);letter-spacing:0.18em;text-transform:uppercase;color:var(--blue300);margin:0 0 13px;}
.page-id-27012256 .lsh-up .up-sec{padding:24px 32px;border-bottom:1px solid var(--hair);}
.page-id-27012256 .lsh-up .up-pics{display:flex;gap:10px;margin:0;}
.page-id-27012256 .lsh-up .up-pics figure{flex:1;margin:0;position:relative;aspect-ratio:3/4;border-radius:13px;overflow:hidden;border:1px solid var(--cardln);background:linear-gradient(135deg,#1B2440,#10132A);}
.page-id-27012256 .lsh-up .up-pics figure img{width:100%;height:100%;object-fit:cover;object-position:center 10%;}
.page-id-27012256 .lsh-up .up-pics figure .ov{position:absolute;inset:0;background:linear-gradient(180deg,rgba(16,19,42,0) 44%,rgba(16,19,42,0.92) 100%);}
.page-id-27012256 .lsh-up .up-pics figcaption{position:absolute;left:0;right:0;bottom:0;padding:11px 10px;z-index:2;}
.page-id-27012256 .lsh-up .up-pics figcaption b{display:block;font:700 11px/1.14 var(--ls-font);letter-spacing:-0.1px;text-transform:uppercase;color:#fff;}
.page-id-27012256 .lsh-up .up-pics figcaption span{display:block;font:600 8px/1 var(--ls-font);letter-spacing:0.12em;text-transform:uppercase;color:var(--blue300);margin-top:5px;}
.page-id-27012256 .lsh-up .up-card .up-agenda{border-top:none;margin:0;padding:24px 32px;}
.page-id-27012256 .lsh-up .up-card .up-agenda-h{margin:0 0 6px;}
.page-id-27012256 .lsh-up .up-card .up-topic:last-child{border-bottom:none;}
.page-id-27012256 .lsh-up .up-foot{margin-top:auto;padding:22px 32px 32px;border-top:1px solid var(--hair);display:flex;flex-direction:column;}
.page-id-27012256 .lsh-up .up-card .up-cta{margin:0;gap:12px;align-items:center;flex-wrap:wrap;}
.page-id-27012256 .lsh-up .up-card .up-cta .btn-primary{flex:1 1 auto;}
.page-id-27012256 .lsh-up .up-card .up-cta .cme-chip{flex:none;}
.page-id-27012256 .lsh-up .up-card .up-cal{margin-top:46px;padding-top:0;}
.page-id-27012256 .lsh-up .up-card .up-cal .cal{display:block;width:100%;}
.page-id-27012256 .lsh-up .up-card .up-cal .cal-trigger{width:100%;}
.page-id-27012256 .lsh-up .cme-chip{display:inline-flex;align-items:center;gap:8px;font:700 10px/1 var(--ls-font);letter-spacing:0.10em;text-transform:uppercase;color:var(--blue200);background:rgba(140,165,214,0.12);border:1px solid rgba(140,165,214,0.30);padding:12px 14px;border-radius:999px;}
.page-id-27012256 .lsh-up .live-note{display:flex;align-items:center;gap:10px;font:700 11px/1.4 var(--ls-font);letter-spacing:0.10em;text-transform:uppercase;color:rgba(196,211,227,0.82);margin-top:auto;padding-top:20px;}
.page-id-27012256 .lsh-up .live-dot{width:10px;height:10px;border-radius:50%;background:#ff5470;box-shadow:0 0 0 0 rgba(255,84,112,0.6);animation:lshupPulse 1.8s infinite;flex:none;}
.page-id-27012256 .lsh-up .cal{position:relative;display:inline-block;}
.page-id-27012256 .lsh-up .cal-trigger{cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:9px;font:600 13px/1 var(--ls-font);letter-spacing:0.14em;text-transform:uppercase;padding:15px 26px;border-radius:12px;border:1px solid rgba(140,165,214,0.42);color:var(--disp);background:rgba(140,165,214,0.10);transition:.25s;}
.page-id-27012256 .lsh-up .cal-trigger svg{width:15px;height:15px;}
.page-id-27012256 .lsh-up .cal:hover .cal-trigger,.page-id-27012256 .lsh-up .cal:focus-within .cal-trigger{background:rgba(140,165,214,0.20);border-color:var(--blue300);color:#fff;}
.page-id-27012256 .lsh-up .cal .nudge{position:absolute;left:50%;top:-40px;transform:translateX(-50%);background:var(--disp);color:var(--navy);font:800 10px/1 var(--ls-font);letter-spacing:0.10em;text-transform:uppercase;padding:8px 12px;border-radius:9px;white-space:nowrap;box-shadow:0 8px 20px rgba(0,0,0,0.4);animation:lshupBob 1.5s ease-in-out infinite;pointer-events:none;transition:opacity .2s;z-index:6;}
.page-id-27012256 .lsh-up .cal .nudge::after{content:'';position:absolute;left:50%;bottom:-5px;transform:translateX(-50%) rotate(45deg);width:10px;height:10px;background:var(--disp);}
.page-id-27012256 .lsh-up .cal:hover .nudge,.page-id-27012256 .lsh-up .cal:focus-within .nudge{opacity:0;}
.page-id-27012256 .lsh-up .cal-panel{position:absolute;top:calc(100% + 12px);left:0;z-index:40;width:360px;max-width:88vw;background:#fff;color:#10132A;border-radius:16px;box-shadow:0 30px 70px rgba(0,0,0,0.5);overflow:hidden;border:1px solid rgba(16,19,42,0.10);opacity:0;visibility:hidden;transform:translateY(-12px);transform-origin:top center;transition:opacity .28s cubic-bezier(.165,.84,.44,1),transform .28s cubic-bezier(.165,.84,.44,1),visibility .28s;}
.page-id-27012256 .lsh-up .cal:hover .cal-panel,.page-id-27012256 .lsh-up .cal:focus-within .cal-panel{opacity:1;visibility:visible;transform:translateY(0);}
.page-id-27012256 .lsh-up .cal::after{content:'';position:absolute;left:0;top:100%;width:100%;height:16px;}
.page-id-27012256 .lsh-up .cal-panel .cap{text-align:center;font:800 12px/1 var(--ls-font);letter-spacing:0.14em;text-transform:uppercase;color:#33669B;padding:15px;border-bottom:1px solid #EAEEF3;}
.page-id-27012256 .lsh-up .cal-ev{display:flex;gap:15px;align-items:center;padding:15px 18px;border-bottom:1px solid #EAEEF3;}
.page-id-27012256 .lsh-up .cal-ev .d{flex:none;text-align:center;line-height:1;padding-right:15px;border-right:1px solid #D7DEE7;}
.page-id-27012256 .lsh-up .cal-ev .d .m{font:800 12px/1 var(--ls-font);letter-spacing:0.06em;text-transform:uppercase;color:#BF5549;}
.page-id-27012256 .lsh-up .cal-ev .d .n{font:800 28px/1 var(--ls-font);color:#333;margin-top:4px;}
.page-id-27012256 .lsh-up .cal-ev .x b{display:block;font:800 14px/1.2 var(--ls-font);text-transform:uppercase;color:#333;}
.page-id-27012256 .lsh-up .cal-ev .x i{display:block;font:700 11px/1.4 var(--ls-font);letter-spacing:0.06em;text-transform:uppercase;color:#8A93A6;font-style:normal;margin-top:5px;}
.page-id-27012256 .lsh-up .cal-ev .x span{display:block;font:500 12px/1.4 var(--ls-font);color:#5A6275;margin-top:4px;}
.page-id-27012256 .lsh-up .cal-opts{padding:8px;display:flex;flex-direction:column;}
.page-id-27012256 .lsh-up .cal-opt{display:flex;align-items:center;gap:13px;padding:11px 14px;border-radius:9px;font:600 13px/1.2 var(--ls-font);color:#2A3450;transition:.16s;}
.page-id-27012256 .lsh-up .cal-opt:hover{background:#EEF2F7;}
.page-id-27012256 .lsh-up .cal-opt img{width:22px;height:22px;flex:none;object-fit:contain;}
@keyframes lshupPulse{0%{box-shadow:0 0 0 0 rgba(255,84,112,0.55);}70%{box-shadow:0 0 0 12px rgba(255,84,112,0);}100%{box-shadow:0 0 0 0 rgba(255,84,112,0);}}
@keyframes lshupBob{0%,100%{transform:translateX(-50%) translateY(0);}50%{transform:translateX(-50%) translateY(-7px);}}
.page-id-27012256 .lsh-up .cal.open .cal-panel{opacity:1;visibility:visible;transform:translateY(0);}
@media (max-width:760px){.page-id-27012256 .lsh-up .up-card{flex:1 1 100%;min-width:0;}.page-id-27012256 .lsh-up .up-card-head,.page-id-27012256 .lsh-up .up-sec,.page-id-27012256 .lsh-up .up-card .up-agenda,.page-id-27012256 .lsh-up .up-foot{padding-left:24px;padding-right:24px;}.page-id-27012256 .lsh-up .cal-panel{left:auto;right:0;}}
@media (prefers-reduced-motion:reduce){.page-id-27012256 .lsh-up .live-dot,.page-id-27012256 .lsh-up .cal .nudge{animation:none!important;}}
/* LSH-UP END */
/* LSH-HOME END */
