/* ==========================================================================
   Do it Best LBM — 2026 Fall Market
   Scoped page CSS. Everything lives under .dib-fm / .dib-fm-ov so it cannot
   reach the Elementor header, footer or any other page.
   Values are verbatim from the Do it Best LBM design system tokens.
   ========================================================================== */

/* --- Page-level: only rules that must apply to the document itself. ------
   These load only on this page, so they cannot affect the rest of the site.
   overflow-x:clip (not hidden) so the sticky site header keeps working.     */
body{overflow-x:clip;background:#231F20;}

/* --------------------------------------------------------------- tokens -- */
.dib-fm,.dib-fm-ov{
  /* colors — Elementor globals, verbatim from the site kit */
  --dib-black:#231F20;
  --dib-graphite:#3C4043;
  --dib-white:#FFFFFF;
  --dib-yellow:#FFCF01;
  --dib-blog-black:#000000;
  --dib-black-deep:#1B1819;
  --surface-raised:#2A2627;
  --surface-hex:var(--dib-black-deep);
  --text-muted:rgba(255,255,255,.72);
  --border-subtle:rgba(255,255,255,.18);
  --focus-ring:var(--dib-yellow);
  --scrim-hero:linear-gradient(90deg,rgba(35,31,32,.92) 0%,rgba(35,31,32,.78) 38%,rgba(35,31,32,.35) 100%);
  --scrim-band:linear-gradient(180deg,rgba(35,31,32,.86) 0%,rgba(35,31,32,.92) 100%);

  /* type — three families, three jobs, no crossover */
  --font-display:"Industry Bold","Industry","Arial Narrow",Helvetica,sans-serif;
  --font-body:"Heebo",Helvetica,Arial,sans-serif;
  --font-ui:"Montserrat",Helvetica,Arial,sans-serif;

  --fs-h1:4rem;
  --fs-h2:3rem;
  --fs-h3:2.2rem;
  --fs-h4:1.4rem;
  --fs-header-m:1.4rem;
  --fs-eyebrow:1.05rem;
  --fs-body:1.125rem;
  --fs-body-small:1rem;
  --fs-button:18px;
  --fs-button-small:14px;
  --fs-faq:24px;
  --fs-micro:13px;

  --fw-body:400;
  --fw-heebo-semi:600;
  --fw-display:600;
  --fw-ui:500;
  --fw-button:800;

  --lh-display:1;
  --lh-heading-mobile:1.1;
  --lh-body:1.6;
  --lh-eyebrow:30px;
  --lh-button:1;
  --ls-eyebrow:.02em;
  --ls-button:.02em;

  --text-header-m:var(--fw-heebo-semi) var(--fs-header-m)/1.3 var(--font-body);
  --text-eyebrow:var(--fw-ui) var(--fs-eyebrow)/var(--lh-eyebrow) var(--font-ui);
  --text-body-default:var(--fw-body) var(--fs-body)/var(--lh-body) var(--font-body);
  --text-body-small:var(--fw-body) var(--fs-body-small)/var(--lh-body) var(--font-body);
  --text-button:var(--fw-button) var(--fs-button)/var(--lh-button) var(--font-ui);
  --text-button-small:var(--fw-button) var(--fs-button-small)/var(--lh-button) var(--font-ui);

  /* spacing + geometry — the site is squared throughout */
  --sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;
  --sp-10:40px;--sp-12:48px;--sp-16:64px;--sp-20:80px;--sp-24:96px;
  --section-y:var(--sp-24);
  --container:1140px;
  --container-wide:1400px;
  --container-narrow:760px;

  /* motion — 260ms ease is the house transition */
  --ease-standard:ease;
  --dur-base:260ms;
  --transition-control:background-color var(--dur-base) var(--ease-standard),color var(--dur-base) var(--ease-standard),border-color var(--dur-base) var(--ease-standard);
}

@media (max-width:1024px){
  .dib-fm,.dib-fm-ov{--fs-h1:3rem;--fs-h2:2.4rem;--fs-h3:1.9rem;--section-y:64px;}
}
@media (max-width:767px){
  .dib-fm,.dib-fm-ov{
    --fs-h1:2.35rem;--fs-h2:1.9rem;--fs-h3:1.55rem;--fs-h4:1.25rem;
    --section-y:52px;--fs-body:1.0625rem;--fs-eyebrow:.95rem;--fs-faq:22px;
    /* mobile floor: no text under 15px */
    --fs-micro:15px;--fs-button-small:15px;
  }
}

/* --------------------------------------------------------------- shell --- */
/* Full-bleed is applied by JS, which measures each wrapper's real distance from
   the viewport edge. The old `margin-left:calc(50% - 50vw)` assumed the Elementor
   container was centred in the viewport; when it isn't, the bleed lands off-centre
   and the whole document scrolls sideways. Default to a plain in-flow block so the
   pre-JS state is boxed but never broken. */
.dib-fm{
  width:100%;
  background:var(--dib-black);
  color:var(--dib-white);
  font:var(--text-body-default);
  text-align:left;
}
.dib-fm *,.dib-fm *::before,.dib-fm *::after,
.dib-fm-ov *,.dib-fm-ov *::before,.dib-fm-ov *::after{box-sizing:border-box;}

.dib-fm h1,.dib-fm h2,.dib-fm h3,.dib-fm h4{
  font-family:var(--font-display);
  font-weight:var(--fw-display);
  text-transform:uppercase;
  line-height:var(--lh-display);
  color:var(--dib-white);
  margin:0;
  letter-spacing:0;
}
.dib-fm h1{font-size:var(--fs-h1);}
.dib-fm h2{font-size:var(--fs-h2);}
.dib-fm h3{font-size:var(--fs-h3);}
.dib-fm h4{font-size:var(--fs-h4);}
@media (max-width:767px){
  .dib-fm h1,.dib-fm h2,.dib-fm h3,.dib-fm h4{line-height:var(--lh-heading-mobile);}
}
.dib-fm p{margin:0 0 1em;text-wrap:pretty;}
/* --- wrapping hardening ------------------------------------------------------
   Elementor and several themes normalise `button{white-space:nowrap}`. This page
   builds its FAQ rows and speaker cards as buttons, and a nowrap label refuses to
   wrap: its min-content width becomes the whole line, so the flex item overflows
   its own max-width and collides with the next column. Force normal wrapping —
   and min-width:0 — back on for every control, then re-declare the three places
   nowrap is genuinely wanted. */
.dib-fm button,
.dib-fm button > *,
.dib-fm .fm-btn,
.dib-fm .fm-faq-q,
.dib-fm .fm-faq-q > *,
.dib-fm .fm-speaker,
.dib-fm .fm-speaker > *{
  white-space:normal;
  overflow-wrap:break-word;
  min-width:0;
}
/* grid and flex children must be allowed to shrink below their content width */
.dib-fm .fm-sessions > *,
.dib-fm .fm-aud > *,
.dib-fm .fm-walk > *,
.dib-fm .fm-speakers > *,
.dib-fm .fm-gal > *,
.dib-fm .fm-agenda-row > *,
.dib-fm .fm-ov-grid > *,
.dib-fm .fm-facts-grid > *,
.dib-fm .fm-filters,
.dib-fm .fm-filters > *,
.dib-fm .fm-chips,
.dib-fm .fm-groups,
.dib-fm .fm-groups > *,
.dib-fm .fm-in,
.dib-fm .fm-in-narrow{min-width:0;}

/* A nowrap scroller sizes its flex parent to min-content, which stretched the
   filter column far past the viewport and made the whole document scroll
   sideways. The min-width:0 above lets it shrink; this is the hard backstop. */
.dib-fm .fm-filters > *{max-width:100%;}

.dib-fm p:last-child{margin-bottom:0;}
.dib-fm a{color:var(--dib-yellow);text-decoration:none;transition:var(--transition-control);}
.dib-fm a:hover{color:var(--dib-white);}
.dib-fm img{max-width:100%;}
.dib-fm :focus-visible,.dib-fm-ov :focus-visible{outline:2px solid var(--focus-ring);outline-offset:2px;}
.dib-fm ::selection,.dib-fm-ov ::selection{background:var(--dib-yellow);color:var(--dib-black);}

/* Section shells */
.dib-fm .fm-sec{padding:var(--section-y) var(--sp-6);}
.dib-fm .fm-in{max-width:var(--container-wide);margin:0 auto;}
.dib-fm .fm-in-narrow{max-width:var(--container);margin:0 auto;}

/* The hex texture — 92x106 honeycomb, one value step above the ground. */
.dib-fm .dib-hex{
  background-color:var(--surface-hex);
  background-image:var(--fm-hex);
  background-size:92px 106px;
  background-repeat:repeat;
}

/* ---------------------------------------------------------- components --- */
/* Eyebrow */
.dib-fm .fm-eyebrow{
  font:var(--text-eyebrow);
  letter-spacing:var(--ls-eyebrow);
  text-transform:uppercase;
  color:var(--dib-yellow);
  display:block;
}

/* Button — yellow fill, black text, 0 radius, 20px all round.
   On hover the fill drops out entirely. That inversion is the signature. */
:is(.dib-fm,.dib-fm-ov) .fm-btn{
  display:inline-flex;align-items:center;justify-content:center;
  text-decoration:none;
  font:var(--text-button);
  letter-spacing:var(--ls-button);
  text-transform:uppercase;
  padding:20px;
  border-radius:0;
  cursor:pointer;
  transition:var(--transition-control);
  text-align:center;
}
:is(.dib-fm,.dib-fm-ov) .fm-btn--primary{
  background:var(--dib-yellow);color:var(--dib-black);
  border:1px solid var(--dib-blog-black);
}
:is(.dib-fm,.dib-fm-ov) .fm-btn--primary:hover{
  background:transparent;color:var(--dib-white);border-color:var(--dib-white);
}
:is(.dib-fm,.dib-fm-ov) .fm-btn--outline{
  background:transparent;color:var(--dib-white);border:1px solid var(--dib-white);
}
:is(.dib-fm,.dib-fm-ov) .fm-btn--outline:hover{
  background:var(--dib-yellow);color:var(--dib-black);border-color:var(--dib-yellow);
}
:is(.dib-fm,.dib-fm-ov) .fm-btn--sm{font:var(--text-button-small);letter-spacing:var(--ls-button);padding:12px 20px;}
:is(.dib-fm,.dib-fm-ov) .fm-btn--md{font:var(--text-button-small);letter-spacing:var(--ls-button);padding:14px 20px;}

/* SectionHeading — eyebrow + uppercase Industry headline + Heebo lead, centered */
.dib-fm .fm-head{text-align:center;}
.dib-fm .fm-head h2{margin:var(--sp-3) 0 0;}
.dib-fm .fm-head .fm-head-lead{
  font:var(--text-body-default);
  color:var(--text-muted);
  max-width:var(--container-narrow);
  margin:var(--sp-5) auto 0;
}

/* Rails — horizontal scrollers with drag + a yellow progress indicator */
.dib-fm .dib-rail{
  scrollbar-width:none;-ms-overflow-style:none;
  overflow-y:hidden;
  overscroll-behavior-x:contain;
}
/* the grab cursor only belongs on a rail that actually scrolls at this width */
.dib-fm .dib-rail.is-draggable{cursor:grab;}
.dib-fm .dib-rail.is-draggable:active{cursor:grabbing;}
.dib-fm .dib-rail::-webkit-scrollbar{height:0;width:0;display:none;}
.dib-fm .dib-scroller{scrollbar-width:none;-ms-overflow-style:none;}
.dib-fm .dib-scroller::-webkit-scrollbar{display:none;height:0;}
.dib-fm .fm-gal,
.dib-fm .fm-sessions,
.dib-fm .fm-aud,
.dib-fm .fm-walk,
.dib-fm .fm-speakers,
.dib-fm .fm-chips{scrollbar-width:none;-ms-overflow-style:none;}
.dib-fm .fm-gal::-webkit-scrollbar,
.dib-fm .fm-sessions::-webkit-scrollbar,
.dib-fm .fm-aud::-webkit-scrollbar,
.dib-fm .fm-walk::-webkit-scrollbar,
.dib-fm .fm-speakers::-webkit-scrollbar,
.dib-fm .fm-chips::-webkit-scrollbar{width:0;height:0;display:none;}
.dib-fm .dib-ind{height:6px;background:rgba(255,255,255,.10);margin:14px 0 0;position:relative;overflow:hidden;}
.dib-fm .dib-ind>i{position:absolute;top:0;left:0;height:100%;background:var(--dib-yellow);transition:width 120ms linear;}

/* Reveal on scroll */
.js-reveal .dib-fm [data-reveal]{opacity:0;transform:translateY(18px);transition:opacity 560ms ease,transform 560ms ease;}
.js-reveal .dib-fm [data-reveal].is-in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  .js-reveal .dib-fm [data-reveal]{opacity:1;transform:none;transition:none;}
}
/* A scrolling rail's off-screen cards never intersect the viewport, so the reveal
   gate would hold the next one at opacity:0 — hiding the peek that tells you the
   row scrolls at all. Wherever a rail actually scrolls, skip the entrance. */
