/* Festival-only details; shared page layout stays in site-system.css. */
.koma-page-festival .festival-quick article{--program-color:#D4642F;--program-ink:#241B12;isolation:isolate;overflow:hidden;transition:color .25s ease}
.koma-page-festival .festival-quick article:nth-child(2){--program-color:#2E7D63;--program-ink:#fff}
.koma-page-festival .festival-quick article:nth-child(3){--program-color:#8A2E4D;--program-ink:#fff}
.koma-page-festival .festival-quick article:nth-child(4){--program-color:#7A4E96;--program-ink:#fff}
.koma-page-festival .festival-quick article::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--program-color);transform:translateY(101%);transition:transform .3s var(--ease,ease);pointer-events:none}
.koma-page-festival .festival-quick article:focus-visible{outline:3px solid var(--ink);outline-offset:4px}
@media(hover:hover){
  .koma-page-festival .festival-quick article:hover{background:var(--paper);color:var(--program-ink)}
  .koma-page-festival .festival-quick article:hover::before{transform:translateY(0)}
}
.koma-page-festival .festival-quick article:focus-visible{color:var(--program-ink)}
.koma-page-festival .festival-quick article:focus-visible::before{transform:translateY(0)}
.koma-page-festival .festival-quick article :is(h3,p,span){color:inherit}
.festival-space-figure{margin:0}
.festival-space-figure a{display:block}
.festival-space-figure img{display:block;width:100%;height:auto;border:1px solid var(--site-rule,rgba(36,27,18,.25))}
.festival-space-figure figcaption,.festival-plan-note{color:var(--muted);font-size:.85rem;line-height:1.7;margin:12px 0 0}
.festival-zones{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin:24px 0;border-block:1px solid var(--site-rule,rgba(36,27,18,.25))}
.festival-zones>div{padding:22px 18px;border-right:1px solid var(--site-rule,rgba(36,27,18,.25))}
.festival-zones>div:first-child{padding-left:0}.festival-zones>div:last-child{border-right:0}
.festival-zones dt{font-size:1.05rem;font-weight:800}.festival-zones dt span{display:block;color:var(--orange);font:600 .75rem 'IBM Plex Mono',monospace;margin-bottom:12px}
.festival-zones dd{margin:10px 0 0;font-size:.9rem;line-height:1.75;word-break:keep-all}
.festival-space-more{border-bottom:1px solid var(--site-rule,rgba(36,27,18,.25));padding-bottom:18px}
.festival-space-more summary{cursor:pointer;font-weight:700;min-height:44px;align-content:center}
.festival-space-more .festival-space-figure{margin-top:16px}
.koma-page-festival #place .visitinfo{margin-top:24px}
@media(max-width:700px){.festival-zones{grid-template-columns:repeat(2,minmax(0,1fr))}.festival-zones>div{padding:18px 14px}.festival-zones>div:nth-child(odd){padding-left:0}.festival-zones>div:nth-child(even){border-right:0}.festival-zones>div:nth-child(-n+2){border-bottom:1px solid var(--site-rule,rgba(36,27,18,.25))}}
html[data-motion="off"] .koma-page-festival .festival-quick article,html[data-motion="off"] .koma-page-festival .festival-quick article::before{transition:none}
@media(prefers-reduced-motion:reduce){.koma-page-festival .festival-quick article,.koma-page-festival .festival-quick article::before{transition:none}}
html[data-mode="clear"] .koma-page-festival .festival-quick article:is(:hover,:focus-visible){background:#fff;color:#000}
html[data-mode="clear"] .koma-page-festival .festival-quick article::before{display:none}

/* Transparent logo slots; white-matted source artwork blends into the page. */
.festival-partners .sechead{margin-bottom:22px}
.festival-partners .sechead h2{font-size:clamp(1.4rem,2.5vw,2rem)}
.festival-partner-row{display:grid;grid-template-columns:100px minmax(0,1fr);gap:16px;padding:12px 0;border-top:1px solid var(--site-rule,rgba(36,27,18,.25));align-items:center}
.festival-partner-row:last-child{border-bottom:1px solid var(--site-rule,rgba(36,27,18,.25))}
.festival-partner-row h3{margin:0;font-size:.85rem;color:var(--orange);font-weight:800}
.festival-partner-list{display:flex;flex-wrap:wrap;align-items:center;gap:12px 20px;list-style:none;margin:0;padding:0}
.festival-partner-list li{width:110px;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;text-align:center;font-size:.75rem;font-weight:700;line-height:1.4;word-break:keep-all}
.festival-partner-logo{display:flex;width:86px;height:44px;align-items:center;justify-content:center;background:transparent;padding:3px;box-sizing:border-box}
.festival-partner-logo img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain}
.festival-partner-logo .logo-on-paper{mix-blend-mode:multiply}
.festival-partner-list .festival-partner-text{font-size:.9rem;min-height:44px}
html[data-mode="clear"] .festival-partner-row h3{color:#000}
@media(max-width:540px){.festival-partner-row{grid-template-columns:74px minmax(0,1fr);gap:10px;padding:10px 0;align-items:start}.festival-partner-row h3{padding-top:12px;font-size:.78rem}.festival-partner-list{gap:12px 8px}.festival-partner-list li{width:calc((100% - 8px)/2)}.festival-partner-list .festival-partner-text{font-size:.8rem;min-height:44px}.festival-partner-logo{max-width:100%}}

.festival-gallery{min-width:0}
.festival-play-heading{margin-bottom:20px}.festival-play-heading h2{margin:0 0 10px;font-size:clamp(1.4rem,3vw,2rem)}.festival-play-heading p{margin:0;color:var(--muted);line-height:1.7}
.festival-play-photos{margin:0}.festival-play-photos>div{display:grid;grid-template-columns:1fr 1fr;gap:20px}
.festival-play-photos img{display:block;width:100%;height:auto;aspect-ratio:3/2;object-fit:cover}
.festival-play-photos figcaption{color:var(--muted);font-size:.8rem;line-height:1.7;margin-top:12px}
@media(max-width:600px){.festival-play-photos>div{grid-template-columns:1fr;gap:12px}}
.festival-gallery-track{position:relative;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;overscroll-behavior-x:contain;scrollbar-width:thin}
.festival-gallery-slide{flex:0 0 100%;min-width:0;margin:0;scroll-snap-align:start}
.festival-gallery-slide a{display:block}
.festival-gallery-slide img{display:block;width:100%;height:auto;aspect-ratio:1400/788;object-fit:contain;border:1px solid var(--site-rule,rgba(36,27,18,.25));box-sizing:border-box;background:#fff}
.festival-gallery-slide figcaption{padding:12px 0;color:var(--muted);font-size:.85rem;line-height:1.6}
.festival-gallery-controls{display:flex;align-items:center;gap:10px;margin:8px 0 18px}
.festival-gallery-controls[hidden],.festival-gallery-thumbs[hidden]{display:none}
.festival-gallery-controls button{width:44px;height:44px;border:1px solid var(--ink);background:transparent;color:var(--ink);font-size:1.25rem;cursor:pointer}
.festival-gallery-count{min-width:54px;text-align:center;font:500 .85rem 'IBM Plex Mono',monospace}
.festival-gallery-hint{margin-left:auto;color:var(--muted);font-size:.8rem}
.festival-gallery-thumbs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}
.festival-gallery-thumbs button{min-width:0;padding:4px;border:2px solid transparent;background:transparent;color:var(--ink);cursor:pointer;font:inherit}
.festival-gallery-thumbs img{display:block;width:100%;height:auto;aspect-ratio:1400/788;object-fit:contain}
.festival-gallery-thumbs span{display:block;margin-top:6px;font-size:.8rem;line-height:1.5}
.festival-gallery-thumbs button[aria-current="true"]{border-color:var(--orange);background:rgba(212,100,47,.08);font-weight:800}
.festival-gallery :is(button,a,.festival-gallery-track):focus-visible{outline:3px solid var(--ink);outline-offset:3px}
@media(hover:hover){.festival-gallery-controls button:hover{background:var(--ink);color:var(--paper)}.festival-gallery-thumbs button:hover{border-color:var(--ink)}}
html[data-mode="clear"] .festival-gallery-thumbs button[aria-current="true"]{border-color:#000;background:#fff;text-decoration:underline}
@media(max-width:540px){.festival-gallery-controls{flex-wrap:wrap}.festival-gallery-hint{flex-basis:100%;margin:0}.festival-gallery-thumbs{gap:4px}.festival-gallery-thumbs span{font-size:.68rem}.festival-gallery-slide figcaption{font-size:.78rem}}
