/* Festival area uses HARDBERLIN's existing typeface and colour tokens. */
.festival-site main { max-width: 1100px; padding-top: 3.5rem; }
.festival-site h1 { color: var(--ink); font-size: clamp(2.2rem, 5.5vw, 4.8rem); line-height: 1.05; letter-spacing: -.04em; max-width: 18ch; text-wrap: balance; }
.festival-site h2 { color: var(--ink); font-size: 1.25rem; letter-spacing: -.015em; line-height: 1.3; text-transform: none; }
.festival-site p, .festival-site dd, .festival-prose li { line-height: 1.65; }
.festival-eyebrow { font-size: .8rem; letter-spacing: .12em; margin: 0 0 1.4rem; }
.festival-eyebrow a { text-decoration: none; }
.festival-lead { max-width: 62ch; font-size: 1.2rem; margin-bottom: 1.2rem; }
.festival-intro, .festival-prose { max-width: 68ch; }
.festival-intro { color: var(--dim); }
.festival-prose { margin-block: 2.5rem; }
.festival-prose h2 { margin-bottom: .7rem; }
.festival-site a { text-underline-offset: .22em; }
.festival-site a:hover, .festival-site button:hover { opacity: .6; }
.festival-site nav { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: .8rem 1rem; }
.festival-site nav a { margin: 0; }
.festival-filters { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem; margin: 2.6rem 0 1.4rem; padding-block: 1.4rem; border-block: 1px solid var(--line); }
.festival-filters label { display: flex; flex-direction: column; gap: .5rem; font-size: .875rem; min-width: 0; }
.festival-filters input, .festival-filters select, .festival-filters button { min-width: 0; font: inherit; font-size: 1rem; color: var(--ink); background: var(--bg); border: 1px solid var(--dim); padding: .7rem; border-radius: 0; min-height: 44px; }
.festival-filters button { grid-column: 1 / -1; justify-self: start; cursor: pointer; }
.festival-filters input::placeholder { color: var(--dim); }
.festival-count { font-variant-numeric: tabular-nums; font-size: .875rem; }
.festival-list { padding: 0; list-style: none; }
.festival-list > li { display: grid; grid-template-columns: 12rem 1fr auto; align-items: start; gap: 1.5rem; border-top: 1px solid var(--line); padding: 1.8rem 0; }
.festival-list h2 { margin: 0 0 .4rem; font-size: 1.7rem; }
.festival-list h2 a { text-decoration: none; }
.festival-list p { margin: .25rem 0; }
.festival-date { font-size: .9rem; font-variant-numeric: tabular-nums; }
.festival-status { display: block; font-size: .75rem; margin-bottom: .45rem; color: var(--dim); }
.festival-card-intro { font-size: .95rem; max-width: 65ch; }
.festival-genres, .festival-verified { font-size: .85rem; color: var(--dim); }
.festival-detail { font-size: .875rem; margin-top: .5rem; }
.festival-facts { display: grid; grid-template-columns: 1fr 1.3fr 1fr; gap: 2rem; border-block: 1px solid var(--line); padding-block: 1.5rem; margin-top: 2.5rem; }
.festival-facts dt { color: var(--dim); font-size: .8rem; text-transform: uppercase; letter-spacing: .08em; margin-bottom: .5rem; }
.festival-facts dd { margin: 0; font-variant-numeric: tabular-nums; }
.festival-button { display: inline-block; border: 1px solid var(--ink); padding: .85rem 1.1rem; text-decoration: none; }
.festival-shop { border-block: 1px solid var(--line); padding: 1.4rem 0; margin: 3rem 0; }
.festival-shop h2 { margin: 0; }
.festival-shop a { display: inline-block; padding-block: .5rem; }
.festival-alert { border-left: 2px solid var(--ink); padding-left: 1rem; max-width: 65ch; }
.festival-skip { position: absolute; left: 1rem; top: -100px; background: var(--bg); padding: 1rem; z-index: 5; }
.festival-skip:focus { top: 1rem; }
@media (max-width: 760px) {
  .festival-site header { gap: 1rem; align-items: flex-start; }
  .festival-site header img { height: 26px; }
  .festival-site main { padding-top: 2.3rem; }
  .festival-list > li { grid-template-columns: 1fr; gap: .6rem; }
  .festival-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .festival-filters label:first-child { grid-column: 1 / -1; }
  .festival-facts { grid-template-columns: 1fr; gap: 1.2rem; }
}
