/* =====================================================================
   Utilities
   File: css/child/tools/_utilities.css
   ===================================================================== */

/* ---------------------------------------------------------------------
   Host / State
   --------------------------------------------------------------------- */
html:not(.hs-inline-edit) [data-mode="editor"],
html:is(.hs-inline-edit) [data-mode="live"] {
  display: none!important;
}

/* ---------------------------------------------------------------------
   Display / Position
   --------------------------------------------------------------------- */
.block { display: block; }
.relative { position: relative; }
.absolute { position: absolute; }
.fixed { position: fixed; }
.sticky { position: sticky; top: 0; }



/* ---------------------------------------------------------------------
   Flexbox
   --------------------------------------------------------------------- */
.flex { display: flex; }
.inline-flex { display: inline-flex; }

.flex-row { flex-direction: row; }
.flex-col { flex-direction: column; }

.flex-wrap { flex-wrap: wrap; }

.items-start { align-items: flex-start; }
.items-center { align-items: center; }
.items-stretch { align-items: stretch; }

.justify-center { justify-content: center; }
.justify-between { justify-content: space-between; }

.flex-1 { flex: 1 1 auto; }
.grow { flex-grow: 1; }

/* Quick flex combos */
.u-flexgap { display: flex; gap: 1em; }
.u-flexgap-0-5em { display: flex; gap: .5em; }
.u-flexgap-2em { display: flex; gap: 2em; }

/* ---------------------------------------------------------------------
   Grid
   --------------------------------------------------------------------- */
.grid { display: grid; gap: 1rem; }
.grid-2 { grid-template-columns: repeat(2, 1fr); }
.grid-3 { grid-template-columns: repeat(3, 1fr); }
.grid-4 { grid-template-columns: repeat(4, 1fr); }

.grid-full-row { grid-column: 1 / -1; }

/* ---------------------------------------------------------------------
   Gap
   --------------------------------------------------------------------- */
.gap-025 { gap: 0.25rem; }
.gap-05 { gap: 0.5rem; }
.gap-1 { gap: 1rem; }
.gap-2 { gap: 2rem; }
.gap-3 { gap: 3rem; }

/* ---------------------------------------------------------------------
   Spacing: Padding
   --------------------------------------------------------------------- */
.px-2 { padding-left: 0.5rem; padding-right: 0.5rem; }
.py-2 { padding-top: 0.5rem; padding-bottom: 0.5rem; }
.py-4 { padding-top: 1rem; padding-bottom: 1rem; }
.pt-5 { padding-top: 1.25rem; }
.pb-3 { padding-bottom: 0.75rem; }

/* ---------------------------------------------------------------------
   Spacing: Margin
   --------------------------------------------------------------------- */
.mt-5 { margin-top: 1.5rem; }
.mb-1 { margin-bottom: 0.25rem; }
.mb-2 { margin-bottom: 0.5rem; }
.mb-3 { margin-bottom: 0.75rem; }
.mb-4 { margin-bottom: 1rem; }
.mb-5 { margin-bottom: 1.5rem; }
.mb-6 { margin-bottom: 2rem; }

/* ---------------------------------------------------------------------
   Sizing / Overflow
   --------------------------------------------------------------------- */
.w-full { width: 100%; }
.h-full { height: 100%; }

/* ---------------------------------------------------------------------
   Typography
   --------------------------------------------------------------------- */
.font-xs { font-size: .8em; text-transform: uppercase; font-weight: 600; }
.font-sm { font-size: .88em; }
.font-md { font-size: 1em; }
.font-lg { font-size: 1.08em; }
.font-xl { font-size: 1.20em; }

.uppercase { text-transform: uppercase; }
.text-center { text-align: center; }

.lh-sm { line-height: var(--lh-sm); }
.lh-lg { line-height: var(--lh-lg); }
.lh-xxl { line-height: var(--lh-xxl); }


.stack-gap > * { margin: 0; padding: 0; }
.u-no-space { margin: 0; padding: 0; }

:focus { outline: auto; outline-color: var(--green-700); }

/* ---------------------------------------------------------------------
   Radius / Aspect
   --------------------------------------------------------------------- */
.u-radius-img { border-radius: 1em; }

[data-radius="none"]  { border-radius: var(--radius-none); }
[data-radius="xs"]    { border-radius: var(--radius-xs); }
[data-radius="sm"]    { border-radius: var(--radius-sm); }
[data-radius="md"]    { border-radius: var(--radius-md); }
[data-radius="lg"]    { border-radius: var(--radius-lg); }
[data-radius="xl"]    { border-radius: var(--radius-xl); }
[data-radius="full"]  { border-radius: var(--radius-full); }

.img-circle {
  aspect-ratio: 1 / 1; height: auto; border-radius: var(--radius-full); object-fit: cover;
}

[data-aspect-ratio="portrait"] { aspect-ratio: 4 / 5; object-fit: cover; }
[data-aspect-ratio="landscape"] { aspect-ratio: 3 / 2; object-fit: cover; }
[data-aspect-ratio="square"] { aspect-ratio: 1 / 1; object-fit: cover; }

/* ---------------------------------------------------------------------
   Shadows
   --------------------------------------------------------------------- */
.shadow-card {
  box-shadow: 0 0 0 1px rgba(0,0,0,.05), 0 4px 10px rgba(0,0,0,.06);
}

/* ---------------------------------------------------------------------
   Buttons
   --------------------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center;
  font-family: var(--font-body);
  font-size: var(--fs-xl); line-height: 1.24;
  padding: var(--btn-padding-vertical) var(--btn-padding-horizontal);
  border: 1px solid transparent; border-radius: var(--btn-radius);
  font-weight: 600; text-align: center; cursor: pointer; text-decoration: none;
  transition: all .2s ease-in-out;
}

.btn--block { display: flex; width: 100%; }

.btn--ghost { background-color: transparent; border-color: var(--neutral-300); color: var(--neutral-800); }
.btn--ghost:hover { background-color: var(--neutral-100); color: var(--neutral-900); }

.btn--primary { background-color: var(--btn-bg); color: var(--btn-fg); border-color: transparent; }
.btn--primary:hover { background-color: var(--btn-hover-bg); color: var(--btn-hover-fg); }

.btn:disabled, .btn[disabled] { background-color: var(--btn-disabled-bg); color: var(--btn-disabled-fg); cursor: not-allowed; }
.btn:focus { outline: none; box-shadow: var(--btn-focus-ring-offset-box-shadow); }


/* ---------------------------------------------------------------------
   Color Utilities
   --------------------------------------------------------------------- */
.text-neutral-400 { color: var(--neutral-400); }

/* ---------------------------------------------------------------------
   State / Visibility
   --------------------------------------------------------------------- */
.hide { display: none; }
.visible { visibility: visible; }

/* ---------------------------------------------------------------------
   Data helpers
   --------------------------------------------------------------------- */
[data-weight="increase"] > span { background-color: var(--increase); }
[data-weight="neutral"]  > span { background-color: var(--neutral); }
[data-weight="decrease"] > span { background-color: var(--decrease); }

/* ---------------------------------------------------------------------
   Responsive variants
   --------------------------------------------------------------------- */
