/* Festival overview only; program landing pages retain their own composition. */
.festival-home { --fh-section-space: clamp(56px, 6.7vw, 96px); }
.festival-home .section { padding-block: var(--fh-section-space); }
.festival-home h2 { font-size: clamp(36px, 4vw, 56px); line-height: 1; }
.festival-home .eyebrow { margin-bottom: 18px; }
.fh-hero { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); align-items: center; gap: 80px; padding-block: 64px; }
.fh-hero h1 { font-size: clamp(68px, 8.2vw, 118px); line-height: .88; letter-spacing: -.025em; }
.fh-hero h1 > span { display: block; }
.fh-hero h1 .fh-year { display: flex; align-items: center; gap: 24px; margin-top: 8px; }
.fh-year-rule { height: 14px; flex: 1; background: var(--bf-color-action); }
.fh-theme { font-weight: 700; color: var(--bf-color-ink); font-size: 16px; margin-top: 24px; }
.fh-lead { font: 800 clamp(26px, 2.6vw, 36px)/1.1 var(--bf-font-display); text-transform: uppercase; color: var(--bf-color-ink); margin-top: 32px; }
.fh-hero-description { max-width: 450px; font-size: 14px; margin-top: 16px; }
.fh-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 24px; margin-block: 28px; }
.fh-dateline { display: flex; flex-wrap: wrap; gap: 8px 24px; font-size: 11px; letter-spacing: .06em; font-weight: 700; color: var(--bf-color-ink); }
.fh-program-section, .fh-locations { background: var(--bf-color-tint); }
.fh-program-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 20px; }
.fh-program { --fh-card-padding: 28px; display: flex; flex-direction: column; padding: var(--fh-card-padding); background: var(--bf-color-paper); border: 1px solid var(--bf-color-border); }
.fh-program-photo { position: relative; flex-shrink: 0; aspect-ratio: 3 / 2; margin: calc(-1 * var(--fh-card-padding)) calc(-1 * var(--fh-card-padding)) 24px; overflow: hidden; background: #e9edf4; }
.fh-program-photo > img, .fh-exhibitor-photo > img { display: block; width: 100%; height: 100%; object-fit: cover; }
.fh-program-photo figcaption, .fh-exhibitor-photo figcaption { position: absolute; right: 12px; bottom: 12px; padding: 4px 8px; background: var(--bf-color-paper); color: var(--bf-color-ink); font-size: 10px; line-height: 1.5; }
.fh-program-photo-forum .hero-portrait { position: absolute; width: 64%; max-width: none; top: 2%; left: 18%; }
.fh-card-label { display: flex; justify-content: space-between; gap: 12px; font-size: 10px; font-weight: 700; letter-spacing: .04em; margin-bottom: 28px; color: var(--bf-color-muted); }
.fh-card-label > span:last-child { font-weight: 400; }
.fh-program h3 { font-size: 34px; line-height: 1.05; max-width: 260px; }
.fh-program h3 a { text-decoration: none; }
.fh-program h3 a:hover { text-decoration: underline; text-underline-offset: 4px; }
.fh-program > p { font-size: 14px; margin-block: 16px 24px; }
.fh-card-facts { display: grid; gap: 4px; margin-top: auto; padding-top: 18px; border-top: 1px solid var(--bf-color-border); font-size: 12px; }
.fh-card-facts span:first-child { font-weight: 700; }
.fh-card-facts span:last-child { color: var(--bf-color-muted); }
.fh-program > .text-link { align-self: flex-start; margin-top: 8px; }
.fh-spotlight { display: grid; grid-template-columns: minmax(0, 1.1fr) minmax(0, 1fr); align-items: center; gap: 64px; }
.fh-spotlight h2 { font-size: clamp(64px, 7vw, 100px); line-height: .92; }
.fh-spotlight h2 span { background: linear-gradient(transparent 70%, var(--bf-color-action) 70% 94%, transparent 94%); }
.fh-speaker-label { font-size: 10px; letter-spacing: .12em; margin-top: 28px; }
.fh-speaker { font: 800 34px/1.2 var(--bf-font-display); color: var(--bf-color-ink); text-transform: uppercase; margin-block: 4px 16px; }
.fh-spotlight-copy > p:not([class]) { max-width: 470px; font-size: 14px; }
.fh-spotlight-facts { display: grid; gap: 4px; font-size: 14px; margin-block: 24px; }
.fh-spotlight .hero-portrait { max-width: 410px; }
.fh-schedule { border-block: 1px solid var(--bf-color-border); }
.fh-agenda { border-top: 1px solid var(--bf-color-ink); }
.fh-role-grid, .fh-location-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 40px; }
.fh-role-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.fh-role-grid article { border-top: 3px solid var(--bf-color-action); padding-top: 24px; }
.fh-role-number { font-size: 10px; font-weight: 700; letter-spacing: .06em; }
.fh-role-grid h3 { font-size: 34px; line-height: 1.05; margin-block: 24px 16px; }
.fh-role-grid p, .fh-location-grid article > p:not(.eyebrow) { font-size: 14px; }
.fh-role-grid .text-link { margin-top: 12px; margin-right: 20px; }
.fh-registration-note { padding: 18px 24px; background: var(--bf-color-tint); margin-top: 32px; font-size: 13px; border-left: 3px solid var(--bf-color-action); }
.fh-location-grid article { display: flex; flex-direction: column; border-top: 1px solid var(--bf-color-rule); padding-top: 24px; }
.fh-location-grid .eyebrow { font-size: 10px; }
.fh-location-grid h3 { font-size: 34px; line-height: 1.05; margin-bottom: 16px; }
.fh-location-grid .text-link { align-self: flex-start; margin-top: auto; padding-top: 24px; }
.fh-closing { padding-block: 56px; background: var(--bf-color-inverse); color: var(--bf-color-on-inverse); }
.fh-closing > .wrap { display: flex; justify-content: space-between; align-items: center; gap: 40px; }
.fh-closing p { color: var(--bf-color-on-inverse-muted); }
.fh-closing .button { margin-top: 20px; }
.fh-closing .button:hover { background: var(--bf-color-paper); color: var(--bf-color-ink); }
.fh-closing a:focus-visible { outline-color: var(--bf-color-action); }
@media (max-width: 1100px) {
  .fh-hero { gap: 40px; }
  .fh-program { --fh-card-padding: 24px; }
  .fh-spotlight { gap: 32px; }
}
@media (max-width: 900px) {
  .fh-hero { grid-template-columns: 1fr 1fr; gap: 28px; padding-block: 48px; }
  .fh-hero h1 { font-size: 72px; }
  .fh-hero .eyebrow { font-size: 10px; }
  .fh-theme { font-size: 14px; }
  .fh-program-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .fh-role-grid, .fh-location-grid { gap: 24px; }
}
@media (max-width: 760px) {
  .fh-hero { grid-template-columns: 1fr; gap: 40px; padding-block: 40px 48px; }
  .fh-hero h1 { font-size: clamp(68px, 16vw, 112px); max-width: 540px; }
  .fh-hero-description { max-width: 520px; }
  .fh-lead { font-size: 30px; margin-top: 24px; }
  .fh-spotlight { grid-template-columns: 1fr; gap: 24px; }
  .fh-spotlight .hero-portrait { justify-self: center; width: 85%; max-width: 350px; }
  .fh-role-grid, .fh-location-grid { grid-template-columns: 1fr; gap: 32px; }
  .fh-role-grid h3 br { display: none; }
  .fh-role-grid h3 { margin-top: 16px; }
  .fh-closing > .wrap { flex-direction: column; align-items: flex-start; gap: 24px; }
}
@media (max-width: 540px) {
  .fh-program-grid { grid-template-columns: 1fr; gap: 16px; }
  .fh-card-label { margin-bottom: 20px; }
  .fh-program h3 { max-width: none; }
  .fh-dateline { gap: 6px 16px; font-size: 10px; }
}