.js-reveal .dib-fm .is-scrollable [data-reveal]{
  opacity:1;transform:none;transition:none;
}
@keyframes dibFade{from{opacity:0}to{opacity:1}}

/* The mobile-scroller pattern the design uses for card rows */
.dib-fm .fm-sc{
  display:flex;gap:var(--sp-8);
  overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-left:24px;
  -webkit-overflow-scrolling:touch;scroll-behavior:auto;
  padding:0 24px 10px;margin:0 -24px;
}
.dib-fm .fm-sc>*{scroll-snap-align:start;display:grid;}

/* ================================================================= HERO == */
.dib-fm .fm-hero{position:relative;min-height:640px;display:flex;align-items:center;overflow:hidden;}
.dib-fm .fm-hero-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 45%;}
.dib-fm .fm-hero-scrim{position:absolute;inset:0;background:var(--scrim-hero);}
.dib-fm .fm-hero-in{position:relative;width:100%;max-width:var(--container-wide);margin:0 auto;padding:var(--sp-24) var(--sp-6);}
.dib-fm .fm-hero h1{margin:var(--sp-4) 0 var(--sp-5);max-width:16ch;}
.dib-fm .fm-hero-dek{font:var(--text-header-m);max-width:34ch;margin:0 0 var(--sp-8);}
.dib-fm .fm-hero-meta{display:flex;gap:var(--sp-6);flex-wrap:wrap;font:var(--text-body-default);margin-bottom:var(--sp-8);}
.dib-fm .fm-hero-meta span{display:flex;align-items:center;gap:var(--sp-2);}
.dib-fm .fm-hero-cta{display:flex;gap:var(--sp-4);flex-wrap:wrap;}
@media (max-width:767px){
  .dib-fm .fm-hero{min-height:82vh;align-items:flex-end;}
  .dib-fm .fm-hero-in{padding:var(--sp-16) var(--sp-6) var(--sp-12);}
  .dib-fm .fm-hero-meta{flex-direction:column;gap:var(--sp-3);}
  /* the fixed bottom bar carries the actions on mobile */
  .dib-fm .fm-hero-cta{display:none;}
}