@media (min-width: 640px) {
  .sm\:grid-2 { grid-template-columns: repeat(2, 1fr); }
  .sm\:grid-3 { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 768px) {
  .md\:grid-2 { grid-template-columns: repeat(2, 1fr); }
  .md\:grid-3 { grid-template-columns: repeat(3, 1fr); }
  .md\:grid-4 { grid-template-columns: repeat(4, 1fr); }

  .md\:flex-row { flex-direction: row; }
  .md\:items-center { align-items: center; }
}

@media (min-width: 1024px) {
  .lg\:grid-4 { grid-template-columns: repeat(4, 1fr); }
}
/* =========================================================
   TOKENS — desktop first (1920 baseline)
   - Reverse media (max-width) scales DOWN
   - Breakpoints: 1440, 1280, 1024, 992, 768, 600, 480, 388
   ========================================================= */
:root {
  /* -------------------------------------------------------
     Layout max widths
     ------------------------------------------------------- */
  --max-sm: 48rem;   /* ~768px */
  --max-md: 1344px;
  --max-lg: 90rem;   /* ~1440px */
  --max: var(--max-lg);

  /* -------------------------------------------------------
     Typography — PRIMARY sizes (define once)
     ------------------------------------------------------- */
  /* Captions */
  --font-size-caption-s: 0.6875rem; /* 11px */
  --font-size-caption-m: 0.75rem;   /* 12px */
  --font-size-caption-l: 0.8125rem; /* 13px */

  /* Body */
  --font-size-body-s: 0.875rem;  /* 14px */
  --font-size-body-m: 1rem;      /* 16px */
  --font-size-body-l: 1.125rem;  /* 18px */

  /* Headings */
  --font-size-h6: 1rem;      /* 16px */
  --font-size-h5: 1.08rem;   /* ~17px */
  --font-size-h4: 1.25rem;   /* 20px */
  --font-size-h3: 1.5rem;    /* 24px */
  --font-size-h2: 2rem;      /* 32px */
  --font-size-h1: 2.25rem;   /* 36px */

  /* Display hero */
  --font-size-display-sm: 2.5rem; /* 40px */
  --font-size-display-md: 3.5rem;
  --font-size-display: 4.5rem;

  /* -------------------------------------------------------
     Typography — ALIASES (keep system consistent)
     ------------------------------------------------------- */
  /* If you want body-m to always equal h6, alias it like this */
  --font-size-body-m: var(--font-size-h6);

  /* Optional aliases you may like (comment out if not needed) */
  /* --font-size-body-l: var(--font-size-h5); */

  /* -------------------------------------------------------
     Line heights
     ------------------------------------------------------- */
  --line-height-tight: 1.1;
  --line-height-heading: 1.2;
  --line-height-body: 1.48;

  /* -------------------------------------------------------
     Spacing
     ------------------------------------------------------- */
  --space-0:   0;
  --space-xxs: 0.25rem; /* 4px  */
  --space-xs:  0.5rem;  /* 8px  */
  --space-sm:  0.75rem; /* 12px */
  --space-md:  1rem;    /* 16px */
  --space-lg:  1.25rem; /* 20px */
  --space-xl:  1.5rem;  /* 24px */
  --space-xxl: 2rem;    /* 32px */

  /* -------------------------------------------------------
     Radius
     ------------------------------------------------------- */
  --radius-0:    0;
  --radius-xs:   0.125rem; /* 2px  */
  --radius-sm:   0.25rem;  /* 4px  */
  --radius-md:   0.5rem;   /* 8px  */
  --radius-lg:   0.75rem;  /* 12px */
  --radius-xl:   1rem;     /* 16px */
  --radius-xxl:  1.5rem;   /* 24px */
  --radius-full: 9999px;
  --radius-btn:  var(--radius-sm);

  /* -------------------------------------------------------
     Overlays
     ------------------------------------------------------- */
  --backdrop: rgba(0, 0, 0, 0.7);
}

/* =========================================================
   ≤ 1440px
   ========================================================= */
@media (max-width: 1440px) {
  :root {
    --max: var(--max-md);

    /* Captions */
    --font-size-caption-s: 0.6875rem;
    --font-size-caption-m: 0.75rem;
    --font-size-caption-l: 0.8125rem;

    /* Body */
    --font-size-body-s: 0.875rem;
    --font-size-body-m: var(--font-size-h6);
    --font-size-body-l: 1.0625rem; /* 17px */

    /* Headings */
    --font-size-h6: 0.9375rem; /* 15px */
    --font-size-h5: 1.0625rem; /* 17px */
    --font-size-h4: 1.1875rem; /* 19px */
    --font-size-h3: 1.4375rem; /* 23px */
    --font-size-h2: 1.875rem;  /* 30px */
    --font-size-h1: 2.125rem;  /* 34px */

    /* Display */
    --font-size-display-sm: 2.25rem;
    --font-size-display-md: 3.125rem;
    --font-size-display: 4rem;
  }
}

/* =========================================================
   ≤ 1280px
   ========================================================= */
@media (max-width: 1280px) {
  :root {
    /* Body */
    --font-size-body-l: 1.0625rem;

    /* Headings */
    --font-size-h6: 0.9375rem;
    --font-size-h5: 1.0625rem;
    --font-size-h4: 1.1875rem;
    --font-size-h3: 1.375rem; /* 22px */
    --font-size-h2: 1.75rem;  /* 28px */
    --font-size-h1: 2rem;     /* 32px */

    /* Display */
    --font-size-display-sm: 2.125rem;
    --font-size-display-md: 2.75rem;
    --font-size-display: 3.5rem;
  }
}

/* =========================================================
   ≤ 1024px
   ========================================================= */
@media (max-width: 1024px) {
  :root {
    /* Captions */
    --font-size-caption-s: 0.6875rem;
    --font-size-caption-m: 0.75rem;
    --font-size-caption-l: 0.8125rem;

    /* Body */
    --font-size-body-s: 0.875rem;
    --font-size-body-m: var(--font-size-h6);
    --font-size-body-l: 1rem;

    /* Headings */
    --font-size-h6: 0.9375rem; /* 15px */
    --font-size-h5: 1rem;      /* 16px */
    --font-size-h4: 1.125rem;  /* 18px */
    --font-size-h3: 1.375rem;  /* 22px */
    --font-size-h2: 1.625rem;  /* 26px */
    --font-size-h1: 1.875rem;  /* 30px */

    /* Display */
    --font-size-display-sm: 2rem;
    --font-size-display-md: 2.5rem;
    --font-size-display: 3rem;
  }
}

/* =========================================================
   ≤ 992px
   ========================================================= */
@media (max-width: 992px) {
  :root {
    /* Small nudge only (keeps things stable around iPad landscape-ish) */
    --font-size-h1: 1.8125rem; /* 29px */
    --font-size-display: 2.875rem;
  }
}

/* =========================================================
   ≤ 768px
   ========================================================= */
@media (max-width: 768px) {
  :root {
    /* Body */
    --font-size-body-l: 1rem;

    /* Headings */
    --font-size-h6: 0.9375rem;
    --font-size-h5: 1rem;
    --font-size-h4: 1.125rem;
    --font-size-h3: 1.25rem;  /* 20px */
    --font-size-h2: 1.5rem;   /* 24px */
    --font-size-h1: 1.75rem;  /* 28px */

    /* Display */
    --font-size-display-sm: 1.875rem;
    --font-size-display-md: 2.125rem;
    --font-size-display: 2.5rem;
  }
}

/* =========================================================
   ≤ 600px
   ========================================================= */
@media (max-width: 600px) {
  :root {
    /* Captions */
    --font-size-caption-s: 0.6875rem;
    --font-size-caption-m: 0.75rem;
    --font-size-caption-l: 0.8125rem;

    /* Body */
    --font-size-body-s: 0.875rem;
    --font-size-body-m: var(--font-size-h6);
    --font-size-body-l: 1rem;

    /* Headings */
    --font-size-h6: 0.9375rem;
    --font-size-h5: 1rem;
    --font-size-h4: 1.0625rem; /* 17px */
    --font-size-h3: 1.125rem;  /* 18px */
    --font-size-h2: 1.25rem;   /* 20px */
    --font-size-h1: 1.5rem;    /* 24px */

    /* Display */
    --font-size-display-sm: 1.5rem;
    --font-size-display-md: 1.75rem;
    --font-size-display: 2rem;
    --gutter:1rem;
  }
}

/* =========================================================
   ≤ 480px
   ========================================================= */
@media (max-width: 480px) {
  :root {
    --font-size-display: 1.875rem;
    --font-size-display-md: 1.625rem;
    --font-size-display-sm: 1.375rem;
  }
  
  .header-mobile-nav > .site-menu-item-cta {
    display:none;
  }
}

/* =========================================================
   ≤ 388px
   ========================================================= */
@media (max-width: 388px) {
  :root {
    --font-size-h1: 1.375rem;
    --font-size-display: 1.75rem;
  }
}

.dnd-section > .row-fluid {
  max-width: var(--max);
      padding-left: var(--gutter);
    padding-right: var(--gutter);
}

/* =========================================================
   Text color utilities (semantic + ramps)
   ========================================================= */

.u-text-default,
.u-text-text { color: var(--color-text); } /* alias if you want "color-text" vibe */

.u-text-body { color: var(--color-text-body); }
.u-text-muted,
.u-text-mute { color: var(--color-text-muted); }

.u-text-primary { color: var(--color-primary); }
.u-text-on-primary { color: var(--color-on-primary); }

/* If you want explicit ramps too (sometimes useful) */
.u-text-neutral-50{color:var(--neutral-50)}
.u-text-neutral-100{color:var(--neutral-100)}
.u-text-neutral-200{color:var(--neutral-200)}
.u-text-neutral-300{color:var(--neutral-300)}
.u-text-neutral-400{color:var(--neutral-400)}
.u-text-neutral-500{color:var(--neutral-500)}
.u-text-neutral-600{color:var(--neutral-600)}
.u-text-neutral-700{color:var(--neutral-700)}
.u-text-neutral-800{color:var(--neutral-800)}
.u-text-neutral-900{color:var(--neutral-900)}

/* =========================================================
   Line-height utilities
   - Token based + a few practical numeric options
   ========================================================= */

/* Token-based */
.u-lh-tight   { line-height: var(--line-height-tight) !important; }
.u-lh-heading { line-height: var(--line-height-heading) !important; }
.u-lh-body    { line-height: var(--line-height-body) !important; }

/* Numeric scale (handy for overrides) */
.u-lh-1      { line-height: 1 !important; }
.u-lh-105    { line-height: 1.05 !important; }
.u-lh-11     { line-height: 1.1 !important; }
.u-lh-12     { line-height: 1.2 !important; }
.u-lh-125    { line-height: 1.25 !important; }
.u-lh-13     { line-height: 1.3 !important; }
.u-lh-14     { line-height: 1.4 !important; }
.u-lh-145    { line-height: 1.45 !important; }
.u-lh-15     { line-height: 1.5 !important; }
.u-lh-16     { line-height: 1.6 !important; }
.u-lh-18     { line-height: 1.8 !important; }

/* Reset / inherit */
.u-lh-normal  { line-height: normal !important; }
.u-lh-inherit { line-height: inherit !important; }

/* =========================================================
   Text shadow utilities
   - Use when text sits on images/video
   ========================================================= */

/* Soft (good default for hero text) */
.u-text-shadow-sm {
  text-shadow: 0 1px 2px rgba(0,0,0,.45);
}

.u-text-shadow-md {
  text-shadow: 0 2px 8px rgba(0,0,0,.55);
}

.u-text-shadow-lg {
  text-shadow: 0 6px 20px rgba(0,0,0,.65);
}

/* “Directional” (like your example) */
.u-text-shadow-inset {
  text-shadow: -1px 1px rgba(0,0,0,.8);
}

/* High-contrast outline-ish (use sparingly) */
.u-text-shadow-outline {
  text-shadow:
    0 1px 0 rgba(0,0,0,.85),
    0 -1px 0 rgba(0,0,0,.85),
    1px 0 0 rgba(0,0,0,.85),
    -1px 0 0 rgba(0,0,0,.85);
}

/* Kill shadow when needed */
.u-text-shadow-none { text-shadow: none; }


/* =========================================================
   “Readable on media” helper (sets variables)
   ========================================================= */

:root {
  --text-shadow-on-media: 0 2px 10px rgba(0,0,0,.55);
}

.u-text-on-media {
  color: #fff;
  text-shadow: var(--text-shadow-on-media);
}

.u-relative {
  position:relative;
}

/* Optional:
html { --line-height-body: 1.64; }
*/

h1, h2, h3 {
  line-height: var(--line-height-heading);
}

h1, h2, h3, h4, h5, h6 {
  font-family:var(--font-body);
  font-weight:500;
}

.u-text-center {
  text-align:center; 
}

/* Media helper
   Enforces a square crop with responsive corner radius
   (visual only – no semantic or functional meaning) */

.u-media-square {
  aspect-ratio:1/1;
  border-radius: var(--radius-xxl);
  overflow:hidden;
}

@media (max-width: 1024px) {
  .u-media-square {
    border-radius: var(--radius-xl);
  }
}

@media (max-width: 768px) {
  .u-media-square {
    border-radius: var(--radius-lg);
  }
}

@media (max-width: 480px) {
  .u-media-square {
    border-radius: var(--radius-md);
  }
}

/* =========================================================
   Background-image container (HubSpot-safe)
   - No child selectors (>) because HS injects wrapper divs
   - Works with <img>, <picture>, <video> anywhere inside
   ========================================================= */

/* The container */
.u-bg-img {
  position: relative;
  overflow: hidden;
  width: 100%;
  height: 100%;
}

/* Optional: if you want an absolute-fill variant */
.u-bg-img--fill,
.u-bg-media--fill {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
}

.hs-inline-edit .u-bg-media > .inpage-editor-active-field {
  position: absolute;
  width: 100%;
  height: 100%;
}

/* The media inside (any depth) */
.u-bg-img img,
.u-bg-img picture,
.u-bg-img video {
  display: block;
  width: 100%;
  height: 100%;
  max-width: none;
}

/* If <picture> wraps an <img>, ensure the img gets the fit/position */
.u-bg-img picture img {
  width: 100%;
  height: 100%;
  max-width: none;
}

/* Default fit */
.u-bg-img img,
.u-bg-img video,
.u-bg-img picture img {
  object-fit: cover;
  object-position: center;
}

/* Wash / backdrop overlay */
.u-bg-media__wash {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

/* =========================================================
   Background media utility
   ========================================================= */

.u-editor-overlay {
  pointer-events:none;
}

.u-editor-overlay > * {
  pointer-events:auto;
}

.u-bg-media {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

.hs-inline-edit .u-bg-media {
  pointer-events: auto;
}


.u-bg-media__layer {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}

.u-bg-media__img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

/* HubSpot videoplayer often outputs an iframe/object wrapper.
   This forces it to behave like a background cover. */
.u-bg-media__video,
.u-bg-media__video > * ,
.u-bg-media__video iframe,
.u-bg-media__video video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}


/* Mobile override logic */
.u-bg-media__layer--mobile { display: none; }

@media (max-width: 768px) {
  .u-bg-media-has-mobile.u-bg-media__layer--desktop { display: none; }
  .u-bg-media__layer--mobile { display: block; }
}

/* ---------------------------------------------------------
   Fit modes (apply to container)
--------------------------------------------------------- */

.u-bg-cover  img,
.u-bg-cover  video,
.u-bg-cover  picture img { object-fit: cover; }

.u-bg-contain img,
.u-bg-contain video,
.u-bg-contain picture img { object-fit: contain; }

.u-bg-fill img,
.u-bg-fill video,
.u-bg-fill picture img { object-fit: fill; }

.u-bg-none img,
.u-bg-none video,
.u-bg-none picture img { object-fit: none; }

/* ---------------------------------------------------------
   Position modes (apply to container)
--------------------------------------------------------- */

.u-bg-pos-center img,
.u-bg-pos-center video,
.u-bg-pos-center picture img { object-position: center; }

.u-bg-pos-top img,
.u-bg-pos-top video,
.u-bg-pos-top picture img { object-position: center top; }

.u-bg-pos-bottom img,
.u-bg-pos-bottom video,
.u-bg-pos-bottom picture img { object-position: center bottom; }

.u-bg-pos-left img,
.u-bg-pos-left video,
.u-bg-pos-left picture img { object-position: left center; }

.u-bg-pos-right img,
.u-bg-pos-right video,
.u-bg-pos-right picture img { object-position: right center; }

.u-bg-pos-top-left img,
.u-bg-pos-top-left video,
.u-bg-pos-top-left picture img { object-position: top left; }

.u-bg-pos-top-right img,
.u-bg-pos-top-right video,
.u-bg-pos-top-right picture img { object-position: top right; }

.u-bg-pos-bottom-left img,
.u-bg-pos-bottom-left video,
.u-bg-pos-bottom-left picture img { object-position: bottom left; }

.u-bg-pos-bottom-right img,
.u-bg-pos-bottom-right video,
.u-bg-pos-bottom-right picture img { object-position: bottom right; }

/* ---------------------------------------------------------
   Image-level utilities (use directly on <img> if preferred)
--------------------------------------------------------- */

.u-object-cover   { object-fit: cover; }
.u-object-contain { object-fit: contain; }
.u-object-fill    { object-fit: fill; }
.u-object-none    { object-fit: none; }

.u-object-center        { object-position: center; }
.u-object-top           { object-position: center top; }
.u-object-bottom        { object-position: center bottom; }
.u-object-left          { object-position: left center; }
.u-object-right         { object-position: right center; }

.u-object-top-left      { object-position: top left; }
.u-object-top-right     { object-position: top right; }
.u-object-bottom-left   { object-position: bottom left; }
.u-object-bottom-right  { object-position: bottom right; }

/* =========================================================
   Z-index utilities
   ========================================================= */

/* Base */

.u-z-behind {
  z-index: -1;
}

.u-z-0    { z-index: 0; }
.u-z-1    { z-index: 1; }
.u-z-2    { z-index: 2; }
.u-z-3    { z-index: 3; }
.u-z-4    { z-index: 4; }
.u-z-5    { z-index: 5; }

/* UI layers */
.u-z-10   { z-index: 10; }   /* dropdowns, sticky bars */
.u-z-20   { z-index: 20; }   /* headers, nav */
.u-z-30   { z-index: 30; }   /* overlays */
.u-z-40   { z-index: 40; }   /* modals */
.u-z-50   { z-index: 50; }   /* toasts */

/* Escape hatches */
.u-z-auto { z-index: auto; }
.u-z-max  { z-index: 2147483647; } /* last resort */

/* =========================================================
   Content wrappers
   ========================================================= */

.content-wrapper {
  width:100%;
}

.content-wrapper-sm {
  width:100%;
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
  max-width: var(--max-sm);
}

/* Large wrapper (wide sections, data-heavy layouts) */
.content-wrapper-lg {
  width:100%:
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
  max-width: var(--max-lg);
}

.content-wrapper-sm--start {
  width: 100%;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
  max-width: var(--max-sm);
}

.content-wrapper-lg--start {
  width: 100%;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
  max-width: var(--max-lg);
}

/* =========================================================
   TYPE CLASSES (NO font-family)
   ========================================================= */

/* Display / Heading */
.t-display {
  font-family:var(--font-heading);
  font-size: var(--font-size-display);
  line-height: var(--line-height-tight);
  font-weight:400;
}

.t-display-lg { font-size: var(--font-size-display); font-family:var(--font-heading); }
.t-display-md { font-size: var(--font-size-display-md); font-family:var(--font-heading); }
.t-display-sm { font-size: var(--font-size-display-sm); font-family:var(--font-heading); }

.t-h1 {
  font-size: var(--font-size-h1); 
  line-height: var(--line-height-heading);
}

.t-h2 {
  font-size: var(--font-size-h2); 
  line-height: var(--line-height-heading);
}

.t-h3 {
  font-size: var(--font-size-h3); 
  line-height: var(--line-height-heading);
}

/* Body headings */
.t-h4 {
  font-size: var(--font-size-h4); 
  line-height: var(--line-height-heading);
}

.t-h5 {
  font-size: var(--font-size-h5); 
  line-height: var(--line-height-heading);
}

.t-h6 {
  font-size: var(--font-size-h6); 
  line-height: var(--line-height-heading);
}

/* =========================================================
   Body text helpers (xs → xxl)
   ========================================================= */

.t-body-xs {
  font-size: var(--font-size-caption-l); /* 13px */
  line-height: 1.5;
}

.t-body-sm {
  font-size: var(--font-size-body-s); /* 14px */
  line-height: 1.48;
}

.t-body-md {
  font-size: var(--font-size-body-m); /* 16px */
  line-height: 1.46;
}

.t-body-lg {
  font-size: var(--font-size-body-l); /* 18px */
  line-height: 1.44;
}

.t-body-xl {
  font-size: var(--font-size-h4); /* ~17–18px */
  line-height: 1.42;
}

.t-body-xxl {
  font-size: var(--font-size-h5); /* 20px */
  line-height: 1.4;
}

/* Captions */
.t-caption-l {
  font-size: var(--font-size-caption-l);
  line-height: 1.4;
}

.t-caption-m {
  font-size: var(--font-size-caption-m);
  line-height: 1.4;
}

.t-caption-s {
  font-size: var(--font-size-caption-s);
  line-height: 1.4;
}

/* Article semantic styles */
.t-article-title {
  font-weight: 700;
  font-size: var(--font-size-h1); /* 36px */
  line-height: 1.22;             /* ~44px */
}

.t-lead {
  font-weight: 600;
  font-size: var(--font-size-h3); /* 24px */
  line-height: 1.33;              /* ~32px */
  color: var(--color-text);
}

.t-lead-lg,
.t-title {
  font-weight: 600;
  font-size: var(--font-size-h2);
  line-height: var(--line-height-heading);
  color: var(--color-text);
}

/* =========================================================
   t-lead size helpers
   ========================================================= */

.t-lead-lg { font-size: var(--font-size-h3); }  /* 24px */
.t-lead-md { font-size: var(--font-size-h4); }  /* 20px */
.t-lead-sm { font-size: var(--font-size-body-l); } /* 18px */

.t-subhead {
  font-weight: 600;
  font-size: var(--font-size-body-l); /* 18px */
  line-height: 1.55;                 /* ~28px */
}

.t-card-title {
  font-weight: 700;
  font-size: var(--font-size-body-m); /* 16px */
  line-height: 1.625;                /* ~26px */
  letter-spacing: -0.0125rem;        /* -0.2px */
}

.t-card-title-sm {
  font-weight: 700;
  font-size: var(--font-size-body-s); /* 14px */
  line-height: 1.625;                /* ~26px */
  letter-spacing: -0.00625rem;       /* -0.1px */
}

/* Eyebrows */
.t-eyebrow-sm {
  font-size: 0.625rem; /* 10px */
  line-height: 1.4;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.03em;
  color: var(--color-text-muted);
}

.t-eyebrow {
  font-weight: 400;
  font-size: var(--font-size-body-s); /* 14px */
  line-height: 1.42;
  letter-spacing: -0.00625rem;
  text-transform: uppercase;
}

/* Quotes */
.t-quote-title {
  font-weight: 600;
  font-size: var(--font-size-h3); /* 24px */
  line-height: 1.33;
}

.t-quote-author {
  font-weight: 400;
  font-size: var(--font-size-body-l); /* 18px */
  line-height: 1.4;
}

/* Micro utilities */
.t-bold {font-weight:bold;}
.fw-400,.t-fw-400 { font-weight: 400; }
.fw-500,.t-fw-500 { font-weight: 500; }
.fw-600,.t-fw-600 { font-weight: 600; }
.fw-700,.t-fw-700 { font-weight: 700; }

.t-ls-reset,.ls-reset   { letter-spacing: 0; }
.t-ls-tight,.ls-tight   { letter-spacing: -0.0125rem; }
.t-ls-tighter,.ls-tighter { letter-spacing: -0.00625rem; }

.t-uppercase,.u-uppercase { text-transform: uppercase!important; }
.t-wrap-balance { text-wrap:balance; }

/* Remove uppercase from these by default */
.t-display,
.t-h1,
.t-h2 {
  text-transform: none;
}

/* Breadcrumb */
.breadcrumb {
  font-size: var(--font-size-caption-m);
  text-transform: uppercase;
  letter-spacing: 0.02em;
}

.breadcrumb__list {
  display: flex;
  align-items: center;
  list-style: none;
  padding: 0;
  margin: 0;
}

.breadcrumb__item {
  color: var(--color-text-muted);
}

.breadcrumb__item a {
  color: inherit;
  text-decoration: none;
}

.breadcrumb__item a:hover {
  color: var(--color-text);
}

.breadcrumb__separator {
  font-size: 0.75em;
  color: var(--color-text-muted);
  margin: 0 0.5rem;
  opacity: 0.5;
  font-weight: 300;
}

.breadcrumb__item:last-child {
  color: var(--color-text-muted);
  pointer-events: none;
}


/* =========================================================
   Margin utilities (with xxs)
   ========================================================= */

/* Reset */
.u-mt-0{margin-top:0}.u-mb-0{margin-bottom:0}.u-ml-0{margin-left:0}.u-mr-0{margin-right:0}
.u-mx-0{margin-left:0;margin-right:0}.u-my-0{margin-top:0;margin-bottom:0}

/* Top */
.u-mt-xxs{margin-top:var(--space-xxs)}
.u-mt-xs{margin-top:var(--space-xs)}
.u-mt-sm{margin-top:var(--space-sm)}
.u-mt-md{margin-top:var(--space-md)}
.u-mt-lg{margin-top:var(--space-lg)}
.u-mt-xl{margin-top:var(--space-xl)}
.u-mt-xxl{margin-top:var(--space-xxl)}

/* Bottom */
.u-mb-xxs{margin-bottom:var(--space-xxs)}
.u-mb-xs{margin-bottom:var(--space-xs)}
.u-mb-sm{margin-bottom:var(--space-sm)}
.u-mb-md{margin-bottom:var(--space-md)}
.u-mb-lg{margin-bottom:var(--space-lg)}
.u-mb-xl{margin-bottom:var(--space-xl)}
.u-mb-xxl{margin-bottom:var(--space-xxl)}

/* Left */
.u-ml-xxs{margin-left:var(--space-xxs)}
.u-ml-xs{margin-left:var(--space-xs)}
.u-ml-sm{margin-left:var(--space-sm)}
.u-ml-md{margin-left:var(--space-md)}
.u-ml-lg{margin-left:var(--space-lg)}
.u-ml-xl{margin-left:var(--space-xl)}
.u-ml-xxl{margin-left:var(--space-xxl)}

/* Right */
.u-mr-xxs{margin-right:var(--space-xxs)}
.u-mr-xs{margin-right:var(--space-xs)}
.u-mr-sm{margin-right:var(--space-sm)}
.u-mr-md{margin-right:var(--space-md)}
.u-mr-lg{margin-right:var(--space-lg)}
.u-mr-xl{margin-right:var(--space-xl)}
.u-mr-xxl{margin-right:var(--space-xxl)}

/* X axis */
.u-mx-xxs{margin-left:var(--space-xxs);margin-right:var(--space-xxs)}
.u-mx-xs{margin-left:var(--space-xs);margin-right:var(--space-xs)}
.u-mx-sm{margin-left:var(--space-sm);margin-right:var(--space-sm)}
.u-mx-md{margin-left:var(--space-md);margin-right:var(--space-md)}
.u-mx-lg{margin-left:var(--space-lg);margin-right:var(--space-lg)}
.u-mx-xl{margin-left:var(--space-xl);margin-right:var(--space-xl)}
.u-mx-xxl{margin-left:var(--space-xxl);margin-right:var(--space-xxl)}

/* Y axis */
.u-my-xxs{margin-top:var(--space-xxs);margin-bottom:var(--space-xxs)}
.u-my-xs{margin-top:var(--space-xs);margin-bottom:var(--space-xs)}
.u-my-sm{margin-top:var(--space-sm);margin-bottom:var(--space-sm)}
.u-my-md{margin-top:var(--space-md);margin-bottom:var(--space-md)}
.u-my-lg{margin-top:var(--space-lg);margin-bottom:var(--space-lg)}
.u-my-xl{margin-top:var(--space-xl);margin-bottom:var(--space-xl)}
.u-my-xxl{margin-top:var(--space-xxl);margin-bottom:var(--space-xxl)}

/* Base stack (default gap = md) */
.u-stack > * { margin: 0;}

/* Reset helper (kills margins/padding inside a stack) */
.u-stack-reset > * { margin: 0; padding: 0; }

/* (optional) also allow .u-stack to be used as reset */
.u-stack.u-stack-reset > * { margin: 0; padding: 0; }

.u-stack-sm > * + *{margin-top:var(--space-sm)}
.u-stack-md > * + *{margin-top:var(--space-md)}
.u-stack-lg > * + *{margin-top:var(--space-lg)}
.u-no-space{margin:0;padding:0}

/* =========================================================
   Stack (gap-based) — ONE CLASS per size
   Usage: <div class="u-stack-xxs">...</div>
   ========================================================= */

.u-stack-xxs,
.u-stack-xs,
.u-stack-sm,
.u-stack-md,
.u-stack-lg,
.u-stack-xl,
.u-stack-xxl {
  display: flex;
  flex-direction: column;
}

.u-stack-xxs > *,
.u-stack-xs  > *,
.u-stack-sm  > *,
.u-stack-md  > *,
.u-stack-lg  > *,
.u-stack-xl  > *,
.u-stack-xxl > * {
  margin: 0;
}

/* Gap sizes */
.u-stack-xxs { gap: var(--space-xxs); }
.u-stack-xs  { gap: var(--space-xs); }
.u-stack-sm  { gap: var(--space-sm); }
.u-stack-md  { gap: var(--space-md); }
.u-stack-lg  { gap: var(--space-lg); }
.u-stack-xl  { gap: var(--space-xl); }
.u-stack-xxl { gap: var(--space-xxl); }


/* =========================================================
   Row (gap-based) — ONE CLASS per size
   Usage: <div class="u-row-sm">...</div>
   ========================================================= */

.u-row-xxs,
.u-row-xs,
.u-row-sm,
.u-row-md,
.u-row-lg,
.u-row-xl,
.u-row-xxl {
  display: flex;
  flex-direction: row;
  align-items: center;
  flex-wrap: wrap; /* safe default */
}

.u-row-xxs { gap: var(--space-xxs); }
.u-row-xs  { gap: var(--space-xs); }
.u-row-sm  { gap: var(--space-sm); }
.u-row-md  { gap: var(--space-md); }
.u-row-lg  { gap: var(--space-lg); }
.u-row-xl  { gap: var(--space-xl); }
.u-row-xxl { gap: var(--space-xxl); }

.u-row-nowrap { flex-wrap: nowrap; }

/* =========================================================
   Large section spacing utilities
   ========================================================= */

.u-space-xl {
  padding-top: 5rem;
  padding-bottom: 5rem;
}

.u-space-2xl {
  padding-top: 10rem;
  padding-bottom: 10rem;
}

.u-space-3xl {
  padding-top: 20rem;
  padding-bottom: 20rem;
}

/* =========================================================
   Spacer utilities (vertical rhythm only)
   - No borders
   - No mt/mb variants
   - Mobile-first with responsive overrides
   ========================================================= */

/* =========================================================
   Spacer reset (visual neutral)
   ========================================================= */

[class*="u-spacer-"] {
  background: none !important;
  border: 0 !important;
  pointer-events: none;
}

/* Base (desktop default) */
.u-spacer-2  { height: 2rem; }
.u-spacer-5  { height: 5rem; }
.u-spacer-10 { height: 10rem; }
.u-spacer-20 { height: 20rem; }

/* Mobile scale-down */
@media (max-width: 768px) {
  .u-spacer-2  { height: 1.5rem; }
  .u-spacer-5  { height: 3rem; }
  .u-spacer-10 { height: 5rem; }
  .u-spacer-20 { height: 8rem; }
}

/* sm ≥ 640px */
@media (min-width: 640px) {
  .sm\:u-spacer-2  { height: 2rem; }
  .sm\:u-spacer-5  { height: 5rem; }
  .sm\:u-spacer-10 { height: 10rem; }
  .sm\:u-spacer-20 { height: 20rem; }
}

/* md ≥ 768px */
@media (min-width: 768px) {
  .md\:u-spacer-2  { height: 2rem; }
  .md\:u-spacer-5  { height: 5rem; }
  .md\:u-spacer-10 { height: 10rem; }
  .md\:u-spacer-20 { height: 20rem; }
}

/* lg ≥ 1024px */
@media (min-width: 1024px) {
  .lg\:u-spacer-2  { height: 2rem; }
  .lg\:u-spacer-5  { height: 5rem; }
  .lg\:u-spacer-10 { height: 10rem; }
  .lg\:u-spacer-20 { height: 20rem; }
}

/* =========================================================
   Padding utilities (with xxs)
   ========================================================= */

/* Reset */
.u-p-0{padding:0}
.u-pt-0{padding-top:0}
.u-pb-0{padding-bottom:0}
.u-pl-0{padding-left:0}
.u-pr-0{padding-right:0}
.u-px-0{padding-left:0;padding-right:0}
.u-py-0{padding-top:0;padding-bottom:0}

/* Y axis */
.u-py-xxs{padding-top:var(--space-xxs);padding-bottom:var(--space-xxs)}
.u-py-xs{padding-top:var(--space-xs);padding-bottom:var(--space-xs)}
.u-py-sm{padding-top:var(--space-sm);padding-bottom:var(--space-sm)}
.u-py-md{padding-top:var(--space-md);padding-bottom:var(--space-md)}
.u-py-lg{padding-top:var(--space-lg);padding-bottom:var(--space-lg)}
.u-py-xl{padding-top:var(--space-xl);padding-bottom:var(--space-xl)}
.u-py-xxl{padding-top:var(--space-xxl);padding-bottom:var(--space-xxl)}

/* X axis */
.u-px-xxs{padding-left:var(--space-xxs);padding-right:var(--space-xxs)}
.u-px-xs{padding-left:var(--space-xs);padding-right:var(--space-xs)}
.u-px-sm{padding-left:var(--space-sm);padding-right:var(--space-sm)}
.u-px-md{padding-left:var(--space-md);padding-right:var(--space-md)}
.u-px-lg{padding-left:var(--space-lg);padding-right:var(--space-lg)}
.u-px-xl{padding-left:var(--space-xl);padding-right:var(--space-xl)}
.u-px-xxl{padding-left:var(--space-xxl);padding-right:var(--space-xxl)}

/* Top */
.u-pt-xxs{padding-top:var(--space-xxs)}
.u-pt-xs{padding-top:var(--space-xs)}
.u-pt-sm{padding-top:var(--space-sm)}
.u-pt-md{padding-top:var(--space-md)}
.u-pt-lg{padding-top:var(--space-lg)}
.u-pt-xl{padding-top:var(--space-xl)}
.u-pt-xxl{padding-top:var(--space-xxl)}

/* Bottom */
.u-pb-xxs{padding-bottom:var(--space-xxs)}
.u-pb-xs{padding-bottom:var(--space-xs)}
.u-pb-sm{padding-bottom:var(--space-sm)}
.u-pb-md{padding-bottom:var(--space-md)}
.u-pb-lg{padding-bottom:var(--space-lg)}
.u-pb-xl{padding-bottom:var(--space-xl)}
.u-pb-xxl{padding-bottom:var(--space-xxl)}

/* Left */
.u-pl-xxs{padding-left:var(--space-xxs)}
.u-pl-xs{padding-left:var(--space-xs)}
.u-pl-sm{padding-left:var(--space-sm)}
.u-pl-md{padding-left:var(--space-md)}
.u-pl-lg{padding-left:var(--space-lg)}
.u-pl-xl{padding-left:var(--space-xl)}
.u-pl-xxl{padding-left:var(--space-xxl)}

/* Right */
.u-pr-xxs{padding-right:var(--space-xxs)}
.u-pr-xs{padding-right:var(--space-xs)}
.u-pr-sm{padding-right:var(--space-sm)}
.u-pr-md{padding-right:var(--space-md)}
.u-pr-lg{padding-right:var(--space-lg)}
.u-pr-xl{padding-right:var(--space-xl)}
.u-pr-xxl{padding-right:var(--space-xxl)}

/* Grid / Gap */
.u-grid{display:grid;gap:var(--space-md)}
.u-grid-1{grid-template-columns:1fr}
.u-grid-2{grid-template-columns:repeat(2,1fr)}
.u-grid-3{grid-template-columns:repeat(3,1fr)}
.u-grid-4{grid-template-columns:repeat(4,1fr)}
.u-grid-5{grid-template-columns:repeat(5,1fr)}
.u-grid-full-row{grid-column:1 / -1}

/* =========================================================
   Asymmetric grid layouts
   - Sidebar / main content patterns
   - Mobile-first: stack by default
   ========================================================= */

/* Base: stacked (mobile) */
.u-grid-1-3,
.u-grid-3-1 {
  grid-template-columns: 1fr;
}

/* md ≥ 768px */
@media (min-width: 768px) {
  /* Sidebar → content (28% / 72%) */
  .u-grid-1-3 {
    grid-template-columns: 28% 1fr;
  }

  /* Content → sidebar (72% / 28%) */
  .u-grid-3-1 {
    grid-template-columns: 1fr 28%;
  }
}

.u-gap-0{gap:0}
.u-gap-xxs{gap:var(--space-xxs)}
.u-gap-xs{gap:var(--space-xs)}
.u-gap-sm{gap:var(--space-sm)}
.u-gap-md{gap:var(--space-md)}
.u-gap-lg{gap:var(--space-lg)}
.u-gap-xl{gap:var(--space-xl)}
.u-gap-xxl{gap:var(--space-xxl)}

/* Flex */
.u-flex{display:flex}
.u-inline-flex{display:inline-flex}
.u-flex-row{display:flex;flex-direction:row}
.u-flex-col{display:flex;flex-direction:column}
.u-flex-wrap{flex-wrap:wrap}
.u-items-start{align-items:flex-start}
.u-items-center{align-items:center}
.u-items-end{align-items:flex-end}
.u-justify-start{justify-content:flex-start}
.u-justify-center{justify-content:center}
.u-justify-between{justify-content:space-between}
.u-justify-end{justify-content:flex-end}

/* Responsive variants (escaped) */
@media (min-width:640px){
  .sm\:u-grid-2{grid-template-columns:repeat(2,1fr)}
  .sm\:u-grid-3{grid-template-columns:repeat(3,1fr)}
  .sm\:u-grid-4{grid-template-columns:repeat(4,1fr)}
}
@media (min-width:768px){
  .md\:u-grid-2{grid-template-columns:repeat(2,1fr)}
  .md\:u-grid-3{grid-template-columns:repeat(3,1fr)}
  .md\:u-grid-4{grid-template-columns:repeat(4,1fr)}
}
@media (min-width:1024px){
  .lg\:u-grid-2{grid-template-columns:repeat(2,1fr)}
  .lg\:u-grid-3{grid-template-columns:repeat(3,1fr)}
  .lg\:u-grid-4{grid-template-columns:repeat(4,1fr)}
  .lg\:u-grid-5{grid-template-columns:repeat(5,1fr)}
}

/* Visibility / sizing / overflow */
.u-hidden{display:none!important}
.u-block{display:block!important}
.u-inline{display:inline!important}
.u-w-full{width:100%}
.u-h-full{height:100%}
.u-min-h-screen{min-height:100vh}
.u-overflow-hidden{overflow:hidden}
.u-overflow-auto{overflow:auto}
.u-overflow-scroll{overflow:scroll}
.u-overflow-x-auto{overflow-x:auto}
.u-overflow-y-auto{overflow-y:auto}

/* Colors / text (mapped to your semantic tokens) */
.u-bg-surface{background:var(--color-surface)}
.u-bg-surface-alt{background:var(--color-surface-muted)}
.u-text-main{color:var(--color-text)}
.u-text-muted{color:var(--color-text-muted)}
.u-text-primary{color:var(--color-primary)}

/* Neutral ramps */
.u-bg-neutral-50{background-color:var(--neutral-50)}
.u-bg-neutral-100{background-color:var(--neutral-100)}
.u-bg-neutral-200{background-color:var(--neutral-200)}
.u-bg-neutral-300{background-color:var(--neutral-300)}
.u-bg-neutral-400{background-color:var(--neutral-400)}
.u-bg-neutral-500{background-color:var(--neutral-500)}
.u-bg-neutral-600{background-color:var(--neutral-600)}
.u-bg-neutral-700{background-color:var(--neutral-700)}
.u-bg-neutral-800{background-color:var(--neutral-800)}
.u-bg-neutral-900{background-color:var(--neutral-900)}

/* Radius helpers */
[data-radius="none"]{border-radius:var(--radius-0)}
[data-radius="xs"]{border-radius:var(--radius-xs)}
[data-radius="sm"]{border-radius:var(--radius-sm)}
[data-radius="md"]{border-radius:var(--radius-md)}
[data-radius="lg"]{border-radius:var(--radius-lg)}
[data-radius="xl"]{border-radius:var(--radius-xl)}
[data-radius="full"]{border-radius:var(--radius-full)}


/* =========================================================
   Highlight utilities (HubSpot-safe)
   ========================================================= */

:root {
  --hl-py: 0.18em;
  --hl-px: 0.35em;
  --hl-radius: 0;

  --hl-bg-primary: var(--color-primary);
  --hl-bg-white: #fff;
  --hl-bg-dark: var(--color-btn);

  --hl-text-on-light: #111;
  --hl-text-on-dark: #fff;
}

/* Wrapper (safe around HubSpot modules) */
.u-highlight {
  display: block;
  line-height: 1.8;
}

/* OPTIONAL (preferred): target HubSpot wrappers so we don't style random nested stuff */
.u-highlight .hs_cos_wrapper,
.u-highlight > span {
  display: inline;
  background: var(--hl-bg, var(--hl-bg-primary));
  color: var(--hl-fg, var(--hl-text-on-light));
  padding: var(--hl-py) var(--hl-px);
  border-radius: var(--hl-radius);
  box-decoration-break: clone;
  -webkit-box-decoration-break: clone;
}

/* ---------------------------------------------------------
   Variants (set CSS variables only)
--------------------------------------------------------- */
.u-highlight--primary { --hl-bg: var(--hl-bg-primary); --hl-fg: var(--hl-text-on-light); }
.u-highlight--white   { --hl-bg: var(--hl-bg-white);   --hl-fg: var(--hl-text-on-light); }
.u-highlight--dark    { --hl-bg: var(--hl-bg-dark);    --hl-fg: var(--hl-text-on-dark); }

/* ---------------------------------------------------------
   Options (affect inner “marker” via variables)
--------------------------------------------------------- */
.u-highlight--tight { --hl-py: 0.12em; --hl-px: 0.28em; }
.u-highlight--loose { --hl-py: 0.24em; --hl-px: 0.45em; }

.u-highlight--square { --hl-radius: 0; }

/* Force one chunk (won’t wrap). Use only when you really need it. */
.u-highlight--block .hs_cos_wrapper,
.u-highlight--block .hs_cos_wrapper * {
  display: inline-block;
}

/* =========================================================
   Banner utilities
   ========================================================= */

/* Desktop banner */
.u-banner {
  width: 100%;
}

.u-banner-body {
  padding-top: var(--space-xxl);
  padding-bottom: var(--space-xxl);
}

/* Mobile banner override */
@media (max-width: 768px) {
  .u-banner {
    aspect-ratio: 1;
    display:flex;
    align-items:center;
  }
  
  .u-banner-body {
    padding-top: var(--space-md);
    padding-bottom: var(--space-md);
  }
}

@media (max-width: 480px) {
  .u-banner {
    aspect-ratio: 4 / 5;
  }
  .u-banner-body {
    padding-top: var(--space-0);
    padding-bottom: var(--space-0);
  }
}

[data-max-char] {
  display:inline-block;
}

/* =========================================================
   Divider (hr) utility — token driven
   ========================================================= */

.u-hr {
  border: 0;
  border-top: 1px solid var(--color-border);
  margin: var(--space-xl) 0;
  width: 100%;
}

/* Spacing variants */
.u-hr-sm { margin: var(--space-md) 0; }
.u-hr-lg { margin: var(--space-xxl) 0; }

/* Strength variants */
.u-hr-strong { border-top-color: var(--color-border-strong); }

/* Optional: inset divider (nice in cards) */
.u-hr-inset {
  margin-left: var(--space-xl);
  margin-right: var(--space-xl);
}

/* =========================================================
   Border utilities
   - 1px solid
   - Token driven
   - Light / Dark safe
   ========================================================= */

/* =======================
   Base (all breakpoints)
   ======================= */

/* =========================================================
   Border utilities (token-driven)
   ========================================================= */

/* ALL */
.u-border       { border: 1px solid var(--color-border); }
.u-border-strong{ border: 1px solid var(--color-border-strong); }
.u-border-0     { border: 0; }

/* BOTTOM */
.u-bb        { border-bottom: 1px solid var(--color-border); }
.u-bb-strong { border-bottom: 1px solid var(--color-border-strong); }
.u-bb-0      { border-bottom: 0; }

/* TOP */
.u-bt        { border-top: 1px solid var(--color-border); }
.u-bt-strong { border-top: 1px solid var(--color-border-strong); }
.u-bt-0      { border-top: 0; }

/* LEFT */
.u-bl        { border-left: 1px solid var(--color-border); }
.u-bl-strong { border-left: 1px solid var(--color-border-strong); }
.u-bl-0      { border-left: 0; }

/* RIGHT */
.u-br        { border-right: 1px solid var(--color-border); }
.u-br-strong { border-right: 1px solid var(--color-border-strong); }
.u-br-0      { border-right: 0; }

/* =======================
   sm ≥ 640px
   ======================= */
@media (min-width: 640px) {
  .sm\:u-border { border: 1px solid var(--color-border); }
  .sm\:u-border-0 { border: 0; }

  .sm\:u-bb { border-bottom: 1px solid var(--color-border); }
  .sm\:u-bt { border-top: 1px solid var(--color-border); }
  .sm\:u-bl { border-left: 1px solid var(--color-border); }
  .sm\:u-br { border-right: 1px solid var(--color-border); }
}


/* =======================
   md ≥ 768px
   ======================= */
@media (min-width: 768px) {
  .md\:u-border { border: 1px solid var(--color-border); }
  .md\:u-border-0 { border: 0; }

  .md\:u-bb { border-bottom: 1px solid var(--color-border); }
  .md\:u-bt { border-top: 1px solid var(--color-border); }
  .md\:u-bl { border-left: 1px solid var(--color-border); }
  .md\:u-br { border-right: 1px solid var(--color-border); }
}


/* =======================
   lg ≥ 1024px
   ======================= */
@media (min-width: 1024px) {
  .lg\:u-border { border: 1px solid var(--color-border); }
  .lg\:u-border-0 { border: 0; }

  .lg\:u-bb { border-bottom: 1px solid var(--color-border); }
  .lg\:u-bt { border-top: 1px solid var(--color-border); }
  .lg\:u-bl { border-left: 1px solid var(--color-border); }
  .lg\:u-br { border-right: 1px solid var(--color-border); }
}
/* ---------- how much vertical space the header occupies ----------
   Two different numbers, and mixing them up is the classic bug here:
   --event-header        = the height of the visible black bar. Never changes.
   --event-header-offset = the space the page must leave clear at the top.
                           Grows by the promo ribbon's height when one is up.
   Anything positioning itself below the header (sticky sidebars, filters)
   wants the OFFSET, not the bar height, or the ribbon covers it.

   The ribbon height is NOT hardcoded as a total. A fixed total is what the
   old --event-header-promo: 128px was, and it was wrong the moment the
   ribbon's copy changed. Here CSS sets a per-breakpoint starting value and
   2027-chicago-paw.js overwrites --promo-ribbon-h with the measured height,
   so the reservation stays exact through copy changes and resizes. With no
   ribbon in the DOM the var is unset and the fallback 0px keeps every page
   byte-identical to before.

   This replaced a JS-built .event-header-placeholder div, which reserved the
   BAR height (64px) until JS ran and could correct it - so the page loaded at
   64px, jumped to 128px, then settled. Ported from cw-paw-2026 2026-08-24. */

:root {
  --event-header-offset: calc(var(--event-header) + var(--promo-ribbon-h, 0px));
}

html:has(.promo-ribbon:not([hidden])) {
  --promo-ribbon-h: 47px;
}

/* Below 1281px the ticker is hidden, so the bar is a single line and shorter. */
@media (max-width: 1280px) {
  html:has(.promo-ribbon:not([hidden])) {
    --promo-ribbon-h: 41px;
  }
}

.event-header {
  color:var(--neutral-100);
  height:var(--event-header);
  position:relative;
  z-index:500;
}

.event-header-container {
  background-color:var(--neutral-900);
  height:var(--event-header);
  box-shadow:0rem 0rem 1rem 1rem rgba(0,0,0,.25);
}

html:not(.hs-inline-edit) .event-header-container {
  width:100%;
  position:fixed;
  top:0;
}

/* Only reserve the extra space where the bar is actually fixed. In the page
   editor the container is static, so the ribbon is positioned against
   .event-header instead - growing it there would push the ribbon down and
   leave a gap, which is exactly the "extra space" symptom. */
html:not(.hs-inline-edit) .event-header {
  height:var(--event-header-offset);
}

.event-navbar {
  height:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding-left:var(--gutter);
  padding-right:var(--gutter);
}

.site-logo-header {
  color:var(--neutral-200);
  width:9rem;
  height:auto;
}

.site-logo-header svg,
.site-logo-header .cw-woosh{
  transition:color .5s;
}

.site-logo-header svg {
  width:100%;
  height:100%;
  display:block;
}

.site-menu {
  display:flex;
  height:100%;
}

.site-menu-item {
  display:flex;
  color:#fff;
  text-transform:uppercase;
  padding:0 1rem;
  align-items:center;
  font-weight:600;
  text-underline-offset: 4px; /* adjust this value as needed */
  text-decoration-thickness: 2px;
}
/* Default: non-home menu items are dimmed */
html:not([data-page="home"]) .site-menu-item:not(.site-menu-item-cta) {
  opacity: 0.4;
}

.site-menu-item-cta {
  background-color:var(--blue-700);
}

html:not([data-page="home"]) .site-menu-item-cta {
  background-color:var(--blue-800);
  color: var(--neutral-400);
}

/* Home page: everything fully visible */
html[data-page="home"] .site-menu-item {
  opacity: 1;
}

/* Active nav item: always white and fully visible */
.event-navbar .site-menu-item:not(.site-menu-item-cta).is-active {
  color: #fff;
  opacity: 1;
}

.site-logo-header .cw-woosh {
  color:var(--blue-500);
}

html:is(.hs-inline-edit, [data-page="home"]) .site-logo-header,
.site-logo-header:hover svg{
  color:#fff;
}
.event-footer {
  background-color: var(--neutral-200);
}

.event-footer h3,
.event-footer strong,
.event-footer .strong,
.event-footer a {
  color:currentColor;
}

.event-footer a {
  text-decoration:underline;
  text-underline-offset: 0.24em;
    text-decoration-thickness: .04em;
}

.testimonial-body blockquote {
  border:0;
  padding:0;
  margin:0;
}

.testimonial-img {
  max-width:230px;
}

.footer-copy {
  background-color: var(--neutral-300);
  color: var(--neutral-500);
}

.footer-copy .content-wrapper {
  justify-content: center;
    padding: 1rem 0;
  display:flex;
}

.footer-brand {
  width:23%;
}

.footer-brand svg {
  color:var(--neutral-600);
}

.footer-brand svg .how-swoosh {
  color:var(--neutral-600);
}

.footer-description {
  max-width:28ch;
  margin-top:2rem;
}

.footer-sitemap {
  padding: 6rem var(--gutter);
}

.footer-sitemap,
.footer-sitemap p{
  font-size: .88rem;
}

.footer-locations {
  flex:1;
      display: grid;
    gap: 0rem 2rem;
    grid-template-columns: repeat(4, 1fr);
}

.footer-social {
  width: 10%;
    display: flex;
    justify-content: flex-end;
    flex-direction: column;
    align-items: flex-end;
}
/* css/child/components/_anchor-nav.css */

@media screen and (max-width: 1279px) {
  .body-container-wrapper {
    overflow-x: hidden;
  }
}

/* HubSpot editor tools menu overrides */
.hs-tools-menu[aria-expanded="false"],
.hs-tools-menu[aria-expanded="true"] {
  top: auto !important;
  bottom: 10px;
}

/* Anchor helpers */
.anchor-hidden-section,
.anchor-target {
  position: relative;
  display: block;
  height: 1px;
  width: 100%;
  overflow: hidden;
  opacity: 0;
}

[data-anchor-nav="true"] .anchor-hidden-section {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  padding: 0 !important;
}

.anchor-target {
  margin: 0 auto;
  padding: 1rem;
  border: 2px dotted #ffffffc3;
  background-color: red;
  box-shadow: 0 0 0 .5rem rgba(255, 0, 0, 0.815);
}

/* nested rules expanded */
.anchor-target h3,
.anchor-target p {
  margin: 0;
  color: #fff;
}

.anchor-hidden-section {
  background-color: rgba(255, 0, 0, 0.815);
}

.anchor-icon {
  width: 100px;
  aspect-ratio: 1;
  background-color: #fff;
  mask: url('https://site.citywire.com/hubfs/raw_assets/public/cw-paw-2027-chicago/images/webflow/683ff914208d3b7b8b63c8d3_anchor.svg') center center / contain no-repeat;
}

/* editor-specific overrides */
.hs-inline-edit .anchor-hidden-section,
.hs-inline-edit .anchor-target {
  height: auto;
  width: 100%;
  overflow: hidden;
  display: flex;
  align-items: center;
  opacity: 1;
}

/* buttons */
.interactive-button,
.ch2-style-compact .ch2-btn {
  border-radius: var(--btn-radius) !important;
}
/* 1. Declare .card-collection as a container */
.card-collection {
  container-type: inline-size; /* enables container queries on its inline size (width) */
}

/* 2. Default grid layouts for 1/2/3 cards */
.card-collection.card-single .cards-grid {
  display: grid;
  justify-items: center;
}

.card-collection.card-double .cards-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;
}

.card-collection.card-triple .cards-grid,
.speakers-collection .speakers,
[data-module="speaker-collection"] {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}

/* 3. When the card-collection container is narrower than 500px */
@container (max-width: 500px) {
  /* only affect non-swiper collections */
  .card-collection:not(.swiper-container) .cards-grid {
    display: flex;
    flex-direction: column;
  }

  .card-collection:not(.swiper-container) .cards-grid .card {
    width: 100%;
    display:flex;
    gap:.5rem;
  }
  
  .card-media {
    width: 88%;
    max-width: 156px;
  }
}

.card {
  padding:0;
  margin:0;
}
/* SHARED SOURCE. Edit paw/_shared/search/paw-search.css, then run
   node tools/paw-sync.mjs. A copy inside a theme is overwritten by the sync. */

/* Header search. Muted dark circle deliberately, never lime: lime is the
   Get Tickets colour and a second lime control in the same bar would compete
   with the only conversion action in the header. */

.paw-search-trigger {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 2.5rem;
  height: 2.5rem;
  flex: 0 0 auto;
  align-self: center; /* .site-menu stretches its children to the row height */
  margin: 0 var(--space-sm, 0.5rem);
  padding: 0;
  border: 0;
  border-radius: 50%;
  background-color: var(--neutral-700);
  color: var(--neutral-50);
  cursor: pointer;
  transition: background-color 0.2s ease;
}

/* paw-nav.html is also included in the mobile menu modal. The overlay sits
   under that modal, so a trigger there would open search out of sight. */
.tile-modal .paw-search-trigger {
  display: none;
}

.paw-search-trigger:hover {
  background-color: var(--neutral-600);
}

/* Open: the circle inverts, so the control that owns the card reads as on. */
.paw-search-trigger[aria-expanded="true"],
.paw-search-trigger[aria-expanded="true"]:hover {
  background-color: var(--neutral-50);
  color: var(--neutral-900);
}

.paw-search-trigger:focus-visible {
  outline: 2px solid var(--neutral-50);
  outline-offset: 2px;
}

.paw-search-trigger svg {
  width: 1.125rem;
  height: 1.125rem;
  display: block;
}

.paw-search {
  position: absolute;
  /* A card under the header, right edge lined up with the trigger. The JS sets
     --paw-search-right from the trigger's position when it opens. */
  top: calc(100% + 0.5rem);
  right: var(--paw-search-right, 1rem);
  width: min(26rem, calc(100vw - 2rem));
  /* The promo ribbon is a sibling in .event-header-container at z-index 501, also
     position: absolute and top: 100% - the open overlay must paint above it. */
  z-index: 510;
  display: flex;
  flex-direction: column;
  background-color: #fff;
  color: var(--neutral-800);
  border-radius: 0.75rem;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.22);
  /* --paw-search-fit is set by the JS from the visual viewport, so on a phone
     the card ends above the keyboard instead of running under it. */
  max-height: min(36rem, calc(100vh - var(--event-header-offset, 6rem) - 2rem), var(--paw-search-fit, 100vh));
  overflow: hidden;
}

