/**
 * ElstFest 2.0 — forceful festival identity.
 */
:root {
	--festival-black: #061311;
	--festival-deep: #072e29;
	--festival-green: #39a75a;
	--festival-cyan: #5dbfc1;
	--festival-yellow: #f2b632;
	--festival-paper: #f4f1e9;
	--festival-line: rgba(255, 255, 255, .16);
	--festival-cut: polygon(0 0, 100% 0, 100% calc(100% - 34px), 0 100%);
}

body { background: var(--festival-black); }
body, button, input, textarea, select { font-family: var(--font); }
h1, h2, h3, h4 { font-weight: 800; letter-spacing: -.065em; }
.eyebrow { color: var(--festival-green); font-size: .7rem; font-weight: 800; letter-spacing: .22em; }
.eyebrow::before { width: 42px; height: 3px; }
.button, .ds-button, .header-cta { border-radius: 3px; letter-spacing: .02em; text-transform: uppercase; }
.button { box-shadow: 8px 8px 0 rgba(0, 0, 0, .2); }
.button:hover { box-shadow: 3px 3px 0 rgba(0, 0, 0, .25); transform: translate(4px, 4px); }

/* Header */
.site-header--floating, body.home .site-header--floating { position: fixed; padding: 0; background: linear-gradient(180deg, rgba(3, 18, 16, .92), rgba(3, 18, 16, .56)); box-shadow: none; }
.header-shell, body.home .header-shell { width: min(1480px, 100%); min-height: 92px; padding: 8px clamp(20px, 4vw, 64px); border: 0; border-bottom: 1px solid var(--festival-line); border-radius: 0; background: transparent; box-shadow: none; grid-template-columns: minmax(180px, 1fr) auto minmax(220px, 1fr); backdrop-filter: blur(16px); }
.official-logo img, body.home .official-logo img { width: auto; height: 74px; filter: drop-shadow(0 8px 20px rgba(0, 0, 0, .28)); }
.primary-navigation a, body.home .primary-navigation a { padding: 13px 10px; color: #fff; font-size: .72rem; font-weight: 700; letter-spacing: .055em; text-transform: uppercase; }
.primary-navigation a:hover, .primary-navigation .current-menu-item > a, body.home .primary-navigation a:hover { background: transparent; color: var(--festival-cyan); }
.primary-navigation .current-menu-item > a::after { right: 10%; bottom: 4px; left: 10%; height: 3px; background: var(--festival-green); }
.header-phone { color: #fff; }
.header-cta, body.home .header-cta { min-height: 48px; padding: 12px 18px; background: var(--festival-green); box-shadow: 6px 6px 0 rgba(0, 0, 0, .25); }
.site-header--floating.is-scrolled, body.home .site-header--floating.is-scrolled, body:not(.home) .site-header--floating { padding: 0; background: rgba(4, 25, 22, .96); box-shadow: 0 14px 40px rgba(0, 0, 0, .22); }
.is-scrolled .header-shell, body.home .is-scrolled .header-shell, body:not(.home) .header-shell { min-height: 74px; border-color: rgba(255, 255, 255, .1); background: transparent; box-shadow: none; }
.is-scrolled .official-logo img, body.home .is-scrolled .official-logo img, body:not(.home) .official-logo img { height: 58px; filter: drop-shadow(0 5px 14px rgba(0, 0, 0, .25)); }
.is-scrolled .primary-navigation a, body:not(.home) .primary-navigation a, .is-scrolled .header-phone, body:not(.home) .header-phone { color: #fff; }

/* Hero */
.hero, body.home .hero { min-height: 96svh; overflow: hidden; border-radius: 0; background: var(--festival-black); clip-path: var(--festival-cut); place-items: center start; }
.hero::before { position: absolute; z-index: 1; width: 42vw; height: 140%; top: -20%; right: -18%; border-left: 1px solid rgba(93, 191, 193, .25); background: repeating-linear-gradient(115deg, transparent 0 32px, rgba(255, 255, 255, .035) 33px 34px); content: ""; transform: skewX(-12deg); pointer-events: none; }
.hero-background, body.home .hero-background { width: 110%; height: 110%; inset: -5%; filter: saturate(1.05) contrast(1.03); }
.hero-overlay, body.home .hero-overlay { background: linear-gradient(90deg, rgba(3, 24, 20, .78) 0%, rgba(4, 34, 28, .58) 42%, rgba(4, 28, 24, .2) 72%, rgba(3, 17, 15, .06)), linear-gradient(180deg, rgba(0, 0, 0, .08), rgba(0, 0, 0, .2)); }
.hero-aurora { display: none; }
.hero-content, body.home .hero-content { max-width: 1480px; padding-top: 180px; padding-bottom: 130px; }
.hero-content .eyebrow, body.home .hero-content .eyebrow { padding: 0; border: 0; background: transparent; color: var(--festival-cyan); backdrop-filter: none; }
.hero-content h1, body.home .hero-content h1 { max-width: 970px; margin: 0; color: #fff; font-size: clamp(4.8rem, 11vw, 11rem); font-weight: 800; letter-spacing: -.09em; line-height: .78; text-transform: uppercase; text-wrap: balance; }
.hero-manifesto { margin: 24px 0 4px; color: var(--festival-yellow); font-size: clamp(1.45rem, 3vw, 2.8rem); font-weight: 800; letter-spacing: -.04em; text-transform: uppercase; }
.hero-subtitle, body.home .hero-subtitle { max-width: 620px; margin-bottom: 34px; color: rgba(255, 255, 255, .76); font-size: clamp(1rem, 1.45vw, 1.22rem); }
.hero-actions .button, body.home .hero-actions .button { min-height: 48px; padding: 13px 22px; border-radius: 8px; }
.hero-actions .button:first-child { background: var(--festival-green); }
.hero-actions .button:nth-child(2) { border: 1px solid rgba(255, 255, 255, .62); background: rgba(255, 255, 255, .12); color: #fff; }
.hero-actions .button:nth-child(n+3) { display: none; }
.hero-wave { display: none; }
.hero-particles { display: none; }
.hero-stamp { position: absolute; z-index: 2; right: clamp(24px, 6vw, 100px); bottom: 100px; display: grid; width: 142px; height: 142px; place-content: center; border: 2px solid rgba(255, 255, 255, .45); border-radius: 50%; color: #fff; text-align: center; transform: rotate(8deg); }
.hero-stamp::before { position: absolute; inset: 7px; border: 1px dashed var(--festival-cyan); border-radius: 50%; content: ""; }
.hero-stamp span { font-size: 2rem; font-weight: 800; letter-spacing: .08em; line-height: 1; }
.hero-stamp small { color: var(--festival-cyan); font-size: .56rem; font-weight: 800; letter-spacing: .28em; }
.scroll-indicator { bottom: 54px; left: clamp(24px, 4vw, 72px); background: transparent; transform: none; }

/* Homepage rhythm */
.homepage-activities-header { margin-bottom: clamp(26px, 3vw, 38px); }
.homepage-activities-grid { display: grid; align-items: stretch; gap: clamp(18px, 2vw, 28px); grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.homepage-activity-card { display: flex; min-width: 0; overflow: hidden; border: 1px solid rgba(46, 93, 87, .14); border-radius: 20px; background: #fff; box-shadow: 0 16px 42px rgba(3, 20, 17, .07); flex-direction: column; transition: border-color .25s ease, box-shadow .25s ease, transform .25s ease; }
.homepage-activity-card:hover { border-color: rgba(57, 167, 90, .34); box-shadow: 0 22px 52px rgba(3, 20, 17, .11); transform: translateY(-3px); }
.homepage-activity-media { display: block; height: clamp(190px, 16vw, 230px); overflow: hidden; background: var(--festival-deep); }
.homepage-activity-media img, .homepage-activity-media .card-placeholder { width: 100%; height: 100%; object-fit: cover; object-position: center; transition: transform .55s ease; }
.homepage-activity-card:hover .homepage-activity-media img { transform: scale(1.025); }
.homepage-activity-content { display: flex; padding: clamp(20px, 2vw, 26px); flex: 1; align-items: flex-start; flex-direction: column; }
.homepage-activity-content time { display: inline-flex; padding: 5px 9px; margin-bottom: 12px; border-radius: 7px; background: rgba(57, 167, 90, .1); color: var(--festival-green); font-size: .75rem; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; }
.homepage-activity-content h3 { margin-bottom: 10px; font-size: clamp(1.5rem, 2vw, 1.875rem); line-height: 1.05; }
.homepage-activity-content h3 a { color: var(--festival-black); text-decoration: none; }
.homepage-activity-content p { display: -webkit-box; margin-bottom: 18px; overflow: hidden; color: var(--color-muted); font-size: .9375rem; line-height: 1.55; -webkit-box-orient: vertical; -webkit-line-clamp: 3; }
.homepage-activity-content .button { margin-top: auto; }
.homepage-activities-footer { display: flex; margin-top: clamp(26px, 3vw, 38px); justify-content: center; }

.home main { background: var(--festival-paper); }
.home .section, body.home .section { padding: clamp(88px, 10vw, 150px) 0; }
.home .section + .section, body.home .section + .section { margin: 0; border-radius: 0; }
.home .section-header { margin-bottom: 48px; }
.home .section-header h2 { font-size: clamp(3.2rem, 7vw, 7rem); line-height: .84; text-transform: uppercase; }

/* Activities */
.activities-section, body.home .activities-section { background: var(--festival-paper); }
.activities-section::before { position: absolute; top: 50px; right: 3vw; color: rgba(6, 19, 17, .055); font-size: clamp(7rem, 19vw, 20rem); font-weight: 800; letter-spacing: -.1em; line-height: 1; content: "DOEN"; }
.card-grid--activities { gap: 12px; }
.card-grid--activities .activity-card, body.home .card-grid--activities .activity-card { min-height: 690px; border: 0; border-radius: 0; box-shadow: none; clip-path: polygon(0 0, 100% 0, 100% 95%, 0 100%); }
.card-grid--activities .activity-card:nth-child(even) { clip-path: polygon(0 5%, 100% 0, 100% 100%, 0 95%); }
.card-grid--activities .card-media::after { background: linear-gradient(180deg, transparent 30%, rgba(2, 16, 14, .92)); }
.card-grid--activities .card-body, body.home .card-grid--activities .card-body { padding: clamp(32px, 5vw, 64px); }
.card-grid--activities .card-body time { color: var(--festival-cyan); }
.card-grid--activities h3, body.home .card-grid--activities h3 { font-size: clamp(3.4rem, 6vw, 6.5rem); line-height: .82; text-transform: uppercase; }
.card-grid--activities .card-body p { max-width: 520px; color: rgba(255, 255, 255, .78); }
.card-grid--activities .text-link { border-radius: 0; background: var(--festival-green); color: #fff; text-transform: uppercase; }

/* News */
.home .section--light { background: var(--festival-deep); color: #fff; clip-path: polygon(0 38px, 100% 0, 100% calc(100% - 38px), 0 100%); }
.home .section--light .section-header h2 { color: #fff; }
.festival-news-grid { grid-template-columns: 1.35fr .65fr; grid-template-rows: repeat(2, minmax(240px, auto)); gap: 16px; }
.festival-news-grid .news-card { display: grid; min-height: 260px; padding: 0; border: 0; border-radius: 0; background: #102f2a; box-shadow: none; grid-template-columns: 42% 58%; }
.festival-news-grid .news-card--featured { min-height: 570px; grid-row: 1 / 3; grid-template: 1fr / 1fr; }
.festival-news-grid .news-card--featured > * { grid-area: 1 / 1; }
.festival-news-grid .card-media { height: 100%; margin: 0; border-radius: 0; aspect-ratio: auto; }
.festival-news-grid .card-media::after { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 35%, rgba(2, 18, 15, .94)); content: ""; }
.festival-news-grid .news-card:not(.news-card--featured) .card-media::after { display: none; }
.festival-news-grid .card-body { z-index: 2; padding: 28px; align-self: end; }
.festival-news-grid .news-card--featured .card-body { padding: clamp(32px, 5vw, 60px); }
.festival-news-grid .news-meta { z-index: 3; display: flex; padding: 22px 24px; align-items: flex-start; gap: 12px; color: rgba(255, 255, 255, .7); }
.festival-news-grid .news-meta > span:first-child { padding: 5px 9px; background: var(--festival-yellow); color: var(--festival-black); font-size: .58rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.festival-news-grid h3 { font-size: clamp(1.4rem, 2.5vw, 2.8rem); line-height: 1; }
.festival-news-grid h3 a { color: #fff; }
.festival-news-grid p { color: rgba(255, 255, 255, .65); }
.festival-news-grid .text-link { color: var(--festival-cyan); text-transform: uppercase; }

/* Memories */
.memories, body.home .memories { overflow: hidden; background: var(--festival-paper); }
.memories::before { position: absolute; top: 15%; left: -3vw; color: rgba(6, 19, 17, .055); font-size: clamp(9rem, 25vw, 26rem); font-weight: 800; letter-spacing: -.12em; content: "MEMORIES"; white-space: nowrap; }
.memory-grid { gap: 14px; }
.memory-grid::before { top: 0; height: 5px; background: var(--festival-green); }
.memory-card, body.home .memory-card { min-width: min(470px, 82vw); border: 0; border-radius: 0; background: var(--festival-black); box-shadow: none; }
.memory-card:nth-child(even) { margin-top: 70px; }
.memory-card::before { display: none; }
.memory-card .card-media { aspect-ratio: 4 / 5; }
.memory-card .card-media::after { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 42%, rgba(2, 15, 13, .9)); content: ""; }
.memory-card .card-body { padding: 30px; }
.memory-card h3 a { color: #fff; }
.memory-card p { color: rgba(255, 255, 255, .64); }
.memory-year { padding: 0; border-radius: 0; background: transparent; color: var(--festival-yellow); font-size: 2.8rem; letter-spacing: -.08em; }

/* Volunteers */
.volunteer-cta, body.home .volunteer-cta { padding: 0; background: var(--festival-black); }
.cta-panel, body.home .cta-panel { min-height: 78svh; padding: clamp(60px, 10vw, 140px); border-radius: 0; background: linear-gradient(90deg, rgba(2, 17, 15, .94), rgba(2, 17, 15, .28)), var(--cta-image, url('../images/hero-dorpsfeest-elst.jpg')) center / cover; box-shadow: none; clip-path: polygon(0 0, 100% 5%, 100% 100%, 0 96%); }
.cta-panel > div { max-width: 930px; }
.cta-panel h2, body.home .cta-panel h2 { max-width: 1050px; color: #fff; font-size: clamp(4rem, 9vw, 9rem); line-height: .8; text-transform: uppercase; }
.cta-panel p { max-width: 700px; font-size: 1.1rem; }
.cta-panel .button { flex: 0 0 auto; background: var(--festival-yellow); color: var(--festival-black); }

/* Sponsors */
.sponsors, body.home .sponsors { background: var(--festival-black); color: #fff; clip-path: none; }
.sponsors .section-header h2 { color: #fff; }
.sponsors-header { margin-bottom: clamp(32px, 4vw, 52px); }
.sponsors .sponsor-track { display: grid; gap: clamp(24px, 3vw, 36px); background: transparent; grid-template-columns: 1fr; }
.sponsor-tier { display: grid; gap: 14px; }
.sponsor-tier__title { margin: 0; color: rgba(255, 255, 255, .64); font-size: .8125rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.sponsor-tier__grid { display: grid; gap: 12px; grid-template-columns: repeat(6, minmax(0, 1fr)); }
.sponsor-tier--hoofdsponsor .sponsor-tier__grid { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.sponsor-tier--goud .sponsor-tier__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sponsors .sponsor-card, body.home .sponsor-card { display: flex; height: 112px; min-width: 0; padding: 18px; align-items: center; justify-content: center; border: 1px solid rgba(255, 255, 255, .12); border-radius: 14px; background: #fff; box-shadow: 0 10px 28px rgba(0, 0, 0, .1); filter: none; }
.sponsors .sponsor-card--hoofdsponsor { height: 172px; padding: 30px; grid-column: auto; }
.sponsors .sponsor-card--goud { height: 132px; padding: 22px; }
.sponsors .sponsor-card img { width: auto; max-width: 84%; max-height: 72px; object-fit: contain; filter: none; opacity: 1; transition: filter .3s ease, transform .3s ease; }
.sponsors .sponsor-card--hoofdsponsor img { max-width: 82%; max-height: 108px; }
.sponsors .sponsor-card--goud img { max-height: 84px; }
.sponsors .sponsor-card:hover { border-color: rgba(93, 191, 193, .42); box-shadow: 0 14px 34px rgba(0, 0, 0, .15); filter: none; transform: translateY(-3px); }
.sponsors .sponsor-card:hover img { filter: brightness(1.03); opacity: 1; transform: scale(1.025); }
.sponsors-footer { display: flex; margin-top: clamp(26px, 3vw, 38px); justify-content: flex-end; }
.sponsors-footer .button { min-height: 46px; padding: 11px 18px; }

/* Board editorial */
.team-page .archive-hero { background: var(--festival-black); color: #fff; }
.team-page .archive-hero h1 { color: #fff; text-transform: uppercase; }
.team-page .ds-section { background: var(--festival-paper); }
.team-grid { gap: 12px; grid-template-columns: repeat(12, 1fr); }
.team-card { border: 0; border-radius: 0; background: var(--festival-deep); box-shadow: none; grid-column: span 4; }
.team-card:nth-child(4n+1) { grid-column: span 7; }
.team-card:nth-child(4n+2) { grid-column: span 5; margin-top: 80px; }
.team-card__portrait { height: 520px; margin: 0; border-radius: 0; }
.team-card__body { padding: 30px; }
.team-card h2 { font-size: clamp(2rem, 4vw, 4.4rem); line-height: .88; text-transform: uppercase; }
.team-card h2 a { color: #fff; }
.team-card p { color: rgba(255, 255, 255, .62); }
.team-card__role { color: var(--festival-cyan) !important; letter-spacing: .18em; }

/* Footer */
.site-footer { padding-top: 120px; border-radius: 0; background: var(--festival-black); }
.site-footer::before { opacity: .055; }
.footer-intro { border-bottom: 4px solid var(--festival-green); }
.footer-intro h2 { max-width: 1200px; font-size: clamp(4rem, 10vw, 10rem); line-height: .78; text-transform: uppercase; }
.footer-grid { grid-template-columns: 1.4fr .8fr .8fr 1.1fr; }
.footer-brand .official-logo img { height: 170px; }
.footer-newsletter-link { border-radius: 0; background: var(--festival-green); }
.footer-bottom { border-color: rgba(255, 255, 255, .16); }
.memory-artist-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; }
.memory-artist-card { overflow: hidden; background: #fff; }
.memory-artist-card img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.memory-artist-card > div { padding: 24px; }
.board-about { padding-bottom: var(--festival-space-section-compact); margin-bottom: var(--festival-space-section-compact); border-bottom: 1px solid rgba(46, 93, 87, .14); }
.memory-year-chips { display: flex; margin-bottom: 18px; gap: 8px; flex-wrap: wrap; }
.memory-year-chips span { display: inline-flex; min-height: 30px; padding: 5px 11px; align-items: center; border: 1px solid rgba(46, 93, 87, .18); border-radius: 999px; background: rgba(57, 167, 90, .1); color: var(--festival-deep); font-size: .72rem; font-weight: 800; letter-spacing: .06em; }
.memory-year-chips--light span { border-color: rgba(255, 255, 255, .28); background: rgba(255, 255, 255, .13); color: #fff; backdrop-filter: blur(10px); }
.memory-edition-story { display: grid; gap: 28px; }
.memory-edition-story__item { padding: clamp(28px, 5vw, 58px); border: 1px solid rgba(46, 93, 87, .12); background: #fff; }
.memory-edition-story__item > header { display: grid; margin-bottom: 28px; align-items: center; grid-template-columns: auto 1fr; gap: 22px; }
.memory-edition-story__item > header > span { color: var(--festival-green); font-size: clamp(3rem, 7vw, 6rem); font-weight: 800; letter-spacing: -.07em; line-height: .8; }
.memory-edition-story__item h3 { margin: 0; }
.memory-edition-story__text { max-width: 820px; font-size: 1.05rem; }
.memory-edition-story__item aside { padding: 18px 20px; margin: 24px 0; border-left: 4px solid var(--festival-cyan); background: var(--festival-paper); }
.memory-edition-gallery { display: grid; margin-top: 28px; grid-template-columns: 1.4fr 1fr 1fr; gap: 12px; }
.memory-edition-gallery figure { min-height: 220px; margin: 0; overflow: hidden; }
.memory-edition-gallery figure:first-child { grid-row: span 2; }
.memory-edition-gallery img { width: 100%; height: 100%; object-fit: cover; }
.activity-status { display: inline-flex; padding: 7px 12px; margin-bottom: 18px; border-radius: 999px; background: rgba(57, 167, 90, .12); color: var(--festival-deep); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }

/* Internal page frame */
.archive-hero, .editorial-hero { background: var(--festival-paper); }
.archive-hero--image { background-image: linear-gradient(90deg, rgba(248, 248, 248, .96), rgba(248, 248, 248, .76)), var(--archive-hero-image); background-position: center; background-size: cover; }
.archive-hero h1, .editorial-hero h1 { text-transform: uppercase; }
.card, .entry-card, .story-card, .partner-card > a, .programme-item__card { border-radius: 4px; }

@media (max-width: 1180px) {
	.header-shell, body.home .header-shell { grid-template-columns: auto 1fr auto; }
	.primary-navigation a, body.home .primary-navigation a { padding-inline: 6px; font-size: .62rem; }
	.sponsor-tier__grid { grid-template-columns: repeat(4, minmax(0, 1fr)); }
	.sponsor-tier--hoofdsponsor .sponsor-tier__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.sponsor-tier--goud .sponsor-tier__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 960px) {
	.header-shell, body.home .header-shell { width: 100%; min-height: 78px; padding: 7px 18px; grid-template-columns: 1fr auto; }
	.official-logo img, body.home .official-logo img { height: 62px; }
	.menu-toggle { border-radius: 2px; }
	.primary-navigation { padding-top: 110px; background: var(--festival-black); }
	.primary-navigation a, body.home .primary-navigation a, body.home .is-scrolled .primary-navigation a { color: #fff; font-size: clamp(1.35rem, 6vw, 2.5rem); }
	.festival-news-grid { grid-template-columns: 1fr; grid-template-rows: auto; }
	.festival-news-grid .news-card--featured { grid-row: auto; }
	.sponsor-tier__grid, .sponsor-tier--goud .sponsor-tier__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
	.sponsor-tier--hoofdsponsor .sponsor-tier__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.team-card, .team-card:nth-child(4n+1), .team-card:nth-child(4n+2) { margin-top: 0; grid-column: span 6; }
}

@media (max-width: 700px) {
	:root { --container: min(100% - 30px, 1240px); }
	.hero, body.home .hero { min-height: 820px; clip-path: polygon(0 0, 100% 0, 100% 97%, 0 100%); }
	.hero-content, body.home .hero-content { padding-top: 150px; padding-bottom: 100px; }
	.hero-content h1, body.home .hero-content h1 { font-size: clamp(4rem, 22vw, 6.5rem); }
	.hero-manifesto { font-size: 1.55rem; }
	.hero-actions { align-items: stretch; flex-direction: column; }
	.hero-stamp { display: none; }
	.home .section-header h2 { font-size: clamp(3rem, 15vw, 5rem); }
	.card-grid--activities .activity-card, body.home .card-grid--activities .activity-card { min-height: 570px; }
	.card-grid--activities h3, body.home .card-grid--activities h3 { font-size: 3.6rem; }
	.festival-news-grid .news-card { display: grid; min-height: 420px; grid-template: 1fr / 1fr; }
	.festival-news-grid .news-card > * { grid-area: 1 / 1; }
	.festival-news-grid .news-card .card-media::after { display: block; }
	.festival-news-grid .news-card .card-body { align-self: end; }
	.memory-card:nth-child(even) { margin-top: 0; }
	.cta-panel, body.home .cta-panel { min-height: 720px; padding: 56px 26px; align-items: flex-end; }
	.cta-panel h2, body.home .cta-panel h2 { font-size: clamp(3.8rem, 17vw, 5.6rem); }
	.sponsors .sponsor-track { display: grid; overflow: visible; }
	.sponsor-tier__grid, .sponsor-tier--goud .sponsor-tier__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.sponsor-tier--hoofdsponsor .sponsor-tier__grid { grid-template-columns: 1fr; }
	.sponsors .sponsor-card { min-width: 0; height: 108px; grid-column: auto; }
	.sponsors .sponsor-card--hoofdsponsor { height: 148px; }
	.sponsors .sponsor-card--goud { height: 120px; }
	.sponsors-footer { justify-content: flex-start; }
	.team-grid { grid-template-columns: 1fr; }
	.team-card, .team-card:nth-child(4n+1), .team-card:nth-child(4n+2) { grid-column: auto; }
	.team-card__portrait { height: 430px; }
	.footer-grid { grid-template-columns: 1fr; }
	.footer-intro h2 { font-size: clamp(4rem, 18vw, 6rem); }
}

@media (prefers-reduced-motion: reduce) {
	.hero-background, .card-media img, .team-card__portrait img { animation: none !important; transition: none !important; }
}

/* ElstFest 2.1 — canonical navigation and inner-page system. */
.festival-menu .menu-item-has-children { position: relative; display: flex; align-items: center; }
.submenu-toggle { width: 24px; height: 24px; padding: 0; border: 0; background: transparent; color: #fff; cursor: pointer; }
.submenu-toggle span { display: block; font-size: 1rem; transition: transform .25s ease; }
.festival-menu .sub-menu { position: absolute; width: 220px; top: calc(100% + 12px); left: 50%; display: grid; padding: 10px; gap: 2px; border-top: 3px solid var(--festival-green); background: rgba(4, 25, 22, .98); box-shadow: 0 24px 60px rgba(0, 0, 0, .35); opacity: 0; pointer-events: none; transform: translate(-50%, -8px); transition: opacity .25s ease, transform .25s ease; }
.festival-menu .sub-menu::before { position: absolute; height: 15px; right: 0; bottom: 100%; left: 0; content: ""; }
.festival-menu .sub-menu a { padding: 13px 15px; }
.festival-menu .menu-item-has-children:hover > .sub-menu, .festival-menu .menu-item-has-children:focus-within > .sub-menu, .festival-menu .submenu-open > .sub-menu { opacity: 1; pointer-events: auto; transform: translate(-50%, 0); }
.festival-menu .submenu-open > .submenu-toggle span { transform: rotate(45deg); }
.mobile-menu-cta { display: none; }

/* Compact single-row desktop header. */
@media (min-width: 961px) {
	.site-header--floating, body.home .site-header--floating { min-height: 0; }
	.mobile-menu-cta { display: none !important; }
	.header-shell, body.home .header-shell,
	.is-scrolled .header-shell, body.home .is-scrolled .header-shell,
	body:not(.home) .header-shell {
		width: 100%;
		max-width: 1920px;
		min-height: 96px;
		height: 96px;
		padding: 6px clamp(18px, 2vw, 38px);
		grid-template-columns: minmax(78px, 100px) minmax(0, 1fr) auto;
		column-gap: clamp(12px, 1.4vw, 28px);
	}
	.site-branding { display: flex; min-width: 0; height: 100%; align-items: center; }
	.official-logo img, body.home .official-logo img,
	.is-scrolled .official-logo img, body.home .is-scrolled .official-logo img,
	body:not(.home) .official-logo img,
	.site-header .custom-logo-link img, .site-header .custom-logo { width: auto; max-width: 100px; height: 82px; max-height: 82px; object-fit: contain; }
	.primary-navigation--center { width: 100%; min-width: 0; justify-self: stretch; }
	.primary-navigation .festival-menu { display: flex; width: 100%; align-items: center; justify-content: center; flex-wrap: nowrap; gap: clamp(18px, 1.05vw, 20px); }
	.primary-navigation .festival-menu > .menu-item { flex: 0 0 auto; white-space: nowrap; }
	.primary-navigation a, body.home .primary-navigation a,
	.is-scrolled .primary-navigation a, body:not(.home) .primary-navigation a {
		padding: 9px 2px;
		font-size: .875rem;
		font-weight: 600;
		letter-spacing: 0;
		line-height: 1.25;
		white-space: nowrap;
	}
	.submenu-toggle { flex: 0 0 20px; width: 20px; height: 32px; }
	.header-actions { min-width: 0; }
	.header-cta--hunt, body.home .header-cta--hunt { min-height: 0; padding: 12px 20px; border-radius: 6px; font-size: .8125rem; font-weight: 700; line-height: 1; white-space: nowrap; }
}

@media (min-width: 961px) and (max-width: 1279px) {
	.primary-navigation .festival-menu { gap: 6px; }
	.header-cta--hunt, body.home .header-cta--hunt { padding-inline: 16px; }
}

.site-main:not(.home .site-main) { padding-top: 0; }
.archive-hero { position: relative; isolation: isolate; min-height: min(72svh, 760px); padding: 230px 0 110px; overflow: hidden; background: radial-gradient(circle at 78% 25%, rgba(93, 191, 193, .15), transparent 28%), linear-gradient(135deg, #061311, #0b332e); color: #fff; clip-path: polygon(0 0, 100% 0, 100% 94%, 0 100%); }
.archive-hero::before { position: absolute; z-index: -1; width: 55vw; height: 130%; top: -20%; right: -18%; background: repeating-linear-gradient(115deg, transparent 0 34px, rgba(255, 255, 255, .035) 35px 36px); content: ""; transform: skewX(-10deg); }
.archive-hero::after { position: absolute; z-index: -1; width: 430px; height: 460px; right: 3vw; bottom: -170px; background: url('../images/dorpsfeest-elst-logo.png') center / contain no-repeat; content: ""; opacity: .055; }
.archive-hero__inner { max-width: 1200px; }
.page-hero-breadcrumb { display: flex; margin-bottom: 46px; align-items: center; gap: 10px; color: rgba(255, 255, 255, .54); font-size: .66rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.page-hero-breadcrumb a { color: var(--festival-cyan); text-decoration: none; }
.archive-hero .eyebrow { color: var(--festival-green); }
.archive-hero h1 { max-width: 1100px; color: #fff; font-size: clamp(4.5rem, 10vw, 10rem); line-height: .8; text-transform: uppercase; }
.archive-hero__lead { max-width: 710px; color: rgba(255, 255, 255, .7); font-size: clamp(1.05rem, 1.8vw, 1.4rem); }

.news-hub .ds-section, .activities-hub .ds-section, .memories-page .ds-section, .sponsor-page .ds-section, .team-page .ds-section, .native-page .ds-section { background: var(--festival-paper); }
.content-toolbar { padding: 18px; border-left: 4px solid var(--festival-green); background: #fff; }
.featured-story { border-radius: 0; background: var(--festival-deep); }
.featured-story__image { clip-path: polygon(0 0, 100% 0, 93% 100%, 0 100%); }
.story-card { border: 0; border-radius: 0; box-shadow: 0 18px 50px rgba(6, 19, 17, .1); }
.story-card__image { border-radius: 0; }
.editorial-hero { padding: 210px 0 90px; background: var(--festival-black); }
.editorial-hero h1 { color: #fff; text-transform: uppercase; }
.editorial-hero__lead { color: rgba(255, 255, 255, .7); }
.editorial-hero__image { border-radius: 0; clip-path: polygon(0 0, 96% 0, 100% 94%, 4% 100%); }
.editorial-content { background: var(--festival-paper); }
.story-share { border-block-width: 3px; }

.activity-feature-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.activity-feature-grid .activity-card { display: grid; min-height: 680px; border: 0; border-radius: 0; grid-template: 1fr / 1fr; }
.activity-feature-grid .activity-card > * { grid-area: 1 / 1; }
.activity-feature-grid .card-media { height: 100%; aspect-ratio: auto; }
.activity-feature-grid .card-media::after { position: absolute; inset: 0; background: linear-gradient(180deg, transparent 25%, rgba(2, 17, 15, .94)); content: ""; }
.activity-feature-grid .card-body { z-index: 2; padding: clamp(32px, 5vw, 62px); align-self: end; }
.activity-feature-grid h2 { font-size: clamp(3.5rem, 6vw, 6rem); line-height: .82; text-transform: uppercase; }
.activity-feature-grid h2 a, .activity-feature-grid p { color: #fff; }

.memory-journey::before { width: 4px; background: linear-gradient(var(--festival-green), var(--festival-cyan)); }
.memory-chapter__year { width: 92px; height: 92px; border-radius: 0; background: var(--festival-yellow); color: var(--festival-black); transform: translate(-50%, -50%) rotate(-4deg); }
.memory-chapter__visual { border-radius: 0; clip-path: polygon(0 0, 96% 0, 100% 92%, 4% 100%); }
.memory-chapter__content h2 { text-transform: uppercase; }
.partner-grid { gap: 2px; background: rgba(6, 19, 17, .12); }
.partner-card > a { border: 0; border-radius: 0; box-shadow: none; }
.partner-card--hoofdsponsor > a { background: var(--festival-deep); }
.partner-card--hoofdsponsor img { filter: brightness(0) invert(1); }
.sponsor-archive-cta { padding: clamp(60px, 9vw, 120px); margin-top: 90px; background: var(--festival-black); color: #fff; clip-path: polygon(0 8%, 100% 0, 100% 100%, 0 100%); }
.sponsor-archive-cta h2 { max-width: 850px; color: #fff; font-size: clamp(3.2rem, 7vw, 7rem); line-height: .85; text-transform: uppercase; }

.volunteer-page .volunteer-hero h1 { text-transform: uppercase; }
.volunteer-roles { background: var(--festival-deep) !important; color: #fff; }
.volunteer-roles h2 { color: #fff; font-size: clamp(3rem, 7vw, 7rem); text-transform: uppercase; }
.role-list { display: grid; border-top: 1px solid rgba(255, 255, 255, .18); grid-template-columns: repeat(3, 1fr); }
.role-list span { padding: 25px 12px; border-right: 1px solid rgba(255, 255, 255, .18); border-bottom: 1px solid rgba(255, 255, 255, .18); color: #fff; font-size: clamp(1rem, 2vw, 1.55rem); font-weight: 800; text-transform: uppercase; }
.benefit-card, .signup-card { border: 0; border-radius: 0; }
.signup-section { clip-path: polygon(0 4%, 100% 0, 100% 100%, 0 100%); }
.hunt-closed-status { display: grid; width: fit-content; padding: 18px 22px; gap: 3px; border-left: 5px solid var(--festival-yellow); background: rgba(0, 0, 0, .52); }
.hunt-closed-status strong { color: #fff; letter-spacing: .08em; text-transform: uppercase; }
.hunt-closed-status a { color: var(--festival-cyan); font-size: .76rem; font-weight: 700; text-decoration: none; }

.split-statement { display: grid; align-items: start; gap: 28px 70px; grid-template-columns: .4fr 1.2fr .7fr; }
.split-statement h2 { font-size: clamp(3.7rem, 8vw, 8rem); line-height: .82; text-transform: uppercase; }
.programme-preview { background: var(--festival-deep) !important; color: #fff; clip-path: polygon(0 6%, 100% 0, 100% 94%, 0 100%); }
.programme-preview h2 { color: #fff; font-size: clamp(3.2rem, 7vw, 7rem); text-transform: uppercase; }
.programme-preview p { color: rgba(255, 255, 255, .65); }
.practical-band { background: var(--festival-yellow) !important; }
.practical-grid { display: grid; gap: 50px; grid-template-columns: 1.3fr .7fr .7fr; }
.practical-grid h2 { font-size: clamp(2.7rem, 5vw, 5rem); line-height: .88; text-transform: uppercase; }
.native-page-content { background: #fff !important; }
.native-empty-state { padding: 60px; border-left: 5px solid var(--festival-green); background: #fff; }

.elementor-location-header, .elementor-location-footer, .elementor-widget-wp-widget-elementor-library, .dialog-widget, .e-floating-bars, .elementor-popup-modal { display: none !important; }
.hunt-how { background: var(--festival-paper); }
.hunt-how h2 { font-size: clamp(3rem, 7vw, 7rem); text-transform: uppercase; }
.hunt-steps { display: grid; padding: 0; margin: 0; list-style: none; grid-template-columns: repeat(3, 1fr); }
.hunt-steps li { padding: clamp(28px, 4vw, 52px); border-top: 4px solid var(--festival-black); border-right: 1px solid rgba(6, 19, 17, .18); }
.hunt-steps span { color: var(--festival-green); font-size: clamp(3rem, 6vw, 6rem); font-weight: 800; letter-spacing: -.08em; }
.hunt-steps h3 { text-transform: uppercase; }

@media (max-width: 960px) {
	.primary-navigation .festival-menu { gap: 0; }
	.festival-menu .menu-item-has-children { display: grid; grid-template-columns: 1fr auto; }
	.festival-menu .sub-menu { position: static; width: 100%; max-height: 0; padding: 0; overflow: hidden; border: 0; background: transparent; box-shadow: none; opacity: 1; pointer-events: none; grid-column: 1 / -1; transform: none; transition: max-height .35s ease; }
	.festival-menu .submenu-open > .sub-menu { max-height: 170px; padding-bottom: 10px; pointer-events: auto; transform: none; }
	.festival-menu .sub-menu a { font-size: 1rem !important; opacity: .7; }
	.submenu-toggle { width: 46px; height: 46px; font-size: 1.4rem; }
	.mobile-menu-cta { display: block; padding: 15px 22px; margin-top: 24px; background: var(--festival-green); color: #fff; font-size: .8rem; font-weight: 800; letter-spacing: .06em; text-align: center; text-decoration: none; text-transform: uppercase; }
	.activity-feature-grid, .split-statement, .practical-grid { grid-template-columns: 1fr; }
	.role-list { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 700px) {
	.archive-hero { min-height: 680px; padding: 170px 0 90px; }
	.archive-hero h1 { font-size: clamp(3.7rem, 17vw, 5.6rem); overflow-wrap: anywhere; }
	.page-hero-breadcrumb { margin-bottom: 34px; }
	.activity-feature-grid { grid-template-columns: 1fr; }
	.activity-feature-grid .activity-card { min-height: 570px; }
	.featured-story__image { clip-path: none; }
	.memory-chapter__year { border-radius: 0; }
	.role-list { grid-template-columns: 1fr; }
	.hunt-steps { grid-template-columns: 1fr; }
	.native-empty-state { padding: 34px 24px; }
}

/* ElstFest refined type and spacing scale. */
:root {
	--festival-space-section: clamp(80px, 6vw, 100px);
	--festival-space-section-compact: clamp(56px, 4.5vw, 72px);
	--festival-space-content: clamp(32px, 3vw, 48px);
	--festival-type-hero: clamp(4.75rem, 6.4vw, 6.875rem);
	--festival-type-page: clamp(4rem, 4.6vw, 4.875rem);
	--festival-type-section: clamp(2.5rem, 3.1vw, 3.25rem);
	--festival-type-card: clamp(1.625rem, 2vw, 2rem);
}

body { font-size: clamp(1.0625rem, 1vw, 1.125rem); line-height: 1.65; }
p { margin-bottom: 1.1em; }
h1, h2, h3, h4 { letter-spacing: -.05em; }
h3 { font-size: var(--festival-type-card); }
.eyebrow, .footer-kicker, .ds-badge, .profile-role, .team-card__role { font-size: clamp(.75rem, .72vw, .875rem); }

.section, .ds-section,
.home .section, body.home .section { padding: var(--festival-space-section) 0; }
.ds-section--compact { padding-block: var(--festival-space-section-compact); }
.section-header, .ds-section-heading { margin-bottom: var(--festival-space-content); }
.section-header h2, .ds-section-heading h2,
.home .section-header h2, body.home .section-header h2 { font-size: var(--festival-type-section); line-height: .98; }
.section-header h2, .ds-section-heading h2 { margin-bottom: clamp(16px, 1.5vw, 24px); }

.hero, body.home .hero { min-height: clamp(600px, 72svh, 680px); }
.hero-content, body.home .hero-content { padding-top: clamp(124px, 14vh, 146px); padding-bottom: clamp(72px, 8vh, 88px); }
.hero-content h1, body.home .hero-content h1 { max-width: 820px; font-size: clamp(3.25rem, 5vw, 4.5rem); line-height: .94; }
.hero-manifesto { margin-top: 18px; font-size: clamp(1.25rem, 2vw, 2rem); }
.hero-subtitle, body.home .hero-subtitle { max-width: 650px; margin-bottom: 24px; font-size: clamp(1.0625rem, 1.15vw, 1.1875rem); line-height: 1.6; }
.hero-actions { gap: 10px; }
.hero-actions .button, body.home .hero-actions .button { min-height: 48px; padding: 13px 22px; border-radius: 8px; }
.hero-stamp { width: 118px; height: 118px; bottom: 76px; }
.hero-stamp span { font-size: 1.6rem; }

.archive-hero { min-height: min(62svh, 630px); padding: 170px 0 82px; }
.archive-hero h1, .editorial-hero h1 { font-size: var(--festival-type-page); line-height: .9; }
.archive-hero__lead, .editorial-hero__lead { max-width: 700px; font-size: clamp(1.0625rem, 1.3vw, 1.1875rem); }
.page-hero-breadcrumb { margin-bottom: 28px; }
.editorial-hero { padding: 165px 0 72px; }
.editorial-hero__copy { margin-bottom: 42px; }

.volunteer-hero, .memory-single__hero, .hunt-single__hero { min-height: min(76svh, 760px); }
.volunteer-hero h1, .memory-single__title h1, .hunt-single__hero h1 { font-size: var(--festival-type-page); line-height: .9; }
.volunteer-hero__content { padding-top: 112px; }
.memory-single__title { padding-bottom: 82px; }

.button, .ds-button { min-height: 50px; padding: 12px 20px; font-size: clamp(.875rem, .8vw, 1rem); }
.button--small { min-height: 42px; padding: 9px 16px; }

.card-body, .entry-card-body { padding: 24px; }
.card-grid--activities .activity-card, body.home .card-grid--activities .activity-card { min-height: 580px; }
.card-grid--activities .card-body, body.home .card-grid--activities .card-body,
.activity-feature-grid .card-body { padding: clamp(28px, 3.5vw, 48px); }
.card-grid--activities h3, body.home .card-grid--activities h3,
.activity-feature-grid h2 { font-size: clamp(2.25rem, 3.4vw, 3.25rem); line-height: .9; }
.festival-news-grid .news-card--featured { min-height: 500px; }
.festival-news-grid .card-body { padding: 24px; }
.festival-news-grid .news-card--featured .card-body { padding: clamp(28px, 3.5vw, 44px); }
.festival-news-grid h3 { font-size: var(--festival-type-card); }
.memory-card .card-body, .team-card__body { padding: 26px; }
.memory-year { font-size: 2.25rem; }
.team-card h2 { font-size: var(--festival-type-card); line-height: .95; }
.benefit-card { padding: 34px; }
.volunteer-story { padding: 30px; }
.signup-card { padding: 40px; }

.cta-panel, body.home .cta-panel { min-height: min(66svh, 680px); padding: var(--festival-space-section); }
.cta-panel h2, body.home .cta-panel h2,
.volunteer-roles h2, .signup-copy h2,
.split-statement h2, .programme-preview h2,
.sponsor-archive-cta h2, .hunt-how h2 { font-size: var(--festival-type-section); line-height: .95; }
.sponsor-archive-cta { padding: var(--festival-space-section); margin-top: var(--festival-space-section-compact); }
.hunt-steps li { padding: clamp(24px, 3vw, 40px); }
.native-empty-state { padding: clamp(34px, 4vw, 48px); }

.site-footer { padding: 72px 0 42px; }
.footer-intro { padding-bottom: 38px; margin-bottom: 42px; border-bottom-width: 3px; }
.footer-intro h2 { max-width: 900px; margin-bottom: 0; font-size: clamp(2.75rem, 4vw, 4.5rem); line-height: .9; }
.footer-grid { gap: clamp(28px, 3vw, 46px); }
.footer-brand .official-logo--footer img { width: 100%; max-width: 280px; height: auto; }
.footer-brand p, .footer-column, .footer-column p, .site-footer address { font-size: .9rem; line-height: 1.55; }
.footer-title { margin-bottom: 14px; font-size: .72rem; }
.site-footer li { margin-bottom: 5px; }
.site-footer a { font-size: .875rem; }
.footer-newsletter-link { min-height: 46px; padding: 10px 14px; margin: 14px 0 18px; }
.footer-bottom { padding-top: 20px; margin-top: 42px; font-size: .6875rem; }

@media (max-width: 1180px) {
	.site-footer .footer-brand .official-logo--footer img { width: 100% !important; max-width: 220px !important; height: auto !important; max-height: none !important; object-fit: contain !important; }
}

@media (min-width: 960px) {
	.site-footer { padding: 46px 0 20px; }
	.footer-intro { padding-bottom: 20px; margin-bottom: 24px; }
	.footer-intro h2 { max-width: 760px; font-size: clamp(2.75rem, 3.2vw, 3.125rem); line-height: 1.04; }
	.footer-grid { gap: 24px; }
	.site-footer .footer-brand .official-logo--footer img { width: 100% !important; max-width: 180px !important; height: auto !important; object-fit: contain !important; }
	.footer-title { margin-bottom: 11px; font-size: .9375rem; letter-spacing: .03em; text-transform: none; }
	.site-footer a, .site-footer address, .footer-brand p, .footer-column p { font-size: .9375rem; line-height: 1.5; }
	.site-footer li { margin-bottom: 4px; }
	.footer-newsletter-link { min-height: 42px; padding: 9px 12px; margin: 12px 0 14px; }
	.footer-bottom { padding-top: 12px; margin-top: 22px; font-size: .8125rem; }
}

@media (max-width: 768px) {
	:root {
		--festival-space-section: clamp(56px, 14vw, 72px);
		--festival-space-section-compact: clamp(44px, 11vw, 58px);
		--festival-space-content: clamp(28px, 8vw, 38px);
		--festival-type-hero: clamp(3rem, 13vw, 4rem);
		--festival-type-page: clamp(2.5rem, 11vw, 3.25rem);
		--festival-type-section: clamp(1.875rem, 8vw, 2.375rem);
		--festival-type-card: clamp(1.5rem, 6vw, 1.875rem);
	}
	body { font-size: clamp(1rem, 4.1vw, 1.0625rem); }
	.homepage-activities-grid { grid-template-columns: 1fr; }
	.homepage-activity-media { height: clamp(180px, 56vw, 230px); }
	.homepage-activity-content { padding: 20px; }
	.homepage-activity-content h3 { font-size: clamp(1.5rem, 7vw, 1.875rem); }
	.hero, body.home .hero { min-height: min(90svh, 760px); }
	.hero-content, body.home .hero-content { padding-top: 130px; padding-bottom: 82px; }
	.hero-content h1, body.home .hero-content h1 { font-size: var(--festival-type-hero); line-height: .88; }
	.hero-manifesto { margin-top: 14px; font-size: clamp(1.125rem, 5vw, 1.4rem); }
	.hero-subtitle, body.home .hero-subtitle { margin-bottom: 22px; font-size: 1rem; }
	.hero-actions .button, body.home .hero-actions .button { min-height: 48px; }
	.archive-hero { min-height: 520px; padding: 140px 0 64px; }
	.archive-hero h1, .editorial-hero h1 { font-size: var(--festival-type-page); }
	.editorial-hero { padding: 140px 0 58px; }
	.volunteer-hero, .memory-single__hero, .hunt-single__hero { min-height: min(78svh, 680px); }
	.volunteer-hero h1, .memory-single__title h1, .hunt-single__hero h1 { font-size: var(--festival-type-page); }
	.card-grid--activities .activity-card, body.home .card-grid--activities .activity-card,
	.activity-feature-grid .activity-card { min-height: 500px; }
	.card-grid--activities h3, body.home .card-grid--activities h3,
	.activity-feature-grid h2 { font-size: var(--festival-type-card); }
	.festival-news-grid .news-card, .festival-news-grid .news-card--featured { min-height: 380px; }
	.cta-panel, body.home .cta-panel { min-height: 560px; padding: 48px 24px; }
	.footer-intro h2 { font-size: clamp(2.5rem, 11vw, 3.5rem); }
	.site-footer { padding: 60px 0 36px; }
	.footer-intro { padding-bottom: 30px; margin-bottom: 34px; }
	.footer-grid { gap: 30px; }
	.site-footer .footer-brand .official-logo--footer img { width: 100% !important; max-width: 180px !important; height: auto !important; max-height: none !important; object-fit: contain !important; }
	.footer-bottom { margin-top: 34px; gap: 6px; }
	.memory-artist-grid { grid-template-columns: 1fr; }
	.memory-edition-story__item > header { align-items: start; grid-template-columns: 1fr; }
	.memory-edition-gallery { grid-template-columns: 1fr 1fr; }
	.memory-edition-gallery figure:first-child { grid-column: 1 / -1; grid-row: auto; }
}

@media (max-width: 430px) {
	.hero-content, body.home .hero-content { padding-top: 122px; padding-bottom: 72px; }
	.sponsor-tier__grid, .sponsor-tier--goud .sponsor-tier__grid { grid-template-columns: 1fr; }
	.archive-hero { min-height: 480px; padding: 128px 0 56px; }
	.card-body, .entry-card-body, .memory-card .card-body, .team-card__body { padding: 22px; }
	.signup-card, .native-empty-state { padding: 26px 22px; }
	.site-footer { padding-top: 54px; }
	.memory-edition-gallery { grid-template-columns: 1fr; }
	.memory-edition-gallery figure:first-child { grid-column: auto; }
}

/* Content-managed premium page components. */
.dorpsfeest-hero { background-image: linear-gradient(90deg, rgba(3, 18, 16, .94), rgba(3, 18, 16, .45)), var(--dorpsfeest-hero); background-position: center; background-size: cover; }
.dorpsfeest-hero .hunt-facts { margin-top: 28px; }
.dorpsfeest-intro { display: grid; align-items: center; gap: clamp(40px, 6vw, 90px); grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
.dorpsfeest-intro img { width: 100%; max-height: 620px; object-fit: cover; clip-path: polygon(0 0, 96% 0, 100% 93%, 4% 100%); }
.dorpsfeest-intro h2 { font-size: var(--festival-type-section); text-transform: uppercase; }
.dorpsfeest-cta-grid { display: grid; gap: 2px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.dorpsfeest-cta-grid article { padding: clamp(38px, 5vw, 68px); background: var(--festival-deep); color: #fff; }
.dorpsfeest-cta-grid article:nth-child(2) { background: var(--festival-black); }
.dorpsfeest-cta-grid h2 { color: #fff; font-size: var(--festival-type-section); text-transform: uppercase; }
.content-updated { padding-top: 20px; margin-top: 38px; border-top: 1px solid rgba(6, 19, 17, .14); font-size: .78rem; font-weight: 700; letter-spacing: .06em; text-transform: uppercase; }
.memory-photo-story { display: grid; align-items: start; gap: 14px; grid-template-columns: repeat(12, 1fr); }
.memory-photo-story__item { margin: 0; grid-column: span 7; }
.memory-photo-story__item--1 { margin-top: 70px; grid-column: span 5; }
.memory-photo-story__item--2 { grid-column: 3 / span 8; }
.memory-photo-story img { width: 100%; max-height: 720px; object-fit: cover; }
.team-card__email { display: inline-flex; margin-left: 10px; color: var(--festival-cyan); font-size: .75rem; font-weight: 800; text-transform: uppercase; }
.partner-card__description { padding: 0 22px 20px; margin: 0; color: rgba(6, 19, 17, .62); font-size: .82rem; line-height: 1.5; }
.partner-card--hoofdsponsor .partner-card__description { color: rgba(255, 255, 255, .66); }
.volunteer-hero__image { background-image: var(--volunteer-hero, url('../images/hero-dorpsfeest-elst.jpg')); }
.community-section { background: var(--festival-paper); }
.behind-scenes { display: grid; align-items: center; gap: clamp(40px, 6vw, 90px); grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); }
.behind-scenes h2, .social-cta h2 { font-size: var(--festival-type-section); text-transform: uppercase; }
.behind-scenes img { width: 100%; max-height: 560px; object-fit: cover; }
.festival-facts { display: grid; margin-top: var(--festival-space-section-compact); border-block: 4px solid var(--festival-black); grid-template-columns: repeat(4, 1fr); }
.festival-facts div { display: grid; padding: clamp(24px, 3vw, 42px) 18px; border-right: 1px solid rgba(6, 19, 17, .18); gap: 4px; }
.festival-facts div:last-child { border-right: 0; }
.festival-facts strong { color: var(--festival-green); font-size: clamp(2.5rem, 5vw, 5rem); line-height: 1; }
.festival-facts span { font-size: .72rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase; }
.social-cta { display: flex; padding-top: var(--festival-space-section-compact); align-items: end; justify-content: space-between; gap: 32px; }
.social-cta__links { display: flex; flex-wrap: wrap; gap: 8px; }

@media (max-width: 768px) {
	.dorpsfeest-intro, .behind-scenes, .dorpsfeest-cta-grid { grid-template-columns: 1fr; }
	.dorpsfeest-intro img, .behind-scenes img { max-height: 430px; }
	.memory-photo-story { display: block; }
	.memory-photo-story__item, .memory-photo-story__item--1, .memory-photo-story__item--2 { margin: 0 0 12px; }
	.festival-facts { grid-template-columns: repeat(2, 1fr); }
	.festival-facts div:nth-child(2) { border-right: 0; }
	.social-cta { align-items: flex-start; flex-direction: column; }
}

/* Hunt current edition and historical retrospectives. */
.hunt-landing,.hunt-retrospective{background:var(--festival-black)}.hunt-landing__hero,.hunt-retrospective__hero{position:relative;isolation:isolate;display:grid;min-height:min(88svh,900px);place-items:end start;overflow:hidden;background:linear-gradient(90deg,rgba(2,14,12,.96),rgba(2,14,12,.42)),var(--hunt-current-hero,url('../images/hero-dorpsfeest-elst.jpg')) center/cover;color:#fff}.hunt-landing__overlay,.hunt-retrospective__overlay{position:absolute;z-index:-1;inset:0;background:repeating-linear-gradient(115deg,transparent 0 38px,rgba(255,255,255,.025) 39px 40px)}.hunt-landing__hero-content,.hunt-retrospective__title{padding-top:180px;padding-bottom:100px}.hunt-edition-label{display:block;margin-bottom:10px;color:var(--festival-yellow);font-size:.78rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}.hunt-landing h1,.hunt-retrospective h1{max-width:1050px;color:#fff;font-size:var(--festival-type-hero);line-height:.84;text-transform:uppercase}.hunt-landing__slogan{max-width:780px;color:var(--festival-cyan);font-size:clamp(1.3rem,2.4vw,2.3rem);font-weight:800;text-transform:uppercase}.hunt-landing__intro{max-width:700px;color:rgba(255,255,255,.74)}.hunt-status{display:grid;width:min(620px,100%);padding:18px 22px;margin:28px 0;gap:3px;border-left:5px solid var(--festival-yellow);background:rgba(0,0,0,.52)}.hunt-status strong{text-transform:uppercase}.hunt-status span{color:rgba(255,255,255,.7)}.hunt-status--open{border-color:var(--festival-green)}.hunt-current-intro,.hunt-rules,.hunt-history,.hunt-retrospective__story,.hunt-winners,.hunt-gallery-section,.hunt-highlights{background:var(--festival-paper)!important}.hunt-practical-grid,.hunt-figure-grid{display:grid;border-block:4px solid var(--festival-black);grid-template-columns:repeat(5,1fr)}.hunt-practical-grid>div,.hunt-figure-grid>div{display:grid;padding:28px 20px;border-right:1px solid rgba(6,19,17,.16);gap:4px}.hunt-practical-grid .ds-icon{color:var(--festival-green)}.hunt-practical-grid span,.hunt-figure-grid span{font-size:.68rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase}.hunt-practical-grid strong{font-size:1.05rem}.hunt-figure-grid strong{color:var(--festival-green);font-size:clamp(2.5rem,5vw,5rem);line-height:1}.hunt-registration-band,.hunt-final-cta{background:var(--festival-deep)!important}.hunt-registration-panel{padding:clamp(40px,6vw,76px);border-left:6px solid var(--festival-green);background:#071d1a;color:#fff}.hunt-registration-panel h2{color:#fff;font-size:var(--festival-type-section);text-transform:uppercase}.hunt-registration-panel p{color:rgba(255,255,255,.68)}.hunt-rule-list{display:grid;padding:0;counter-reset:hunt-rule;list-style:none;grid-template-columns:repeat(2,1fr)}.hunt-rule-list li{position:relative;padding:26px 30px 26px 74px;border-top:1px solid rgba(6,19,17,.18);counter-increment:hunt-rule}.hunt-rule-list li::before{position:absolute;top:22px;left:20px;color:var(--festival-green);font-size:1.8rem;font-weight:800;content:counter(hunt-rule,decimal-leading-zero)}.hunt-history-grid{display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.hunt-history-card{display:grid;min-height:560px;background:var(--festival-deep);grid-template:1fr/1fr}.hunt-history-card>*{grid-area:1/1}.hunt-history-card__image{position:relative}.hunt-history-card__image::after{position:absolute;inset:0;background:linear-gradient(180deg,transparent 20%,rgba(2,16,14,.95));content:""}.hunt-history-card__image img{width:100%;height:100%;object-fit:cover}.hunt-history-card>div{z-index:2;padding:42px;align-self:end;color:#fff;pointer-events:none}.hunt-history-card>div>*{pointer-events:auto}.hunt-history-card h3{color:#fff}.hunt-history-card p{color:rgba(255,255,255,.7)}.hunt-history-card__year{display:block;color:var(--festival-yellow);font-size:clamp(3rem,6vw,6rem);font-weight:800;line-height:.8}.hunt-retrospective__background{position:absolute;z-index:-2;inset:0}.hunt-retrospective__background img{width:100%;height:100%;object-fit:cover}.hunt-retrospective__year{display:block;color:var(--festival-yellow);font-size:clamp(5rem,14vw,13rem);font-weight:800;letter-spacing:-.1em;line-height:.65}.hunt-retrospective__title>p:last-child{max-width:700px;color:rgba(255,255,255,.74)}.hunt-retrospective__story-grid{display:grid;align-items:center;gap:clamp(40px,6vw,90px);grid-template-columns:.8fr 1.2fr}.hunt-retrospective__story h2{font-size:var(--festival-type-section);text-transform:uppercase}.hunt-retrospective__story-image img{width:100%;max-height:650px;object-fit:cover}.hunt-winner-grid,.hunt-highlight-grid{display:grid;gap:14px;grid-template-columns:repeat(3,1fr)}.hunt-winner-grid article,.hunt-highlight-grid article{padding:30px;background:var(--festival-deep);color:#fff}.hunt-winner-grid img{width:100%;height:300px;margin:-30px -30px 24px;max-width:calc(100% + 60px);object-fit:cover}.hunt-winner-grid h3,.hunt-highlight-grid h3{color:#fff}.hunt-winner-grid span,.hunt-winner-grid strong{display:block;color:var(--festival-yellow)}.hunt-photo-story{display:grid;gap:12px;grid-template-columns:repeat(12,1fr)}.hunt-photo-story a{min-height:280px;grid-column:span 4}.hunt-photo-story a:first-child{min-height:580px;grid-column:span 8;grid-row:span 2}.hunt-photo-story img{width:100%;height:100%;object-fit:cover}.hunt-edition-navigation{display:grid;padding-block:60px;align-items:center;grid-template-columns:1fr auto 1fr}.hunt-edition-navigation>div:last-child{text-align:right}.hunt-edition-navigation a{color:#fff}.elstfest-lightbox{width:min(94vw,1500px);height:min(92vh,1000px);padding:0;border:0;background:#061311}.elstfest-lightbox::backdrop{background:rgba(0,0,0,.88)}.elstfest-lightbox img{width:100%;height:100%;object-fit:contain}.elstfest-lightbox button{position:absolute;top:14px;right:14px;width:48px;height:48px;border:0;background:#fff;color:#061311;font-size:2rem;cursor:pointer}
@media(max-width:768px){.hunt-landing__hero,.hunt-retrospective__hero{min-height:720px}.hunt-landing__hero-content,.hunt-retrospective__title{padding-top:140px;padding-bottom:72px}.hunt-practical-grid,.hunt-figure-grid{grid-template-columns:repeat(2,1fr)}.hunt-rule-list,.hunt-history-grid,.hunt-retrospective__story-grid,.hunt-winner-grid,.hunt-highlight-grid{grid-template-columns:1fr}.hunt-history-card{min-height:500px}.hunt-photo-story{display:block}.hunt-photo-story a{display:block;min-height:0!important;margin-bottom:10px}.hunt-photo-story img{max-height:500px}.hunt-edition-navigation{gap:24px;grid-template-columns:1fr;text-align:center}.hunt-edition-navigation>div:last-child{text-align:center}}

/* Central contact presentation. */
.mobile-menu-contact{display:none}.floating-mail-action{position:fixed;z-index:1700;right:clamp(1rem,3vw,2rem);bottom:clamp(4.8rem,8vw,5.5rem);display:none;width:50px;height:50px;place-items:center;border-radius:50%;background:linear-gradient(135deg,#39a75a,#2e8a4a);box-shadow:0 14px 34px rgba(24,61,54,.28);color:#fff;text-decoration:none}.floating-mail-action .ds-icon{width:23px;height:23px}.floating-mail-action:hover{color:#fff}

/* Mobile-only refinement. Desktop and tablet from 961px remain untouched. */
@media (max-width: 960px) {
	html, body { max-width: 100%; overflow-x: clip; }
	body.menu-open { width: 100%; height: 100dvh; overflow: hidden; overscroll-behavior: none; touch-action: none; }
	.site-header--floating, .site-header--floating.is-scrolled, body:not(.home) .site-header--floating { z-index: 2100; top: 0; padding: max(6px, env(safe-area-inset-top)) 0 6px; background: transparent; box-shadow: none; }
	.admin-bar .site-header--floating { top: 46px; padding-top: 6px; }
	.header-shell, .is-scrolled .header-shell, body:not(.home) .header-shell { width: calc(100% - 20px); min-height: 68px; padding: 4px 8px 4px 16px; border-color: rgba(255,255,255,.13); border-radius: 19px; background: rgba(7,32,28,.76); box-shadow: 0 10px 32px rgba(2,17,15,.2); grid-template-columns: 1fr auto; backdrop-filter: blur(18px) saturate(135%); -webkit-backdrop-filter: blur(18px) saturate(135%); }
	.official-logo img, .is-scrolled .official-logo img, body:not(.home) .official-logo img { width: auto; height: 54px; max-height: 56px; max-width: min(52vw, 170px); object-fit: contain; filter: drop-shadow(0 4px 10px rgba(0,0,0,.16)); }
	.menu-toggle { position: relative; z-index: 2301; display: grid; width: 46px; height: 46px; padding: 10px; place-content: center; border-color: rgba(255,255,255,.24); background: rgba(14,49,43,.9); }
	.menu-toggle span:not(.screen-reader-text) { width: 22px; height: 2px; margin: 3px 0; }
	.menu-toggle[aria-expanded=true] { position: fixed; top: calc(18px + env(safe-area-inset-top)); right: 18px; border-color: rgba(255,255,255,.25); background: rgba(255,255,255,.1); }
	.admin-bar .menu-toggle[aria-expanded=true] { top: calc(60px + env(safe-area-inset-top)); }
	.menu-toggle[aria-expanded=true] span:nth-of-type(1) { transform: translateY(5px) rotate(45deg); }
	.menu-toggle[aria-expanded=true] span:nth-of-type(3) { transform: translateY(-5px) rotate(-45deg); }
	.primary-navigation { z-index: 2200; display: flex; width: 100vw; height: 100dvh; min-height: 100vh; padding: calc(84px + env(safe-area-inset-top)) 24px calc(24px + env(safe-area-inset-bottom)); overflow-x: hidden; overflow-y: auto; align-items: stretch; justify-content: flex-start; flex-direction: column; background: radial-gradient(circle at 85% 8%,rgba(93,191,193,.2),transparent 30%),linear-gradient(155deg,#061c18,#123d35 58%,#205047); opacity: 0; pointer-events: none; visibility: hidden; transform: none; transition: opacity .25s ease,visibility .25s ease; overscroll-behavior: contain; }
	.primary-navigation.is-open { opacity: 1; pointer-events: auto; visibility: visible; }
	.primary-navigation .festival-menu { width: min(100%, 520px); margin: auto auto 0; align-items: stretch; gap: 2px; }
	.primary-navigation .festival-menu > li { width: 100%; }
	.primary-navigation a, .is-scrolled .primary-navigation a, body:not(.home) .primary-navigation a { padding: 7px 4px; border-radius: 0; color: #fff; font-size: clamp(1.5rem, 6.5vw, 1.75rem); font-weight: 700; letter-spacing: -.04em; line-height: 1.12; white-space: normal; }
	.festival-menu .menu-item-has-children { grid-template-columns: minmax(0,1fr) 46px; }
	.submenu-toggle { width: 46px; height: 46px; padding: 0; align-self: center; border: 1px solid rgba(255,255,255,.18); border-radius: 50%; background: rgba(255,255,255,.07); color: #fff; }
	.festival-menu .sub-menu { padding-left: 18px; }
	.festival-menu .submenu-open > .sub-menu { max-height: 150px; padding: 2px 0 8px 18px; }
	.festival-menu .sub-menu a, .is-scrolled .festival-menu .sub-menu a, body:not(.home) .festival-menu .sub-menu a { padding: 7px 4px; color: rgba(255,255,255,.78); font-size: clamp(1.125rem,4.8vw,1.25rem) !important; font-weight: 600; }
	.mobile-menu-cta { width: min(100%, 290px); min-height: 48px; padding: 11px 18px; margin: 16px auto 0; flex: 0 0 auto; border-radius: 999px !important; background: linear-gradient(135deg,#39a75a,#2e8a4a); box-shadow: 0 12px 30px rgba(0,0,0,.18); font-size: .9rem !important; line-height: 1.2 !important; }
	.mobile-menu-contact{display:flex;width:min(100%,520px);padding-top:14px;margin:0 auto;align-items:center;justify-content:center;gap:12px;flex-wrap:wrap}.mobile-menu-contact a,.is-scrolled .mobile-menu-contact a,body:not(.home) .mobile-menu-contact a{padding:4px;color:rgba(255,255,255,.72);font-size:.78rem;letter-spacing:0}
	.header-contact{display:none}.floating-mail-action{display:grid;right:max(14px,env(safe-area-inset-right));bottom:max(76px,calc(14px + env(safe-area-inset-bottom)))}
	body.menu-open .mobile-event-cta, body.menu-open .scroll-top,body.menu-open .floating-mail-action { opacity: 0; pointer-events: none; visibility: hidden; }
	.mobile-event-cta { display: none; }
	.scroll-top { z-index: 1500; right: max(14px, env(safe-area-inset-right)); bottom: max(14px, env(safe-area-inset-bottom)); width: 50px; height: 50px; }
	.site-main, .hero, .archive-hero, .editorial-hero, .volunteer-hero, .memory-single__hero, .hunt-single__hero, .hunt-landing__hero, .hunt-retrospective__hero, .card, .entry-card, .site-footer { max-width: 100%; overflow-x: clip; }
}

@media (max-width: 700px) {
	:root { --festival-space-section: clamp(48px, 13vw, 64px); --festival-space-section-compact: clamp(40px, 10vw, 52px); --festival-type-hero: clamp(2.625rem, 12vw, 3.375rem); --festival-type-page: clamp(2.25rem, 10vw, 2.875rem); --festival-type-section: clamp(1.75rem, 8vw, 2.125rem); }
	body { font-size: clamp(1rem, 4.2vw, 1.125rem); }
	.section, .ds-section, .home .section, body.home .section { padding-block: var(--festival-space-section); }
	.hero, body.home .hero { min-height: clamp(560px, 72dvh, 650px); place-items: center start; }
	.hero-background, .hero-video { width: 112%; height: 112%; object-fit: cover; object-position: 58% center; }
	.hero-content, body.home .hero-content { padding-top: calc(78px + env(safe-area-inset-top)); padding-bottom: 48px; }
	.hero-content .eyebrow { padding: 6px 11px; margin-bottom: 10px; font-size: .68rem; }
	.hero-content h1, body.home .hero-content h1 { margin-bottom: 10px; font-size: clamp(2.375rem, 11vw, 3rem); line-height: .98; }
	.hero-manifesto { margin: 8px 0 6px; font-size: 1.05rem; }
	.hero-subtitle, body.home .hero-subtitle { max-width: 32rem; margin-bottom: 18px; font-size: 1rem; line-height: 1.5; }
	.hero-actions { align-items: flex-start; flex-direction: row; gap: 10px; }
	.hero-actions .button, body.home .hero-actions .button { width: auto; min-height: 46px; max-height: none; padding: 12px 18px; border-radius: 8px; font-size: .875rem; }
	.hero-actions .button:nth-child(n+3), body.home .hero-actions .button:nth-child(n+3) { display: none; }
	.hero-stamp { display: none; }
	.archive-hero { min-height: 430px; padding: calc(108px + env(safe-area-inset-top)) 0 52px; }
	.editorial-hero { padding: calc(108px + env(safe-area-inset-top)) 0 52px; }
	.archive-hero h1, .editorial-hero h1, .volunteer-hero h1, .memory-single__title h1, .hunt-single__hero h1 { font-size: var(--festival-type-page); line-height: .92; }
	.archive-hero__lead, .editorial-hero__lead { font-size: 1rem; }
	.volunteer-hero, .memory-single__hero, .hunt-single__hero, .hunt-landing__hero, .hunt-retrospective__hero { min-height: 620px; }
	.hunt-landing__hero-content, .hunt-retrospective__title, .volunteer-hero__content { padding-top: calc(108px + env(safe-area-inset-top)); padding-bottom: 54px; }
	.card-body, .entry-card-body, .memory-card .card-body, .team-card__body { padding: 22px; }
	.button, .ds-button { min-height: 50px; padding: 11px 18px; font-size: .9rem; }
	.site-main { padding-top: calc(112px + env(safe-area-inset-top)); padding-bottom: 64px; }
	.site-footer { padding: 52px 0 calc(30px + env(safe-area-inset-bottom)); }
	.footer-intro { padding-bottom: 26px; margin-bottom: 30px; }
	.footer-intro h2 { font-size: clamp(2rem, 9vw, 2.75rem); }
	.footer-grid { gap: 28px; }
	.site-footer .footer-brand .official-logo--footer img { width: 100% !important; max-width: 180px !important; height: auto !important; max-height: none !important; object-fit: contain !important; }
	.footer-bottom { margin-top: 30px; }
}
