/* Festival V3 — nodes 542:3441 and opened component variants on 23:1018.
 * Scoped independently from the approved off-season composition.
 */
.cj-homepage--festival {
 container-type:inline-size;
 --cj-home-gutter:max(20px,calc((100cqw - 1280px)/2));
 --cj-home-gap:35px;
 --cj-home-space:120px;
 --cj-festival-pink:var(--wp--preset--color--pink,#d6b7d7);
 --cj-festival-blue:var(--wp--preset--color--periwinkle,#dceb69);
 --cj-festival-purple:var(--wp--preset--color--festival-purple,#1bb897);
}
.cj-homepage--festival .cj-hp-section:not(.cj-hp-intro):not(:nth-child(3)) { margin-top:180px; }
.cj-homepage--festival .cj-hp-copy h2 { font-size:clamp(32px,3.638vw,55px); }
.cj-homepage--festival .cj-hp-intro { align-items:stretch; }
.cj-homepage--festival .cj-hp-intro .cj-hp-feature-image { aspect-ratio:auto; min-height:412px; position:relative; }
.cj-homepage--festival .cj-hp-intro .cj-hp-feature-image img { position:absolute; inset:0; }
.cj-homepage--festival .cj-hp-copy .cj-hp-tag { padding:5px 10px; }
.cj-festival-intro-copy { display:grid; gap:15px; }
.cj-homepage--festival .cj-hp-marquee { margin-bottom:60px; }
.cj-homepage--festival .cj-hp-marquee__track > :is(h2,span) { font-size:clamp(48px,6.614vw,100px); }
.cj-festival-hero-poster,.cj-festival-hero-video { position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:1; }
.cj-festival-programme { position:absolute; left:var(--cj-home-gutter,20px); bottom:130px; width:199px; height:200px; border-radius:100%; transition:background .3s ease-out; }
.cj-festival-programme:is(:hover,:focus-visible) { background:#fff; }
.cj-festival-programme img { filter:brightness(0) invert(1); }
.cj-festival-programme:is(:hover,:focus-visible) img { filter:none; }
.cj-festival-programme-ring { position:absolute; width:157px; height:164px; top:18px; left:21px; animation:cj-festival-programme-turn 20s linear infinite; }
.cj-festival-programme-book { position:absolute; width:74.017px; height:56.413px; top:71.793px; left:62.491px; }
@keyframes cj-festival-programme-turn { to { transform:rotate(360deg); } }
.cj-festival-scroll { position:absolute; bottom:70px; left:50%; transform:translateX(-50%); padding:10px; }
.cj-festival-scroll > span { display:block; position:relative; width:29px; height:40px; }
.cj-festival-scroll-shell { position:absolute; inset:0; width:29px; height:40px; transform-origin:top; animation:cj-festival-shell 1.701s ease-out infinite; }
.cj-festival-scroll-arrow { position:absolute; left:25.806%; top:18.605%; width:48.387%; height:44.187%; animation:cj-festival-arrow 1.701s ease-out infinite; }
/* Measured variant geometry: shell 170→200; arrow y31.628→92, then hold .8s and reset .1s. */
@keyframes cj-festival-shell { 0%,100%{transform:scaleY(1)}47.09%,94.12%{transform:scaleY(1.17647)} }
@keyframes cj-festival-arrow { 0%,100%{transform:translateY(0)}47.09%,94.12%{transform:translateY(80.37%)} }
.cj-festival-editor-help { position:relative; max-width:500px; margin:30px; padding:24px; background:#fff; color:#000; border:1px solid; }
.cj-festival-editor-help p { font:400 16px/1.5 Inter,sans-serif; }
.cj-festival-hero--editor { min-height:500px!important; height:65vh!important; }
.cj-festival-source-label { padding:8px 12px; font:500 12px/1.4 Inter,sans-serif; color:#333; background:#fff4d2; }
.cj-homepage--festival .cj-festival-accordion { border-block:1px solid #000; margin-top:-1px; transition:background-color .3s linear; }
.cj-festival-accordion--pink { --cj-accordion-color:var(--cj-festival-pink,#d6b7d7); }
.cj-festival-accordion--blue { --cj-accordion-color:var(--cj-festival-blue,#dceb69); }
.cj-homepage--festival .cj-festival-accordion > summary { min-height:106px; display:flex; gap:25px; align-items:center; justify-content:center; font:900 clamp(26px,3.638vw,55px)/normal Mattone,sans-serif; padding:10px 20px; transition:background-color .3s linear; }
.cj-homepage--festival .cj-festival-accordion[open] > summary { border-bottom:1px solid; }
.cj-homepage--festival .cj-festival-accordion[open] > summary::after { content:''; flex:none; margin:0; width:30px; height:30px; background:url('../images/festival-close.svg') center/contain no-repeat; }
.cj-homepage--festival .cj-festival-accordion-content { padding:60px var(--cj-home-gutter); }
.cj-festival-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:35px; }
.cj-festival-grid--events { grid-template-columns:repeat(6,minmax(0,1fr)); gap:35px; }
.cj-festival-grid--events > * { grid-column:span 2; }
.cj-festival-grid--events > :nth-child(-n+2) { grid-column:span 3; }
.cj-festival-grid--more { gap:60px; }
.cj-festival-card { background:#fff; display:flex; flex-direction:column; min-width:0; }
.cj-festival-card-copy { display:flex; flex-direction:column; flex:1; gap:14px; padding:20px; }
.cj-festival-grid--more .cj-festival-card-copy,.cj-festival-grid--events > :nth-child(-n+2) .cj-festival-card-copy { padding:30px; }
.cj-homepage--festival .cj-festival-card-image { aspect-ratio:16/9; overflow:hidden; }
.cj-homepage--festival .cj-festival-card :is(h2,h3) { font:700 clamp(24px,2.249vw,34px)/normal Mattone,sans-serif; }
.cj-homepage--festival .cj-festival-card :is(h2,h3) a { text-decoration:none; }
.cj-festival-card :is(h2,h3) small { font-size:inherit; }
.cj-homepage--festival .cj-festival-card p { font:480 16px/1.2 Inter,sans-serif; }
.cj-homepage--festival .cj-festival-card .cj-festival-card-date,.cj-homepage--festival .cj-festival-grid--more .cj-festival-card p:not(.cj-hp-link) { font-size:24px; font-weight:700; }
.cj-homepage--festival .cj-festival-card .cj-hp-link { margin-top:auto; padding-top:16px; }
.cj-festival-links { display:flex; flex-wrap:wrap; gap:35px; margin-top:60px!important; }
.cj-homepage--festival .cj-festival-accordion--rail > .cj-hp-accordion-content { padding:30px 0 60px; }
.cj-festival-accordion--rail .cj-festival-links { padding-inline:var(--cj-home-gutter); margin-top:30px!important; }
.cj-homepage--festival .cj-festival-accordion--places > .cj-hp-accordion-content { padding:0 0 30px; }
.cj-festival-collection--places > .cj-hp-link { padding-inline:20px; }
.cj-festival-department > h3 { padding:20px; }
.cj-festival-department[hidden] { display:none!important; }
.cj-festival-department-tabs { display:flex; overflow:auto; border-bottom:1px solid; }
.cj-festival-department-tabs button { background:transparent; color:#000; border:0; border-right:1px solid; padding:10px; flex:1 0 145px; min-height:84px; cursor:pointer; font:480 20px/1.2 Inter,sans-serif; }
.cj-festival-department-tabs button[aria-selected=true] { box-shadow:inset 0 -5px #000; font-weight:670; }
.cj-festival-city-grid { columns:5; column-gap:49px; padding:20px; border-bottom:1px solid; }
.cj-homepage--festival .cj-festival-city-grid p { font:670 16px/1.2 Inter,sans-serif; padding:10px; border-bottom:1px solid #0006; margin-bottom:15px; break-inside:avoid; }
.cj-homepage--festival .cj-festival-empty { padding:40px 20px; }
.cj-festival-workshops { display:grid; grid-template-columns:minmax(0,1.1fr) minmax(0,1fr); gap:45px; padding-block:60px; margin-top:-60px!important; }
.cj-homepage--festival .cj-festival-workshops > .cj-hp-copy { padding:50px 0 50px var(--cj-home-gutter); gap:35px; }
.cj-homepage--festival .cj-festival-workshops h2 { font-size:clamp(36px,4.63vw,70px); }
.cj-homepage--festival .cj-festival-workshops .cj-hp-copy > p:not(.cj-hp-link) { font-size:26px; }
.cj-festival-collection--workshops { min-width:0; position:relative; }
.cj-festival-slider { display:flex; gap:30px; overflow:auto; scroll-snap-type:x mandatory; }
.cj-homepage--festival :is(.cj-festival-slider,.cj-hp-film-list,.cj-hp-film-filters,.cj-festival-department-tabs) { scrollbar-width:none; }
.cj-homepage--festival :is(.cj-festival-slider,.cj-hp-film-list,.cj-hp-film-filters,.cj-festival-department-tabs)::-webkit-scrollbar { display:none; }
.cj-festival-workshop-card { flex:0 0 300px; background:var(--cj-festival-purple); text-align:center; padding:15px 15px 30px; scroll-snap-align:start; }
.cj-festival-workshop-card:nth-child(3n+2) { background:var(--cj-festival-pink); }
.cj-festival-workshop-card:nth-child(3n) { background:var(--cj-festival-blue); }
.cj-homepage--festival .cj-festival-workshop-card figure { aspect-ratio:1; opacity:.7; transition:opacity .3s ease-out; }
.cj-homepage--festival .cj-festival-workshop-card:hover figure { opacity:1; }
.cj-homepage--festival .cj-festival-workshop-card h3 { font:700 20px/1.6 Mattone,sans-serif; padding-top:15px; }
.cj-homepage--festival .cj-festival-tags { font:480 12px/1.4 Inter,sans-serif; margin:20px 0 0; }
.cj-homepage--festival .cj-hp-podcast { margin-top:-60px; padding-block:60px; border-block:1px solid #000; }
.cj-festival-slider-frame { position:relative; min-width:0; }
.cj-festival-slider-nav { position:absolute; inset-inline:35px; top:50%; transform:translateY(-50%); display:flex; justify-content:space-between; pointer-events:none; }
.cj-festival-slider-nav button { display:grid; place-items:center; width:50px; height:50px; padding:0; border:1px solid #000; border-radius:100%; background:#fff; cursor:pointer; pointer-events:auto; }
.cj-festival-slider-nav button:disabled { opacity:.45; cursor:default; }
.cj-festival-slider-nav img { width:30px; height:30px; }
.cj-festival-slider-nav button:first-child img { transform:rotate(180deg); }
.cj-homepage--festival .cj-hp-film-list { padding-block:60px; gap:25px; }
.cj-homepage--festival .cj-hp-film-card { flex-basis:300px; padding:15px 15px 30px; background:var(--cj-festival-purple); }
.cj-homepage--festival .cj-hp-film-card:nth-child(3n+2) { background:var(--cj-festival-pink); }
.cj-homepage--festival .cj-hp-film-card:nth-child(3n) { background:var(--cj-festival-blue); }
.cj-homepage--festival .cj-hp-film-card figure { aspect-ratio:1178/1600; margin:0; width:auto; max-width:none; overflow:hidden; background:transparent; transition:margin .3s ease-out; }
.cj-homepage--festival .cj-hp-film-card:is(:hover,:focus-within) figure { margin:-10px; }
.cj-homepage--festival .cj-hp-film-card figure img { width:100%; height:100%; object-fit:cover; opacity:.7; transition:opacity .3s ease-out; }
.cj-homepage--festival .cj-hp-film-card:is(:hover,:focus-within) figure img { opacity:1; }
.cj-homepage--festival .cj-hp-film-card > p { margin-top:15px; }
.cj-homepage--festival .cj-hp-film-card h3 { font:700 20px/1.6 Mattone,sans-serif; padding:0 15px; }
.cj-homepage--festival .cj-hp-film-card h3 a { text-decoration:none; }
.cj-homepage--festival .cj-hp-film-filters button { background:transparent; font-weight:480; min-height:84px; }
.cj-homepage--festival .cj-hp-film-filters button[aria-pressed=true] { box-shadow:inset 0 -5px #000; font-weight:670; background:transparent; }
.cj-homepage--festival .cj-hp-film-filters button:hover { background:var(--cj-festival-blue); }
.cj-homepage--festival .cj-hp-film-filters button:last-child { border-right:0; }
.cj-homepage--festival [data-film-shape=square] .cj-hp-film-card figure { aspect-ratio:1; }
.cj-homepage--festival .cj-hp-film-nav button { width:50px; height:50px; border:1px solid; box-shadow:none; }
.cj-homepage--festival .cj-hp-film-scroller { position:relative; }
.cj-homepage--festival .cj-hp-film-nav { top:50%; transform:translateY(-50%); left:calc(var(--cj-home-gutter) + 35px); right:calc(var(--cj-home-gutter) + 35px); }
.cj-homepage--festival .cj-hp-film-nav img { width:30px; height:30px; }
.cj-homepage--festival .cj-hp-film-nav button { display:grid; place-items:center; padding:0; }
.cj-homepage--festival .cj-hp-film-nav button:first-child img { transform:rotate(180deg); }
.cj-homepage--festival .cj-hp-film-status { font-size:12px; }
/* Editor wrapper parity without hiding content or sacrificing drag/reorder. */
.editor-styles-wrapper .cj-homepage--festival .cj-festival-collection > .block-editor-inner-blocks > .block-editor-block-list__layout,
.editor-styles-wrapper .cj-homepage--festival :is(.cj-festival-grid,.cj-festival-workshops,.cj-festival-card-copy,.cj-festival-slider,.cj-festival-editorial-slider,.cj-festival-city-grid,.cj-festival-intro-copy) > .block-editor-inner-blocks,
.editor-styles-wrapper .cj-homepage--festival :is(.cj-festival-grid,.cj-festival-workshops,.cj-festival-card-copy,.cj-festival-slider,.cj-festival-editorial-slider,.cj-festival-city-grid,.cj-festival-intro-copy) > .block-editor-inner-blocks > .block-editor-block-list__layout { display:contents; }
.editor-styles-wrapper .cj-festival-editorial-slider { display:block; overflow:visible; }
.editor-styles-wrapper .cj-festival-programme-ring,.editor-styles-wrapper .cj-festival-scroll img { animation:none; }
@media(max-width:1000px) {
 .cj-homepage--festival { --cj-home-space:80px; }
 .cj-homepage--festival .cj-hp-section:not(.cj-hp-intro):not(:nth-child(3)) { margin-top:100px; }
 .cj-festival-grid,.cj-festival-grid--more { gap:24px; }
 .cj-festival-city-grid { columns:3; column-gap:24px; }
 .cj-festival-workshops { grid-template-columns:1fr 1fr; gap:24px; }
}
@media(max-width:800px) {
 .cj-homepage--festival { --cj-home-space:60px; }
 .cj-homepage--festival .cj-hp-section:not(.cj-hp-intro):not(:nth-child(3)) { margin-top:80px; }
 .cj-homepage--festival .cj-hp-intro .cj-hp-feature-image { min-height:0; aspect-ratio:621.5/412; }
 .cj-festival-programme { bottom:90px; transform:scale(.75); transform-origin:bottom left; }
 .cj-festival-scroll { bottom:25px; }
 .cj-homepage--festival .cj-festival-accordion > summary { min-height:80px; gap:12px; }
 .cj-homepage--festival .cj-festival-accordion > summary::after { width:22px; height:22px; }
 .cj-homepage--festival .cj-festival-accordion-content { padding:30px 20px; }
 .cj-festival-grid,.cj-festival-grid--events { grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
 .cj-festival-grid--events > *,.cj-festival-grid--events > :nth-child(-n+2) { grid-column:auto; }
 .cj-festival-workshops { grid-template-columns:1fr; padding-top:0; }
 .cj-homepage--festival .cj-festival-workshops > .cj-hp-copy { padding:30px 20px; }
 .cj-festival-workshop-slider { padding-inline:20px; }
 .cj-festival-links { margin-top:30px!important; }
 .cj-festival-city-grid { columns:2; column-gap:20px; }
 .cj-festival-department-tabs button { min-height:64px; font-size:16px; }
 .cj-festival-editorial-slide { padding-block:30px!important; }
 .cj-homepage--festival .cj-hp-film-nav { left:20px; right:20px; }
 .cj-festival-slider-nav { inset-inline:20px; }
}
@media(max-width:540px) {
 .cj-festival-grid,.cj-festival-grid--events { grid-template-columns:1fr; }
 .cj-festival-city-grid { columns:1; }
 .cj-festival-card-copy,.cj-festival-grid--more .cj-festival-card-copy { padding:20px; }
}
@media(prefers-reduced-motion:reduce) {
 .cj-festival-programme-ring,.cj-festival-scroll img { animation:none!important; }
 .cj-festival-accordion,.cj-festival-accordion > summary { transition:none!important; }
}
html[data-cj-motion=reduced] :is(.cj-festival-programme-ring,.cj-festival-scroll img) { animation:none!important; }