/* ================================================================ FACTS == */
.dib-fm .fm-facts{background:var(--surface-raised);padding:var(--sp-10) var(--sp-6);}
.dib-fm .fm-facts-grid{
  max-width:var(--container-wide);margin:0 auto;
  display:grid;grid-template-columns:repeat(4,1fr) auto;gap:var(--sp-8);align-items:center;
}
.dib-fm .fm-fact{border-left:2px solid var(--dib-yellow);padding-left:var(--sp-5);}
.dib-fm .fm-fact-k{font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--dib-yellow);}
.dib-fm .fm-fact-v{font:var(--text-body-default);color:#fff;}
/* a phone number must never break mid-number; from tablet up it gets its own line */
.dib-fm .fm-fact-tel{white-space:nowrap;}
@media (min-width:768px){
  .dib-fm .fm-fact-tel{display:block;}
}
@media (max-width:1024px){
  .dib-fm .fm-facts-grid{grid-template-columns:1fr 1fr;gap:var(--sp-6);}
}
@media (max-width:767px){
  .dib-fm .fm-facts-grid{grid-template-columns:1fr;gap:var(--sp-5);}
  .dib-fm .fm-fact{padding-left:var(--sp-4);}
  .dib-fm .fm-facts .fm-btn{display:none;}
}

/* ============================================================= OVERVIEW == */
.dib-fm .fm-ov-grid{
  max-width:var(--container);margin:0 auto;
  display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-16);align-items:center;
}
.dib-fm .fm-ov-grid h2{font-size:var(--fs-h3);margin:var(--sp-3) 0 var(--sp-5);}
.dib-fm .fm-ov-img{width:100%;aspect-ratio:4/3;object-fit:cover;display:block;}
.dib-fm .fm-stats{
  max-width:var(--container);margin:var(--sp-16) auto 0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-10);
}
.dib-fm .fm-stat-n{font:var(--fw-display) var(--fs-h2)/1 var(--font-display);color:var(--dib-yellow);font-variant-numeric:tabular-nums;}
.dib-fm .fm-stat-l{font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;margin-top:var(--sp-2);}
@media (max-width:1024px){
  .dib-fm .fm-ov-grid{grid-template-columns:1fr;gap:var(--sp-8);}
}
@media (max-width:767px){
  .dib-fm .fm-stats{margin-top:var(--sp-10);gap:var(--sp-4);}
}