.paw-search[hidden] {
  display: none;
}

.paw-search__inner {
  flex: 0 0 auto;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.5rem 0.75rem 0.5rem 1.25rem;
  border-bottom: 1px solid var(--neutral-200);
}

.paw-search__label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

.paw-search__input {
  flex: 1 1 auto;
  border: 0;
  padding: 0.5rem 0;
  min-width: 0;
  font-family: var(--font-heading);
  font-size: 1.125rem;
  color: var(--neutral-900);
  background: transparent;
}

.paw-search__input:focus {
  outline: none;
}

/* The overlay has its own close button; hide the browser's clear control. */
.paw-search__input::-webkit-search-cancel-button {
  -webkit-appearance: none;
  appearance: none;
}

.paw-search__close {
  flex: 0 0 auto;
  border: 0;
  background: transparent;
  color: var(--neutral-500);
  cursor: pointer;
  padding: 0.5rem;
}

/* Unsized, the sprite svg falls back to the browser default of 300 by 150. */
.paw-search__close svg {
  display: block;
  width: 1.25rem;
  height: 1.25rem;
}

.paw-search__results {
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  overscroll-behavior: contain;
  scrollbar-width: thin;
  scrollbar-color: var(--neutral-300) transparent;
  padding: 0.25rem 0.5rem 0.625rem;
}

.paw-search__results:empty {
  display: none;
}

.paw-search__group-heading {
  margin: 0; /* theme paragraph margins doubled the gap above each group */
  padding: 0.875rem 0.75rem 0.375rem;
  font-family: var(--font-heading);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--neutral-500);
}

.paw-search__result {
  display: flex;
  align-items: center;
  gap: 0.75rem;
  width: 100%;
  padding: 0.5rem 0.75rem;
  border: 0;
  border-radius: 0.5rem;
  background: transparent;
  text-align: left;
  cursor: pointer;
}

.paw-search__result:hover,
.paw-search__result.is-active {
  background-color: var(--neutral-100);
}

.paw-search__result[data-static="true"] {
  cursor: default;
}

/* The themes style every button:disabled grey. A row with nowhere to go
   still reads as a result, just without the hover. */
.paw-search__result:disabled {
  background-color: transparent;
  border-color: transparent;
  color: inherit;
}

/* Keyboard users only: the arrow keys focus a row, so focus-visible matches
   there and never on a mouse click. */
.paw-search__result-hint {
  display: none;
  flex: 0 0 auto;
  padding: 0.125rem 0.375rem;
  border: 1px solid var(--neutral-300);
  border-radius: 0.25rem;
  background-color: #fff;
  font-family: inherit;
  font-size: 0.6875rem;
  font-weight: 600;
  line-height: 1.4;
  color: var(--neutral-500);
}

.paw-search__result:focus-visible .paw-search__result-hint {
  display: block;
}

.paw-search__result-photo {
  width: 2.5rem;
  height: 2.5rem;
  flex: 0 0 auto;
  margin: 0; /* the theme sets img { margin: auto }, which centres it in the row */
  border-radius: 50%;
  object-fit: cover;
  background-color: var(--neutral-200);
}

/* Partner images are logos. Square, whole logo visible, never cropped. */
.paw-search__result-photo--logo {
  border-radius: 0.375rem;
  object-fit: contain;
  padding: 0.1875rem;
  background-color: #fff;
  border: 1px solid var(--neutral-200);
}

/* A Day result: a small calendar leaf, month over date, in the event colour. */
.paw-search__result-photo--day {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border-radius: 0.5rem;
  background-color: #fff;
  border: 1px solid var(--neutral-200);
  overflow: hidden;
  line-height: 1;
}

.paw-search__day-month {
  align-self: stretch;
  padding-block: 0.1875rem;
  background-color: var(--primary);
  color: #fff;
  font-size: 0.5625rem;
  font-weight: 700;
  letter-spacing: 0.04em;
  text-align: center;
  text-transform: uppercase;
}

.paw-search__day-date {
  flex: 1 1 auto;
  display: flex;
  align-items: center;
  font-size: 0.9375rem;
  font-weight: 700;
  color: var(--neutral-800, #1a1a1a);
}

.paw-search__result-text {
  flex: 1 1 auto;
  min-width: 0;
}

/* One row per line; the truncation tooltip shows whatever is clipped. The bio
   snippet is the exception: it wraps, because it is the context for the match. */
.paw-search__result-name,
.paw-search__result-secondary,
.paw-search__result-people {
  overflow: hidden;
  white-space: nowrap;
  text-overflow: ellipsis;
}

.paw-search__result-name {
  display: block;
  font-weight: 600;
  line-height: 1.3;
  color: var(--neutral-900);
}

.paw-search__result-secondary,
.paw-search__result-people,
.paw-search__result-snippet {
  display: block;
  font-size: 0.8125rem;
  line-height: 1.35;
  color: var(--neutral-500);
}

.paw-search__result-snippet {
  margin-top: 0.125rem;
  color: var(--neutral-600);
}

/* Shows which words made the row match. */
.paw-search mark {
  background-color: transparent;
  color: inherit;
  font-weight: 700;
  text-decoration: underline;
  text-decoration-color: var(--neutral-400);
  text-underline-offset: 0.15em;
}

.paw-search__result-name mark {
  text-decoration-color: currentColor;
}

.paw-search__more,
.paw-search__empty {
  margin: 0;
  padding: 0.5rem 0.75rem;
  font-size: 0.875rem;
  color: var(--neutral-500);
}

.paw-search__more {
  border: 0;
  background: transparent;
  cursor: pointer;
  text-decoration: underline;
}

@media (max-width: 728px) {
  /* Phones: full width under the header, no card. */
  .paw-search {
    top: 100%;
    right: 0;
    left: 0;
    width: auto;
    border-radius: 0;
  }
  .paw-search__inner { padding: 0.5rem 0.5rem 0.5rem 1rem; }
  /* 16px, not 1rem: the root is 15px on phones, and iOS zooms the page on
     focus of any input under 16px. */
  .paw-search__input { font-size: 16px; }
  .paw-search__results { padding-inline: 0.25rem; }
}

.paw-search-tip {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1002; /* above the header stack (the overlay is 510) */
  max-width: 20rem;
  padding: 0.4rem 0.6rem;
  border-radius: 0.4rem;
  background-color: var(--neutral-900);
  color: #fff;
  font-size: 0.75rem;
  font-weight: 500;
  line-height: 1.35;
  white-space: normal;
  box-shadow: 0 8px 20px -10px rgba(0, 0, 0, 0.4);
  pointer-events: none;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.12s ease;
}

.paw-search-tip.is-on {
  visibility: visible;
  opacity: 1;
}

@media (prefers-reduced-motion: reduce) {
  .paw-search-trigger { transition: none; }
  .paw-search-tip { transition: none; }
}
/* Pinned modal bar: label left, 44px close right.
   Speaker and partner cards get it at 1280px and below, where it replaces the
   floating X (a bare 30px icon beside the scrollbar) and the "PAW 2027 |
   SPEAKERS" heading, which sat on top of the Citywire logo on phones. The menu
   drawer, which only exists at those widths, always has it.
   Selectors carry two classes on purpose: this file is included before the
   modal rules further down 2027-chicago-paw.css, and the generic button:hover. */

.tile-modal__bar {
  display: none;
}

.tile-modal__bar .tile-modal__bar-label {
  font-family: var(--font-heading);
  font-size: 0.75rem;
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--neutral-500);
}

.tile-modal__bar .tile-modal__bar-close {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  /* px, not rem: the root is 15px on phones and 44px is the touch target. */
  width: 44px;
  height: 44px;
  margin: 0;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background-color: var(--neutral-100);
  color: var(--neutral-900);
  cursor: pointer;
  transition: background-color 0.2s ease;
}

.tile-modal__bar .tile-modal__bar-close:hover,
.tile-modal__bar .tile-modal__bar-close:active {
  background-color: var(--neutral-200);
  border-color: transparent;
  color: var(--neutral-900);
}

.tile-modal__bar .tile-modal__bar-close:focus {
  outline: none;
}

.tile-modal__bar .tile-modal__bar-close:focus-visible {
  outline: 2px solid var(--neutral-900);
  outline-offset: 2px;
}

.tile-modal__bar .tile-modal__bar-close svg {
  display: block;
  width: 1.125rem;
  height: 1.125rem;
}

@media (max-width: 1280px) {
  .tile-modal--speaker .tile-modal__bar,
  .tile-modal--partner .tile-modal__bar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    grid-column: 1 / -1;
    position: sticky;
    /* Sticky pins to the card's padding edge, 2rem in, so match the margin. */
    top: -2rem;
    z-index: 3;
    /* Out over the card's 2rem padding, so the bar runs edge to edge and its
       white covers the content scrolling beneath it. */
    margin: -2rem -2rem 0;
    padding: 0.5rem 0.625rem 0.5rem 1.25rem;
    background-color: #fff;
    border-bottom: 1px solid transparent;
    transition: border-color 0.2s ease;
  }

  .tile-modal--speaker .tile-modal__close-layer,
  .tile-modal--partner .tile-modal__close-layer,
  .tile-modal--speaker .tile-modal__header,
  .tile-modal--partner .tile-modal__header {
    display: none;
  }
}

/* Menu drawer: the bar sits above the scrolling list rather than inside it. */
.tile-modal-menu .tile-modal__nav {
  display: flex;
  flex-direction: column;
}

.tile-modal-menu .tile-modal__bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.75rem;
  flex: 0 0 auto;
  padding: 0.75rem 0.75rem 0.75rem var(--space-md, 1rem);
  border-bottom: 1px solid transparent;
  transition: border-color 0.2s ease;
}

.tile-modal-menu .tile-modal__bar .tile-modal__bar-close {
  background-color: rgba(0, 0, 0, 0.06);
}

.tile-modal-menu .tile-modal__bar .tile-modal__bar-close:hover,
.tile-modal-menu .tile-modal__bar .tile-modal__bar-close:active {
  background-color: rgba(0, 0, 0, 0.12);
}

.tile-modal-menu .tile-modal__nav-content {
  flex: 1 1 auto;
  min-height: 0;
  height: auto;
}

.tile-modal-menu .tile-modal__nav .site-menu {
  padding-top: 0.5rem;
}

/* The hairline appears only once the content has scrolled under the bar.
   Three classes and last on purpose: the card and menu bar rules above set
   the border transparent with two, which beat this rule when it sat first. */
.tile-modal .tile-modal__bar.is-scrolled {
  border-bottom-color: var(--neutral-200);
}

@media (prefers-reduced-motion: reduce) {
  .tile-modal__bar,
  .tile-modal__bar .tile-modal__bar-close {
    transition: none;
  }
}
/* HubSpot only recompiles this bundle when THIS file's content changes, so an
   edit to an included file needs a real edit here too.
   Last recompiled 30 Sept 2026, later: the Days result date tile in the search
   stylesheet. Earlier the same day: search rows no longer take the theme's
   disabled grey, and the agenda row highlight for search (_paw-event.css).
   Earlier (29 Sept): the header search stylesheet, the modal bar hairline. */
