/**
 * Festival program shortcode — aligns with child theme tokens (style.css :root).
 * Dark FAQ-style accordions; keyword filter preserves [hidden] on list items.
 */

/* ----- Scoped tokens (fallbacks if parent section omits :root) ----- */
.festival-program {
  --fp-bg: var(--black, #000);
  --fp-text: var(--white, #fff);
  --fp-accent: var(--bronze, #b36735);
  --fp-accent-soft: var(--breadcrumb-link, #cca076);
  --fp-muted: var(--gray-mid, #999);
  --fp-rule: rgba(255, 255, 255, 0.14);
  --fp-panel-bg: rgba(255, 255, 255, 0.05);
  --fp-font: var(--bodyFont, 'Inter Tight', sans-serif);
  --fp-slot-size: var(--font-heading-card-size, 2.4rem);
}

.festival-program {
  box-sizing: border-box;
  max-width: var(--rowMaxWidth, 1200px);
  margin: 0 auto 3rem;
  /* :root --rowWidth is the row content width (e.g. 90%), not a gutter; padding must not use it. */
  padding: 0;
  font-family: var(--fp-font);
  font-size: var(--font-body-regular-size, 1.6rem);
  font-weight: var(--font-body-regular-weight, 400);
  line-height: var(--font-body-regular-lh, 2rem);
  letter-spacing: var(--font-body-regular-ls, -0.08px);
  color: var(--fp-text);
  background: transparent;
  direction: ltr;
  text-align: left;
  width: 100%;
  min-width: 0;
}

.festival-program *,
.festival-program *::before,
.festival-program *::after {
  box-sizing: border-box;
}

.festival-program ul.festival-program__list {
  list-style: none !important;
  list-style-type: none !important;
  padding: 0 !important;
  padding-left: 0 !important;
  margin: 0 !important;
}

.festival-program ul.festival-program__list > li {
  list-style: none !important;
  list-style-type: none !important;
  margin-left: 0 !important;
  padding-left: 0 !important;
  margin-bottom: 25px;
}

/**
 * Divi often sets ul list-style + padding and font-size:0 tricks on wrappers.
 * Lock program typography and kill stray bullets so titles stay visible.
 */
.et_pb_text .festival-program,
.et_pb_code .festival-program,
.et_pb_fullwidth_code .festival-program {
  direction: ltr;
  text-align: left;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

.et_pb_module .festival-program ul.festival-program__list {
  list-style: none !important;
  list-style-type: none !important;
  padding: 0 !important;
  padding-left: 0 !important;
  margin: 0 !important;
}

.et_pb_module .festival-program ul.festival-program__list > li {
  list-style: none !important;
  list-style-type: none !important;
  margin-left: 0 !important;
  padding-left: 0 !important;
}

.et_pb_module .festival-program .festival-program__toggle {
  display: block;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

.et_pb_module .festival-program .festival-program__trigger,
.et_pb_module .festival-program .festival-program__head-static,
.et_pb_module .festival-program .festival-program__title-text {
  font-family: var(--fp-font, var(--bodyFont, Georgia, serif));
  font-size: var(--font-body-regular-size, 1.6rem) !important;
  line-height: var(--font-body-regular-lh, 2rem) !important;
  font-weight: 600;
  color: #ffffff !important;
}

.et_pb_module .festival-program .festival-program__slot-title,
.et_pb_module .festival-program .festival-program__day-title {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
  color: var(--fp-accent) !important;
}

.et_pb_module .festival-program .festival-program__slot-banner-heading,
.et_pb_module
  .festival-program
  .festival-program__session--subsection_heading
  .festival-program__program-heading--subsection,
.et_pb_module
  .festival-program
  .festival-program__session--section_heading
  .festival-program__session-block-heading {
  text-align: left;
  margin-left: 0;
  margin-right: 0;
  color: var(--fp-text) !important;
}
.et_pb_module
  .festival-program
  .festival-program__session--subsection_heading
  .festival-program__program-heading--subsection {
  color: var(--fp-accent) !important;
}

.et_pb_module .festival-program .festival-program__slot-intro,
.et_pb_module .festival-program .festival-program__slot-banner-intro,
.et_pb_module .festival-program .festival-program__session-heading-intro,
.et_pb_module .festival-program .festival-program__subsection-heading-intro,
.et_pb_module .festival-program .festival-program__day-heading-intro {
  color: rgba(255, 255, 255, 0.88) !important;
}

.et_pb_module
  .festival-program
  .festival-program__session--intro
  .festival-program__program-intro,
.et_pb_module
  .festival-program
  .festival-program__session--intro
  .festival-program__program-intro
  p {
  color: var(--fp-muted) !important;
  opacity: 0.85 !important;
  font-style: italic !important;
  font-weight: 400 !important;
}

/* Toolbar / search (underline style like footer form pattern) */
.festival-program__toolbar {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-end;
  justify-content: space-between;
  gap: 1rem 1.5rem;
  margin-bottom: 2rem;
  width: 100%;
  max-width: 100%;
}

.festival-program__toolbar-search {
  flex: 1 1 14rem;
  min-width: 0;
  max-width: 36rem;
}

.festival-program__search-label {
  display: block;
  max-width: 100%;
}

.festival-program__search-hint {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.festival-program__filter {
  display: block;
  width: 100%;
  padding: 0.5rem 0 0.65rem;
  border: none;
  border-bottom: 1px solid var(--fp-text);
  border-radius: 0;
  background: transparent;
  color: var(--fp-text);
  font-family: var(--font-inter-tight, var(--fp-font));
  font-size: var(--font-label-size, 1.2rem);
  font-weight: var(--font-label-weight, 500);
  letter-spacing: var(--font-label-ls, 0.24px);
  transition:
    border-color 0.25s ease,
    opacity 0.25s ease;
}

.festival-program__filter::placeholder {
  color: var(--fp-muted);
  opacity: 0.85;
}

.festival-program__filter:focus {
  outline: none;
  border-bottom-color: var(--fp-accent-soft);
}

.festival-program__toolbar-days {
  flex: 0 0 auto;
  display: inline-flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: flex-end;
  gap: 0.5rem 0.65rem;
  margin-left: auto;
}

.festival-program__toolbar-sep {
  color: var(--fp-muted);
  font-size: var(--font-label-size, 1.2rem);
  line-height: 1;
  user-select: none;
}

.festival-program__days-expand-all,
.festival-program__days-collapse-all {
  margin: 0;
  padding: 0.35rem 0;
  border: none;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  font-family: var(--font-inter-tight, var(--fp-font));
  font-size: var(--font-label-size, 1.2rem);
  font-weight: var(--font-label-weight, 500);
  letter-spacing: var(--font-label-ls, 0.24px);
  color: var(--fp-accent-soft);
  text-decoration: underline;
  text-underline-offset: 3px;
  cursor: pointer;
  white-space: nowrap;
}

.festival-program__days-expand-all:hover,
.festival-program__days-collapse-all:hover {
  color: var(--fp-accent);
}

.festival-program__days-expand-all:focus-visible,
.festival-program__days-collapse-all:focus-visible {
  outline: 2px solid var(--fp-accent-soft);
  outline-offset: 2px;
}

/* Divi often overrides buttons inside modules */
.et_pb_module .festival-program .festival-program__days-expand-all,
.et_pb_module .festival-program .festival-program__days-collapse-all {
  background: transparent !important;
  border: none !important;
  color: var(--fp-accent-soft) !important;
  padding: 0.35rem 0 !important;
  font-size: var(--font-label-size, 1.2rem) !important;
}

/* Slot headings — FAQ “section” accent */
.festival-program__slot,
.festival-program__day {
  margin-bottom: 2.5rem;
  width: 100%;
  max-width: 100%;
  min-width: 0;
}

.festival-program__slot:last-child,
.festival-program__day:last-child {
  margin-bottom: 0;
}

/* Calendar day heading: static h2, or button inside h2 for day-level accordion. */
.festival-program__slot-title,
.festival-program__day-title,
.festival-program__day-title--static {
  margin: 0 0 1rem;
  padding: 0 0 0.75rem;
  font-size: var(--fp-slot-size);
  font-weight: var(--font-heading-card-weight, 500);
  line-height: var(--font-heading-card-lh, 3.3rem);
  letter-spacing: var(--font-heading-card-ls, -0.12px);
  color: var(--fp-accent);
  border: none;
  border-bottom: 1px solid var(--fp-rule);
}

/* Day block collapsible header (h2 wraps control for document outline). */
.festival-program__day-heading-wrap {
  margin: 0 0 1rem;
  padding: 0;
  border: none;
  border-bottom: 1px solid var(--fp-rule);
  font: inherit;
}

.festival-program__day-heading-wrap .festival-program__day-title {
  margin: 0;
  padding: 0 0 0.75rem;
  border: none;
  flex: 1;
  min-width: 0;
  text-align: left;
}

.festival-program__day-trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  margin: 0;
  padding: 0;
  border: none;
  border-radius: 0;
  background: transparent;
  cursor: pointer;
  font: inherit;
  text-align: left;
  color: inherit;
}

.festival-program__day-trigger:focus-visible {
  outline: 2px solid var(--fp-accent-soft);
  outline-offset: 2px;
}

.festival-program__day-trigger .festival-program__chevron {
  flex-shrink: 0;
}

.festival-program__day-trigger[aria-expanded='true']
  .festival-program__chevron {
  transform: rotate(-135deg);
  margin-top: 0.15rem;
}

.festival-program__day-trigger[aria-expanded='false']
  .festival-program__chevron {
  transform: rotate(45deg);
  margin-top: -0.2rem;
}

.festival-program .festival-program__day-panel[hidden] {
  display: none !important;
}

.festival-program .festival-program__day-panel:not([hidden]) {
  display: block !important;
}

.festival-program__day-panel {
  margin: 0;
  padding: 0;
}

/* Time-block heading: slot term banner, or post program_row_type = subsection_heading */
.festival-program__slot-banner-heading,
.festival-program__program-heading--subsection,
.festival-program__session--section_heading
  .festival-program__session-block-heading {
  margin: 0 0 0.65rem;
  padding: 0;
  font-size: var(--font-body-large-size, 2rem);
  font-weight: 600;
  line-height: var(--font-body-medium-lh, 2.4rem);
  letter-spacing: var(--font-body-medium-ls, -0.16px);
  color: var(--fp-text);
  border: none;
}
.festival-program__program-heading--subsection {
  font-weight: 400;
}

/* Slot-level intro (below main heading, above sessions) */
.festival-program__slot-intro {
  margin: 0 0 1.5rem;
  font-style: italic;
  color: rgba(255, 255, 255, 0.88);
  font-size: var(--copyFontSmall, 1.5rem);
  line-height: 1.55;
}

.festival-program__slot-intro > :first-child {
  margin-top: 0;
}

.festival-program__slot-intro > :last-child {
  margin-bottom: 0;
}

/* In-list slot subsection banner (term meta: block heading + intro) — heading is secondary to day title */
.festival-program__session--slot-banner,
.festival-program__session--day_heading {
  margin: 2.25rem 0 1rem;
  padding: 0;
  border: none;
  background: transparent;
  list-style: none !important;
}

.festival-program__day-heading-block {
  margin: 0;
  padding: 0;
}

.festival-program__day-heading-intro {
  margin: 0 0 1rem;
  font-style: italic;
  color: rgba(255, 255, 255, 0.88);
  font-size: var(--copyFontSmall, 1.5rem);
  line-height: 1.55;
}

.festival-program__day-heading-intro > :first-child {
  margin-top: 0;
}

.festival-program__day-heading-intro > :last-child {
  margin-bottom: 0;
}

.festival-program__slot-banner-intro {
  margin: 0 0 1rem;
  font-style: italic;
  color: rgba(255, 255, 255, 0.88);
  font-size: var(--copyFontSmall, 1.5rem);
  line-height: 1.55;
}

.festival-program__slot-banner-intro > :first-child {
  margin-top: 0;
}

.festival-program__slot-banner-intro > :last-child {
  margin-bottom: 0;
}

/* Post program_row_type = subsection_heading (legacy .session--section_heading kept for cached markup) */
.festival-program__session--subsection_heading,
.festival-program__session--section_heading {
  margin: 2.25rem 0 1rem;
  padding: 0;
  border: none;
  background: transparent;
  list-style: none !important;
}

.festival-program__subsection-heading-block {
  margin: 0;
  padding: 0;
}

.festival-program__subsection-heading-intro {
  margin: 0 0 1rem;
  font-style: italic;
  color: rgba(255, 255, 255, 0.88);
  font-size: var(--copyFontSmall, 1.5rem);
  line-height: 1.55;
}

.festival-program__subsection-heading-intro > :first-child {
  margin-top: 0;
}

.festival-program__subsection-heading-intro > :last-child {
  margin-bottom: 0;
}

.festival-program__session-heading-block {
  margin: 0;
  padding: 0;
}

.festival-program__session-heading-intro {
  margin-top: 0;
}

/* In-list intro copy (program_row_type = intro) — same grey tone as search placeholder */
.festival-program__session--intro {
  margin: 0 0 1rem;
}

.festival-program__session--intro .festival-program__program-intro {
  color: var(--fp-muted);
  opacity: 0.85;
  font-style: italic;
  font-weight: 400;
}

.festival-program__program-intro-lede {
  margin: 0 0 0.5rem;
}

.festival-program__program-intro-body {
  margin: 0;
  font-size: var(--copyFontSmall, 1.5rem);
  line-height: 1.55;
}

.festival-program__program-intro-body > :first-child {
  margin-top: 0;
}

.festival-program__program-intro-body > :last-child {
  margin-bottom: 0;
}

/* Session list */
.festival-program__list {
  list-style: none;
  margin: 0;
  padding: 0;
}

.festival-program__session {
  margin: 0 0 0.65rem;
}

.festival-program__session:last-child {
  margin-bottom: 0;
}

/* Accordion row */
.festival-program__toggle {
  margin: 0;
  padding: 0;
  border: 1px solid var(--fp-rule);
  border-radius: 4px;
  background: var(--fp-panel-bg);
  overflow: hidden;
  width: 100%;
  max-width: 100%;
  min-width: 0;
  transition:
    border-color 0.2s ease,
    background 0.2s ease;
}

.festival-program__toggle:has(
  .festival-program__trigger[aria-expanded='true']
) {
  border-color: rgba(179, 103, 53, 0.45);
  background: rgba(255, 255, 255, 0.07);
}

.festival-program__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  width: 100%;
  margin: 0;
  padding: 1rem 1.15rem;
  border: none;
  border-radius: 0;
  background: transparent;
  cursor: pointer;
  font: inherit;
  font-weight: 600;
  color: var(--fp-text);
  text-align: left;
  line-height: 1.35;
}

.festival-program__trigger:focus-visible {
  outline: 2px solid var(--fp-accent-soft);
  outline-offset: 2px;
}

.festival-program__chevron {
  flex-shrink: 0;
  width: 0.55rem;
  height: 0.55rem;
  margin-top: -0.2rem;
  border-right: 2px solid var(--fp-accent);
  border-bottom: 2px solid var(--fp-accent);
  transform: rotate(45deg);
  transition: transform 0.2s ease;
}

.festival-program__trigger[aria-expanded='true'] .festival-program__chevron {
  transform: rotate(-135deg);
  margin-top: 0.15rem;
}

.festival-program__title-text {
  flex: 1;
  min-width: 0;
}

/* Title-only rows (no host / body to expand) */
.festival-program__toggle--static {
  cursor: default;
}

.festival-program__head-static {
  display: flex;
  align-items: center;
  padding: 1rem 1.15rem;
  font-weight: 600;
  color: var(--fp-text);
  line-height: 1.35;
}

/* Expanded panel — enforce visibility when [hidden] is removed (some builder CSS resets div display). */
.festival-program .festival-program__panel[hidden] {
  display: none !important;
}

.festival-program .festival-program__panel:not([hidden]) {
  display: block !important;
}

/* Expanded panel */
.festival-program__panel {
  padding: 2.15rem 1.15rem;
  border-top: 1px solid var(--fp-rule);
}

.festival-program__host {
  margin: 0 0 0.75rem;
  font-size: var(--copyFontSmall, 1.5rem);
  line-height: 1.45;
  color: var(--fp-accent-soft);
  font-weight: 500;
}

.festival-program__body {
  margin: 0;
  color: rgba(255, 255, 255, 0.88);
  font-size: var(--font-body-regular-size, 1.6rem);
  /* line-height: var(--font-body-medium-lh, 2.4rem); */
}

.festival-program__body > :first-child {
  margin-top: 0;
}

.festival-program__body > :last-child {
  margin-bottom: 0;
}

.festival-program__body a {
  color: var(--primary-color, #09f);
  text-decoration: underline;
  text-underline-offset: 2px;
}

.festival-program__body a:hover {
  color: var(--fp-accent-soft);
}

/* Gutenberg inside accordion: columns + circle avatars.
 * Full .circle-image-fluid rules live here too — theme style.css may not surface in DevTools for panel
 * content (CDN/minify/cache), and figure-level border-radius must not rely on a missing sheet. */

.festival-program__body .wp-block-columns {
  margin-bottom: 1.25rem;
}

.festival-program__body .wp-block-column {
  min-width: 0;
}

/* Single Image block (class on <figure>) or non-column wrapper */
.festival-program__body .circle-image-fluid:not(.wp-block-columns) {
  width: 100%;
  max-width: 220px;
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  margin-left: auto;
  margin-right: auto;
}

/* Class on Columns block: circle each column’s image, not the flex row */
.festival-program__body .wp-block-columns.circle-image-fluid {
  aspect-ratio: unset;
  border-radius: 0;
  overflow: visible;
  width: 100%;
  max-width: 100%;
  margin-left: 0;
  margin-right: 0;
}

.festival-program__body
  .wp-block-columns.circle-image-fluid
  > .wp-block-column
  > figure.wp-block-image {
  width: 100%;
  max-width: 220px;
  aspect-ratio: 1;
  border-radius: 50%;
  overflow: hidden;
  margin: 0 auto;
  height: auto;
}

.festival-program__body .circle-image-fluid .et_pb_image_wrap,
.festival-program__body .circle-image-fluid figure {
  width: 100%;
  height: 100%;
  margin: 0;
  border-radius: 50%;
  overflow: hidden;
}

.festival-program__body figure.circle-image-fluid {
  margin: 0;
}

.festival-program__body .wp-block-image img {
  height: auto;
  max-width: 100%;
}

/* Fill the circular <figure> (overrides height:auto above) */
.festival-program__body .wp-block-image.circle-image-fluid img,
.festival-program__body .circle-image-fluid:not(.wp-block-columns) img,
.festival-program__body
  .wp-block-columns.circle-image-fluid
  > .wp-block-column
  > figure.wp-block-image
  img {
  width: 100%;
  height: 100%;
  max-width: none;
  object-fit: cover;
  object-position: center;
  display: block;
}

/* Empty program */
.festival-program--empty .festival-program__empty {
  margin: 0;
  padding: 1.25rem;
  border: 1px dashed var(--fp-rule);
  border-radius: 4px;
  text-align: center;
  color: var(--fp-muted);
  font-size: var(--copyFontSmall, 1.5rem);
}

@media screen and (max-width: 767px) {
  .festival-program {
    padding: 0 1rem;
  }

  .festival-program__slot-title,
  .festival-program__day-title,
  .festival-program__day-title--static {
    font-size: var(--smallFontMax, 2.7rem);
    line-height: 1.25;
  }

  .festival-program__slot-banner-heading,
  .festival-program__program-heading--subsection,
  .festival-program__session--section_heading
    .festival-program__session-block-heading {
    font-size: var(--font-body-regular-size, 1.6rem);
    line-height: var(--font-body-medium-lh, 2.4rem);
  }
}