/* ======================================================= LEARNING STAGE == */
.dib-fm .fm-filters{display:flex;flex-wrap:wrap;gap:var(--sp-8);justify-content:center;margin-top:var(--sp-10);}
.dib-fm .fm-filter-l{font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--text-muted);margin-bottom:var(--sp-3);text-align:center;}
.dib-fm .fm-chips{display:flex;gap:var(--sp-2);flex-wrap:wrap;justify-content:center;}
.dib-fm .fm-chip{
  white-space:nowrap;
  font:var(--text-button-small);letter-spacing:var(--ls-button);text-transform:uppercase;
  flex:0 0 auto;white-space:nowrap;padding:12px 18px;
  border:1px solid var(--border-subtle);background:transparent;color:var(--dib-white);
  cursor:pointer;transition:var(--transition-control);border-radius:0;
}
.dib-fm .fm-chip:hover{border-color:var(--dib-yellow);color:var(--dib-yellow);}
.dib-fm .fm-chip[aria-pressed="true"]{background:var(--dib-yellow);color:var(--dib-black);border-color:var(--dib-yellow);}
.dib-fm .fm-groups{margin-top:var(--sp-12);display:flex;flex-direction:column;gap:var(--sp-12);}
.dib-fm .fm-dayhead{display:flex;align-items:baseline;gap:var(--sp-4);border-bottom:2px solid var(--dib-yellow);padding-bottom:var(--sp-3);margin-bottom:var(--sp-6);}
.dib-fm .fm-dayhead h3{font-size:var(--fs-h3);line-height:1;margin:0;}
.dib-fm .fm-dayhead .fm-daydate{font:var(--text-body-default);color:var(--text-muted);}
.dib-fm .fm-dayhead .fm-daycount{margin-left:auto;font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--dib-yellow);}
.dib-fm .fm-sessions{display:grid;grid-template-columns:repeat(auto-fill,minmax(360px,1fr));gap:var(--sp-6);}
.dib-fm .fm-session{
  border:2px solid var(--dib-yellow);padding:var(--sp-8) var(--sp-6);
  display:flex;flex-direction:column;gap:var(--sp-4);
  background:rgba(0,0,0,.35);transition:background var(--dur-base) ease;height:100%;
}
.dib-fm .fm-session:hover{background:rgba(255,207,1,.07);}
.dib-fm .fm-session-top{display:flex;justify-content:space-between;align-items:center;gap:var(--sp-4);}
.dib-fm .fm-session-time{font:var(--fw-display) var(--fs-h4)/1 var(--font-display);color:var(--dib-yellow);white-space:nowrap;}
.dib-fm .fm-tag{
  font:var(--fw-ui) var(--fs-micro)/var(--lh-eyebrow) var(--font-ui);letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);border:1px solid var(--border-subtle);padding:4px 10px;white-space:nowrap;
}
.dib-fm .fm-session h4{font-size:var(--fs-h4);line-height:1.15;margin:0;}
.dib-fm .fm-session-speaker{font:var(--text-body-default);font-weight:600;color:#fff;}
.dib-fm .fm-session-blurb{font:var(--text-body-default);color:var(--text-muted);margin:0;flex:1;}
.dib-fm .fm-session-act{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;}
.dib-fm .fm-noresults{text-align:center;font:var(--text-body-default);color:var(--text-muted);margin-top:var(--sp-10);}
.dib-fm [hidden]{display:none !important;}
@media (max-width:1024px){
  .dib-fm .fm-sessions{grid-template-columns:repeat(2,1fr);gap:var(--sp-5);}
}
@media (max-width:767px){
  .dib-fm .fm-filters{flex-direction:column;gap:var(--sp-5);margin-top:var(--sp-8);}
  .dib-fm .fm-filter-l{text-align:left;}
  .dib-fm .fm-chips{flex-wrap:nowrap;overflow-x:auto;justify-content:flex-start;padding:0 24px 4px;margin:0 -24px;}
  .dib-fm .fm-sessions{
    display:flex;gap:var(--sp-8);overflow-x:auto;scroll-snap-type:x proximity;
    scroll-padding-left:24px;-webkit-overflow-scrolling:touch;padding:0 24px 10px;margin:0 -24px;
  }
  .dib-fm .fm-sessions>*{flex:0 0 86vw;scroll-snap-align:start;display:grid;}
  /* let the track tag drop to its own line rather than squeeze the time */
  .dib-fm .fm-session-top{flex-wrap:wrap;gap:var(--sp-3);}
  .dib-fm .fm-dayhead{flex-direction:column;gap:var(--sp-1);align-items:flex-start;}
  .dib-fm .fm-dayhead .fm-daycount{margin-left:0;}
}

/* ============================================================== PODCAST == */
.dib-fm .fm-pod{position:relative;}
.dib-fm .fm-pod-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center;}
.dib-fm .fm-pod-scrim{position:absolute;inset:0;background:rgba(0,0,0,.5);}
.dib-fm .fm-pod-in{position:relative;padding:var(--section-y) var(--sp-6);}
.dib-fm .fm-pod-box{max-width:820px;margin:0 auto;text-align:center;}
.dib-fm .fm-pod-box h2{font-size:var(--fs-h3);margin:var(--sp-3) 0 var(--sp-5);}
.dib-fm .fm-pod-meta{display:flex;gap:var(--sp-6);flex-wrap:wrap;justify-content:center;font:var(--text-body-default);}
.dib-fm .fm-pod-meta span{display:flex;align-items:center;gap:var(--sp-2);}
@media (max-width:767px){
  .dib-fm .fm-pod-img{object-position:78% 40%;}
  .dib-fm .fm-pod-meta span{flex-direction:column;align-items:center;text-align:center;}
}

