/* Festwochenende: local assets, fluid layout, no JavaScript required. */
.festival-page { background: #fff; }
.festival-wrap { width: min(1280px, calc(100% - 5rem)); margin-inline: auto; }
.festival-hero { padding: calc(var(--nav-h) + 3rem) 0 4.5rem; background: var(--forest); color: #fff; }
.festival-hero .breadcrumb, .festival-hero .breadcrumb a { color: #e1efe8; }
.festival-hero .breadcrumb { flex-wrap: wrap; }
.festival-hero-grid { max-width: 960px; }
.festival-kicker { text-transform: uppercase; letter-spacing: .15em; font-size: .95rem; font-weight: 700; margin-bottom: 1.3rem; }
.festival-hero h1 { font-size: clamp(2.5rem, 5.5vw, 5.1rem); line-height: 1.08; letter-spacing: -.04em; overflow-wrap: anywhere; }
.festival-hero h1 em { display: block; color: var(--terra); }
.festival-date { font-size: clamp(1.6rem, 3vw, 2.2rem); margin-top: 1.6rem; font-weight: 600; }
.festival-lead { font-size: 1.3rem; line-height: 1.65; max-width: 42ch; margin-top: 1rem; color: #f0f7f3; }
.festival-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 1.5rem; margin-top: 2rem; }
.festival-button { display: inline-flex; align-items: center; gap: 2rem; padding: .9rem 1.4rem; background: var(--terra); color: #124333; font-weight: 700; font-size: 1.1rem; text-decoration: none; }
.festival-button:hover { background: #fff; }
.festival-text-link { color: #fff; text-underline-offset: .3em; font-size: 1.1rem; }
.festival-hero :focus-visible { outline: 3px solid #fff; outline-offset: 5px; }
.festival-section { padding-block: clamp(3rem, 6vw, 6rem); scroll-margin-top: calc(var(--nav-h) + 1.5rem); }
.festival-section .festival-kicker { color: var(--forest); }
.festival-section h2 { font-size: clamp(1.9rem, 3.7vw, 3.3rem); line-height: 1.18; letter-spacing: -.025em; }
.festival-section h2 em { color: var(--forest); }
.festival-section-intro { max-width: 62ch; font-size: 1.25rem; line-height: 1.7; margin-top: 1.2rem; color: #333; }
.festival-days { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.5rem; margin-top: 2.5rem; }
.festival-day { border-top: 3px solid var(--forest); padding: 1.7rem; background: #f1f5f1; }
.festival-day-number { font-family: 'Ubuntu', sans-serif; font-size: 3.8rem; font-weight: 700; color: var(--forest); line-height: 1; margin-bottom: 1.7rem; }
.festival-day-number span { display: inline-block; font-family: 'Barlow Condensed', sans-serif; font-size: 1.1rem; margin-left: .6rem; }
.festival-day h3 { font-size: 1.5rem; margin-bottom: .4rem; }
.festival-day time { color: #444; font-size: 1.1rem; }
.festival-day p:last-child { font-size: 1.15rem; line-height: 1.6; margin-top: 1rem; }
.festival-editor { max-width: none; margin-top: 2rem; }
.festival-sponsors { background: #f1f5f1; border-top: 1px solid #dce5dc; }
.festival-sponsor-grid { list-style: none; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.25rem; margin-top: 2.8rem; }
.festival-sponsor { background: white; border: 1px solid #e1e8e1; min-width: 0; padding: 1.5rem; }
.festival-sponsor-logo { min-height: 112px; display: grid; align-items: center; }
.festival-sponsor img { width: 100%; height: auto; aspect-ratio: 3; object-fit: contain; }
.festival-sponsor figcaption { text-align: center; margin-top: 1rem; padding-top: 1rem; border-top: 1px solid #e8ede8; color: #454e47; font-size: 1rem; line-height: 1.4; }
.fire-banner[href]:focus-visible { outline: 3px solid #fff; outline-offset: -6px; }
@media (max-width: 1000px) {
  .festival-days { gap: 1rem; }
  .festival-day { padding: 1.3rem; }
  .festival-sponsor-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 700px) {
  .festival-wrap { width: calc(100% - 2.5rem); }
  .festival-hero { padding-top: calc(var(--nav-h) + 2rem); padding-bottom: 3rem; }
  .festival-days { grid-template-columns: minmax(0, 1fr); }
  .festival-day { display: grid; grid-template-columns: 70px minmax(0, 1fr); gap: 1.5rem; }
  .festival-day-number { font-size: 3rem; }
  .festival-day-number span { display: block; margin: .4rem 0 0; }
  .festival-sponsor { padding: 1rem; }
  .festival-sponsor-logo { min-height: 80px; }
}
@media (max-width: 480px) {
  .festival-hero h1 { font-size: clamp(2rem, 9.5vw, 2.5rem); }
  .festival-sponsor-grid { grid-template-columns: minmax(0, 1fr); gap: 1rem; }
  .festival-sponsor-logo { min-height: 100px; }
  .festival-sponsor { padding: 1.5rem; }
  .festival-actions { align-items: flex-start; flex-direction: column; }
}
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }

/* Core blocks: same layout in WordPress and on the website. */
.festival-page > .wp-block-group { margin-block: 0; }
.festival-hero .wp-block-group, .festival-section .wp-block-group { box-sizing: border-box; }
.festival-hero .festival-wrap, .festival-section .festival-wrap { max-width: 1280px; }
.festival-hero .festival-hero-grid { max-width: 960px; }
.festival-hero .wp-block-heading, .festival-section .wp-block-heading { font-family: 'Ubuntu', system-ui, sans-serif; font-style: normal; font-weight: 700; }
.festival-hero em, .festival-section em { font-style: normal; font-weight: 700; }
.festival-location { margin-top: .4rem; font-size: 1.3rem; line-height: 1.5; }
.festival-hero .festival-actions, .festival-section .festival-actions { gap: 1.5rem; margin-top: 2rem; }
.festival-actions .wp-block-button { margin: 0; }
.festival-program-button .wp-block-button__link { display: inline-flex; align-items: center; padding: .9rem 1.4rem; background: var(--terra); color: #124333; font-family: 'Barlow Condensed', sans-serif; font-weight: 700; font-size: 1.1rem; line-height: 1.5; text-decoration: none; border: 0; border-radius: 0; }
.festival-program-button .wp-block-button__link:hover { background: #fff; color: #124333; box-shadow: inset 0 0 0 2px var(--forest); }
.festival-sponsors-button .wp-block-button__link { background: transparent; color: #fff; border: 0; border-radius: 0; padding: .9rem 0; font-family: 'Barlow Condensed', sans-serif; font-size: 1.1rem; line-height: 1.5; text-decoration: underline; text-underline-offset: .3em; }
.festival-day .festival-day-number { margin-top: 0; margin-bottom: 1.7rem; font-size: 3.8rem; line-height: 1; }
.festival-day .festival-day-date { margin-top: .4rem; color: #444; font-size: 1.1rem; }
.festival-program-item { padding-top: 1.2rem; margin-top: 1.2rem; border-top: 1px solid #cbd9d0; }
.festival-program-item .festival-program-time { margin: 0 0 .5rem; font-size: 1.1rem; color: var(--forest); font-weight: 700; }
.festival-program-item h4 { margin: 0; font-size: 1.3rem; line-height: 1.35; }
.festival-program-item p:last-child { margin-top: .6rem; font-size: 1.15rem; line-height: 1.6; }
.festival-day .festival-day-note { border-left: 3px solid var(--forest); padding-left: .9rem; margin-top: 1.4rem; font-size: 1.15rem; line-height: 1.6; }
.festival-sponsor-grid > .wp-block-image { margin: 0; display: flex; flex-direction: column; justify-content: center; }
.festival-sponsor-grid > .wp-block-image img { width: 100%; height: auto; aspect-ratio: 3; object-fit: contain; }
.festival-sponsor-grid > .wp-block-image figcaption { margin-bottom: 0; color: #454e47; }
@media (max-width: 700px) {
  .festival-day .festival-day-number { font-size: 3rem; }
}
/* Classic themes receive an extra core/group wrapper on the front end. */
.festival-days > .wp-block-group__inner-container,
.festival-sponsor-grid > .wp-block-group__inner-container,
.festival-day > .wp-block-group__inner-container { display: contents; }
.festival-days .festival-day { margin-block: 0; }
.festival-sponsor-grid .wp-block-image { margin: 0; display: flex; flex-direction: column; justify-content: center; }
.festival-sponsor-grid .wp-block-image img { width: 100%; height: auto; aspect-ratio: 3; object-fit: contain; }
.festival-sponsor-grid .wp-block-image figcaption { margin-bottom: 0; color: #454e47; }