.kl-pricing {
  display: flex;
  align-items: stretch;
  text-align: center;
}

@media screen and (max-width: 768px) {
  .kl-pricing {
    display: block;
  }
}

.kl-pricing__card {
  position: relative;
  padding: 36px 32px;
  border: 1px solid var(--neutral-300);
  box-shadow: 0 11px 30px rgba(0, 0, 0, 0.08);
  background-color: var(--neutral-50);
  border-radius: var(--radius-xl);
  flex: 1 1 0;
  transition: box-shadow .25s ease-in-out;
}

.kl-pricing__card--featured,
.kl-pricing__card:hover {
  box-shadow: 0 11px 30px rgba(0, 0, 0, 0.14);
}

.kl-pricing__card + .kl-pricing__card {
  margin-left: 16px;
}

@media screen and (max-width: 768px) {
  .kl-pricing__card + .kl-pricing__card {
    margin: 24px 0 0;
  }
}

.kl-pricing__badge {
  font-family: var(--font-body), sans-serif;
  font-size: 0.875rem;
  font-weight: 700;
  line-height: 1;
  min-width: 120px;
  padding: 10px 16px;
  border-radius: 999px;
  background-color: var(--color-primary);
  position: absolute;
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%);
}

.kl-pricing__icon {
  height: 28px;
  display: flex;
  align-items: flex-end;
  justify-content: center;
  margin: 0 0 1.5rem;
}

.kl-pricing__icon img {
  max-height: 100%;
  display: block;
}

.kl-pricing__price {
  color: var(--neutral-900);
}

.kl-pricing__price h1, .kl-pricing__price h2, .kl-pricing__price h3, .kl-pricing__price h4, .kl-pricing__price h5, .kl-pricing__price h6 {
  color: inherit;
}

.kl-pricing__description p {
  font-size: 0.875rem;
  margin: 0 0 0.75rem;
}

.kl-pricing__features {
  text-align: left;
  list-style: none;
  margin: 0 0 2.625rem;
  padding: 0;
}

.kl-pricing__features li {
  font-size: 0.875rem;
  margin: 0 0 1rem;
  display: flex;
}

.kl-pricing__bullet {
  display: block;
  width: 1rem;
  height: 1rem;
  margin: 2px 0.75rem 0 0;
  flex-shrink: 0;
}

.kl-pricing__bullet img {
  display: block;
}

.kl-pricing__button .button_cta {
  width: 100%;
}

.kl-pricing__button .button_cta a {
  padding-left: 0;
  padding-right: 0;
}

.kl-pricing__button a {
  width: 100%;
}