/* ============================================================= AUDIENCE == */
.dib-fm .fm-aud{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--sp-6);margin-top:var(--sp-12);}
.dib-fm .fm-aud > *{grid-column:span 2;}
/* With five cards the last row holds two, so centre it rather than leaving a
   hole on the right. Self-cancelling: add a sixth card and this stops matching. */
.dib-fm .fm-aud > *:nth-child(4):nth-last-child(2){grid-column:2 / span 2;}
.dib-fm .fm-aud-card{
  border:2px solid var(--dib-yellow);padding:var(--sp-8) var(--sp-6);text-align:center;
  transition:background var(--dur-base) ease;height:100%;
}
.dib-fm .fm-aud-card:hover{background:rgba(255,207,1,.07);}
.dib-fm .fm-aud-card h3{font-size:var(--fs-h4);line-height:1.2;color:var(--dib-yellow);margin:0;}
.dib-fm .fm-aud-card p{font:var(--text-body-default);margin:var(--sp-4) 0 0;}
@media (max-width:1024px){
  .dib-fm .fm-aud{display:flex;gap:var(--sp-8);overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-left:24px;-webkit-overflow-scrolling:touch;padding:0 24px 10px;margin:var(--sp-12) -24px 0;}
  .dib-fm .fm-aud>*{flex:0 0 46vw;scroll-snap-align:start;display:grid;}
}
@media (max-width:767px){
  .dib-fm .fm-aud>*{flex:0 0 80vw;}
}

/* ============================================================= WALKAWAY == */
.dib-fm .fm-walk{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-10);margin-top:var(--sp-12);}
.dib-fm .fm-walk-card{text-align:center;}
.dib-fm .fm-walk-card img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;margin-bottom:var(--sp-5);}
.dib-fm .fm-rule{height:2px;width:48px;background:var(--dib-yellow);margin:0 auto var(--sp-5);}
.dib-fm .fm-walk-card h3{font-size:var(--fs-h4);line-height:1.2;margin:0;}
.dib-fm .fm-walk-card p{font:var(--text-body-default);color:var(--text-muted);margin:var(--sp-3) 0 0;}
@media (max-width:1024px){
  .dib-fm .fm-walk{display:flex;gap:var(--sp-8);overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-left:24px;-webkit-overflow-scrolling:touch;padding:0 24px 10px;margin:var(--sp-12) -24px 0;}
  .dib-fm .fm-walk>*{flex:0 0 46vw;scroll-snap-align:start;display:grid;}
}
@media (max-width:767px){
  .dib-fm .fm-walk>*{flex:0 0 80vw;}
}

/* ============================================================= SPEAKERS == */
.dib-fm .fm-speakers{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:var(--sp-8);margin-top:var(--sp-12);align-items:start;}
.dib-fm .fm-speaker{
  /* a <button> centres its own content when stretched taller than that content,
     which is UA behaviour, not ours -- keep the stack pinned to the top */
  display:block;
  text-align:left;background:none;padding:var(--sp-4) 0 0;cursor:pointer;
  border:0;border-top:1px solid var(--border-subtle);
  transition:border-color var(--dur-base) ease;width:100%;color:inherit;font:inherit;
}
.dib-fm .fm-speaker:hover{border-color:var(--dib-yellow);}
.dib-fm .fm-speaker-n,
.dib-fm .fm-speaker-r,
.dib-fm .fm-speaker-s{display:block;}
.dib-fm .fm-speaker-n{font:var(--fw-display) var(--fs-h4)/1.2 var(--font-display);text-transform:uppercase;color:var(--dib-white);}
.dib-fm .fm-speaker-r{font:var(--text-body-default);color:var(--text-muted);margin-top:var(--sp-1);}
.dib-fm .fm-speaker-s{font:var(--fw-ui) var(--fs-micro)/var(--lh-eyebrow) var(--font-ui);letter-spacing:.08em;text-transform:uppercase;color:var(--dib-yellow);margin-top:var(--sp-3);}
.dib-fm .fm-speaker-more{
  display:flex;align-items:center;gap:var(--sp-2);margin-top:var(--sp-4);
  font:var(--fw-ui) var(--fs-micro)/var(--lh-eyebrow) var(--font-ui);letter-spacing:.08em;text-transform:uppercase;
  color:var(--text-muted);transition:color var(--dur-base) ease;
}
.dib-fm .fm-speaker:hover .fm-speaker-more{color:var(--dib-yellow);}
.dib-fm .fm-speaker-more i{color:var(--dib-yellow);}
@media (max-width:767px){
  .dib-fm .fm-speakers{display:flex;align-items:flex-start;gap:var(--sp-8);overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-left:24px;-webkit-overflow-scrolling:touch;padding:0 24px 10px;margin:var(--sp-12) -24px 0;}
  .dib-fm .fm-speakers>*{flex:0 0 74vw;scroll-snap-align:start;display:grid;}
}