/* Expanded festival brief: speaker-led visual, factual proof, daily agenda, participation. */
body:has(.festival-home) .site-header nav { gap: 18px; font-size: 12px; }
body:has(.festival-home) .brand { gap: 8px; }
.fh-mobile-register { display: none; }
.fh-hero { gap: 48px; padding-block: 48px; }
.fh-hero-venues { font-size: 12px; margin-top: 6px; }
.fh-hero-visual { position: relative; min-width: 0; }
.fh-visual-label { font-size: 10px; font-weight: 700; letter-spacing: .09em; color: var(--bf-color-ink); text-align: center; }
.fh-hero-visual .hero-portrait { width: 100%; max-width: 390px; margin: 12px auto 0; }
.fh-visual-caption { position: relative; background: var(--bf-color-inverse); color: var(--bf-color-on-inverse); padding: 20px 24px; margin-top: -20px; border-left: 5px solid var(--bf-color-action); }
.fh-visual-caption p { font-size: 10px; letter-spacing: .12em; color: var(--bf-color-on-inverse-muted); }
.fh-visual-caption strong { display: block; font: 800 32px/1.2 var(--bf-font-display); text-transform: uppercase; margin-block: 4px; }
.fh-visual-caption > span { font-size: 12px; color: var(--bf-color-on-inverse-muted); }
.fh-facts { background: var(--bf-color-inverse); color: var(--bf-color-on-inverse); padding-block: 32px; }
.fh-facts > .wrap { display: grid; grid-template-columns: repeat(4, 1fr); gap: 24px; }
.fh-facts .wrap > div { border-left: 1px solid var(--bf-color-inverse-border); padding-left: 24px; }
.fh-facts .wrap > div:first-child { border: 0; padding-left: 0; }
.fh-facts strong { display: block; font: 800 42px/1.1 var(--bf-font-display); color: var(--bf-color-action); }
.fh-facts span { display: block; font-size: 12px; margin-top: 8px; color: var(--bf-color-on-inverse-muted); }
.fh-about { display: grid; grid-template-columns: 1fr 1fr; gap: 64px; }
.fh-about p:not(.eyebrow) { font-size: 14px; }
.fh-about p + p { margin-top: 16px; }
.fh-benefits { border-top: 1px solid var(--bf-color-border); }
.fh-benefit-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px 40px; }
.fh-benefit-grid article > span { display: inline-block; padding-bottom: 8px; border-bottom: 3px solid var(--bf-color-action); font-size: 12px; font-weight: 700; }
.fh-benefit-grid h3 { font-size: 28px; margin-block: 16px 12px; line-height: 1.05; }
.fh-benefit-grid p { font-size: 14px; }
.fh-availability { font-size: 12px; margin-top: 12px; }
.fh-spotlight-copy > .fh-premise { font-size: 18px; color: var(--bf-color-ink); margin-bottom: 16px; }
.fh-speakers { display: grid; grid-template-columns: 1.3fr 1fr; gap: 48px; }
.fh-keynote { display: grid; grid-template-columns: 160px 1fr; gap: 28px; align-items: center; background: var(--bf-color-tint); padding: 24px; }
.fh-keynote .hero-portrait { width: 160px; }
.fh-keynote h3 { font-size: 30px; }
.fh-keynote p:not(.eyebrow) { font-size: 13px; margin-top: 12px; }
.fh-speaker-pending article { border-bottom: 1px solid var(--bf-color-border); padding-block: 16px; }
.fh-speaker-pending article:first-child { padding-top: 0; }
.fh-speaker-pending h3 { font-size: 24px; }
.fh-speaker-pending p { font-size: 13px; margin-top: 4px; }
.fh-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 24px; }
.fh-filters button { min-height: var(--bf-target); padding: 10px 18px; border: 1px solid var(--bf-color-border); border-radius: var(--bf-radius-control); background: var(--bf-color-paper); color: var(--bf-color-ink); font-size: 13px; }
.fh-filters button[aria-pressed="true"] { background: var(--bf-color-inverse); color: var(--bf-color-on-inverse); border-color: var(--bf-color-inverse); }
.fh-day { border-bottom: 1px solid var(--bf-color-border); }
.fh-day summary { display: flex; align-items: center; gap: 24px; min-height: 76px; padding-block: 16px; list-style: none; }
.fh-day summary::-webkit-details-marker { display: none; }
.fh-day summary > span:first-child { font: 800 36px/1 var(--bf-font-display); color: var(--bf-color-ink); width: 44px; }
.fh-day summary strong { font-size: 14px; }
.fh-day-toggle { font-size: 24px; margin-left: auto; }
.fh-day[open] .fh-day-toggle { transform: rotate(45deg); }
.fh-day-content { margin-left: 68px; padding-bottom: 20px; }
.fh-day-event { display: grid; grid-template-columns: 1.2fr 1fr auto; gap: 20px; align-items: center; padding: 16px; background: var(--bf-color-tint); text-decoration: none; }
.fh-day-event + .fh-day-event { margin-top: 8px; }
.fh-day-event:hover { background: var(--bf-color-warm); }
.fh-day-event strong { font: 800 26px/1.1 var(--bf-font-display); text-transform: uppercase; }
.fh-day-event > span { font-size: 13px; color: var(--bf-color-muted); }
.fh-day-content > p { font-size: 13px; padding-block: 12px; }
.fh-undated { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 24px; background: var(--bf-color-warm); padding: 16px 24px; margin-top: 24px; }
.fh-undated > strong { font: 800 28px/1.1 var(--bf-font-display); text-transform: uppercase; }
.fh-undated > span { font-size: 13px; }
.fh-undated > a { margin-left: auto; }
.fh-ticket-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; margin-top: 24px; }
.fh-ticket { border: 1px solid var(--bf-color-border); padding: 24px; display: flex; flex-direction: column; }
.fh-ticket .eyebrow { font-size: 9px; }
.fh-ticket h3 { font-size: 30px; line-height: 1.1; }
.fh-ticket > p:not(.eyebrow) { font-size: 13px; margin-top: 16px; }
.fh-ticket > a { margin-top: auto; padding-top: 20px; }
.fh-payment { border-block: 1px solid var(--bf-color-border); margin-top: 24px; padding-block: 20px; }
.fh-payment summary { font-weight: 700; font-size: 14px; }
.fh-payment p { font-size: 14px; margin-top: 16px; max-width: 850px; }
.fh-exhibition, .fh-partnership { background: var(--bf-color-tint); }
.fh-exhibitor-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 32px; }
.fh-exhibitor-grid article { border-top: 3px solid var(--bf-color-action); padding-top: 24px; }
.fh-exhibitor-photo { position: relative; aspect-ratio: 16 / 9; overflow: hidden; margin: 0 0 28px; }
.fh-exhibitor-grid h3 { font-size: 36px; }
.fh-exhibitor-grid p:not(.eyebrow) { font-size: 14px; margin-block: 16px 24px; }
.fh-partnership .button { margin-top: 24px; }
.fh-community { display: flex; align-items: center; gap: 32px; padding-block: 40px; }
.fh-community img { object-fit: contain; flex-shrink: 0; }
.fh-community .eyebrow { margin-bottom: 8px; font-size: 10px; }
.fh-community p:not(.eyebrow) { font-size: 13px; }
.fh-community > a { margin-left: auto; white-space: nowrap; }
.fh-closing-links { display: flex; gap: 24px; margin-top: 12px; }
.fh-footer-info { display: grid; grid-template-columns: repeat(3, 1fr); gap: 40px; border-top: 1px solid var(--bf-color-border); padding-block: 32px; }
.fh-footer-info h3 { font-size: 22px; }
.fh-footer-info p { font-size: 12px; margin-top: 12px; }
.footer-brand .brand-mark { margin-bottom: 16px; }
@media (min-width: 761px) and (max-width: 1100px) {
  html:has(.festival-home) { scroll-padding-top: 176px; }
  body:has(.festival-home) .site-header { flex-wrap: wrap; gap: 8px; }
  body:has(.festival-home) .site-header nav { width: 100%; justify-content: space-between; }
}
@media (max-width: 1100px) {
  body:has(.festival-home) .site-header nav { gap: 12px; }
  .fh-keynote { grid-template-columns: 120px 1fr; gap: 20px; padding: 20px; }
  .fh-keynote .hero-portrait { width: 120px; }
  .fh-speakers { gap: 24px; }
}
@media (max-width: 900px) {
  .fh-hero { gap: 24px; }
  .fh-facts strong { font-size: 34px; }
  .fh-about { gap: 32px; }
  .fh-benefit-grid, .fh-ticket-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 760px) {
  html:has(.festival-home) { scroll-padding-top: 168px; }
  .fh-mobile-register { display: flex; width: 100%; }
  .fh-footer-info { grid-template-columns: 1fr; gap: 24px; }
  .fh-hero { padding-block: 40px; gap: 32px; }
  .fh-hero-visual { width: min(100%, 430px); margin-inline: auto; }
  .fh-hero-visual .hero-portrait { max-width: 320px; }
  .fh-facts > .wrap { grid-template-columns: 1fr 1fr; gap: 24px 16px; }
  .fh-facts .wrap > div, .fh-facts .wrap > div:first-child { border: 0; padding-left: 0; }
  .fh-facts strong { font-size: 36px; }
  .fh-about, .fh-speakers, .fh-exhibitor-grid { grid-template-columns: 1fr; gap: 32px; }
  .fh-keynote { grid-template-columns: 110px 1fr; padding: 20px; gap: 16px; }
  .fh-keynote .hero-portrait { width: 110px; }
  .fh-keynote h3 { font-size: 28px; }
  .fh-day summary { gap: 12px; }
  .fh-day summary strong { font-size: 13px; }
  .fh-day summary > span:first-child { width: 34px; flex-shrink: 0; }
  .fh-day-content { margin-left: 0; }
  .fh-day-event { grid-template-columns: 1fr auto; gap: 8px; }
  .fh-day-event strong { font-size: 24px; }
  .fh-day-event > span:nth-child(2) { grid-column: 1; }
  .fh-day-event > span:last-child { grid-column: 2; grid-row: 1 / 3; }
  .fh-community { flex-wrap: wrap; gap: 20px; }
  .fh-community > a { margin-left: 0; }
}
@media (max-width: 540px) {
  .fh-benefit-grid { gap: 28px 20px; }
  .fh-benefit-grid h3 { font-size: 25px; }
  .fh-benefit-grid p { font-size: 13px; }
  .fh-ticket-grid { grid-template-columns: 1fr; }
  .fh-keynote { grid-template-columns: 90px 1fr; padding: 16px; }
  .fh-keynote .hero-portrait { width: 90px; }
}