.kl-pricing hr {
  margin: 1.75rem 0;
  color: #d8d8d8;
  background-color: #d8d8d8;
  height: 2px;
}
/**
 * Swiper 11.2.1
 * Most modern mobile touch slider and framework with hardware accelerated transitions
 * https://swiperjs.com
 *
 * Copyright 2014-2025 Vladimir Kharlampidi
 *
 * Released under the MIT License
 *
 * Released on: January 10, 2025
 */

 @font-face{font-family:swiper-icons;src:url('data:application/font-woff;charset=utf-8;base64, d09GRgABAAAAAAZgABAAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAAGRAAAABoAAAAci6qHkUdERUYAAAWgAAAAIwAAACQAYABXR1BPUwAABhQAAAAuAAAANuAY7+xHU1VCAAAFxAAAAFAAAABm2fPczU9TLzIAAAHcAAAASgAAAGBP9V5RY21hcAAAAkQAAACIAAABYt6F0cBjdnQgAAACzAAAAAQAAAAEABEBRGdhc3AAAAWYAAAACAAAAAj//wADZ2x5ZgAAAywAAADMAAAD2MHtryVoZWFkAAABbAAAADAAAAA2E2+eoWhoZWEAAAGcAAAAHwAAACQC9gDzaG10eAAAAigAAAAZAAAArgJkABFsb2NhAAAC0AAAAFoAAABaFQAUGG1heHAAAAG8AAAAHwAAACAAcABAbmFtZQAAA/gAAAE5AAACXvFdBwlwb3N0AAAFNAAAAGIAAACE5s74hXjaY2BkYGAAYpf5Hu/j+W2+MnAzMYDAzaX6QjD6/4//Bxj5GA8AuRwMYGkAPywL13jaY2BkYGA88P8Agx4j+/8fQDYfA1AEBWgDAIB2BOoAeNpjYGRgYNBh4GdgYgABEMnIABJzYNADCQAACWgAsQB42mNgYfzCOIGBlYGB0YcxjYGBwR1Kf2WQZGhhYGBiYGVmgAFGBiQQkOaawtDAoMBQxXjg/wEGPcYDDA4wNUA2CCgwsAAAO4EL6gAAeNpj2M0gyAACqxgGNWBkZ2D4/wMA+xkDdgAAAHjaY2BgYGaAYBkGRgYQiAHyGMF8FgYHIM3DwMHABGQrMOgyWDLEM1T9/w8UBfEMgLzE////P/5//f/V/xv+r4eaAAeMbAxwIUYmIMHEgKYAYjUcsDAwsLKxc3BycfPw8jEQA/gZBASFhEVExcQlJKWkZWTl5BUUlZRVVNXUNTQZBgMAAMR+E+gAEQFEAAAAKgAqACoANAA+AEgAUgBcAGYAcAB6AIQAjgCYAKIArAC2AMAAygDUAN4A6ADyAPwBBgEQARoBJAEuATgBQgFMAVYBYAFqAXQBfgGIAZIBnAGmAbIBzgHsAAB42u2NMQ6CUAyGW568x9AneYYgm4MJbhKFaExIOAVX8ApewSt4Bic4AfeAid3VOBixDxfPYEza5O+Xfi04YADggiUIULCuEJK8VhO4bSvpdnktHI5QCYtdi2sl8ZnXaHlqUrNKzdKcT8cjlq+rwZSvIVczNiezsfnP/uznmfPFBNODM2K7MTQ45YEAZqGP81AmGGcF3iPqOop0r1SPTaTbVkfUe4HXj97wYE+yNwWYxwWu4v1ugWHgo3S1XdZEVqWM7ET0cfnLGxWfkgR42o2PvWrDMBSFj/IHLaF0zKjRgdiVMwScNRAoWUoH78Y2icB/yIY09An6AH2Bdu/UB+yxopYshQiEvnvu0dURgDt8QeC8PDw7Fpji3fEA4z/PEJ6YOB5hKh4dj3EvXhxPqH/SKUY3rJ7srZ4FZnh1PMAtPhwP6fl2PMJMPDgeQ4rY8YT6Gzao0eAEA409DuggmTnFnOcSCiEiLMgxCiTI6Cq5DZUd3Qmp10vO0LaLTd2cjN4fOumlc7lUYbSQcZFkutRG7g6JKZKy0RmdLY680CDnEJ+UMkpFFe1RN7nxdVpXrC4aTtnaurOnYercZg2YVmLN/d/gczfEimrE/fs/bOuq29Zmn8tloORaXgZgGa78yO9/cnXm2BpaGvq25Dv9S4E9+5SIc9PqupJKhYFSSl47+Qcr1mYNAAAAeNptw0cKwkAAAMDZJA8Q7OUJvkLsPfZ6zFVERPy8qHh2YER+3i/BP83vIBLLySsoKimrqKqpa2hp6+jq6RsYGhmbmJqZSy0sraxtbO3sHRydnEMU4uR6yx7JJXveP7WrDycAAAAAAAH//wACeNpjYGRgYOABYhkgZgJCZgZNBkYGLQZtIJsFLMYAAAw3ALgAeNolizEKgDAQBCchRbC2sFER0YD6qVQiBCv/H9ezGI6Z5XBAw8CBK/m5iQQVauVbXLnOrMZv2oLdKFa8Pjuru2hJzGabmOSLzNMzvutpB3N42mNgZGBg4GKQYzBhYMxJLMlj4GBgAYow/P/PAJJhLM6sSoWKfWCAAwDAjgbRAAB42mNgYGBkAIIbCZo5IPrmUn0hGA0AO8EFTQAA');font-weight:400;font-style:normal}:root{--swiper-theme-color:#007aff}:host{position:relative;display:block;margin-left:auto;margin-right:auto;z-index:1}.swiper{margin-left:auto;margin-right:auto;position:relative;overflow:hidden;list-style:none;padding:0;z-index:1;display:block}.swiper-vertical>.swiper-wrapper{flex-direction:column}.swiper-wrapper{position:relative;width:100%;height:100%;z-index:1;display:flex;transition-property:transform;transition-timing-function:var(--swiper-wrapper-transition-timing-function,initial);box-sizing:content-box}.swiper-android .swiper-slide,.swiper-ios .swiper-slide,.swiper-wrapper{transform:translate3d(0px,0,0)}.swiper-horizontal{touch-action:pan-y}.swiper-vertical{touch-action:pan-x}.swiper-slide{flex-shrink:0;width:100%;height:100%;position:relative;transition-property:transform;display:block}.swiper-slide-invisible-blank{visibility:hidden}.swiper-autoheight,.swiper-autoheight .swiper-slide{height:auto}.swiper-autoheight .swiper-wrapper{align-items:flex-start;transition-property:transform,height}.swiper-backface-hidden .swiper-slide{transform:translateZ(0);-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-3d.swiper-css-mode .swiper-wrapper{perspective:1200px}.swiper-3d .swiper-wrapper{transform-style:preserve-3d}.swiper-3d{perspective:1200px}.swiper-3d .swiper-cube-shadow,.swiper-3d .swiper-slide{transform-style:preserve-3d}.swiper-css-mode>.swiper-wrapper{overflow:auto;scrollbar-width:none;-ms-overflow-style:none}.swiper-css-mode>.swiper-wrapper::-webkit-scrollbar{display:none}.swiper-css-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:start start}.swiper-css-mode.swiper-horizontal>.swiper-wrapper{scroll-snap-type:x mandatory}.swiper-css-mode.swiper-vertical>.swiper-wrapper{scroll-snap-type:y mandatory}.swiper-css-mode.swiper-free-mode>.swiper-wrapper{scroll-snap-type:none}.swiper-css-mode.swiper-free-mode>.swiper-wrapper>.swiper-slide{scroll-snap-align:none}.swiper-css-mode.swiper-centered>.swiper-wrapper::before{content:'';flex-shrink:0;order:9999}.swiper-css-mode.swiper-centered>.swiper-wrapper>.swiper-slide{scroll-snap-align:center center;scroll-snap-stop:always}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper>.swiper-slide:first-child{margin-inline-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-horizontal>.swiper-wrapper::before{height:100%;min-height:1px;width:var(--swiper-centered-offset-after)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper>.swiper-slide:first-child{margin-block-start:var(--swiper-centered-offset-before)}.swiper-css-mode.swiper-centered.swiper-vertical>.swiper-wrapper::before{width:100%;min-width:1px;height:var(--swiper-centered-offset-after)}.swiper-3d .swiper-slide-shadow,.swiper-3d .swiper-slide-shadow-bottom,.swiper-3d .swiper-slide-shadow-left,.swiper-3d .swiper-slide-shadow-right,.swiper-3d .swiper-slide-shadow-top{position:absolute;left:0;top:0;width:100%;height:100%;pointer-events:none;z-index:10}.swiper-3d .swiper-slide-shadow{background:rgba(0,0,0,.15)}.swiper-3d .swiper-slide-shadow-left{background-image:linear-gradient(to left,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-right{background-image:linear-gradient(to right,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-top{background-image:linear-gradient(to top,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-3d .swiper-slide-shadow-bottom{background-image:linear-gradient(to bottom,rgba(0,0,0,.5),rgba(0,0,0,0))}.swiper-lazy-preloader{width:42px;height:42px;position:absolute;left:50%;top:50%;margin-left:-21px;margin-top:-21px;z-index:10;transform-origin:50%;box-sizing:border-box;border:4px solid var(--swiper-preloader-color,var(--swiper-theme-color));border-radius:50%;border-top-color:transparent}.swiper-watch-progress .swiper-slide-visible .swiper-lazy-preloader,.swiper:not(.swiper-watch-progress) .swiper-lazy-preloader{animation:swiper-preloader-spin 1s infinite linear}.swiper-lazy-preloader-white{--swiper-preloader-color:#fff}.swiper-lazy-preloader-black{--swiper-preloader-color:#000}@keyframes swiper-preloader-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.swiper-virtual .swiper-slide{-webkit-backface-visibility:hidden;transform:translateZ(0)}.swiper-virtual.swiper-css-mode .swiper-wrapper::after{content:'';position:absolute;left:0;top:0;pointer-events:none}.swiper-virtual.swiper-css-mode.swiper-horizontal .swiper-wrapper::after{height:1px;width:var(--swiper-virtual-size)}.swiper-virtual.swiper-css-mode.swiper-vertical .swiper-wrapper::after{width:1px;height:var(--swiper-virtual-size)}:root{--swiper-navigation-size:44px}.swiper-button-next,.swiper-button-prev{position:absolute;top:var(--swiper-navigation-top-offset,50%);width:calc(var(--swiper-navigation-size)/ 44 * 27);height:var(--swiper-navigation-size);margin-top:calc(0px - (var(--swiper-navigation-size)/ 2));z-index:10;cursor:pointer;display:flex;align-items:center;justify-content:center;color:var(--swiper-navigation-color,var(--swiper-theme-color))}.swiper-button-next.swiper-button-disabled,.swiper-button-prev.swiper-button-disabled{opacity:.35;cursor:auto;pointer-events:none}.swiper-button-next.swiper-button-hidden,.swiper-button-prev.swiper-button-hidden{opacity:0;cursor:auto;pointer-events:none}.swiper-navigation-disabled .swiper-button-next,.swiper-navigation-disabled .swiper-button-prev{display:none!important}.swiper-button-next svg,.swiper-button-prev svg{width:100%;height:100%;object-fit:contain;transform-origin:center}.swiper-rtl .swiper-button-next svg,.swiper-rtl .swiper-button-prev svg{transform:rotate(180deg)}.swiper-button-prev,.swiper-rtl .swiper-button-next{left:var(--swiper-navigation-sides-offset,10px);right:auto}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-lock{display:none}.swiper-button-next:after,.swiper-button-prev:after{font-family:swiper-icons;font-size:var(--swiper-navigation-size);text-transform:none!important;letter-spacing:0;font-variant:initial;line-height:1}.swiper-button-prev:after,.swiper-rtl .swiper-button-next:after{content:'prev'}.swiper-button-next,.swiper-rtl .swiper-button-prev{right:var(--swiper-navigation-sides-offset,10px);left:auto}.swiper-button-next:after,.swiper-rtl .swiper-button-prev:after{content:'next'}.swiper-pagination{position:absolute;text-align:center;transition:.3s opacity;transform:translate3d(0,0,0);z-index:10}.swiper-pagination.swiper-pagination-hidden{opacity:0}.swiper-pagination-disabled>.swiper-pagination,.swiper-pagination.swiper-pagination-disabled{display:none!important}.swiper-horizontal>.swiper-pagination-bullets,.swiper-pagination-bullets.swiper-pagination-horizontal,.swiper-pagination-custom,.swiper-pagination-fraction{bottom:var(--swiper-pagination-bottom,8px);top:var(--swiper-pagination-top,auto);left:0;width:100%}.swiper-pagination-bullets-dynamic{overflow:hidden;font-size:0}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transform:scale(.33);position:relative}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-main{transform:scale(1)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-prev-prev{transform:scale(.33)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next{transform:scale(.66)}.swiper-pagination-bullets-dynamic .swiper-pagination-bullet-active-next-next{transform:scale(.33)}.swiper-pagination-bullet{width:var(--swiper-pagination-bullet-width,var(--swiper-pagination-bullet-size,8px));height:var(--swiper-pagination-bullet-height,var(--swiper-pagination-bullet-size,8px));display:inline-block;border-radius:var(--swiper-pagination-bullet-border-radius,50%);background:var(--swiper-pagination-bullet-inactive-color,#000);opacity:var(--swiper-pagination-bullet-inactive-opacity, .2)}button.swiper-pagination-bullet{border:none;margin:0;padding:0;box-shadow:none;-webkit-appearance:none;appearance:none}.swiper-pagination-clickable .swiper-pagination-bullet{cursor:pointer}.swiper-pagination-bullet:only-child{display:none!important}.swiper-pagination-bullet-active{opacity:var(--swiper-pagination-bullet-opacity, 1);background:var(--swiper-pagination-color,var(--swiper-theme-color))}.swiper-pagination-vertical.swiper-pagination-bullets,.swiper-vertical>.swiper-pagination-bullets{right:var(--swiper-pagination-right,8px);left:var(--swiper-pagination-left,auto);top:50%;transform:translate3d(0px,-50%,0)}.swiper-pagination-vertical.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets .swiper-pagination-bullet{margin:var(--swiper-pagination-bullet-vertical-gap,6px) 0;display:block}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{top:50%;transform:translateY(-50%);width:8px}.swiper-pagination-vertical.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-vertical>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{display:inline-block;transition:.2s transform,.2s top}.swiper-horizontal>.swiper-pagination-bullets .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets .swiper-pagination-bullet{margin:0 var(--swiper-pagination-bullet-horizontal-gap,4px)}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic{left:50%;transform:translateX(-50%);white-space:nowrap}.swiper-horizontal>.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet,.swiper-pagination-horizontal.swiper-pagination-bullets.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s left}.swiper-horizontal.swiper-rtl>.swiper-pagination-bullets-dynamic .swiper-pagination-bullet{transition:.2s transform,.2s right}.swiper-pagination-fraction{color:var(--swiper-pagination-fraction-color,inherit)}.swiper-pagination-progressbar{background:var(--swiper-pagination-progressbar-bg-color,rgba(0,0,0,.25));position:absolute}.swiper-pagination-progressbar .swiper-pagination-progressbar-fill{background:var(--swiper-pagination-color,var(--swiper-theme-color));position:absolute;left:0;top:0;width:100%;height:100%;transform:scale(0);transform-origin:left top}.swiper-rtl .swiper-pagination-progressbar .swiper-pagination-progressbar-fill{transform-origin:right top}.swiper-horizontal>.swiper-pagination-progressbar,.swiper-pagination-progressbar.swiper-pagination-horizontal,.swiper-pagination-progressbar.swiper-pagination-vertical.swiper-pagination-progressbar-opposite,.swiper-vertical>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite{width:100%;height:var(--swiper-pagination-progressbar-size,4px);left:0;top:0}.swiper-horizontal>.swiper-pagination-progressbar.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-horizontal.swiper-pagination-progressbar-opposite,.swiper-pagination-progressbar.swiper-pagination-vertical,.swiper-vertical>.swiper-pagination-progressbar{width:var(--swiper-pagination-progressbar-size,4px);height:100%;left:0;top:0}.swiper-pagination-lock{display:none}.swiper-scrollbar{border-radius:var(--swiper-scrollbar-border-radius,10px);position:relative;touch-action:none;background:var(--swiper-scrollbar-bg-color,rgba(0,0,0,.1))}.swiper-scrollbar-disabled>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-disabled{display:none!important}.swiper-horizontal>.swiper-scrollbar,.swiper-scrollbar.swiper-scrollbar-horizontal{position:absolute;left:var(--swiper-scrollbar-sides-offset,1%);bottom:var(--swiper-scrollbar-bottom,4px);top:var(--swiper-scrollbar-top,auto);z-index:50;height:var(--swiper-scrollbar-size,4px);width:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar.swiper-scrollbar-vertical,.swiper-vertical>.swiper-scrollbar{position:absolute;left:var(--swiper-scrollbar-left,auto);right:var(--swiper-scrollbar-right,4px);top:var(--swiper-scrollbar-sides-offset,1%);z-index:50;width:var(--swiper-scrollbar-size,4px);height:calc(100% - 2 * var(--swiper-scrollbar-sides-offset,1%))}.swiper-scrollbar-drag{height:100%;width:100%;position:relative;background:var(--swiper-scrollbar-drag-bg-color,rgba(0,0,0,.5));border-radius:var(--swiper-scrollbar-border-radius,10px);left:0;top:0}.swiper-scrollbar-cursor-drag{cursor:move}.swiper-scrollbar-lock{display:none}.swiper-zoom-container{width:100%;height:100%;display:flex;justify-content:center;align-items:center;text-align:center}.swiper-zoom-container>canvas,.swiper-zoom-container>img,.swiper-zoom-container>svg{max-width:100%;max-height:100%;object-fit:contain}.swiper-slide-zoomed{cursor:move;touch-action:none}.swiper .swiper-notification{position:absolute;left:0;top:0;pointer-events:none;opacity:0;z-index:-1000}.swiper-free-mode>.swiper-wrapper{transition-timing-function:ease-out;margin:0 auto}.swiper-grid>.swiper-wrapper{flex-wrap:wrap}.swiper-grid-column>.swiper-wrapper{flex-wrap:wrap;flex-direction:column}.swiper-fade.swiper-free-mode .swiper-slide{transition-timing-function:ease-out}.swiper-fade .swiper-slide{pointer-events:none;transition-property:opacity}.swiper-fade .swiper-slide .swiper-slide{pointer-events:none}.swiper-fade .swiper-slide-active{pointer-events:auto}.swiper-fade .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper.swiper-cube{overflow:visible}.swiper-cube .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1;visibility:hidden;transform-origin:0 0;width:100%;height:100%}.swiper-cube .swiper-slide .swiper-slide{pointer-events:none}.swiper-cube.swiper-rtl .swiper-slide{transform-origin:100% 0}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-cube .swiper-slide-active,.swiper-cube .swiper-slide-next,.swiper-cube .swiper-slide-prev{pointer-events:auto;visibility:visible}.swiper-cube .swiper-cube-shadow{position:absolute;left:0;bottom:0px;width:100%;height:100%;opacity:.6;z-index:0}.swiper-cube .swiper-cube-shadow:before{content:'';background:#000;position:absolute;left:0;top:0;bottom:0;right:0;filter:blur(50px)}.swiper-cube .swiper-slide-next+.swiper-slide{pointer-events:auto;visibility:visible}.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-bottom,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-left,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-right,.swiper-cube .swiper-slide-shadow-cube.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper.swiper-flip{overflow:visible}.swiper-flip .swiper-slide{pointer-events:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;z-index:1}.swiper-flip .swiper-slide .swiper-slide{pointer-events:none}.swiper-flip .swiper-slide-active,.swiper-flip .swiper-slide-active .swiper-slide-active{pointer-events:auto}.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-bottom,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-left,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-right,.swiper-flip .swiper-slide-shadow-flip.swiper-slide-shadow-top{z-index:0;-webkit-backface-visibility:hidden;backface-visibility:hidden}.swiper-creative .swiper-slide{-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden;transition-property:transform,opacity,height}.swiper.swiper-cards{overflow:visible}.swiper-cards .swiper-slide{transform-origin:center bottom;-webkit-backface-visibility:hidden;backface-visibility:hidden;overflow:hidden}
.testimonial-swiper {
  width:100%;
}

.testimonial-swiper .swiper-wrapper {

}

.testimonial-swiper .swiper-slide {
  width:33.333%;
}
.splide__container{box-sizing:border-box;position:relative}.splide__list{backface-visibility:hidden;display:-ms-flexbox;display:flex;height:100%;margin:0!important;padding:0!important}.splide.is-initialized:not(.is-active) .splide__list{display:block}.splide__pagination{-ms-flex-align:center;align-items:center;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:center;justify-content:center;margin:0;pointer-events:none}.splide__pagination li{display:inline-block;line-height:1;list-style-type:none;margin:0;pointer-events:auto}.splide:not(.is-overflow) .splide__pagination{display:none}.splide__progress__bar{width:0}.splide{position:relative;visibility:hidden}.splide.is-initialized,.splide.is-rendered{visibility:visible}.splide__slide{backface-visibility:hidden;box-sizing:border-box;-ms-flex-negative:0;flex-shrink:0;list-style-type:none!important;margin:0;position:relative}.splide__slide img{vertical-align:bottom}.splide__spinner{animation:splide-loading 1s linear infinite;border:2px solid #999;border-left-color:transparent;border-radius:50%;bottom:0;contain:strict;display:inline-block;height:20px;left:0;margin:auto;position:absolute;right:0;top:0;width:20px}.splide__sr{clip:rect(0 0 0 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.splide__toggle.is-active .splide__toggle__play,.splide__toggle__pause{display:none}.splide__toggle.is-active .splide__toggle__pause{display:inline}.splide__track{overflow:hidden;position:relative;z-index:0}@keyframes splide-loading{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.splide__track--draggable{-webkit-touch-callout:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.splide__track--fade>.splide__list>.splide__slide{margin:0!important;opacity:0;z-index:0}.splide__track--fade>.splide__list>.splide__slide.is-active{opacity:1;z-index:1}.splide--rtl{direction:rtl}.splide__track--ttb>.splide__list{display:block}.splide__arrow{-ms-flex-align:center;align-items:center;background:#ccc;border:0;border-radius:50%;cursor:pointer;display:-ms-flexbox;display:flex;height:2em;-ms-flex-pack:center;justify-content:center;opacity:.7;padding:0;position:absolute;top:50%;transform:translateY(-50%);width:2em;z-index:1}.splide__arrow svg{fill:#000;height:1.2em;width:1.2em}.splide__arrow:hover:not(:disabled){opacity:.9}.splide__arrow:disabled{opacity:.3}.splide__arrow:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide__arrow--prev{left:1em}.splide__arrow--prev svg{transform:scaleX(-1)}.splide__arrow--next{right:1em}.splide.is-focus-in .splide__arrow:focus{outline:3px solid #0bf;outline-offset:3px}.splide__pagination{bottom:.5em;left:0;padding:0 1em;position:absolute;right:0;z-index:1}.splide__pagination__page{background:#ccc;border:0;border-radius:50%;display:inline-block;height:8px;margin:3px;opacity:.7;padding:0;position:relative;transition:transform .2s linear;width:8px}.splide__pagination__page.is-active{background:#fff;transform:scale(1.4);z-index:1}.splide__pagination__page:hover{cursor:pointer;opacity:.9}.splide__pagination__page:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__pagination__page:focus{outline:3px solid #0bf;outline-offset:3px}.splide__progress__bar{background:#ccc;height:3px}.splide__slide{-webkit-tap-highlight-color:rgba(0,0,0,0)}.splide__slide:focus{outline:0}@supports(outline-offset:-3px){.splide__slide:focus-visible{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide__slide:focus-visible{border:3px solid #0bf}}@supports(outline-offset:-3px){.splide.is-focus-in .splide__slide:focus{outline:3px solid #0bf;outline-offset:-3px}}@media screen and (-ms-high-contrast:none){.splide.is-focus-in .splide__slide:focus{border:3px solid #0bf}.splide.is-focus-in .splide__track>.splide__list>.splide__slide:focus{border-color:#0bf}}.splide__toggle{cursor:pointer}.splide__toggle:focus-visible{outline:3px solid #0bf;outline-offset:3px}.splide.is-focus-in .splide__toggle:focus{outline:3px solid #0bf;outline-offset:3px}.splide__track--nav>.splide__list>.splide__slide{border:3px solid transparent;cursor:pointer}.splide__track--nav>.splide__list>.splide__slide.is-active{border:3px solid #000}.splide__arrows--rtl .splide__arrow--prev{left:auto;right:1em}.splide__arrows--rtl .splide__arrow--prev svg{transform:scaleX(1)}.splide__arrows--rtl .splide__arrow--next{left:1em;right:auto}.splide__arrows--rtl .splide__arrow--next svg{transform:scaleX(-1)}.splide__arrows--ttb .splide__arrow{left:50%;transform:translate(-50%)}.splide__arrows--ttb .splide__arrow--prev{top:1em}.splide__arrows--ttb .splide__arrow--prev svg{transform:rotate(-90deg)}.splide__arrows--ttb .splide__arrow--next{bottom:1em;top:auto}.splide__arrows--ttb .splide__arrow--next svg{transform:rotate(90deg)}.splide__pagination--ttb{bottom:0;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;left:auto;padding:1em 0;right:.5em;top:0}

/* Global pinch-zoom fix: touch-action: manipulation = pan-x + pan-y + pinch-zoom.
   Setting this on html means the browser compositor handles all three natively
   and will IGNORE any passive:false touchmove listener (Hotjar, HubSpot-injected
   scripts, Splide) that calls preventDefault() for these gestures.
   Using "manipulation" rather than "pan-y pinch-zoom" preserves pan-x so
   horizontal carousel swipes (handled by Splide JS) still work correctly. */
html {
  touch-action: manipulation;
}

/* Also explicitly set on Splide tracks: Splide registers passive:false touchmove
   listeners that call preventDefault() on its track element specifically. */
.splide__track {
  touch-action: pan-y pinch-zoom;
}

html {
  overflow-x: clip;
}

.main {
  width:100%;
  flex:1;
  margin-inline: auto;
}
html:not(.hs-inline-edit) .section-page-settings {
  display:none;
}

.extra-sponsors {
  display:none;
}

html:is(.hs-inline-edit) .extra-sponsors,
html[data-page="home"] [data-visible="home"] {
  display:grid;
}

html:is(.hs-inline-edit) .section-page-settings,
html:is(.hs-inline-edit) .event-panel,
html:is(.hs-inline-edit) .editor-panel {
  border: 1px dashed var(--neutral-400);
  border-bottom: 0px;
  padding: 3rem;
}

html:is(.hs-inline-edit) .event-panel:last-child {
  border: 1px dashed var(--neutral-400);
}

.section-page-settings h1 {
  margin:0;
  font-size:1rem;
}

html:is(.hs-inline-edit) .event-header {
  position:relative;
}

html:is(.hs-inline-edit) .card-collection {
  padding:2rem 0;
}

html:is(.hs-inline-edit) .page-details,
html:is(.hs-inline-edit) .workshop-speakers {
  display:none;
}

html:is(.hs-inline-edit) .workshop-collection {
  width:100%;
}

html:is(.hs-inline-edit) .page-media {
  width:100%;
  flex-direction:row;
  align-items: self-start;
  gap:1rem;
}

html:is(.hs-inline-edit) .workshop-logo {
  width:100%;
}

html:is(.hs-inline-edit) .speaker-page {
  display:none;
}

html:is(.hs-inline-edit) .main {
  margin-top:0;
  padding-top:1rem;
}
.page-media .speaker-title {
  display:none;
}

.workshop-speakers .speaker {
  display:flex;
  gap:.5rem;
  align-items:flex-start;
}

.speaker-body {
  margin-top:.5rem;
}

.page-wrapper {
  display:grid;
  grid-template-columns: 230px 1fr;
  gap:2rem;
  margin-bottom:2rem;
}

.workshop-speakers .speaker-body > * {
  font-size:.72rem;
  line-height: var(--lh-sm);
}

.workshop-speakers .speaker-media,
.page-media .workshop-speakers .speaker-img.placeholder {
  max-width:72px;
  flex: 1;
}

.speaker-body .workshop-speakers,
.page-media .speaker-body {
  flex:1;
}

.speakers-group-title {
  font-size: var(--fs-xs);
  font-weight:600;
  text-transform:uppercase;
}

.workshop-logo {
  aspect-ratio: 1 / 1;
  display: flex;
  align-items: center;
  justify-content: center;
  background-color:#fff;
  object-fit: contain;
  padding: .5rem;

}

.workshop-card {
  display: grid;
      align-items: center;
  grid-template-columns: max-content 1fr;
  margin:1rem 0 0;
}

.workshop-card > .workshop-logo {
  width:120px;
  padding:0;
}

.workshop-card > .workshop-logo img {
    width: 88%;
    max-height: 34px;
}

.page-media {
  order:1;
  width:230px;
 display:flex;
    flex-direction: column;
    gap: 2rem;
}

.page-media [data-workshop-speaker] .speaker-link {
  aspect-ratio:auto;
  margin-top:.25rem;
}

.speaker-page .page-media {
  width:230px;
}

.workshop {
  display:flex;
  gap:1.5rem;
}

.page-details {
  flex:1;
  order:2;
  display:flex;
  gap:1rem;
  flex-direction:column;
}

.page-details-body {
  padding:1rem 0 2rem;
}

[data-hs-cos-type="rich_text"] p,
[data-hs-cos-type="rich_text"] li,
.page-details-body p,
.page-details-body li {
  font-size: 1.1875rem;
  line-height: 1.47368;
}

.page-details-body strong,
.page-details-body b {
  font-weight:600;
}

.speaker-header {
  font-weight:600;
}

[data-section="home"] [data-hs-cos-type="rich_text"] h2 {
  font-size:var(--fs-display);
  line-height:var(--lh-sm);
}

[data-workshop-speaker] .speaker-media img {
  width:100%;
  height:auto;
  object-fit: cover;
  aspect-ratio:1/1;
}

.speaker-img.placeholder {
  width:100%;
  height:auto;
  background-color:#94a3b873;
  background-image:url(https://site.citywire.com/hubfs/raw_assets/public/cw-paw-2027-chicago/images/no-photo.svg);
  background-size: 96%;
    background-repeat: no-repeat;
    border-radius: 100%;
    background-position: center bottom;
  aspect-ratio:1/1;
}

[data-module="speaker-collection"] .speaker-label {
  font-size:var(--fs-sm);
}

.workshop-card-details p {
  font-size: var(--fs-xl);
    font-weight: 600;
        line-height: var(--lh-lg);
    text-wrap: balance;
  margin:.5rem 0;
  color:var(--neutral-800);
}
html {
  background-color: #fff;
}

/* two-column */
.main {
  display: grid;
  grid-template-columns: minmax(0,1fr) var(--aside);
  gap: var(--gap);
  max-width: calc(var(--max) - var(--gutter));
  padding: 3rem var(--gutter);
}

/* full row */
.main.row {
  display:flex;
  flex-direction:column;
  max-width:none;
  padding:0;
}

html:not(.hs-inline-edit):not([data-panels-loaded="true"]) .body-wrapper {
  opacity: 0;
  pointer-events: none;
}

html:not(.hs-inline-edit):not([data-panels-loaded="true"]) .hero-container {
  height: 0;
  overflow: hidden;
}

.hero-container {
  z-index:5;
  position:relative;
}

#sponsor-row {
  display:flex;
  align-items:center;
  position:relative;
  overflow-x:hidden;
}

.workshop-logo img {
  object-fit: contain;
  width: var(--workshop-logo-max-width, 72%);
  max-height: var(--workshop-logo-max-height, 48px);
  object-position: center center;
}

.page-media .workshop-logo img {
  width: var(--workshop-logo-max-width, 72%);
  max-height: var(--workshop-logo-max-height, 48px);
}


.workshop-logo.workshop-logo-portrait img {
  width: var(--workshop-logo-max-width, 48%);
  max-height: none;
}

.speaker-body a,
.workshop-card-details a{
  color:currentColor;
}

.speaker-body a:hover,
.workshop-card-details a:hover {
  text-decoration: none;
}

.speaker-container {
  display:flex;
  align-items:center;
  margin-bottom:.5rem;
}

.lead-section__inner {
  min-height:640px;
  padding-bottom: 4rem;
}

.lead-section__inner.lead-section__inner--no-media {
    min-height:auto;
}

.lead-section__header {
    padding-bottom: 1rem;
      position: relative;
    z-index: 3;
    mix-blend-mode: luminosity;
}

.lead-section__headline {
  font-size: var(--font-size-display);
    font-weight: 500;
    line-height: 112%;
    color: var(--neutral-500);
  letter-spacing:-.008em;
  max-width:16ch;
}

.lead-section__inner--no-media .lead-section__headline {
    max-width: none;
}

.lead-section__body {
  padding-bottom:2rem;
}

.lead-section__media-col {
    margin-top: -16rem;
    display: flex;
    justify-content: end;
}

.lead-section__media {
    max-width: 540px;
    position: absolute;
    height: 100%;
    bottom: 0;
    right: 0;
    display: flex;
    align-items: flex-end;  
}

.title-marquee__headline {
  font-weight: 500;
  font-size: clamp(1.5rem, 6vw, 4rem);
  letter-spacing:-.008em;
  color: var(--neutral-500);
  text-transform:uppercase;
}

.title-marquee-wrapper {
  overflow: hidden;
  border-top:1px solid var(--neutral-400);
  border-bottom:1px solid var(--neutral-400);
  padding:.5rem 0;
}

.feat-slider__card {
  position:relative;
}

.feat-slider__card--clickable {
  cursor: pointer;
}

.feat-slider__card--clickable:focus-visible {
  outline: 2px solid var(--neutral-800);
  outline-offset: 4px;
}

.feat-slider__image {
  object-fit: cover;
}

.feat-slider__content {
  position:absolute;
}

.feat-slider__slide {
  width:280px;
}

.cta-split__col {
  flex:1;
}

.feat-slider__image-placeholder {
  width:100%;
  height:100%;
  background-color:var(--neutral-200);
}

.tile-grid__tile .tile-grid__meta {
  position:absolute;
  display:flex;
  justify-content: flex-end;
    text-align: left;
    background-color: rgba(0, 0, 0, 0.2);
    background-image: linear-gradient(0deg, #0000003b, transparent);
    color: #fff;
  padding:1rem;
  height:100%;
  width:100%;
  flex-direction: column;
  opacity:0;
  transition:opacity .25s;
}

.tile-grid__tile:hover .tile-grid__meta {
  opacity:1;
}

.tile-grid__tile[data-type="partner"]:hover .tile-grid__meta {
  opacity:0;
}

.tile-grid__name {
  line-height:1;
    margin-bottom:.5rem;
}

.tile-grid__job {
    margin-bottom:.32rem;
}

.tile-grid__job , .tile-grid__company {
  font-size:.8rem;
    line-height:1;
}

.tile-grid__tile {
padding: 0;
    width: 100%;
  overflow: hidden;
  position: relative;
  display:flex;
      align-items: end;
  text-align:center;
}

.tile-grid__empty {
  display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100px;
    background-color: var(--neutral-100);

}

.tile-modal {
  display:block;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100dvh;
  z-index:5000;
  pointer-events:none;
  opacity: 0;
  visibility: hidden;
  transition:
    opacity .35s ease,
    visibility 0s linear .35s;
}

.tile-modal--open {
  pointer-events:auto;
  opacity: 1;
  visibility: visible;
  transition:
    opacity .35s ease,
    visibility 0s linear 0s;
}

.tile-modal:not(.tile-modal--open) .tile-modal__splide,
.tile-modal:not(.tile-modal--open) .tile-modal__splide .splide__track,
.tile-modal:not(.tile-modal--open) .tile-modal__splide .splide__list,
.tile-modal:not(.tile-modal--open) .tile-modal__splide .splide__slide,
.tile-modal:not(.tile-modal--open) .tile-modal__splide .splide__slide * {
  pointer-events: none !important;
}

.tile-modal--open .tile-modal__splide,
.tile-modal--open .tile-modal__splide .splide__track,
.tile-modal--open .tile-modal__splide .splide__list,
.tile-modal--open .tile-modal__splide .splide__slide,
.tile-modal--open .tile-modal__splide .splide__slide * {
  pointer-events: auto;
}

.tile-modal__header {
      padding: 1rem 2rem;
    font-size: larger;
    font-weight: bold;
    color: #fff;
}

.tile-modal__brand {
  display:flex;
  justify-content:center;
  width:100%;
  gap:1rem;
  text-align:center;
}

.tile-modal__dialog {
    height: 100%;
    display: flex;
    width: 100%;
    flex-direction: column;
    justify-content: center;
  position:relative;
}

.tile-modal__splide .splide__slide {
  width: min(960px, 88vw);
  max-height: 728px;
  height: 90vh;
  pointer-events: auto;
}

.tile-modal__media {
  padding:1rem;
}

.tile-modal__media:not([data-type="partner"]) img {
  border-radius:var(--radius-lg);
}

.tile-modal__close {
  position:absolute;
  top:1rem;
  right:1rem;
}

.agenda__stage-toggle,
.agenda__stage-toggle:hover,
.agenda__filter,
.agenda__filter:hover,
.agenda__view-btn,
.agenda__view-btn:hover {
  background-color: transparent;
  border-color: var(--neutral-300);
  color: var(--neutral-800);
  transform:none!important;
      outline: 0;
    outline-color: transparent;
  border-radius:0;
      box-shadow: none;
}

.agenda__content {
  display:grid;
  gap:2rem;
}

.agenda__stage-meta, .agenda__stage-title {
  margin:0;
}

.agenda__stage-header .agenda__stage-toggle {
  outline: 0;
}

.agenda__stage-meta {
  font-weight: 600;
  font-size: var(--fs-md);
}

.agenda__item-row {
  display: grid;
  grid-template-columns: 120px .32fr 1fr;
  gap: 1rem;
  padding: 2rem 0;
  align-items: start;
}

.agenda__item-row:not(:last-child) {
  border-bottom: 1px solid var(--neutral-300);
}

.agenda__item-row:is(:first-child) {
  padding-top:1rem;
}

.agenda__item-row:is(:last-child) {
  padding-bottom:1rem;
}

/* The session a header search result opened (_agenda-stage.js revealSession).
   A coral wash that fades out; it bleeds past the row so text is not flush. */
.agenda__item-row.is-search-target {
  position: relative;
  isolation: isolate;
}

.agenda__item-row.is-search-target::before {
  content: "";
  position: absolute;
  inset: 0 -1rem;
  z-index: -1;
  border-radius: 0.75rem;
  background-color: color-mix(in srgb, var(--primary) 14%, transparent);
  box-shadow: inset 0 0 0 2px var(--primary);
  pointer-events: none;
  animation: agenda-search-target 2.6s ease-out forwards;
}

@keyframes agenda-search-target {
  0%, 55% { opacity: 1; }
  100% { opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .agenda__item-row.is-search-target::before { animation: none; }
}

.agenda__item-time {
  color: #7586a0;
  white-space: nowrap;
}

.agenda__item-title {
  font-weight: 600;
  color: #374763;
}

.agenda__item-desc {
  color: #7d8a9c;
  line-height: 1.4;
  text-transform:none;
}

.agenda__item-desc p,
.agenda__item-desc li {
  font-size:var(--fs-md);
  line-height: 1.32;
}

.agenda__item-desc p {
  margin-bottom: 1rem;
}

.agenda__item-desc p:last-child {
  margin-bottom: 0;
}

.agenda__item-desc li:not(:last-child) {
  margin-bottom:.5rem;
}

.agenda__item-desc ul {
  padding:.5rem 1.5rem;
}

.agenda__item-related {
  display: grid;
  gap: 1rem;
  margin-top:0;
}

.agenda__item-desc-copy {
  margin-bottom:1rem;
}

.agenda__item-partners-row {
  display: flex;
  flex-wrap: wrap;
  gap: .75rem;
  align-items: center;
}

.agenda__item-speakers {
  display: flex;
  flex-wrap: wrap;
  gap: 1rem;
  align-items: center;
}

.agenda__item-speakers .agenda__item-speaker-card {
  margin-top: 0;
  flex: 0 1 auto;
  min-width: 0;
  width: fit-content;
}

.agenda__item-trigger {
  padding: 0;
  border: 0;
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  appearance: none;
  -webkit-appearance: none;
  cursor: pointer;
  transition: opacity .15s ease;
}

.agenda__item-trigger:hover,
.agenda__item-trigger:focus,
.agenda__item-trigger:focus-visible,
.agenda__item-trigger:active {
  opacity: .8;
}

.agenda__item-partner-logo {
  color: inherit;
}

.agenda__item-partner-logo.tile-modal__sidebar-cta-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 4.75rem;
  width: 4.75rem;
  height: auto;
  aspect-ratio: 1;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background-color: transparent;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .05), 0 4px 10px rgba(0, 0, 0, .06);
  padding: .32rem;
}

.agenda__item-partner-logo.tile-modal__sidebar-cta-logo:hover,
.agenda__item-partner-logo.tile-modal__sidebar-cta-logo:focus,
.agenda__item-partner-logo.tile-modal__sidebar-cta-logo:focus-visible,
.agenda__item-partner-logo.tile-modal__sidebar-cta-logo:active {
  background-color: transparent;
  background: transparent;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .05), 0 4px 10px rgba(0, 0, 0, .06);
}

.agenda__item-speaker-card {
  text-align: left;
  color: inherit;
  font: inherit;
}

.agenda__item-speaker-card.tile-modal__agenda-body-speaker-card {
  display: flex;
  align-items: center;
  gap: .9rem;
  margin-top: .75rem;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  max-width: 100%;
  width: fit-content;
}

.agenda__item-speaker-card.tile-modal__agenda-body-speaker-card:hover,
.agenda__item-speaker-card.tile-modal__agenda-body-speaker-card:focus,
.agenda__item-speaker-card.tile-modal__agenda-body-speaker-card:focus-visible,
.agenda__item-speaker-card.tile-modal__agenda-body-speaker-card:active {
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  outline: none;
  opacity: .8;
  transform: none;
}

.agenda__item-speaker-card:focus-visible,
.agenda__item-partner-logo:focus-visible {
  outline: 2px solid var(--green-800);
  outline-offset: 2px;
}

.agenda__item-speakers .tile-modal__agenda-body-speaker-company {
  margin: 0;
  font-size: .85rem;
  line-height: 1.2;
  color: var(--green-800);
  font-weight: 600;
}

.agenda__item-speakers .tile-modal__agenda-body-speaker-role {
  margin: 0;
  font-size: .72rem;
  line-height: 1.2;
  color: var(--neutral-600);
  text-wrap: balance;
}

/* -----------------------------------------
   MOBILE BEHAVIOUR
   ----------------------------------------- */
@media (max-width: 640px) {
  .agenda__item-row {
    grid-template-columns: 1fr;
    gap: 0.25rem;
  }

  .agenda__item-time {
    order: 1;
  }

  .agenda__item-title {
    order: 2;
  }

  .agenda__item-desc {
    order: 3;
  }
}

.agenda__view {
  display: none;
}

.agenda__view.is-active {
    display: grid;
    gap: 1rem;
}

.agenda__view-btn.is-active {
  font-weight: 600;
  text-decoration: underline;
}

.agenda__view-toggle {
  display: flex;
  justify-content: flex-end;
  gap: 1rem;
}

/* Default collapsed state */
.agenda__stage-toggle .icon-bg {
  fill: var(--neutral-700); /* dark background */
}

.agenda__stage-toggle .icon-arrow {
  fill: var(--neutral-100); /* light arrow */
  transform-origin: center;
  transition: transform 0.25s ease, fill 0.25s ease;
}

/* Expanded state */
.agenda__stage-toggle.is-open .icon-bg {
  fill: var(--neutral-100); /* light background */
}

.agenda__stage-toggle.is-open .icon-arrow {
  fill: var(--neutral-600); /* dark arrow */
  transform: rotate(180deg);
}

.agenda__stage-header {
  position:relative;
}

.agenda__stage {
  border:1px solid var(--border);
  border-left: 1.5rem solid var(--agenda-clr);
}

.agenda__stage-header .agenda__stage-toggle {
position: absolute;
    width: 100%;
    height: 100%;
    display: flex;
    justify-content: flex-end;
    align-items: center;
    padding: 1rem;
border-bottom: 1px solid var(--border);
    background-color: transparent;
}

.agenda__stage-body {
  padding:1rem 2rem;
}

.agenda__stage-body.is-collapsed {
  display:none;
}

.agenda__stage-heading {
  padding:1.5rem 1.5rem 0;
}

.agenda__stage-title {
font-size: 2.5rem;
    text-transform: uppercase;
    font-weight: 600;
  letter-spacing:-.008em;
}


.agenda__filters {
  display:grid;
  gap:1rem;
  top:calc(var(--event-header) + 3rem);
  position:sticky;
}

.agenda__filter-indicator {
  width:1.25rem;
  aspect-ratio:1;
  border:2px solid var(--neutral-500);
display: flex;
    align-items: center;
    justify-content: center;
}

.is-active .agenda__filter-indicator {
  background-color: var(--agenda-clr);
  border:2px solid var(--agenda-clr);
}

.agenda__sidebar {
  width:100%;
  height: 100%;
    display: flex;
    align-items: flex-start;
}


.agenda__filter {
    justify-content: flex-start;
  box-shadow:none;
  border:0;
}

.agenda__filters .agenda__filter {
 box-shadow:none;
border: 0;
    padding: 0;
    gap: .5rem;
    line-height: 1;
}

.agenda__filter-indicator svg {
  width:1rem;
      aspect-ratio: 8 / 6;
  height:auto;
  color:#fff;
}

.agenda__stage.is-filtered-out {
  display: none;
}

.agenda__stage.is-filtered-out {
  display: none;
}

.agenda__empty-message {
  text-align: center;
  padding: 2rem 1rem;
  color: #64748B;
}

.contact-cta {
  background-color:#EFF3F6;
}

.contact-cta__inner {
  display:grid;
  grid-template-columns: .72fr 1fr;
  align-items:flex-start;   /* top-align copy + people instead of centring */
  padding:var(--gutter);
}

.contact-cta__copy {
  margin-top:1rem;
}

.contact-cta__copy h1,
.contact-cta__copy h2,
.contact-cta__copy h3 {
  font-size:var(--fs-h2);
  font-weight:600;
}

.contact-cta__people {
  padding:1rem;
  display:grid;
  grid-template-columns:repeat(4, 1fr); /* uniform 4-up: equal width cells */
  gap:1.75rem 1.5rem;
  align-items:stretch;                  /* equal height within a row */
}

@media (max-width:820px){
  .contact-cta__people { grid-template-columns:repeat(2, 1fr); }
}
@media (max-width:480px){
  .contact-cta__people { grid-template-columns:1fr; }
}

/* Grouped (legend-style) team: one block per Group */
.contact-cta__group-legend {
  display:flex;
  align-items:center;
  gap:1rem;
  margin:0 0 .5rem;
  padding:0 1rem;
  font-size:var(--fs-md);
  font-weight:700;
  text-transform:uppercase;
  letter-spacing:.04em;
  line-height:1.2;
}

.contact-cta__group-legend::after {
  content:"";
  flex:1 1 auto;
  height:1px;
  background:currentColor;
  opacity:.25;
}

.contact-cta__person {
  position:relative;    /* anchor for the stretched mailto link */
  display:flex;
  flex-direction:column;
  height:100%;          /* fill the grid cell so every card is equal height */
}

/* Email icon on the left, name + job title stacked on the right. */
.contact-cta__person-body {
  display:flex;
  align-items:flex-start;   /* icon sits at the top, level with the name */
  gap:.625rem;
}

.contact-cta__person-email {
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:var(--neutral-500); /* match the job-title colour */
  transition:color .15s ease;
}
/* Stretch the mailto link across the whole tile: the entire card becomes
   the click/hover target, while only the icon changes colour. */
.contact-cta__person-email::after {
  content:"";
  position:absolute;
  inset:0;
}
.contact-cta__person:hover .contact-cta__person-email,
.contact-cta__person-email:hover,
.contact-cta__person-email:focus-visible {
  color:var(--primary);     /* brand coral on hover — icon only */
  text-decoration:none;
}
.contact-cta__person-email svg { display:block; width:16px; height:16px; }

.contact-cta__person-meta {
  min-width:0;              /* let long names/titles wrap inside the cell */
  display:flex;
  flex-direction:column;
  gap:.125rem;
}
.contact-cta__person-meta > p { margin:0; }

.contact-cta__person-head {
  margin:0;
  font-size:var(--fs-md);
  font-weight:700;
  line-height:1.2;
  transition:color .15s ease;
}
/* Hovering the tile turns both the icon and the name brand coral. */
.contact-cta__person:hover .contact-cta__person-head {
  color:var(--primary);
}

.contact-cta__person-details {
  margin:0;
  font-size:var(--fs-xs);
  font-weight:400;
  line-height:1.4;
  color:var(--neutral-500);
  transition:color .15s ease;
}
/* On tile hover the job title also goes brand, but a darker shade so the
   name (brighter --primary) still leads. */
.contact-cta__person:hover .contact-cta__person-details {
  color:var(--primary-hover);
}

/* =========================================================
   Contact CTA — quiet event nudge
   Just a small Google-Calendar-style date tile + one line + an
   "add to calendar" link. No panel/border/background — separated
   from the copy above by whitespace alone.
   ========================================================= */
.contact-cta__reminder {
  display:inline-flex;
  align-items:center;
  gap:1rem;
  margin-top:2.5rem;         /* clear space away from the CTA buttons */
}

.cal-tile {
  flex:0 0 auto;
  width:4.5rem;
  text-align:center;
  background:#fff;
  border-radius:7px;
  overflow:hidden;
}
.cal-tile__month {
  display:block;
  background:var(--primary);  /* brand coral band */
  color:#fff;
  font-size:.58rem;
  font-weight:700;
  letter-spacing:.14em;
  padding:.3rem .25rem;
}
.cal-tile__day {
  display:block;
  font-size:1.3rem;
  font-weight:800;
  line-height:1.05;
  padding:.3rem .25rem 0;
  color:var(--neutral-900);
}
.cal-tile__weekday {
  display:block;
  font-size:.52rem;
  font-weight:600;
  letter-spacing:.1em;
  color:var(--neutral-500);
  padding:.1rem .25rem .4rem;
}

.contact-cta__reminder-body {
  display:flex;
  flex-direction:column;
  gap:.25rem;
  min-width:0;
}
.contact-cta__reminder-title {
  font-size:var(--fs-md);
  font-weight:700;
  line-height:1.4;
  color:inherit;             /* light, inherited from the dark section */
}
.contact-cta__reminder-detail {
  font-size:var(--fs-xs);
  color:rgba(255,255,255,.7);
  line-height:1.45;
}
.contact-cta__reminder-link {
  font-size:var(--fs-xs);
  font-weight:600;
  color:var(--primary);
  align-self:flex-start;   /* keep hover underline to the text width */
}
.contact-cta__reminder-link:hover,
.contact-cta__reminder-link:focus-visible {
  text-decoration:underline;
}

@media (max-width:480px){
  .contact-cta__reminder { gap:.85rem; margin-top:2rem; }
}


.tile-modal__container {
   max-width: 720px;
    margin: 0 auto;
    height: 72vh;
    max-height: 800px;
    overflow: auto;
    background-color: #fff;
    padding: 2rem;
    border-radius: var(--radius-xl);
}

html.lenis-stopped {
  overflow: visible;
}

.tile-dir__media {
  z-index:2;
  position:relative;
}

.tile-dir__media img {
  width:100%;
}

[data-type="partner"] .tile-dir__media {
  position: sticky;
  top: 0;
  display:flex;
  align-items:center;
  justify-content:center;
  padding: 1rem;
  aspect-ratio:1;
  width: 100%;
  height: auto;
  border-radius: var(--radius-xxl);
  box-shadow:0 0 0 1px rgba(0,0,0,.05), 0 4px 10px rgba(0,0,0,.06);
}

[data-type="partner"] .tile-dir__media img {
  max-height: 32%;
  max-width:72%;
  object-fit: contain;
}

[data-type="partner"] .tile-dir__media img.is-square {
  max-height:none;
  max-width:48%;
}

[data-type="partner"] .tile-dir__media img.is-portrait {
  max-width:32%;
  max-height: 72%;
}

.tile-dir__categories {
  list-style:none;
  margin:0;
  padding:0;
}

.tile-dir__category-item {
  list-style:none;
  margin:0;
  padding:0;
}

.tile-dir__groups {
    display: flex;
    flex-direction: column;
    gap: 3rem;
}

.tile-dir__sidebar {
    position: sticky;
    top: calc(var(--event-header) + 2rem);
}

.group-title {
  font-size:var(--fs-h4);
  margin-bottom: 0.5rem;
  color:var(--neutral-500);
}

.group-detail p,
.group-detail li {
  font-size:var(--fs-md);
}

@media (max-width:1280px){
  .footer-social a {
    width:120px;
  }
}

.text-muted {
  opacity:.8;
}

[data-workshop-speaker] .speaker-media,
[data-workshop-speaker] .speaker-link {
  aspect-ratio:1/1;
  width:100%;
  height:auto;
  display:flex;
  margin-bottom:1rem;
}

[data-workshop-speaker] .speaker-media, 
.speaker-img[data-aspect-ratio="square"],
[data-workshop-speaker] .speaker-link img {
  border-radius:100%;
  overflow:hidden;
  object-fit: cover;
      aspect-ratio: 1;
}

.page-details-body a strong {
  color:currentColor;
}

.section-label {
  padding: 0 0 1rem;  
}
[data-visible="mobile"] {
  display:none;
}

@media (max-width: 1280px) {
  .footer-container {
    padding: 0 2rem;
    flex-wrap: wrap;
    display:grid;
    grid-template-columns: repeat(3, 1fr);
  }
  
  .footer-brand {
    width:auto;
  }
  
  .footer-locations {
    width:auto;
    grid-template-columns: repeat(3, 1fr);
    grid-column: span 2;
    grid-row: span 2;
  }
  
  .footer-social {
    width:auto;
    justify-content: flex-start;
    align-items: flex-start;
  }
  
  .footer-locations {
    gap:1rem;
  }
}

@media (max-width: 991px) {
  
  body {
    --aside:18rem;
  }
  
  [data-visible="desktop"] {
    display:none;
  }
  
}

@media (max-width: 768px) {
  .footer-copy .u-flexgap {
    flex-wrap: wrap;
    justify-content: center;
  }
  
  .footer-copy .u-flexgap span {
    text-align:center;
  }
  
  .footer-copy .u-flexgap span:first-child {
    width:100%;
  }
  
}

.header-mobile-trigger {
width: auto;
    height: 100%;
    padding: 0;
    background-color: transparent;
}

.header-mobile-trigger:focus {
  background-color: transparent;
  border-color:transparent;
  outline:none;
}

.header-mobile-trigger svg {
  height: 100%;
    display: block;
    width: 1.75rem;
}

/* The generic button hover filled the whole full-height hit area with a
   rounded box that ran into the bar's top and right edges. Hover is now a
   circle behind the icon, the same size and colour as the search trigger.
   Ported from PAW 2026, 29 Sept 2026. */
.header-mobile-trigger,
.header-mobile-trigger:hover,
.header-mobile-trigger:active {
  background-color: transparent;
  border-color: transparent;
  border-radius: 0;
}

.header-mobile-trigger svg {
  position: relative; /* above the circle */
}

.header-mobile-trigger::before {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  width: 2.75rem;
  height: 2.75rem;
  border-radius: 50%;
  background-color: var(--neutral-700);
  transform: translate(-50%, -50%) scale(0.85);
  opacity: 0;
  transition: opacity 0.2s ease, transform 0.2s ease;
  pointer-events: none;
}

@media (hover: hover) {
  .header-mobile-trigger:hover::before {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
  }
}

.header-mobile-trigger:focus-visible {
  outline: none;
}

.header-mobile-trigger:focus-visible::before {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
  box-shadow: 0 0 0 2px var(--neutral-50);
}

@media (prefers-reduced-motion: reduce) {
  .header-mobile-trigger::before { transition: none; }
}

@media (max-width: 728px) {
  .site-menu {
    position: fixed;
    z-index: 60;
    height: auto;
    top: 64px;
    right: 0;
    background-color: #fff;
    color: var(--neutral-800);
  }
  .header-mobile-trigger {
    display:block;
  }
  #event-footer {
    padding-bottom:var(--mobile-bottom);
  }
  .main {
    display:block;
  }
  
  .footer-locations,
  .footer-social,
  .footer-brand {
    grid-column: 1 / -1;
  }
  
  .footer-sitemap {
    padding:2rem 0;
  }

  .site-menu {
    display:none;
  }

}