/* =============================================================== AGENDA == */
.dib-fm .fm-agenda{max-width:980px;margin:var(--sp-12) auto 0;}
.dib-fm .fm-agenda-day{margin-bottom:var(--sp-10);}
.dib-fm .fm-agenda-day:last-child{margin-bottom:0;}
.dib-fm .fm-agenda-d{font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--dib-yellow);margin-bottom:var(--sp-3);}
.dib-fm .fm-agenda-row{
  display:grid;grid-template-columns:170px 1fr 220px;gap:var(--sp-5);
  padding:var(--sp-4) var(--sp-3);border-top:1px solid var(--border-subtle);
  font:var(--text-body-default);transition:background var(--dur-base) ease;
}
.dib-fm .fm-agenda-row:hover{background:rgba(255,255,255,.04);}
.dib-fm .fm-agenda-row .fm-at{color:var(--dib-yellow);}
.dib-fm .fm-agenda-row .fm-aw{color:var(--text-muted);}

/* Knowledge Central rows expand in place. Native <details>, so it needs no JS
   and is keyboard-operable for free. */
.dib-fm .fm-kc > summary{
  display:flex;align-items:baseline;gap:var(--sp-3);
  list-style:none;cursor:pointer;
}
.dib-fm .fm-kc > summary::-webkit-details-marker{display:none;}
/* the indicator rides with the label rather than pinning to the column edge */
.dib-fm .fm-kc > summary::after{
  content:"+";font:var(--fw-ui) 18px/1 var(--font-ui);color:var(--dib-yellow);
}
.dib-fm .fm-kc[open] > summary::after{content:"\2212";}
.dib-fm .fm-kc > summary:hover{color:var(--dib-yellow);}
.dib-fm .fm-kc > summary:focus-visible{outline:2px solid var(--dib-yellow);outline-offset:3px;}
.dib-fm .fm-kc-n{
  font:var(--fw-ui) var(--fs-micro)/1 var(--font-ui);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);
}
.dib-fm .fm-kc-list{
  list-style:none;margin:var(--sp-4) 0 var(--sp-2);padding:0 0 0 var(--sp-4);
  display:flex;flex-direction:column;gap:var(--sp-4);
  border-left:2px solid var(--border-subtle);
}
.dib-fm .fm-kc-list > li{display:flex;flex-direction:column;gap:2px;}
.dib-fm .fm-kc-t{font:var(--fw-display) 17px/1.25 var(--font-display);text-transform:uppercase;color:#fff;}
.dib-fm .fm-kc-s{font:600 15px/1.45 var(--font-body);color:var(--dib-yellow);}
.dib-fm .fm-kc-b{font:var(--text-body-default);color:var(--text-muted);}
@media (max-width:767px){
  .dib-fm .fm-kc-list{padding-left:var(--sp-3);}
}
@media (max-width:767px){
  .dib-fm .fm-agenda-row{grid-template-columns:1fr;gap:2px;padding:var(--sp-4) 0;}
  .dib-fm .fm-agenda-row:hover{background:none;}
}

/* ============================================================== GALLERY == */
.dib-fm .fm-gal-wrap{position:relative;margin-top:var(--sp-12);}
.dib-fm .fm-gal{
  display:grid;grid-auto-flow:column;grid-template-rows:repeat(2,1fr);
  grid-auto-columns:clamp(300px,26vw,440px);gap:var(--sp-3);
  overflow-x:auto;scroll-snap-type:x proximity;scroll-padding-left:24px;
  padding:0 var(--sp-6);
}
.dib-fm .fm-gal>*{display:grid;}
.dib-fm .fm-gal-btn{
  padding:0;border:0;background:none;cursor:zoom-in;display:block;overflow:hidden;
  position:relative;aspect-ratio:3/2;outline:3px solid transparent;outline-offset:-3px;
  transition:outline-color var(--dur-base) ease;
}
.dib-fm .fm-gal-btn:hover{outline-color:var(--dib-yellow);}
.dib-fm .fm-gal-btn img{width:100%;height:100%;object-fit:cover;display:block;}
.dib-fm .fm-gal-nav{
  position:absolute;top:50%;transform:translateY(-50%);
  width:52px;height:52px;background:rgba(0,0,0,.7);border:1px solid var(--dib-white);
  color:#fff;font-size:20px;cursor:pointer;transition:var(--transition-control);
  display:flex;align-items:center;justify-content:center;z-index:2;
}
.dib-fm .fm-gal-nav:hover{background:var(--dib-yellow);color:var(--dib-black);border-color:var(--dib-yellow);}
.dib-fm .fm-gal-prev{left:var(--sp-4);}
.dib-fm .fm-gal-next{right:var(--sp-4);}
@media (max-width:767px){
  .dib-fm .fm-gal{grid-auto-columns:78vw;gap:var(--sp-2);scroll-behavior:auto;padding:0 24px;}
  .dib-fm .fm-gal-wrap .dib-ind{display:none !important;}
  .dib-fm .fm-gal>*{scroll-snap-align:start;}
  .dib-fm .fm-gal-nav{display:none;}
}

/* =================================================================== FAQ == */
.dib-fm .fm-faq{max-width:900px;margin:var(--sp-10) auto 0;}
.dib-fm .fm-faq-item{border-top:1px solid var(--border-subtle);}
.dib-fm .fm-faq-item:last-child{border-bottom:1px solid var(--border-subtle);}
.dib-fm .fm-faq-q{
  width:100%;display:flex;align-items:flex-start;justify-content:space-between;gap:var(--sp-5);
  background:none;border:0;padding:var(--sp-5) 0;cursor:pointer;text-align:left;
  font:var(--fw-display) var(--fs-faq)/1.15 var(--font-display);
  text-transform:uppercase;letter-spacing:0;
  color:var(--dib-white);transition:color var(--dur-base) ease;
}
.dib-fm .fm-faq-q:hover{color:var(--dib-yellow);}
.dib-fm .fm-faq-q i{color:var(--dib-yellow);font-size:18px;flex:0 0 auto;margin-top:6px;}
.dib-fm .fm-faq-q .fa-minus{display:none;}
.dib-fm .fm-faq-q[aria-expanded="true"] .fa-minus{display:inline-block;}
.dib-fm .fm-faq-q[aria-expanded="true"] .fa-plus{display:none;}
.dib-fm .fm-faq-a{display:none;padding:0 var(--sp-10) var(--sp-6) 0;}
.dib-fm .fm-faq-a.is-open{display:block;}
.dib-fm .fm-faq-a p{font:var(--text-body-default);color:var(--text-muted);margin:0;}
@media (max-width:767px){
  .dib-fm .fm-faq-a{padding-right:var(--sp-6);}
}

/* =================================================================== CTA == */
.dib-fm .fm-cta{position:relative;}
.dib-fm .fm-cta-bg{position:absolute;inset:0;background-size:cover;background-position:center top;background-repeat:no-repeat;}
.dib-fm .fm-cta-scrim{position:absolute;inset:0;background:var(--scrim-band);}
.dib-fm .fm-cta-in{position:relative;max-width:900px;margin:0 auto;padding:var(--sp-24) var(--sp-6);text-align:center;}
.dib-fm .fm-cta-in h2{margin:0;}
.dib-fm .fm-cta-in>p{font:var(--text-body-default);margin:var(--sp-5) 0 var(--sp-8);}
.dib-fm .fm-cta-btns{display:flex;gap:var(--sp-4);justify-content:center;flex-wrap:wrap;}
.dib-fm .fm-cta-note{margin-top:var(--sp-10);font:var(--text-body-default);color:var(--text-muted);}
.dib-fm .fm-cta-note strong{color:#fff;}

/* ============================================================ OVERLAYS === */
.dib-fm-ov{color:var(--dib-white);font:var(--text-body-default);text-align:left;}
.dib-fm-ov [hidden]{display:none !important;}

/* Mobile action bar */
.dib-fm-ov .fm-bar{
  position:fixed;bottom:0;left:0;right:0;z-index:999950;
  display:none;grid-template-columns:1fr 1fr;gap:1px;background:var(--border-subtle);
  padding-bottom:env(safe-area-inset-bottom);
}
.dib-fm-ov .fm-bar a{
  display:flex;align-items:center;justify-content:center;min-height:56px;
  font:var(--text-button-small);letter-spacing:var(--ls-button);text-transform:uppercase;
  text-decoration:none;
}
.dib-fm-ov .fm-bar .fm-bar-1{background:var(--dib-yellow);color:var(--dib-black);}
.dib-fm-ov .fm-bar .fm-bar-2{background:var(--dib-black);color:var(--dib-white);}
.dib-fm-ov .fm-bar-pad{display:none;height:56px;}
@media (max-width:767px){
  .dib-fm-ov .fm-bar{display:grid;}
  .dib-fm-ov .fm-bar-pad{display:block;}
}

/* Shared overlay shell */
.dib-fm-ov .fm-ov{
  position:fixed;inset:0;display:flex;align-items:center;justify-content:center;
  padding:var(--sp-6);animation:dibFade 200ms ease;
}
.dib-fm-ov .fm-close{
  flex:0 0 auto;background:none;border:1px solid var(--border-subtle);color:#fff;
  cursor:pointer;font-size:18px;line-height:1;display:flex;align-items:center;justify-content:center;
  transition:var(--transition-control);width:40px;height:40px;
}
.dib-fm-ov .fm-close:hover{border-color:var(--dib-yellow);color:var(--dib-yellow);}
@media (max-width:767px){.dib-fm-ov .fm-close{width:44px;height:44px;}}

/* Speaker bio */
.dib-fm-ov .fm-bio{z-index:999965;background:rgba(0,0,0,.82);}
.dib-fm-ov .fm-bio-box{
  background:var(--dib-black);border:2px solid var(--dib-yellow);
  width:100%;max-width:620px;padding:var(--sp-10) var(--sp-8);position:relative;
}
.dib-fm-ov .fm-bio-close{position:absolute;top:var(--sp-4);right:var(--sp-4);}
.dib-fm-ov .fm-bio-n{font:var(--fw-display) var(--fs-h3)/1.1 var(--font-display);text-transform:uppercase;padding-right:var(--sp-12);}
.dib-fm-ov .fm-bio-r{font:var(--text-body-default);color:var(--text-muted);margin-top:var(--sp-2);}
.dib-fm-ov .fm-bio-k{
  font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;
  color:var(--dib-yellow);margin-top:var(--sp-6);
}
.dib-fm-ov .fm-bio-sessions{display:flex;flex-direction:column;gap:var(--sp-5);margin-top:var(--sp-4);}
.dib-fm-ov .fm-bio-session{border-top:1px solid var(--border-subtle);padding-top:var(--sp-5);}
.dib-fm-ov .fm-bio-when{
  font:var(--fw-ui) var(--fs-micro)/1.4 var(--font-ui);letter-spacing:.08em;
  text-transform:uppercase;color:var(--text-muted);
}
.dib-fm-ov .fm-bio-title{
  font:var(--fw-display) var(--fs-h4)/1.2 var(--font-display);
  text-transform:uppercase;margin-top:var(--sp-2);
}
.dib-fm-ov .fm-bio-who{font:var(--text-body-default);font-weight:600;color:#fff;margin-top:var(--sp-2);}
.dib-fm-ov .fm-bio-session p{font:var(--text-body-default);color:var(--text-muted);margin:var(--sp-3) 0 0;}
.dib-fm-ov .fm-bio-act{display:flex;gap:var(--sp-3);align-items:center;flex-wrap:wrap;margin-top:var(--sp-4);}
/* the popup carries real content now, so it needs to scroll on any screen */
.dib-fm-ov .fm-bio-box{max-height:86vh;overflow-y:auto;}
@media (max-width:767px){
  .dib-fm-ov .fm-bio-box{max-height:88vh;padding:var(--sp-10) var(--sp-6) var(--sp-8);}
}

/* Photo lightbox */
.dib-fm-ov .fm-lb{z-index:999970;background:rgba(0,0,0,.92);padding:var(--sp-10) var(--sp-6);}
.dib-fm-ov .fm-lb-img{
  width:min(1200px,88vw);height:80vh;
  background-size:contain;background-repeat:no-repeat;background-position:center;
}
.dib-fm-ov .fm-lb-nav{
  position:absolute;background:none;border:1px solid var(--border-subtle);color:#fff;
  width:48px;height:48px;cursor:pointer;font-size:20px;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:var(--transition-control);
}
.dib-fm-ov .fm-lb-nav:hover{border-color:var(--dib-yellow);color:var(--dib-yellow);}
.dib-fm-ov .fm-lb-prev{left:var(--sp-6);}
.dib-fm-ov .fm-lb-next{right:var(--sp-6);}
/* Escape isn't available on a phone and the photo fills the screen, so the
   lightbox needs an explicit way out. */
.dib-fm-ov .fm-lb-close{position:absolute;top:var(--sp-6);right:var(--sp-6);z-index:2;}
@media (max-width:767px){
  .dib-fm-ov .fm-lb-close{top:var(--sp-4);right:var(--sp-4);}
}
.dib-fm-ov .fm-lb-count{
  position:absolute;bottom:var(--sp-6);left:0;right:0;text-align:center;
  font:var(--text-eyebrow);letter-spacing:var(--ls-eyebrow);text-transform:uppercase;color:var(--text-muted);
}

/* Calendly booking modal */

/* The hex honeycomb tile, inlined so the stylesheet needs no image. */
.dib-fm,.dib-fm-ov{--fm-hex:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%2291.80%22%20height%3D%22106%22%20viewBox%3D%220%200%2091.80%20106%22%3E%3Crect%20width%3D%22100%25%22%20height%3D%22100%25%22%20fill%3D%22%231B1819%22%2F%3E%3Cpath%20d%3D%22M-30.60%20-53.00L-61.20%200.00L-122.40%200.00L-153.00%20-53.00L-122.40%20-106.00L-61.20%20-106.00ZM-30.60%2053.00L-61.20%20106.00L-122.40%20106.00L-153.00%2053.00L-122.40%200.00L-61.20%200.00ZM-30.60%20159.00L-61.20%20212.00L-122.40%20212.00L-153.00%20159.00L-122.40%20106.00L-61.20%20106.00ZM-30.60%20265.00L-61.20%20318.00L-122.40%20318.00L-153.00%20265.00L-122.40%20212.00L-61.20%20212.00ZM61.20%20-106.00L30.60%20-53.00L-30.60%20-53.00L-61.20%20-106.00L-30.60%20-159.00L30.60%20-159.00ZM61.20%200.00L30.60%2053.00L-30.60%2053.00L-61.20%200.00L-30.60%20-53.00L30.60%20-53.00ZM61.20%20106.00L30.60%20159.00L-30.60%20159.00L-61.20%20106.00L-30.60%2053.00L30.60%2053.00ZM61.20%20212.00L30.60%20265.00L-30.60%20265.00L-61.20%20212.00L-30.60%20159.00L30.60%20159.00ZM153.00%20-53.00L122.40%200.00L61.20%200.00L30.60%20-53.00L61.20%20-106.00L122.40%20-106.00ZM153.00%2053.00L122.40%20106.00L61.20%20106.00L30.60%2053.00L61.20%200.00L122.40%200.00ZM153.00%20159.00L122.40%20212.00L61.20%20212.00L30.60%20159.00L61.20%20106.00L122.40%20106.00ZM153.00%20265.00L122.40%20318.00L61.20%20318.00L30.60%20265.00L61.20%20212.00L122.40%20212.00Z%22%20fill%3D%22none%22%20stroke%3D%22%23252122%22%20stroke-width%3D%221.2%22%2F%3E%3C%2Fsvg%3E");}