/* -----------------------------------------------------------------
   Lead Networking Partner — collapse layout chrome when the partner
   is absent (no logo uploaded, or draft_mode hidden on live), so no
   empty padding band or gap is left behind. The module renders nothing
   in those cases, and the JS clones nothing, leaving empty mounts.
   ----------------------------------------------------------------- */
.lead-partner-strip:not(:has(.lead-networking-partner)) {
  display: none;
}

[data-lead-partner-mount]:empty {
  display: none;
}

.u-text-center:has(> [data-lead-partner-mount]:empty) {
  display: none;
}

/* =========================================================
   TOKENS + THEMES + SITE RULES (CLEANED, ONE BLOCK)
   ========================================================= */

:root {
  /* -------------------------------------------------------
     Orange scale (PAW 2027 Chicago primary — #ff6e49)
     ------------------------------------------------------- */
  --green-100: #ffe2db;
  --green-200: #ffc6b8;
  --green-300: #ffa18a;
  --green-400: #ff8566;
  --green-500: #ff6e49;
  --green-600: #ff471a;
  --green-700: #db2c00;
  --green-800: #991f00;
  --green-900: #5c1200;

  /* -------------------------------------------------------
     Neutral scale
     ------------------------------------------------------- */
  --neutral-50:  #f3f3f2;
  --neutral-100: #e9e9e7;
  --neutral-200: #d8d8d8; /* BODY BACKGROUND */
  --neutral-300: #c6c6c6;
  --neutral-400: #adadad;
  --neutral-500: #8f8f8f;
  --neutral-600: #6e6e6e;
  --neutral-700: #454545;
  --neutral-800: #2e2e2e;
  --neutral-900: #161616;

  /* -------------------------------------------------------
     Primary aliases
     ------------------------------------------------------- */
  --color-primary:       var(--green-500);
  --color-primary-hover: var(--green-400);
  --color-primary-press: var(--green-600);
  --color-on-primary:    #0b0b0b;

  /* -------------------------------------------------------
     Semantic tokens (LIGHT default)
     ------------------------------------------------------- */
  --color-bg:            var(--neutral-200);
  --color-surface:       var(--neutral-50);
  --color-surface-muted: var(--neutral-100);

  --color-border:        var(--neutral-400);
  --color-border-strong: var(--neutral-600);

  --color-text:          var(--neutral-900);
  --color-text-body: var(--neutral-800);
  --color-text-muted:    var(--neutral-600);

  --color-focus:         var(--neutral-500);

  /* Button tokens (neutral button) */
  --color-btn:           var(--neutral-700);
  --color-btn-hover:     var(--neutral-800);
  --color-btn-press:     var(--neutral-900);
  --color-btn-border:    var(--color-btn);
  --color-text-btn:      var(--neutral-50);

  --tile-modal-slide-width: 920px;
  --tile-modal-close-layer-width: calc(min(var(--tile-modal-slide-width), 88vw) + 2.64rem);
  --tile-modal-close-layer-height: calc(min(728px, 90vh) - 48px);

  /* “Legacy” aliases you’re using elsewhere */
  --body-text-color:     var(--color-text-body);
  --strong-color:        var(--color-text);
  --heading-text-color:  var(--color-text);
  --link-color:          var(--heading-text-color);
}

/* ---------------------------------------------------------
   Dark theme (override semantic tokens only)
   --------------------------------------------------------- */
[data-theme="dark"] {
  --color-bg:            var(--neutral-900);
  --color-surface:       var(--neutral-800);
  --color-surface-muted: var(--neutral-700);

  --color-border:        var(--neutral-700);
  --color-border-strong: var(--neutral-600);

  --color-text:          #ffffff;
  --color-text-body: var(--neutral-50);
  --color-text-muted:    var(--neutral-500);

  --color-focus:         var(--neutral-600);

  /* ✅ Neutral buttons in dark: lift for contrast */
  --color-btn:           var(--neutral-600);
  --color-btn-hover:     var(--neutral-500);
  --color-btn-press:     var(--neutral-700);
  --color-btn-border:    var(--color-btn);
  --color-text-btn:      #ffffff;
  
  --heading-text-color:var(--color-text);
  --body-text-color:var(--color-text-body);
  
  color:var(--color-text-body);
}

/* ---------------------------------------------------------
   Base rules
   --------------------------------------------------------- */
html {
  background-color: var(--color-bg);
}

.scrolling iframe,
.scrolling-fast .paw-info-hover,
.scrolling-fast [type="button"],
.scrolling-fast .tile-dir__tile {
  pointer-events:none;
}

.tile-dir__tile:hover {
  text-decoration:none;
}

/* Better focus handling (works in both themes) */
:focus {
  outline: auto;
  outline-color: var(--green-700);
}

:focus-visible {
  outline: 2px solid var(--color-focus);
  outline-offset: 2px;
}

/* If you still need the old :focus behavior, keep this:
[data-theme="dark"] :focus { outline-color: var(--neutral-600); }
*/

/* ---------------------------------------------------------
   Site rules
   --------------------------------------------------------- */

html:is(.hs-inline-edit) .main {
  padding-top:0;
}

.main {
  gap:0;
}

/* ✅ Primary CTA buttons */
.site-menu-item[data-register-origin="register"],
.site-menu-item-cta,
html:not([data-page="home"]) .site-menu-item-cta {
  background-color: var(--color-primary);
  color: #111;
}

.site-menu-item {
  padding-left:var(--space-xl);
  padding-right:var(--space-xl);
}

.site-menu-item-cta {
  margin-left:var(--space-md);
  padding-left:var(--space-xxl);
  padding-right:var(--space-xxl);
}

/* Optional: CTA hover/press (nice in both themes) */
.site-menu-item-cta:hover {
  background-color: var(--color-primary-hover);
}
.site-menu-item-cta:active {
  background-color: var(--color-primary-press);
}

.site-logo-header .cw-woosh {
  color: var(--color-primary);
}

.event-header-container {
  background-color: #000;
}

.event-header a:focus:not(:focus-visible),
.event-header button:focus:not(:focus-visible) {
  outline: none;
}

/* Active nav item — underline in brand primary colour */
.event-navbar .site-menu-item:not(.site-menu-item-cta).is-active {
  text-decoration: underline;
  text-decoration-color: var(--color-primary);
  text-decoration-thickness: 2px;
  text-underline-offset: 6px;
}

.lead-section__headline,
.title-marquee__headline {
  color: var(--heading-text-color);
}

.agenda__stage {
  background-color: #fff;
}

.footer-copy {
  background-color: #1a1a1a;
  color: var(--neutral-300);
  --heading-text-color: currentColor;
}

.contact-cta {
  background-color: var(--neutral-800);
  color: var(--neutral-50);
  --heading-text-color: currentColor;
  padding-bottom: clamp(3rem, 6vw, 5rem); /* breathing room before the footer */
}

.lead-partner-strip {
  background-color: var(--neutral-900);
  color: var(--neutral-400);
  border-bottom: 1px solid var(--neutral-800);
}

#event-footer {
  background-color: var(--neutral-900);
  color: var(--neutral-500);
  --heading-text-color: currentColor;
}

.footer-brand svg {
  color: var(--neutral-400);
}

.event-footer h3,
.event-footer strong,
.event-footer .strong,
.event-footer a {
  color: var(--neutral-400);
}

.footer-brand svg .how-swoosh {
  color: var(--color-primary);
}

.footer-social svg {
  display: block;
  width: 100%;
}

/* ---------------------------------------------------------
   Buttons
   --------------------------------------------------------- */
.btn--paw {
  padding: 1.12rem 2.12rem;
  line-height: 1;
  text-align: center;
  cursor: pointer;
  display: inline-flex;
  gap: 0.5rem;
  font-weight: 600;
  border: 1px solid var(--color-btn-border);
  background-color: var(--color-btn);
  border-radius: 24px;
  color: var(--color-text-btn);
  text-transform: uppercase;
  white-space: nowrap; /* replaces text-wrap-mode (not widely supported) */
}

.btn--paw:hover {
  background-color: var(--color-btn-hover);
  text-decoration:none;
}

.btn--paw:active {
  background-color: var(--color-btn-press);
}


.btn--paw-ghost {
  --color-btn:transparent;
  --color-btn-border:var(--color-text);
  --color-text-btn:var(--color-text);
}

.btn--paw-green {
  --color-btn:           var(--green-500);
  --color-btn-hover:     var(--green-400);
  --color-btn-press:     var(--green-600);
  --color-btn-border:    var(--green-500);
  --color-text-btn:      var(--green-900);
}

.btn--paw-orange {
  --color-btn:           var(--orange-500);
  --color-btn-hover:     var(--orange-400);
  --color-btn-press:     var(--orange-600);
  --color-btn-border:    var(--orange-500);
  --color-text-btn:      var(--orange-900);
}

.u-banner .btn--paw-ghost {
  background-color: rgba(0, 0, 0, 0.4);
}

.btn--paw-ghost.btn--paw:hover {
  --color-btn-border:var(--color-btn-hover);
}

.btn--paw:active {
  --color-btn-border: var(--color-btn-press);
}

.cta-carousel-stats__figure {
  padding: 0;
  margin: 0;
}

.square-radius-xxl {
  border-radius:var(--radius-xxl);
  overflow:hidden;
  aspect-ratio:1;
}

.tile-grid__item {
  background-color:#fff;
}

[aria-pressed="false"] .agenda__filter-indicator svg {
  opacity:0;
}

[data-agenda-empty] .agenda__day-group {
  display: none;
}

.agenda__day-title {
  font-weight: 400;
}

.agenda__day-group:not([data-day-index="1"]) {
  margin-top:var(--space-xxl);
  padding-top:var(--space-xxl);
}

.cta-carousel-stats {
  margin-top:var(--space-xxl);
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-lg);
}

.paw2027-home-lead {
  padding-top:4rem;
  padding-bottom:10rem;
}

.paw2027-home-key {
    padding: 20rem 0 20rem;
    margin-top: -18rem;
}

.u-bg-home-intro {
  background-color: var(--color-bg);
}

.u-bg-home-intro img {
    mix-blend-mode: multiply;
    position: absolute;
  object-position: top;
}

.paw2027-home-speakers {
  margin-top: -1.5rem;
}

.paw2027-home-agenda {
  padding:var(--space-xxl) 0;
    display: flex;
    align-items: center;
}

.card-icon img {
  max-width:156px;
}

.paw2027-travel .card-icon img {
  max-width:96px;
}

[data-dir="partners"] .tile-dir__groups {
  flex-direction: row;
    gap: 3rem;
    flex-wrap: wrap;
}

.paw-info-hover {
  pointer-events:auto;
}

.paw-info-hover-details {
  opacity:0;
  transition:opacity .5s;
  position:absolute;
  bottom:0;
  left:0;
  padding:var(--space-lg);
  width:100%;
  height:100%;
  display:flex;
  flex-direction:column;
  justify-content:flex-end;
  z-index:2;
  gap: .2rem;
}

.paw-info-hover-details::after {
  content:"";
  background-image: linear-gradient(
    45deg,
    var(--backdrop) 0%,
    transparent 50%
  );
  position:absolute;
  bottom:0;
  inset:0;
  left:0;
  width:100%;
  height:100%;
  z-index:-1;
}

.paw-info-hover:hover .paw-info-hover-details {
  opacity:1;
}

.tile-dir__meta {
  text-wrap:balance;
}

[data-type="partner"] .tile-dir__media {
  background-color:#fff;
}

.tile-dir__grid--isotope {
  width:100%;
  transition: height .5s;
  will-change: height;
}

.agenda__inner,
.dir-filter-on {
  display:grid;
  grid-template-columns: 24% 1fr;
  padding: var(--space-xxs) 0;
  gap:1rem;
}

.dir-filter-on .tile-dir__item {
  width:25%;
  padding: var(--space-xxs);
}

@media (max-width:1280px){
  .dir-filter-on .tile-dir__item {
    width:33.333%;
  }
}

@media (max-width:480px){
  .dir-filter-on .tile-dir__item {
    width:50%;
  }
}

.tile-dir__grid-wrapper {
  padding-bottom: var(--space-xxl);
}

.tile-dir__category-btn {
  font-size:var(--fs-xl);
  color:var(--color-text-muted);
  font-weight:600;
}

.tile-dir__category-btn.is-active {
  color: var(--color-text);
}

.hotelmap-shell {
  opacity: 0;
  transition: opacity 0.6s ease;
  position: relative;
}

/* HotelMap renders an inline Mapbox GL map (.hm_map_app / .mapboxgl-map), not an
   iframe, so the lock must target the map element to release page scroll while
   locked. iframe kept as a fallback in case the embed reverts. Only the MAP is
   locked (not the whole widget) so the hotel-list Book buttons stay interactive. */
.hotelmap-shell[data-map-lock="locked"] iframe,
.hotelmap-shell[data-map-lock="locked"] .hm_map_app {
  pointer-events: none !important;
}

.hotelmap-shell[data-map-lock="unlocked"] iframe,
.hotelmap-shell[data-map-lock="unlocked"] .hm_map_app {
  pointer-events: auto !important;
}

.hotelmap-shell__hint {
  position: absolute;
  top: 1rem;
  right: 1rem;
  z-index: 3;
  border: 0;
  border-radius: 999px;
  background: rgba(0, 0, 0, 0.7);
  color: #fff;
  font-size: 0.875rem;
  line-height: 1;
  padding: 0.6rem 0.9rem;
  pointer-events: auto;
}

.hotelmap-shell[data-map-lock="unlocked"] .hotelmap-shell__hint {
  opacity: 0;
  visibility: hidden;
}

.header-mobile-nav {
  display:none;
}

.tile-modal__backdrop {
      background-color: #2828286e;
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    backdrop-filter: blur(19px);
    z-index: 0;
    opacity: 1;
    background-image: url("https://site.citywire.com/hubfs/raw_assets/public/cw-paw-2027-chicago/images/dust.png");
}

.tile-modal--open .tile-modal__backdrop {
  pointer-events:auto;
}

.tile-modal--speaker .tile-modal__backdrop,
.tile-modal--partner .tile-modal__backdrop {
  transition: opacity .32s ease;
  opacity: 0;
}

.tile-modal--speaker.tile-modal--open .tile-modal__backdrop,
.tile-modal--partner.tile-modal--open .tile-modal__backdrop {
  opacity: 1;
}

.tile-modal--speaker .tile-modal__body,
.tile-modal--partner .tile-modal__body {
  opacity: 0;
  transition:
    opacity .55s ease;
  will-change: opacity;
}

.tile-modal--speaker.tile-modal--body-reveal .tile-modal__body,
.tile-modal--partner.tile-modal--body-reveal .tile-modal__body {
  opacity: 1;
}

.tile-modal__nav {
    z-index: 2;
    position: absolute;
    width: 100%;
    max-width: 480px;
    top: 0;
    right: 0;
    height: 100%;
    background-color: var(--color-bg);
    pointer-events: auto;
}

.tile-modal__nav .site-menu {
  flex-direction:column;
  height:auto;
  padding-top:2rem;
}

.tile-modal__nav-content {
  position:relative;
  z-index:1;
  pointer-events: auto;
}

.tile-modal__close {
  z-index:20;
}

[data-version="paw-2027-chicago"] .tile-modal__nav .tile-modal__nav-content .site-menu-item {
  color: var(--color-text);
    padding: var(--space-sm) var(--space-md);
    font-size: var(--fs-h4);
      display: inline-flex;
    width: auto;
    align-self: baseline;
  opacity:1;
}

.tile-modal__nav-content {
      overflow-y: scroll;
    height: 100%;
  padding-bottom:2rem;
}

.tile-modal__splide {
  pointer-events:auto;
}

.tile-modal__nav .site-menu-item-cta {
  margin:var(--space-xs) var(--space-md);
  align-self: baseline;
}

@media (max-width:1280px){
  #main-hero iframe {
    pointer-events:none;
  }
  
  .event-navbar .site-menu:not(.header-mobile-nav) {
    display:none;
  }
  
  .header-mobile-nav {
    display:flex;
  }
  
  .header-mobile-nav > .site-menu-item-cta {
    margin:0;
  }
  
  .event-navbar {
    padding-right: 0;
  }
  
  .contact-cta__copy p,
  .btn--paw {
    font-size: var(--font-size-body-m);
  }
  
  .contact-cta__person-details {
    font-size: var(--font-size-body-m);
  }
  
  .contact-cta__inner {
    grid-template-columns: 1fr;
  }
}

.cta-carousel-stats__media {
  width:100%;
}

.cta-carousel-stats__slide {
  position:relative;
}

@media (max-width:1024px){
  .contact-cta__person-details {
    font-size: var(--font-size-body-s);
  }
}

@media (max-width:992px){
  .agenda__sidebar {
    padding-bottom:2rem;
  }
  
  .cta-split__inner  {
    flex-direction: column;
    align-items:stretch;
  } 
  
  .agenda__inner, .dir-filter-on {
    grid-template-columns: 1fr;
  }
  
  .tile-dir__sidebar {
    overflow-x: auto;
  }
  
  .tile-dir__categories {
    white-space: nowrap;
    flex-direction: row;
    gap: 1rem;
  }
}

@media (max-width:768px){
  .paw2027-home-lead .lead-section__actions {
    flex-direction:column;
            align-items: baseline;
  }
  
  .site-menu {
    position:relative;
    top:0;
    height:100%;
            background-color: transparent;
        color: currentColor;
    display:flex;
  }
}

.tile-modal__close {
    position: absolute;
    top: 1rem;
    right: 1rem;
    padding: 0;
    background: transparent;
    width: 2rem;
    color:currentColor;
    pointer-events:auto;
}

.tile-modal__dialog .tile-modal__close {
  color:#000;
  z-index: 20;
  pointer-events: auto;
  background: transparent;
  border: 0;
  box-shadow: none;
  outline: none;
  appearance: none;
  -webkit-appearance: none;
}

.tile-modal__dialog .tile-modal__close:hover,
.tile-modal__dialog .tile-modal__close:focus,
.tile-modal__dialog .tile-modal__close:focus-visible,
.tile-modal__dialog .tile-modal__close:active {
  background: transparent;
  border: 0;
  box-shadow: none;
  outline: none;
}

.tile-modal--faqteam .tile-modal__close {
  top: .5rem;
  right: .5rem;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--neutral-800);
  background: transparent;
  border: 0;
  opacity: .82;
  z-index: 4;
  transition: opacity .2s ease;
}

.tile-modal--faqteam .tile-modal__close:hover,
.tile-modal--faqteam .tile-modal__close:focus,
.tile-modal--faqteam .tile-modal__close:active {
  background: transparent;
  border-color: transparent;
  opacity: 1;
}

.tile-modal--faqteam .tile-modal__body {
  position: relative;
  padding: 0;
  width: min(720px, 92vw);
  margin: 0 auto;
  background: #fff;
  border-radius: var(--radius-xl);
  overflow: hidden;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: contain;
  scrollbar-width: none;
  -ms-overflow-style: none;
  max-height: min(88dvh, 800px);
  height: 88dvh;
}

.tile-modal--faqteam .tile-modal__container {
  height: auto;
  max-height: none;
  overflow: visible;
  padding: 0;
  background: transparent;
  border-radius: 0;
  position: relative;
}

.tile-modal--faqteam .tile-modal__scroll-wrap {
  pointer-events: auto;
  max-height: 100%;
  height: 100%;
  overflow-y: auto;
  overflow-x: hidden;
  padding: 2rem;
}

.tile-modal--faqteam .tile-modal__close svg {
  width: 1.75rem;
  height: 1.75rem;
  mix-blend-mode: difference;
}

.tile-modal__close svg {
      display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1;
}

html.tile-modal-open,
html.tile-modal-open body {
  overflow: visible;
  overscroll-behavior: auto;
}

.header-mobile-trigger {
  padding:0 var(--space-xl);
}

/* ---- Safari-safe: ensure the carousel has width + a real height ---- */
.cta-carousel-stats__media.splide {
  width: 100%;
  /* Force a real box even before images load */
  aspect-ratio: 1 / 1;     /* modern + Safari OK */
  height: auto;
  min-width: 0;            /* important inside flex */
}

/* Make the internals inherit the square height */
.cta-carousel-stats__media.splide .splide__track,
.cta-carousel-stats__media.splide .splide__list,
.cta-carousel-stats__media.splide .splide__slide,
.cta-carousel-stats__media.splide .cta-carousel-stats__figure {
  height: 100%;
}

/* Ensure images actually fill the square */
.cta-carousel-stats__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}


.cta-split__col--left { min-width: 0; }

/* Home partners: collapse the lead-networking-partner mount when no partner is set
   (the mount stays empty until the footer clone lands, so :empty = nothing to show). */
.paw2027-home-lead-partner:has([data-lead-partner-mount]:empty) { display: none; }

/* CTA split with no left content (e.g. the home "Partner with us" band with an empty
   left column) — centre the button instead of letting justify-between push it right.
   :not(:has(.cta-split__col--left > *)) matches when the left column has no element
   child (whitespace-only). NB :has() can't be nested inside :has(), so the emptiness
   test lives inside :not(), not inside an outer :has(). Hide the empty column and
   centre the remaining one so the button lands dead-centre, not just the flex group. */
.cta-split:not(:has(.cta-split__col--left > *)) .cta-split__inner { justify-content: center; }
.cta-split:not(:has(.cta-split__col--left > *)) .cta-split__col--left { display: none; }
.cta-split:not(:has(.cta-split__col--left > *)) .cta-split__col--right { text-align: center; }
.cta-split:not(:has(.cta-split__col--left > *)) .cta-split__actions { justify-content: center; }

/* Travel → Accommodation split feature: editable media left, copy + CTA right. */
.paw2027-accomodation .content-wrapper { padding-bottom: clamp(3rem, 7vw, 6rem); }

/* Travel section is the last block in <main>; give it real breathing room before
   the dark footer band. */
.paw2027-travel { padding-bottom: clamp(4rem, 8vw, 7rem); }
.accom-split {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: start;
  margin-top: clamp(2rem, 5vw, 3.5rem);
}
.accom-split__media {
  position: relative;
  aspect-ratio: 16 / 11;
  border-radius: 18px;
  overflow: hidden;
  background: var(--neutral-800, #1d283a);
}
.accom-split__media img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}
.accom-split__body { max-width: 48ch; }
.accom-split__copy p { margin: 0 0 1rem; }
.accom-split__copy p:last-child { margin-bottom: 0; }
/* Give the CTA room to breathe and read as the clear next step. */
.accom-split__cta { margin-top: clamp(1.75rem, 4vw, 2.5rem); }

@media (max-width: 820px) {
  .accom-split { grid-template-columns: 1fr; gap: 1.75rem; margin-top: 2rem; }
  .accom-split__media { aspect-ratio: 16 / 9; }
  .accom-split__body { max-width: none; }
}

/* Travel cards read too tight — open up the body line-height. Plain text
   (no inline styles), so a normal rule wins. Scoped to this template so the
   shared type scale (used by every other page) is left untouched. */
[data-template="travel"] .paw2027-travel .t-body,
[data-template="travel"] .paw2027-travel .t-body-lg {
  line-height: 1.6;
}

/* Accommodation copy is edited in-page; the WYSIWYG bakes an inline
   `line-height: 20px` onto every line (and emits <div>, not <p>). Inline
   styles can only be beaten by !important — kept tightly scoped to this
   one copy block. If the content is ever cleaned/reset in the editor this
   still applies harmlessly. */
[data-template="travel"] .paw2027-accomodation .accom-split__copy,
[data-template="travel"] .paw2027-accomodation .accom-split__copy p,
[data-template="travel"] .paw2027-accomodation .accom-split__copy div {
  line-height: 1.6 !important;
}


/* FAQ summary layout */

.faq-team__list {
display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.faq-team__item {
    padding: var(--space-md) var(--space-xxl) var(--space-md) var(--space-xl);
    border: 1px solid var(--color-border);
    border-radius: var(--radius);
}


.faq-team__q-text {
  font-size:var(--font-size-h3);
}

.faq-team__a {
font-size: var(--font-size-h4);
    padding-right: 6rem;
     color:var(--neutral-700);
  margin-top: var(--space-xxs);
  margin-bottom: var(--space-xxs);
}

.faq-team__a a {
  background-color:var(--green-600);
  text-decoration:underline;
}

.faq-team__q {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  list-style: none; /* helps some browsers */
    cursor:pointer;
}

.faq-team__item:not([open]):hover {
  background-color: var(--neutral-50);
}

.faq-team__item[open] .faq-team__q {
  font-weight:600;
  color:var(--green-900);
}


/* Remove default disclosure marker */
.faq-team__q::-webkit-details-marker { display: none; }
.faq-team__q::marker { content: ""; }

/* Keep icon from shrinking */
.faq-team__toggle-icon { flex: 0 0 auto; }

/* Rotate when open */
.faq-team__item .toggle-svg {
  display: block;
  width: 2rem;
  transition: transform .5s ease;
}

.faq-team__item .icon-bg {
  fill:var(--green-800);
  transition:fill .5s ease;
}

.faq-team__item .icon-arrow {
  fill:var(--green-100);
  transition:fill .5s ease;
}

.faq-team__item[open] .icon-bg {
  fill:var(--green-100);
}

.faq-team__item[open] .icon-arrow {
  fill:var(--green-800);
}

.faq-team__item[open] {
  background-color:var(--neutral-100);
}

.faq-team__item[open] .toggle-svg {
  transform: rotate(180deg);
}

details {
  border: 0;
}

summary {
  list-style: none;      /* removes marker in Firefox */
  border: 0;
  outline: none;
}

/* Remove marker (Chrome / Safari) */
summary::-webkit-details-marker {
  display: none;
}

/* Remove focus ring if browser adds one */
summary:focus {
  outline: none;
}

.tile-modal-sm .tile-modal__header {
  display:flex;
  justify-content:center;
  padding: 0 0 2rem;
}

.tile-modal__dialog {
  pointer-events:none;
}

.tile-modal--faqteam .tile-modal__body {
  pointer-events: auto;
}

.tile-modal--faqteam .tile-modal__close,
.tile-modal--faqteam .tile-modal__scroll-wrap {
  pointer-events: auto;
}

.faqteam__enquiry-row {
  display:grid;
      grid-template-columns: 1fr 1.5fr;
    gap: 1rem;
    align-items: center;
    text-wrap: balance;
    padding: var(--space-xxs) 0;
}

.faqteam__views {
  position: relative;
  overflow: hidden;
  transition: min-height .35s ease;
}

.faqteam {
  position: relative;
}

.faqteam__view {
  width: 100%;
  transition: transform .35s ease, opacity .25s ease;
}

.faqteam__view--list {
  position: relative;
  transform: translateX(0);
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  z-index: 2;
}

.faqteam__view--form {
  position: absolute;
  inset: 0;
  transform: translateX(100%);
  opacity: 0;
  pointer-events: none;
  visibility: hidden;
  z-index: 1;
}

.faqteam__views.is-form-active .faqteam__view--list {
  position: absolute;
  inset: 0;
  transform: translateX(-100%);
  opacity: 0;
  pointer-events: none;
  visibility: hidden;
  z-index: 1;
}

.faqteam__views.is-form-active .faqteam__view--form {
  position: relative;
  inset: auto;
  transform: translateX(0);
  opacity: 1;
  pointer-events: auto;
  visibility: visible;
  z-index: 2;
}

.tile-modal--faqteam:not(.tile-modal--open) .faqteam__views.is-form-active .faqteam__view--form {
  pointer-events: none;
}

.faqteam__back {
  appearance: none;
  border: 0;
  background: transparent;
  color: var(--neutral-700);
  font-weight: 700;
  cursor: pointer;
  padding: 0;
  margin: 0 0 var(--space-md);
}

.faqteam__view-controls {
  display: flex;
  align-items: center;
  justify-content: flex-start;
  gap: var(--space-md);
}

.faqteam__title--form {
  margin-bottom: var(--space-sm);
}

.faqteam__form-note {
  margin-bottom: var(--space-md);
  color: var(--neutral-700);
}

.faqteam__form-inner {
  position: relative;
  padding: 0;
  min-height: 380px;
  background: var(--neutral-100);
  border-radius: var(--radius);
  margin-bottom: var(--space-xxs);
  overflow: hidden;
}

.faqteam__form-inner iframe {
  max-width: 100%;
}

.faqteam__form-skeleton {
  display: none;
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.55) 45%, rgba(255,255,255,0) 100%),
    var(--neutral-200);
  background-size: 200% 100%, 100% 100%;
  animation: faqteamShimmer 1.15s linear infinite;
  pointer-events: none;
}

.faqteam__form-status {
  display: none;
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%);
  margin: 0;
  padding: .6rem 1rem;
  border-radius: 999px;
  background: rgba(16, 16, 16, .78);
  color: #fff;
  font-size: var(--fs-sm);
  z-index: 3;
  pointer-events: none;
}

@keyframes faqteamShimmer {
  0% { background-position: 200% 0, 0 0; }
  100% { background-position: -200% 0, 0 0; }
}

.faqteam__view--form.is-loading {
  cursor: progress;
}

.faqteam__view--form.is-loading .faqteam__form-target {
  opacity: .35;
  pointer-events: none;
}

.faqteam__view--form.is-loading .faqteam__form-skeleton {
  display: block;
}

.faqteam__view--form.is-loading .faqteam__form-status {
  display: inline-flex;
}

.faqteam__form-success {
  margin: var(--space-sm) 0 0;
  padding: .625rem .875rem;
  border-radius: 999px;
  background: rgba(193, 244, 0, 0.18);
  color: var(--neutral-900);
  font-size: var(--fs-sm);
  line-height: 1.3;
}

.faqteam__form-success.is-pending {
  background: rgba(120, 134, 160, 0.18);
}

.faqteam__view--form.is-submitted .faqteam__form-inner,
.faqteam__view--form.is-submitted .faqteam__form-success {
  display: none;
}

.faqteam__submitted {
  margin-top: var(--space-md);
  background: var(--neutral-200);
  border-radius: var(--radius);
  padding: var(--space-xl);
}

.faqteam__submitted-title {
  margin: 0 0 var(--space-sm);
  font-size: var(--fs-h3);
  line-height: 1.2;
}

.faqteam__submitted-copy {
  margin: 0 0 var(--space-lg);
  color: var(--neutral-700);
}

.faqteam__submit-another {
  width: 100%;
}

.faqteam__close-form {
  margin-top: var(--space-sm);
}

.faqteam__meta {
  line-height:1;
}

.faqteam__subhead {
    font-size: var(--fs-h4);
  margin: var(--space-xl) 0;
}

.faqteam__name,
.faqteam__subhead {
    font-weight: bold;
}

.faqteam__name,
.faqteam__role,
.faqteam__email {
  margin:0;
}

.faqteam__role {
  text-wrap: balance;
}

.faqteam__name {
    font-size: var(--fs-h5);
  margin-top:var(--space-sm);
  margin-bottom:var(--space-xxs);
  line-height:1;
}

.faqteam__role,
.faqteam__email {
  font-size:var(--font-size-caption-s);
  line-height: 1.2;
}

.faqteam__avatar img {
      aspect-ratio: 1 / 1;
    border-radius: var(--radius-xxl);
}

.faqteam__avatar {
        aspect-ratio: 1 / 1;
border-radius: var(--radius-xxl);
    overflow: hidden;
}

@media (max-width: 767px) {
  .faqteam__enquiry-row {
    grid-template-columns: 1fr;
  }

  .faqteam__enquiry-cta .btn {
    width: 100%;
  }

  .faqteam__view--form {
    position: absolute;
    inset: 0;
  }

  .tile-modal--faqteam .tile-modal__close {
    top: .375rem;
    right: .375rem;
    width: 2.5rem;
    height: 2.5rem;
  }

  .tile-modal--faqteam .tile-modal__scroll-wrap {
    max-height: min(84svh, 720px);
    height: auto;
    padding: 1.5rem 1rem 1rem;
  }

  .tile-modal--faqteam .tile-modal__body {
    max-height: min(84svh, 720px);
    height: auto;
    padding: 0;
    overflow: hidden;
  }

}

@media (max-width: 767px) and (orientation: portrait) {
  .tile-modal--faqteam .tile-modal__dialog {
    justify-content: flex-end;
  }

  .tile-modal--faqteam .tile-modal__body {
    width: 100vw;
    max-width: none;
    margin: 0;
    height: 80svh;
    max-height: 80svh;
    border-radius: var(--radius-xl) var(--radius-xl) 0 0;
    overflow: hidden;
  }

  .tile-modal--faqteam .tile-modal__scroll-wrap {
    height: 100%;
    max-height: 100%;
    padding: 1.25rem 1rem calc(1rem + env(safe-area-inset-bottom));
  }

  .tile-modal--faqteam .tile-modal__body {
    padding: 0;
  }
}


/* Allow text selection inside informational blocks */
.splide__slide .is-selectable,
.splide__slide .is-selectable * {
  user-select: text;
  -webkit-user-select: text;
  -ms-user-select: text;
  cursor: text;
}

.tile-modal__content {
  background-color:#fff;
  display: grid;
  height: 100%;
  border-radius: var(--radius-xl);
  overflow: auto;
  grid-template-columns: 0.5fr 1fr;
  gap: 2rem;
  padding: 2rem;
}

@media (max-width:1024px){
  .tile-modal__content {
    grid-template-columns: 0.64fr 1fr;
    gap: var(--radius-xl);
  }
}

@media (max-width:600px){
  .splide__arrows {
    opacity:0;
  }
  
  .tile-modal__splide .splide__slide {
        max-height: none;
  }
  
  .tile-modal__content {
    grid-template-columns: 1fr;
    gap: var(--radius-xl);

    /* Pack the rows to the top. The container is `height: 100%` (the white card
       has to fill the slide), and a grid's default align-content of `normal`
       behaves as `stretch` - so once this becomes a single column, the leftover
       height is shared out between the two auto rows instead of being left at
       the bottom. Measured on the Matt Doyle slide at 470px: the photo row was
       sized 507.8px for 368.6px of content, dropping the name 154px below the
       portrait. `start` sizes both rows to their content and the name sits
       under the photo, separated by the row gap alone.
       Only needed here - above 600px the grid is two columns (photo beside the
       text) and the rows should keep stretching. */
    align-content: start;
  }
  
  .tile-modal__text  {
    padding-top:0;
  }

  .faq-team__a {
    padding-right:1rem;
  }
}

.tile-modal__text {
  padding-right:2rem;
}

.tile-modal__text .tile-modal__title {
  margin-top: 0;
  margin-bottom: .25rem;
  font-family: var(--font-heading);
  font-size: clamp(2.1rem, 2.7vw, 3.15rem);
  line-height: .98;
  font-weight: 700;
  letter-spacing: -0.04em;
  text-wrap: balance;
  padding-bottom: 0;
}

.tile-modal__subtitle {
  padding-bottom: 0;
  font-family: var(--font-body);
  font-size: clamp(1.05rem, 1.15vw, 2rem);
  line-height: 1.22;
  font-weight: 600;
  color: var(--neutral-900);
  text-wrap: balance;
}

.tile-modal__company {
  margin: 0;
  padding-bottom: 0;
  font-family: var(--font-body);
  font-size: clamp(0.98rem, 1vw, 1.1rem);
  line-height: 1.22;
  font-weight: 400;
  color: var(--neutral-800);
  text-wrap: balance;
}

.tile-modal__text .tile-modal__subtitle + .tile-modal__company {
  margin-top: -0.25rem;
}

.tile-modal__text .tile-modal__subtitle + .tile-modal__company,
.tile-modal__text .tile-modal__company + .tile-modal__body-text {
  margin-top: 0.6rem;
}

.tile-modal__body-text {
  font-size: 1rem;
  line-height: 1.7;
  color: var(--neutral-800);
}

.tile-modal__text .tile-modal__body-text {
  padding-top: 0;
}

.tile-modal__empty-state {
  margin-top: 1rem;
  max-width: 32rem;
  padding: 0;
  border: 0;
  background: transparent;
  color: var(--neutral-500);
  box-shadow: none;
  text-align: left;
}

.tile-modal__empty-state-text {
  margin: 0;
  font-size: 1rem;
  line-height: 1.55;
  text-wrap: balance;
}

.tile-modal__slide--speaker .tile-modal__text .tile-modal__title {
  font-size: 2.5rem;
  margin-bottom: .75rem;
}

.tile-modal__slide--speaker .tile-modal__text .tile-modal__company {
  margin-top: .15rem;
  font-size: clamp(1.15rem, 1.35vw, 1.45rem);
  line-height: 1.18;
  font-weight: 600;
  color: var(--neutral-800);
}

.tile-modal__slide--speaker .tile-modal__text .tile-modal__subtitle {
  font-size: clamp(.92rem, .95vw, 1.05rem);
  line-height: 1.15;
  font-weight: 600;
  margin-bottom: .25rem;
  color: var(--neutral-600);
}

.tile-modal__slide--partner .tile-modal__text .tile-modal__title {
  margin-top: 3rem;
  margin-bottom: 1rem;
  font-size: 2.5rem;
}

.tile-modal__slide--speaker .tile-modal__sidebar,
.tile-modal__slide--partner .tile-modal__sidebar {
  position: sticky;
  top: 0;
  display: flex;
  flex-direction: column;
  gap: 1rem;
  align-self: flex-start;
}

.tile-modal__slide--speaker .tile-modal__sidebar-stack {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding:0rem 1rem;
}

.tile-modal__slide--speaker .tile-modal__media,
.tile-modal__slide--partner .tile-modal__media {
  position: static;
}

.tile-modal__media img {
  width:100%;
}

.tile-modal__sidebar-cta {
  display: flex;
  align-items: center;
  gap: .75rem;
  width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  text-align: left;
  color: var(--neutral-800);
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}

.tile-modal__sidebar-cta:hover,
.tile-modal__sidebar-cta:focus,
.tile-modal__sidebar-cta:focus-visible,
.tile-modal__sidebar-cta:active {
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  outline: none;
  color: var(--green-800);
}

.tile-modal__sidebar-cta-logo {
  flex: 0 0 4.75rem;
  width: 100%;
  height: auto;
  aspect-ratio:1;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background-color: transparent;
  box-shadow: 0 0 0 1px rgba(0, 0, 0, .05), 0 4px 10px rgba(0, 0, 0, .06);
    padding: .32rem;
}

.tile-modal__sidebar-cta-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  object-position: center;
}

.tile-modal__sidebar-cta-img.is-square {
  object-fit: contain;
  object-position: center;
}

.tile-modal__sidebar-cta-img.is-portrait {
  object-fit: contain;
  object-position: center;
  padding: .2rem .35rem;
}

.tile-modal__sidebar-cta-img.is-landscape {
  object-fit: contain;
  object-position: center;
  padding: .25rem .15rem;
}

.tile-modal__sidebar-cta-copy {
  display: flex;
  flex-direction: column;
  gap: .1rem;
  min-width: 0;
}

.tile-modal__sidebar-cta-kicker {
  font-size: .78rem;
  line-height: 1.1;
  font-weight: 500;
  color: var(--neutral-600);
}

.tile-modal__sidebar-cta-name {
  font-size: .98rem;
  line-height: 1.2;
  font-weight: 700;
  color: var(--neutral-800);
  text-decoration: underline;
  text-underline-offset: .15em;
}

.tile-modal__slide--speaker .tile-modal__img,
.tile-modal__slide--partner .tile-modal__img {
    position: static;
}

.tile-modal__slide--partner .tile-modal__related {
  padding:0;
}

.tile-modal__slide--partner .tile-modal__sidebar-stack--partner {
  display: flex;
  flex-direction: column;
  gap: 1rem;
  padding: 0rem 1rem 1rem;
}

@media (max-width: 767px) {
  .tile-modal__slide--speaker .tile-modal__sidebar,
  .tile-modal__slide--partner .tile-modal__sidebar {
    position: static;
    top: auto;
  }

  .tile-modal__slide--speaker .tile-modal__sidebar-stack,
  .tile-modal__slide--partner .tile-modal__sidebar-stack--partner {
    padding-left: 0;
    padding-right: 0;
  }
}

.tile-modal__slide--partner .tile-modal__related-label {
  margin: 0 0 .75rem;
  font-size: .75rem;
  line-height: 1;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--neutral-500);
}

.tile-modal__slide--partner .tile-modal__related-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: .75rem;
}

.tile-modal__related-item {
  margin: 0;
}

.tile-modal__related-card {
  display: flex;
  align-items: center;
  gap: .75rem;
  width: 100%;
  padding: 0;
  border: 0;
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  text-align: left;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}

.tile-modal__agenda {
  display: block;
}

.tile-modal__agenda[hidden] {
  display: none;
}

.tile-modal__agenda-label {
  margin: 0 0 .75rem;
  font-size: .75rem;
  line-height: 1;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--neutral-500);
}

.tile-modal__agenda-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 1rem;
}

.tile-modal__agenda-group {
  margin: 0;
}

.tile-modal__agenda-date {
  margin: 0 0 .5rem;
  font-size: .78rem;
  line-height: 1.1;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  color: var(--neutral-700);
}

.tile-modal__agenda-group-list {
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: .75rem;
}

.tile-modal__agenda-item {
  margin: 0;
}

.tile-modal__agenda-card {
  display: flex;
  flex-direction: column;
  gap: .15rem;
  padding-left: .75rem;
  border-left: .35rem solid var(--green-500);
}

.tile-modal__agenda-time {
  margin: 0;
  font-size: .86rem;
  line-height: 1.2;
  letter-spacing: .02em;
  text-transform: uppercase;
  font-weight: 600;
  color: var(--neutral-600);
}

.tile-modal__agenda-title {
  margin: 0;
  font-size: .98rem;
  line-height: 1.25;
  font-weight: 600;
  color: var(--green-800);
}

.tile-modal__agenda-speaker {
  margin: .1rem 0 0;
  font-size: .85rem;
  line-height: 1.25;
  font-weight: 500;
  color: var(--neutral-600);
}

.tile-modal__agenda-body {
  display: grid;
  gap: 2rem;
  margin-bottom: 1.5rem;
}

.tile-modal__agenda-body--speaker {
  margin-top: 1.5rem;
  margin-bottom: 1rem;
}

.tile-modal__agenda-body--speaker .tile-modal__agenda-body {
  margin-bottom: 0rem;
}

.tile-modal__agenda-body--speaker .tile-modal__agenda-body-content {
  margin-bottom: 1rem;
}

.tile-modal__agenda-body-item {
  display: grid;
  gap: .35rem;
}

.tile-modal__agenda-body-head {
  margin: 0;
  display: flex;
  flex-wrap: wrap;
  align-items: baseline;
  gap: .35rem .5rem;
  font-size: .95rem;
  line-height: 1.35;
}

.tile-modal__agenda-body-content {
  display: grid;
  gap: .35rem;
  padding-left: .85rem;
  border-left: .35rem solid var(--green-800);
}

.tile-modal__agenda-body-title {
  font-weight: 700;
  color: var(--green-800);
  line-height: 1.15;
}

.tile-modal__agenda-body-time,
.tile-modal__agenda-body-date {
  font-weight: 500;
  color: var(--neutral-600);
}

.tile-modal__agenda-body-sep {
  color: var(--neutral-400);
  font-weight: 500;
}

.tile-modal__agenda-body-speaker {
  margin: 0 0 .5rem;
  font-size: .95rem;
  line-height: 1.25;
  font-weight: 500;
  color: var(--neutral-600);
}

.tile-modal__agenda-body-desc {
  font-size: 1rem;
  line-height: 1.64;
  color: var(--neutral-800);
  margin-top:.25rem;
}

.tile-modal__agenda-body-speaker-card {
  display: flex;
  align-items: flex-start;
  gap: .9rem;
  margin-top: .75rem;
  padding: .9rem 1rem;
  border: 1px solid rgba(0, 0, 0, .08);
  border-radius: var(--radius-lg);
  background: var(--neutral-50);
}

.tile-modal__agenda-body-speaker-card.is-repeated .tile-modal__agenda-body-speaker-media {
  flex-basis: 4rem;
  width: 4rem;
  height: 4rem;
}

.tile-modal__agenda-body-speaker-card.is-repeated {
  align-items: center;
}

.tile-modal__agenda-body-speaker-media {
  flex: 0 0 8rem;
  width: 8rem;
  height: 8rem;
  border-radius: var(--radius-md);
  overflow: hidden;
  background: var(--neutral-100);
}

.tile-modal__agenda-body-speaker-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tile-modal__agenda-body-speaker-copy {
  min-width: 0;
  display: grid;
  gap: .2rem;
  flex: 1;
}

.tile-modal__agenda-body-speaker-name {
  margin: 0;
  font-size: .9rem;
  line-height: 1.2;
  font-weight: 600;
  color: var(--neutral-900);
}

.tile-modal__agenda-body-speaker-role {
  margin: 0;
  font-size: .85rem;
  line-height: 1.2;
  color: var(--neutral-600);
}

.tile-modal__agenda-body-speaker-excerpt {
  margin: .25rem 0 0;
  font-size: .95rem;
  line-height: 1.55;
  color: var(--neutral-700);
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.tile-modal__agenda-body-speaker-link {
  justify-self: start;
  padding: 0;
  border: 0;
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  color: var(--green-800);
  font-size: .85rem;
  line-height: 1.2;
  font-weight: 600;
  cursor: pointer;
  appearance: none;
  -webkit-appearance: none;
}

.tile-modal__agenda-body-speaker-link:hover,
.tile-modal__agenda-body-speaker-link:focus,
.tile-modal__agenda-body-speaker-link:focus-visible,
.tile-modal__agenda-body-speaker-link:active {
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  outline: none;
  color: var(--green-800);
  text-decoration: underline;
  text-underline-offset: .15em;
}

.tile-modal__agenda-body-desc p {
  margin: 0;
}

.tile-modal__agenda-desc {
  margin: .15rem 0 0;
  font-size: .82rem;
  line-height: 1.4;
  color: var(--neutral-600);
}

.tile-modal__agenda-meta {
  margin: .1rem 0 0;
  font-size: .78rem;
  line-height: 1.35;
  color: var(--neutral-600);
}

.tile-modal__agenda-meta-label {
  font-weight: 600;
  color: var(--neutral-700);
}

.tile-modal__related-media {
  flex: 0 0 3.25rem;
  width: 3.25rem;
  height: 3.25rem;
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--neutral-100);
}

.tile-modal__related-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.tile-modal__related-copy {
  min-width: 0;
}

.tile-modal__related-name {
  margin: 0;
  font-size: 1rem;
  line-height: 1.2;
  font-weight: 600;
  color: var(--neutral-800);
}

.tile-modal__related-role,
.tile-modal__related-company {
  margin: .15rem 0 0;
  font-size: .85rem;
  line-height: 1.2;
  font-weight: 400;
  color: var(--neutral-600);
}

.tile-modal__related-action {
  margin-top: 0;
  color: var(--neutral-800);
  font-size: .9rem;
  line-height: 1.2;
  font-weight: 600;
}

.tile-modal__related-action:hover,
.tile-modal__related-action:focus,
.tile-modal__related-action:focus-visible,
.tile-modal__related-action:active {
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  outline: none;
  color: var(--green-800);
  text-decoration: none;
}

.tile-modal__link-btn {
  padding: 0;
  border: 0;
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  color: var(--neutral-800);
  cursor: pointer;
  text-align: left;
  appearance: none;
  -webkit-appearance: none;
}

.tile-modal__link-btn:hover,
.tile-modal__link-btn:focus,
.tile-modal__link-btn:focus-visible,
.tile-modal__link-btn:active {
  background: transparent;
  background-color: transparent;
  box-shadow: none;
  outline: none;
  color: var(--green-800);
  text-decoration: underline;
  text-underline-offset: 0.15em;
}

.tile-modal__close-layer {
  position: absolute;
  top: 50%;
  left: 50%;
  width: var(--tile-modal-close-layer-width);
  height: var(--tile-modal-close-layer-height);
  transform: translate(-50%, -50%);
  pointer-events: none;
  z-index: 7;
}

.tile-modal__close-anchor {
  position: relative;
  width: 100%;
  height: 100%;
  pointer-events: none;
}

@media (min-width:601px){
  .tile-modal__splide .splide__arrows {
    z-index: 6;
  }

  .tile-modal__splide .splide__arrow {
    width: 3.5rem;
    height: 3.5rem;
    border: 1px solid rgba(0, 0, 0, 0.12);
    background: var(--green-500);
    color: #000;
    box-shadow: 0 12px 30px rgba(0, 0, 0, 0.28);
    opacity: 0.96;
    transition:
      transform 0.2s ease,
      opacity 0.2s ease,
      background-color 0.2s ease,
      box-shadow 0.2s ease;
  }

  .tile-modal__splide .splide__arrow:hover:not(:disabled),
  .tile-modal__splide .splide__arrow:focus,
  .tile-modal__splide .splide__arrow:focus-visible {
    transform: translateY(-50%) scale(1.04);
    opacity: 1;
    background: var(--green-400);
    box-shadow: 0 16px 36px rgba(0, 0, 0, 0.36);
  }

  .tile-modal__splide .splide__arrow:focus,
  .tile-modal__splide .splide__arrow:focus-visible {
    outline: 2px solid var(--green-800) !important;
    outline-offset: 0 !important;
  }

  .tile-modal__splide .splide__arrow:disabled {
    opacity: 0.5;
  }

  .tile-modal__splide .splide__arrow svg {
    width: 1.45rem;
    height: 1.45rem;
    fill: currentColor;
  }

  .tile-modal__splide .splide__arrow--prev {
    left: calc(50% - min(var(--tile-modal-slide-width), 88vw) / 2 - 2.75rem);
  }

  .tile-modal__splide .splide__arrow--next {
    right: calc(50% - min(var(--tile-modal-slide-width), 88vw) / 2 - 2.75rem);
  }

}

@media (max-width:600px){
  .agenda__stage-title {
    font-size:2rem;
    word-break: normal;
    overflow-wrap: normal; /* aka word-wrap */
    hyphens: none;
  }
  
}

@media (max-width:480px){
  .agenda__stage {
    border-left-width:1rem;
  }
  
  .agenda__stage-title {
    font-size:1.5rem;
            padding-right: 2.5rem;
 }
  
  .agenda__stage-toggle-icon svg {
    width:2rem;
    
  }
}

.tile-modal__nav-content iframe {
  width:100%;
}

.contact-cta__avatar {
  background-size: cover;
  aspect-ratio: 1;
  width: 100%;
  border-radius: 1rem;
  margin-bottom: 1rem;
}


/* Ticket pricing/form parity block synced from citywire-theme-v2 */
.kl-pricing__badge {
  background-color: var(--color-primary);
  font-size: 1rem;
}


[data-template="ticket"] .lead-section__body {
 padding-bottom: 0;
    font-size: 1.2rem;
}


[data-template="ticket"] .kl-pricing__card {
  align-self:stretch;
}
  
.kl-pricing__price {
    color: var(--neutral-900);  
}

.kl-pricing__card >h4 {
  font-weight:bold;
      font-size: var(--font-size-h3);
    max-width: 11ch;
    margin: 1rem auto 1rem;
    line-height: 1.2;
 padding-bottom: 0;
}

.kl-pricing__card {
    margin-left: 1rem;
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    text-wrap: balance;
  padding-bottom: 2.5rem;
}

.kl-pricing__button button {
  width:100%;
  font-size: 1rem;
}

.kl-pricing__features {
  margin: 0 0 1.625rem;
}

.kl-pricing__button .button--outlined:hover {
  color: #fff;
}


.kl-pricing-formview__back {
  background-color:transparent;
  color:currentColor;
      padding: 0;
    opacity: .7;
    margin-bottom: 2rem;
}

.kl-pricing-formview__back:hover {
  background-color:transparent;
    color:currentColor;
  text-decoration:underline;
}

.kl-pricing-formview__title {
    font-size: var(--font-size-h2);
    text-align: center;
    margin: 0rem 0 2rem;
}

.kl-pricing-formview__panel {
padding: 2rem;
    background: var(--neutral-100);
    border: 1px solid var(--border);
    border-radius: var(--radius-xl);
}

.kl-pricing-formview__panel [data-hsfc-id=Renderer] .hsfc-Form,
.kl-pricing-formview__panel [data-hs-cos-type="form"] {
background-color: #fff;
    display: block;
    border-radius: var(--radius);
  max-width: 860px;
    margin: 0 auto;
}

.kl-pricing-formview__panel [data-hs-cos-type="form"] {
  padding:2rem 4rem 3rem;
}

.kl-pricing-formview__panel .hs-button {
    background-color: var(--btn-bg);
    border: var(--btn-bg);
    border-radius: var(--btn-radius);
    color: var(--btn-fg);
    padding: var(--btn-padding-vertical) var(--btn-padding-horizontal);
    font-family: var(--font-body);
    font-size: 0.8rem;
    font-weight: bold;
    display: inline-block;
    width: auto;
    height: auto;
    margin: 0;
    cursor: pointer;
    line-height: 1.1;
    white-space: normal;
    word-break: break-word;
    text-align: center;
    text-decoration: none;
    position: relative;
}

.kl-pricing-formview__panel .hs-button:hover {
background-color: var(--btn-hover-bg);
    border-color: var(--btn-hover-bg);
    color: var(--btn-hover-fg);
    text-decoration: none;
    transform: scale(1.05);
      outline-color: var(--btn-bg);
}

@media (max-width:600px){
  .kl-pricing-formview__panel {
    background-color:#fff;
  }
  
  .kl-pricing-wrap {
    --hsf-default-background__padding:1rem;
  }
  
  .kl-pricing-formview__panel [data-hs-cos-type="form"] {
    padding: 1rem 1rem 1rem;
  }
  .listing_hero-v01-row-0-padding {
    padding:0;
  }
  
  .kl-pricing-formview__panel {
    padding-left:0;
    padding-right:0;
  }
  
  .kl-pricing-formview__title {
    margin:0;
    font-size:var(--font-size-h1);
  }
  
  .kl-pricing-wrap [data-hsfc-id=Renderer] .hsfc-Row {
        display: flex;
    flex-direction: column;
  }
}

/* Temporary promo test: gated by ?promo=true in 2026-paw.js */
.promo-ribbon[hidden],
.promo-modal[hidden] {
  display: none !important;
}

.promo-ribbon {
  position: absolute;
  top: 100%;
  left: 0;
  right: 0;
  z-index: 501;
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 1rem;
  min-height: 2.75rem;
  padding: 0.6rem var(--gutter);
  background: var(--color-primary);
  color: var(--color-on-primary);
  font-weight: 800;
  text-align: center;
  text-decoration: none;
  text-transform: uppercase;
  letter-spacing: 0;
  box-shadow: 0 0.85rem 1.35rem rgba(0, 0, 0, 0.22);
  outline:0;
}

.promo-ribbon:hover {
  color: var(--color-on-primary);
  text-decoration: none;
  background: var(--color-primary-hover);
}

.promo-ribbon__label,
.promo-ribbon__cta {
  line-height: 1.2;
}

.promo-ribbon__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0.35rem 0.75rem;
  border: 1px solid currentColor;
  border-radius: 999px;
  font-size: 0.75rem;
  white-space: nowrap;
}

.promo-ribbon__divider {
  flex-shrink: 0;
  opacity: 0.45;
}

.promo-ribbon__ticker {
  overflow: hidden;
  /* Wide enough for a ~60 character message to be readable in one glance
     instead of arriving a fragment at a time; flex-shrink keeps it safe when
     the label or CTA is longer. Only applies above 1280px - the ticker is
     hidden below that, where it cannot animate. */
  max-width: 36rem;
  flex: 0 1 36rem;
  font-weight: 600;
}

.promo-ribbon__ticker-track {
  display: inline-flex;
  align-items: center;
  gap: 1.25rem;
  white-space: nowrap;
  animation: promo-ticker 16s linear infinite;
}

.promo-ribbon__ticker-sep {
  opacity: 0.45;
}

@keyframes promo-ticker {
  0%   { transform: translateX(0); }
  100% { transform: translateX(-50%); }
}

.promo-ribbon:hover .promo-ribbon__ticker-track,
.promo-ribbon:focus-visible .promo-ribbon__ticker-track {
  animation-play-state: paused;
}

.promo-modal {
  position: fixed;
  inset: 0;
  z-index: 1200;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--gutter);
}

.promo-modal__backdrop {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.62);
}

.promo-modal__dialog {
  position: relative;
  z-index: 1;
  width: min(100%, 34rem);
  padding: clamp(2rem, 5vw, 3.25rem);
  border-radius: var(--radius-lg);
  background: var(--neutral-50);
  color: var(--neutral-900);
  text-align: center;
  box-shadow: 0 1.5rem 4rem rgba(0, 0, 0, 0.36);
}

.promo-modal__close {
  position: absolute;
  top: 0.75rem;
  right: 0.75rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2.25rem;
  height: 2.25rem;
  padding: 0;
  border: 0;
  border-radius: 999px;
  background: transparent;
  color: currentColor;
  font-size: 2rem;
  line-height: 1;
  cursor: pointer;
}

.promo-modal__close:hover {
  background: var(--neutral-400);
}

.promo-modal__eyebrow {
  margin: 0 0 0.75rem;
  color: var(--neutral-700);
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
}

.promo-modal__title {
  margin: 0;
  color: var(--neutral-900);
  font-size: clamp(2rem, 4vw, 3rem);
  line-height: 1.05;
}

.promo-modal__desc {
  margin: 1rem auto 1.5rem;
  max-width: 30rem;
  color: var(--neutral-700);
  font-size: 1rem;
  line-height: 1.5;
  text-wrap: balance;
}

.promo-modal__cta {
  display: inline-flex;
  text-decoration: none;
}

@media (max-width: 600px) {
  .promo-ribbon {
    flex-direction: column;
    gap: 0.35rem;
    padding-top: 0.75rem;
    padding-bottom: 0.75rem;
    font-size: 0.9rem;
  }

  .promo-ribbon__ticker,
  .promo-ribbon__divider {
    display: none;
  }

  /* The sticky header already shows an orange GET TICKETS directly above this
     bar, so the pill was the same call to action twice in a row. The whole
     ribbon is a link, so tapping the bar still goes to the tickets page. */
  .promo-ribbon__cta {
    display: none;
  }

  .promo-modal__dialog {
    padding: 2.5rem 1.25rem 1.5rem;
  }
}

@media (max-width: 1280px) {
  /* Remove compositor layer for closed modals on mobile — display:none takes
     the element out of the render tree entirely, eliminating GPU memory usage. */
  .tile-modal {
    transition: none;
  }
  .tile-modal:not(.tile-modal--open) {
    display: none;
  }

  /* Scroll lock: override the desktop overflow:visible rule.
     overflow:hidden on both html and body locks the scroll position in place on
     modern iOS/Android without resetting it (no position:fixed needed). */
  html.tile-modal-open,
  html.tile-modal-open body {
    overflow: hidden;
    overscroll-behavior: none;
  }

  .tile-modal__backdrop {
    background-color: rgba(18, 18, 18, 0.72);
    background-image: none;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
  }

  .tile-modal--speaker .tile-modal__backdrop,
  .tile-modal--partner .tile-modal__backdrop {
    opacity: 1;
    transition: none;
  }

  .tile-modal--speaker .tile-modal__body,
  .tile-modal--partner .tile-modal__body {
    opacity: 1;
    transition: none;
    will-change: auto;
  }

  .faqteam__views,
  .faqteam__view {
    transition: none;
  }

  .promo-ribbon__ticker-track {
    animation: none;
    transform: none;
  }

  /* The track is frozen at these widths, and the window is only 24rem, so a
     message longer than that would sit permanently cut off mid-word ("...AT EA"
     on a 1100px laptop). Drop the ticker entirely below the animating
     breakpoint - the headline carries the message and the CTA the action. */
  .promo-ribbon__ticker,
  .promo-ribbon__divider {
    display: none;
  }
}

.ceros-mobile-hero-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: flex-end;
  padding: clamp(1.5rem, 7vw, 2.75rem) var(--gutter);
  /* Chicago venue shot, matching the <dd>Hyatt Regency Chicago</dd> this sits
     behind. Was hubfs/image-4.png, which is the 2026 Luzern lakefront - carried
     over with the file and invisible until the crash guard was fixed on
     17 Sept 2026. Also 30x lighter: 138KB against 4.1MB, and 6.5MB decoded
     against 9.4MB, which matters because this element only ever renders on the
     mobile path we are trying to keep from running out of memory. */
  background:
    linear-gradient(180deg, rgba(0, 0, 0, 0.1), rgba(0, 0, 0, 0.38) 38%, rgba(0, 0, 0, 0.88)),
    url("https://site.citywire.com/hubfs/hyatt-regency-chicago.webp") center / cover no-repeat;
  color: #fff;
}

.ceros-mobile-hero-fallback__inner {
  width: 100%;
  max-width: 26rem;
}

.ceros-mobile-hero-fallback__eyebrow {
  margin: 0 0 0.5rem;
  color: var(--color-primary);
  font-size: 0.8rem;
  font-weight: 800;
  text-transform: uppercase;
}

.ceros-mobile-hero-fallback__title {
  margin: 0;
  color: #fff;
  font-size: clamp(2.2rem, 10.5vw, 3.5rem);
  line-height: 0.95;
}

.ceros-mobile-hero-fallback__details {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
  margin: 1.2rem 0 1.4rem;
}

.ceros-mobile-hero-fallback__details div {
  min-width: 0;
  padding-top: 0.75rem;
  border-top: 1px solid rgba(255, 255, 255, 0.34);
}

.ceros-mobile-hero-fallback__details dt {
  margin: 0 0 0.25rem;
  color: var(--color-primary);
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1;
  text-transform: uppercase;
}

.ceros-mobile-hero-fallback__details dd {
  margin: 0;
  color: #fff;
  font-size: clamp(1rem, 4.7vw, 1.35rem);
  font-weight: 700;
  line-height: 1.1;
}

.ceros-mobile-hero-fallback__stats {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.7rem 0.9rem;
  text-align: center;
}

.ceros-mobile-hero-fallback__stat {
  min-width: 0;
}

.ceros-mobile-hero-fallback__stat--wide {
  grid-column: 1 / -1;
}

.ceros-mobile-hero-fallback__stat strong {
  display: block;
  color: var(--color-primary);
  font-size: clamp(1.45rem, 6.5vw, 2rem);
  font-weight: 900;
  line-height: 1;
}

.ceros-mobile-hero-fallback__stat span {
  display: block;
  margin-top: 0.22rem;
  color: rgba(255, 255, 255, 0.88);
  font-size: clamp(0.75rem, 3.4vw, 0.95rem);
  font-weight: 500;
  line-height: 1.15;
  text-transform: uppercase;
}

/* Cookie banner (22 Oct 2026): HubSpot's banner keeps the site-wide layout from
   /citywire-shared/cookie-banner.css (the layout loads it) and takes PAW's colours and button here.
   The green tokens are coral here, as .btn--paw-green. The html prefix outranks the shared
   file's !important rules. */
html #hs-banner-parent {
  --hs-banner-text-color: var(--neutral-800) !important;
  --hs-banner-settings-text-color: var(--neutral-800) !important;
  --hs-banner-corners: 24px !important;
  --hs-banner-button-corners: 24px !important;
  --hs-banner-accept-color: var(--green-500) !important;
  --hs-banner-accept-text-color: var(--green-900) !important;
  --hs-banner-accept-border-color: var(--green-500) !important;
  --hs-banner-decline-color: var(--neutral-700) !important;
  --hs-banner-decline-text-color: var(--neutral-50) !important;
  --hs-banner-decline-border-color: var(--neutral-700) !important;
  --hs-banner-modal-text-color: var(--neutral-800) !important;
  --hs-banner-modal-corners: 24px !important;
  --hs-banner-modal-button-corners: 24px !important;
  --hs-banner-modal-accept-color: var(--green-500) !important;
  --hs-banner-modal-accept-text-color: var(--green-900) !important;
  --hs-banner-modal-accept-border-color: var(--green-500) !important;
  --hs-banner-modal-decline-color: var(--neutral-700) !important;
  --hs-banner-modal-decline-text-color: var(--neutral-50) !important;
  --hs-banner-modal-decline-border-color: var(--neutral-700) !important;
  --hs-banner-modal-save-text-color: var(--neutral-700) !important;
  --hs-banner-modal-save-border-color: var(--neutral-700) !important;
  --hs-banner-modal-toggle-on-color: var(--green-500) !important;
}

/* The buttons as .btn--paw: uppercase 600, 24px pill, no shadow */
html #hs-eu-cookie-confirmation #hs-eu-confirmation-button,
html #hs-eu-cookie-confirmation #hs-eu-decline-button {
  height: auto !important;
  padding: 1.12rem 1rem !important;
  line-height: 1 !important;
  font-size: 1rem !important;
  font-weight: 600 !important;
  letter-spacing: normal !important;
  text-transform: uppercase !important;
  box-shadow: none !important;
  filter: none !important;
  transition: background-color .15s ease !important;
}

html #hs-eu-cookie-confirmation #hs-eu-confirmation-button:hover {
  background: var(--green-400) !important;
}

html #hs-eu-cookie-confirmation #hs-eu-decline-button:hover {
  background: var(--neutral-800) !important;
}

html #hs-eu-cookie-confirmation #hs-eu-confirmation-button:focus-visible,
html #hs-eu-cookie-confirmation #hs-eu-decline-button:focus-visible {
  outline-color: var(--neutral-900) !important;
}