/*
 * Blocks — loaded on the front end AND inside the editor (add_editor_style),
 * so editor previews match the site (§9.2).
 *
 *  1. Container engine (distrikt/section)
 *  2. Looks (panel / glass / image card / hero texture)
 *  3. Typography styles for core blocks
 *  4. Buttons (core/button styles + .d-btn helper markup)
 */

/* ── 1. Container engine ──────────────────────────────────────────────────
 * Responsive values arrive as --<prop>-d|t|m inline custom properties.
 * They are registered with inherits:false so a nested container never picks
 * up its parent's settings; each container resolves its own fallback chain.
 */
@property --dir-d { syntax: '*'; inherits: false; }
@property --dir-t { syntax: '*'; inherits: false; }
@property --dir-m { syntax: '*'; inherits: false; }
@property --wrap-d { syntax: '*'; inherits: false; }
@property --wrap-t { syntax: '*'; inherits: false; }
@property --wrap-m { syntax: '*'; inherits: false; }
@property --jc-d { syntax: '*'; inherits: false; }
@property --jc-t { syntax: '*'; inherits: false; }
@property --jc-m { syntax: '*'; inherits: false; }
@property --ai-d { syntax: '*'; inherits: false; }
@property --ai-t { syntax: '*'; inherits: false; }
@property --ai-m { syntax: '*'; inherits: false; }
@property --gap-d { syntax: '*'; inherits: false; }
@property --gap-t { syntax: '*'; inherits: false; }
@property --gap-m { syntax: '*'; inherits: false; }
@property --cols-d { syntax: '*'; inherits: false; }
@property --cols-t { syntax: '*'; inherits: false; }
@property --cols-m { syntax: '*'; inherits: false; }
@property --ta-d { syntax: '*'; inherits: false; }
@property --ta-t { syntax: '*'; inherits: false; }
@property --ta-m { syntax: '*'; inherits: false; }
@property --w-d { syntax: '*'; inherits: false; }
@property --w-t { syntax: '*'; inherits: false; }
@property --w-m { syntax: '*'; inherits: false; }
@property --minh-d { syntax: '*'; inherits: false; }
@property --minh-t { syntax: '*'; inherits: false; }
@property --minh-m { syntax: '*'; inherits: false; }
@property --pad-d { syntax: '*'; inherits: false; }
@property --pad-t { syntax: '*'; inherits: false; }
@property --pad-m { syntax: '*'; inherits: false; }
@property --mar-d { syntax: '*'; inherits: false; }
@property --mar-t { syntax: '*'; inherits: false; }
@property --mar-m { syntax: '*'; inherits: false; }
@property --as-d { syntax: '*'; inherits: false; }
@property --as-t { syntax: '*'; inherits: false; }
@property --as-m { syntax: '*'; inherits: false; }
@property --ord-d { syntax: '*'; inherits: false; }
@property --ord-t { syntax: '*'; inherits: false; }
@property --ord-m { syntax: '*'; inherits: false; }
@property --grow { syntax: '*'; inherits: false; }
@property --shrink { syntax: '*'; inherits: false; }
@property --bg-color { syntax: '*'; inherits: false; }
@property --bg-image { syntax: '*'; inherits: false; }
@property --bg-pos { syntax: '*'; inherits: false; }
@property --bg-size { syntax: '*'; inherits: false; }
@property --bg-attach { syntax: '*'; inherits: false; }
@property --ov { syntax: '*'; inherits: false; }
@property --ov-backdrop { syntax: '*'; inherits: false; }
@property --bw { syntax: '*'; inherits: false; }
@property --bc { syntax: '*'; inherits: false; }
@property --z { syntax: '*'; inherits: false; }
@property --sticky-top { syntax: '*'; inherits: false; }
@property --video-filter { syntax: '*'; inherits: false; }
@property --video-opacity { syntax: '*'; inherits: false; }

.d-box, .d-box__shell {
	--_dir: var(--dir-d, column);
	--_wrap: var(--wrap-d, nowrap);
	--_jc: var(--jc-d, normal);
	--_ai: var(--ai-d, normal);
	--_gap: var(--gap-d, 0px);
	--_cols: var(--cols-d, repeat(3, minmax(0, 1fr)));
	--_ta: var(--ta-d, inherit);
}
.d-box {
	--_w: var(--w-d, 100%);
	--_minh: var(--minh-d, 0px);
	--_pad: var(--pad-d, 0px);
	--_mar: var(--mar-d, 0px);
	--_as: var(--as-d, auto);
	--_ord: var(--ord-d, 0);
	/* Unregistered (inheriting) copies for pseudo-elements and the video child:
	   registered inherits:false props don't reach ::before/::after or children. */
	--_ov: var(--ov, none);
	--_ov-bd: var(--ov-backdrop, none);
	--_vf: var(--video-filter, none);
	--_vo: var(--video-opacity, 1);
}
@media (max-width: 1024px) {
	.d-box, .d-box__shell {
		--_dir: var(--dir-t, var(--dir-d, column));
		--_wrap: var(--wrap-t, var(--wrap-d, nowrap));
		--_jc: var(--jc-t, var(--jc-d, normal));
		--_ai: var(--ai-t, var(--ai-d, normal));
		--_gap: var(--gap-t, var(--gap-d, 0px));
		--_cols: var(--cols-t, var(--cols-d, repeat(3, minmax(0, 1fr))));
		--_ta: var(--ta-t, var(--ta-d, inherit));
	}
	.d-box {
		--_w: var(--w-t, var(--w-d, 100%));
		--_minh: var(--minh-t, var(--minh-d, 0px));
		--_pad: var(--pad-t, var(--pad-d, 0px));
		--_mar: var(--mar-t, var(--mar-d, 0px));
		--_as: var(--as-t, var(--as-d, auto));
		--_ord: var(--ord-t, var(--ord-d, 0));
	}
}
@media (max-width: 767px) {
	.d-box, .d-box__shell {
		--_dir: var(--dir-m, var(--dir-t, var(--dir-d, column)));
		--_wrap: var(--wrap-m, var(--wrap-t, var(--wrap-d, wrap)));
		--_jc: var(--jc-m, var(--jc-t, var(--jc-d, normal)));
		--_ai: var(--ai-m, var(--ai-t, var(--ai-d, normal)));
		--_gap: var(--gap-m, var(--gap-t, var(--gap-d, 0px)));
		--_cols: var(--cols-m, var(--cols-t, var(--cols-d, repeat(3, minmax(0, 1fr)))));
		--_ta: var(--ta-m, var(--ta-t, var(--ta-d, inherit)));
	}
	.d-box {
		--_w: var(--w-m, var(--w-t, var(--w-d, 100%)));
		--_minh: var(--minh-m, var(--minh-t, var(--minh-d, 0px)));
		--_pad: var(--pad-m, var(--pad-t, var(--pad-d, 0px)));
		--_mar: var(--mar-m, var(--mar-t, var(--mar-d, 0px)));
		--_as: var(--as-m, var(--as-t, var(--as-d, auto)));
		--_ord: var(--ord-m, var(--ord-t, var(--ord-d, 0)));
	}
}

.d-box {
	position: relative;
	display: flex;
	flex-direction: var(--_dir);
	flex-wrap: var(--_wrap);
	justify-content: var(--_jc);
	align-items: var(--_ai);
	gap: var(--_gap);
	text-align: var(--_ta);
	box-sizing: border-box;
	width: var(--_w);
	max-width: min(100%, var(--_w));
	min-width: 0;
	min-height: var(--_minh);
	padding: var(--_pad);
	margin: var(--_mar);
	align-self: var(--_as);
	order: var(--_ord);
	flex: var(--grow, 0) var(--shrink, 1) auto;
	z-index: var(--z, auto);
	border-style: solid;
	border-width: var(--bw, 0);
	border-color: var(--bc, transparent);
	color: inherit;
	text-decoration: none;
}
/* Boxed shell (Elementor "boxed" content width, 1520px). Layout applies to the shell. */
.d-box.has-shell { display: flex; flex-direction: column; flex-wrap: nowrap; justify-content: var(--jc-outer, normal); gap: 0; }
.d-box__shell {
	position: relative;
	display: flex;
	flex-direction: var(--_dir);
	flex-wrap: var(--_wrap);
	justify-content: var(--_jc);
	align-items: var(--_ai);
	gap: var(--_gap);
	text-align: var(--_ta);
	flex: 1 1 auto;
	width: 100%;
	max-width: min(100%, var(--shell));
	margin-inline: auto;
	min-width: 0;
	z-index: 2;
}
.d-box__shell.is-narrow { max-width: min(100%, var(--shell-narrow)); }
.d-box.is-grid, .d-box.is-grid > .d-box__shell { display: grid; grid-template-columns: var(--_cols); align-content: start; }
.d-box.is-grid > .d-box, .d-box.is-grid > .d-box__shell > .d-box { width: auto; max-width: none; }

/* Backgrounds */
.d-box.has-bg {
	background-color: var(--bg-color, transparent);
	background-image: var(--bg-image, none);
	background-position: var(--bg-pos, center center);
	background-size: var(--bg-size, cover);
	background-repeat: no-repeat;
	background-attachment: scroll;
}
/* Elementor applies fixed (parallax) backgrounds on desktop only. */
@media (min-width: 1025px) { .d-box.has-bg { background-attachment: var(--bg-attach, scroll); } }
.d-box__video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	z-index: 0;
	pointer-events: none;
	filter: var(--_vf, none);
	opacity: var(--_vo, 1);
}
.d-box.has-video { overflow: hidden; }
/* Layering: bg → hero texture (::before) → overlay (::after) → content. */
.d-box.has-overlay::after {
	content: "";
	position: absolute;
	inset: 0;
	background: var(--_ov);
	backdrop-filter: var(--_ov-bd);
	-webkit-backdrop-filter: var(--_ov-bd);
	pointer-events: none;
	z-index: 0;
	border-radius: inherit;
}
.d-box.has-texture { overflow: hidden; }
.d-box.has-texture::before {
	content: "";
	position: absolute;
	inset: 0;
	pointer-events: none;
	background:
		radial-gradient(circle at 72% 28%, var(--c-gold-18), transparent 26%),
		repeating-linear-gradient(0deg, rgb(var(--rgb-white) / .035) 0, rgb(var(--rgb-white) / .035) 1px, transparent 1px, transparent 7px);
	mix-blend-mode: screen;
	opacity: .45;
	z-index: 0;
}
.d-box.has-overlay > *, .d-box.has-texture > *, .d-box.has-video > * { position: relative; z-index: 1; }
.d-box.has-overlay > .d-box__video, .d-box.has-video > .d-box__video { position: absolute; z-index: 0; }
/* Overlay above the texture (the Elementor overlay was a child container). */
.d-box.has-texture.has-overlay::after { z-index: 0; }
.d-box.is-sticky { position: sticky; top: var(--sticky-top, 0px); }

/* ── 2. Looks ─────────────────────────────────────────────────────────── */
.d-box.is-look-panel, .d-box.is-look-panel-hover {
	background-color: var(--c-white-03);
	border: 1px solid var(--c-gold-32);
}
.d-box.is-look-panel-hover {
	transition: transform var(--t-card) ease, border-color var(--t-card) ease, background-color var(--t-card) ease, filter .35s ease;
}
.d-box.is-look-panel-hover:hover { transform: translateY(-4px); border-color: rgb(var(--rgb-gold) / .68); }
/* Image cards (full-window, stacking while scrolling): static — no hover movement. */
.d-box.is-look-glass, .d-box.is-look-glass-hover {
	background-color: var(--c-black-25);
	border: 1px solid var(--bc, var(--c-gold-30));
	backdrop-filter: blur(7px);
	-webkit-backdrop-filter: blur(7px);
	box-shadow: 0 28px 90px var(--c-black-42);
	transition: border-color var(--t-panel) ease, box-shadow var(--t-panel) ease, transform var(--t-panel) ease;
}
.d-box.is-look-glass-hover:hover { border-color: var(--c-gold-72); box-shadow: 0 36px 110px rgb(0 0 0 / .56); transform: translateY(-4px); }
.d-box.is-look-image-card { overflow: visible; }
/* The card's top padding follows the header (shown/hidden) with the header's own motion. */
.d-box.is-look-image-card { transition: padding-top 320ms var(--ease-out); }
@media (prefers-reduced-motion: reduce) {
	.d-box { transition: none !important; }
}

/* ── 3. Typography (core/heading + core/paragraph block styles) ─────────── */
.d-box :where(h1, h2, h3, h4, h5, h6) { margin: 0; }
.is-style-display, .is-style-title, .is-style-title-l, .is-style-eyebrow, .is-style-label, .is-style-symbol {
	margin: 0;
	padding: 0;
}
.is-style-display {
	color: var(--c-cream);
	font: 400 var(--fs-display)/.85 var(--f-display);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
	font-variant-numeric: tabular-nums;
}
.is-style-symbol {
	color: var(--c-cream);
	font: 400 var(--fs-display)/.9 var(--f-symbol);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
}
.is-style-title-l {
	color: var(--c-cream);
	font: 400 var(--fs-title-l)/1 var(--f-display);
	letter-spacing: var(--ls-display);
}
.is-style-title {
	color: var(--c-cream);
	font: 400 var(--fs-title)/1.04 var(--f-display);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
}
.is-style-eyebrow {
	color: var(--c-gold);
	font: 700 var(--fs-eyebrow)/1.2 var(--f-body);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
}
.is-style-label {
	color: var(--c-gold);
	font: 700 11px/1 var(--f-body);
	letter-spacing: 2.3px;
	text-transform: uppercase;
}
.is-style-lead {
	color: var(--c-cream-82);
	font: 400 var(--fs-lead)/1.36 var(--f-body);
}
.is-style-lead:last-child { margin-bottom: 0; }
.is-style-body {
	color: var(--c-cream-72);
	font: 400 var(--fs-body)/1.65 var(--f-body);
}
.is-style-copy {
	color: var(--c-sand);
	font: 400 17px/1.55 var(--f-body);
}
.is-style-copy-s {
	color: var(--c-sand);
	font: 400 15px/1.55 var(--f-body);
}
.is-style-copy-cream {
	color: var(--c-cream);
	font: 400 15px/1.55 var(--f-body);
}
.is-style-body a, .is-style-copy a, .d-prose a { color: var(--c-gold); }
.is-style-body.has-text-align-right { text-align: end; }
.d-w70 { width: 70%; }
@media (max-width: 767px) {
	.is-style-copy, .is-style-copy-s { font-size: 15px; }
	.is-style-copy-s { font-size: 14px; }
}

/* ── 4. Buttons ───────────────────────────────────────────────────────── */
.wp-block-buttons { display: flex; flex-wrap: wrap; gap: 10px; }
.wp-block-buttons.is-content-justification-right { justify-content: flex-end; }
.wp-block-buttons.is-content-justification-center { justify-content: center; }
.wp-block-button { margin: 0; }
.d-btn, .wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 7px;
	padding: 12px 24px; /* Elementor 'sm' button (the templates' `padding` setting was never applied) */
	border: 1px solid var(--c-white-55);
	border-radius: 0;
	background: transparent;
	color: var(--c-cream);
	font: 700 12px/1 var(--f-body);
	letter-spacing: var(--ls-button);
	text-transform: uppercase;
	text-decoration: none;
	text-align: center;
	cursor: pointer;
	box-shadow: none;
	transition: color var(--t-fast) ease, background-color var(--t-fast) ease, border-color var(--t-fast) ease, transform var(--t-fast) ease;
}
.d-btn:hover, .d-btn:focus-visible,
.wp-block-button__link:hover, .wp-block-button__link:focus-visible {
	color: #000; background: var(--c-gold); border-color: var(--c-gold); transform: translateY(-2px);
}
/* Outline with light hover. */
.d-btn--light, .is-style-light .wp-block-button__link { border-color: var(--c-cream-55); }
.d-btn--light-45, .is-style-light-45 .wp-block-button__link { border-color: var(--c-cream-45); }
.d-btn--light:hover, .d-btn--light:focus-visible, .d-btn--light-45:hover,
.is-style-light .wp-block-button__link:hover, .is-style-light-45 .wp-block-button__link:hover {
	background: var(--c-cream); border-color: var(--c-cream); color: #000;
}
/* Tinted gold (header "Program", E-mail, hero tickets). */
.d-btn--gold, .is-style-gold .wp-block-button__link { background: var(--c-bronze-21); border-color: var(--c-gold); color: var(--c-white); }
.d-btn--gold:hover, .d-btn--gold:focus-visible, .is-style-gold .wp-block-button__link:hover {
	background: #000; border-color: var(--c-cream); color: var(--c-cream);
}
/* Solid gold (single akce tickets). */
.d-btn--solid, .is-style-solid .wp-block-button__link { background: var(--c-gold); border-color: var(--c-gold); color: #000; }
.d-btn--solid:hover, .d-btn--solid:focus-visible, .is-style-solid .wp-block-button__link:hover {
	background: #000; border-color: var(--c-cream); color: var(--c-cream); transform: none;
}
.d-btn--blur, .is-style-blur .wp-block-button__link { backdrop-filter: blur(3.5px); }
.d-btn .d-icon, .wp-block-button__link .d-icon { width: 1em; height: 1em; flex: none; }
.d-btn--icon-scale .d-icon { transform: scale(1.3); }
.d-btn[aria-disabled="true"] { cursor: default; }
@media (prefers-reduced-motion: reduce) { .d-btn, .wp-block-button__link { transition: none !important; } }

/* ── 5. Event cards (loop item 286) + event listing ───────────────────────── */
.d-events__grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0; }
@media (max-width: 1024px) { .d-events__grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 767px) { .d-events__grid { grid-template-columns: minmax(0, 1fr); } }
.d-ev-item { position: relative; display: flex; }
.d-ev-item.is-hidden { display: none; }
.d-ev {
	position: relative;
	display: flex;
	flex-direction: column;
	width: 100%;
	overflow: hidden;
	background: #000;
	color: inherit;
	text-decoration: none;
	transition: transform var(--t-card) ease, border-color var(--t-card) ease, background-color var(--t-card) ease, filter .35s ease;
}
.d-ev:hover { transform: translateY(-4px); }
.d-ev__media {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: 360px;
	background-position: center center;
	background-size: cover;
	background-repeat: no-repeat;
}
.d-ev__media::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(180deg, var(--c-black-31) 12%, rgb(0 0 0 / 0) 100%); pointer-events: none; }
.d-ev__head {
	position: relative;
	z-index: 7;
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 32px;
	transform: translateY(10px);
	transition: transform .3s;
}
.d-ev:hover .d-ev__head { transform: none; }
.d-ev__date {
	margin: 0;
	color: var(--c-gold);
	font: 700 17px/1.2 var(--f-body);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
}
.d-ev__title {
	margin: 0;
	color: var(--c-cream);
	font: 400 var(--fs-title)/1.04 var(--f-display);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
	text-shadow: 0 0 26px #000;
}
.d-ev__over {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 6;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 14px;
	width: 100%;
	min-height: 360px;
	padding: 32px;
	background-image: linear-gradient(180deg, rgb(0 0 0 / 0) 0%, #000 81%);
	pointer-events: none;
	transform: translateY(100%);
	transition: transform .3s;
}
.d-ev:hover .d-ev__over { transform: none; }
.d-ev__excerpt { color: var(--c-cream-72); font: 400 16px/1.3 var(--f-body); }
.d-ev__meta { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.d-ev__cell {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 10px;
	padding: 12px;
	background: var(--c-white-03);
	border: 1px solid var(--c-gold-32);
}
.d-ev__cell--r { border-left-width: 0; }
.d-ev__label {
	color: var(--c-gold);
	font: 700 12px/1.2 var(--f-body);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
}
.d-ev__value {
	color: var(--c-cream);
	font: 400 clamp(11px, .9vw, 14px)/1.04 var(--f-body);
	letter-spacing: 3px;
	text-transform: uppercase;
}
/* Past events on the programme (not the archive): greyed + "Uplynulé" stamp. */
.d-events--program .akce-past > .d-ev { filter: saturate(0) brightness(.35); transition: filter .6s, transform var(--t-card) ease; }
.d-events--program .akce-past:hover > .d-ev { filter: none; }
.d-events--program .akce-past::after {
	content: var(--d-past-label, "Uplynulé");
	position: absolute;
	inset: 0;
	display: flex;
	align-items: center;
	justify-content: center;
	transform: rotate(-12deg);
	transform-origin: center;
	color: var(--c-gold);
	font: 700 2.65rem/1 var(--f-display);
	letter-spacing: .1em;
	text-align: center;
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
	pointer-events: none;
	opacity: 1;
	transition: opacity .25s ease;
}
.d-events--program .akce-past:hover::after { opacity: 0; }
.d-events__more { display: flex; justify-content: center; padding-top: 28px; }
.d-events__empty { margin: 0; color: rgb(var(--rgb-cream) / .82); font: 400 22px/1.5 var(--f-body); }
@media (max-width: 1024px) {
	.d-ev__head, .d-ev__over { padding: 24px; }
	.d-ev__date { font-size: 16px; }
	.d-ev__excerpt { font-size: 15px; line-height: 1.4; }
	.d-ev__cell { gap: 8px; padding: 16px; }
	.d-ev__label { font-size: 10px; }
	.d-ev__value { font-size: 14px; }
}
@media (max-width: 767px) {
	.d-ev__media, .d-ev__over { min-height: 290px; }
	.d-ev__head, .d-ev__over { padding: 12px; }
	.d-ev__date { font-size: 15px; }
	.d-ev__cell { gap: 5px; padding: 14px; }
	.d-ev__value { font-size: 11px; }
	.d-events__empty { font-size: 16px; }
}
@media (prefers-reduced-motion: reduce) {
	.d-ev, .d-ev__head, .d-ev__over { transition: none; }
}

/* ── Utilities used in page content ───────────────────────────────────── */
.d-pt-20 { padding-top: 20px; }
@media (max-width: 767px) { .d-pt-20 { padding-top: 10px; } }

/* ── 6. News cards (loop item 254) + news listing ─────────────────────────── */
.d-newslist {
	display: grid;
	grid-template-columns: repeat(var(--cols, 3), minmax(0, 1fr));
	grid-auto-rows: 1fr;
	gap: var(--news-gap, 30px);
}
@media (max-width: 1024px) {
	.d-newslist { grid-template-columns: repeat(2, minmax(0, 1fr)); }
	.d-newslist.is-tablet-3 > :nth-child(n+3) { display: none; } /* live: nth-child(n+4) counted a <style> node first */
}
@media (max-width: 767px) {
	.d-newslist { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 30px; }
	.d-newslist > * { flex: 0 0 100%; width: 100%; }
}
.d-news-item { display: flex; }
.d-news {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 14px;
	width: 100%;
	min-height: 100%;
	padding: 24px;
	background-color: var(--c-black-20);
	border: 1px solid;
	border-image: linear-gradient(to bottom, #55555544, rgb(var(--rgb-gold) / .267)) 1;
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
	color: inherit;
	text-decoration: none;
	transition: border-color var(--t-panel) ease, box-shadow var(--t-panel) ease, transform var(--t-panel) ease;
}
.d-news:hover { border-color: var(--c-gold-72); transform: translateY(-4px); }
.d-news__body { display: flex; flex-direction: column; justify-content: space-between; gap: 20px; min-height: 100%; flex: 1 1 auto; }
.d-news__top { display: flex; flex-direction: column; gap: 20px; }
.d-news__img { display: block; width: 100%; height: auto; aspect-ratio: 3 / 2; object-fit: cover; border: 1px solid var(--c-black-20); }
.d-news__date {
	margin: 0;
	color: var(--c-gold);
	font: 700 var(--fs-eyebrow)/1.2 var(--f-body);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
}
.d-news__title {
	margin: 0;
	color: var(--c-cream);
	font: 400 var(--fs-title)/1.04 var(--f-display);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
}
.d-news__excerpt { color: var(--c-cream-72); font: 400 var(--fs-body)/1.65 var(--f-body); }
.d-news__more { display: flex; gap: 25px; padding-top: 10px; }
.d-news__more-label {
	display: block;
	flex: 1 1 auto;
	color: var(--c-cream);
	font: 400 17px/1.04 var(--f-body);
	letter-spacing: .03em;
	text-decoration: underline;
	text-underline-offset: 2.4px;
}
@media (max-width: 767px) {
	.d-news { padding: 18px; }
	.d-news__excerpt { display: none; }
}
@media (prefers-reduced-motion: reduce) { .d-news { transition: none !important; } }

/* ── 7. Gallery cards (loop item 1189) + gallery listing ─────────────────── */
/* Columns = min(natural per row, count): fewer galleries than a full row share its full width. */
.d-gallist--grid { display: grid; grid-template-columns: repeat(var(--cols-d, var(--cols, 4)), minmax(0, 1fr)); gap: 0; }
@media (max-width: 1024px) { .d-gallist--grid { grid-template-columns: repeat(var(--cols-t, 2), minmax(0, 1fr)); } }
@media (max-width: 767px) { .d-gallist--grid { grid-template-columns: repeat(var(--cols-m, 1), minmax(0, 1fr)); } }
.d-gallist__empty { margin: 0; color: rgb(var(--rgb-cream) / .82); font: 400 22px/1.5 var(--f-body); text-shadow: 0 0 10px rgb(0 0 0 / .3); }
@media (max-width: 1024px) { .d-gallist__empty { font-size: 19px; } }
@media (max-width: 767px) { .d-gallist__empty { font-size: 16px; } }
.d-gal {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	align-items: stretch;
	min-height: 400px;
	padding: 20px;
	background-position: center center;
	background-size: cover !important;
	color: inherit;
	text-decoration: none;
	transition: transform var(--t-card) ease, border-color var(--t-card) ease, filter .35s ease;
}
.d-gal:hover { transform: translateY(-4px); }
.d-gal::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background: radial-gradient(ellipse at center, rgb(0 0 0 / .25) 40%, rgb(0 0 0 / .6) 100%);
	opacity: 1;
	transition: opacity .6s, backdrop-filter .6s;
	pointer-events: none;
}
.d-gal:hover::after { opacity: .6; }
.d-gal__panel {
	position: relative;
	z-index: 3;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 8px;
	padding: 22px;
	background: var(--c-black-26);
	border: 1px solid var(--c-gold-26);
	backdrop-filter: blur(4px);
	-webkit-backdrop-filter: blur(4px);
}
.d-gal__type {
	margin: 0;
	color: var(--c-gold);
	font: 700 var(--fs-eyebrow)/1.2 var(--f-body);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
}
.d-gal__title {
	margin: 0;
	color: var(--c-cream);
	font: 400 var(--fs-title)/1.04 var(--f-display);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
}
@media (max-width: 767px) { .d-gal { min-height: 320px; } }
@media (prefers-reduced-motion: reduce) { .d-gal, .d-gal::after { transition: none; } }

/* ── 8. Map ───────────────────────────────────────────────────────────── */
/* Desktop: the map fills exactly the space left in its card (not 100 % of the card — that overflowed). */
.d-map { position: relative; flex: 1 1 0; min-height: 0; align-self: stretch; display: flex; filter: grayscale(.6) contrast(.9); transition: filter .6s; }
.d-map:hover { filter: none; }
.d-map iframe { position: absolute; inset: 0; display: block; width: 100%; height: 100%; border: 0; border-radius: 0; }
@media (max-width: 1024px) {
	.d-map { flex: 0 0 auto; }
	.d-map iframe { position: static; height: var(--map-h, calc(var(--screen-h) * .50)) !important; min-height: 300px; }
}

/* ── 9. Carousel chrome (Swiper) ──────────────────────────────────────────── */
[data-d-carousel] { position: relative; }
[data-d-carousel] .swiper { overflow: hidden; }
[data-d-carousel] .swiper-wrapper { display: flex; }
[data-d-carousel] .swiper-slide { flex-shrink: 0; width: 100%; height: auto; }
.d-swiper-btn {
	position: absolute;
	top: 50%;
	z-index: 10;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 25px;
	height: 25px;
	padding: 0;
	border: 0;
	background: none;
	color: rgb(238 238 238 / .9);
	font-size: 25px;
	transform: translateY(-50%);
	cursor: pointer;
	opacity: .4;
}
.d-swiper-btn .d-icon { width: 1em; height: 1em; }
.d-swiper-btn--prev { left: 5px; }
.d-swiper-btn--next { right: 5px; }
.d-swiper-btn:hover, .d-swiper-btn:focus-visible { opacity: 1; }
@media (max-width: 1024px) { .d-hero-events .d-swiper-btn { display: none; } }

/* ── 10. Homepage hero (loop item 2012) ───────────────────────────────────── */
.d-hero-events .swiper-slide { display: flex; height: auto; }
.d-hero-events .swiper-slide > * { width: 100%; }
.d-hero {
	position: relative;
	display: flex;
	flex-direction: column;
	min-height: var(--screen-h);
	background-color: #000;
	background-position: center center !important;
	background-size: cover !important;
}
.d-hero::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	background:
		radial-gradient(circle at 72% 28%, var(--c-gold-18), transparent 26%),
		linear-gradient(90deg, rgb(var(--rgb-gold) / .16), transparent 22%, transparent 78%, rgb(var(--rgb-cream) / .12));
	opacity: .46;
}
.d-hero__overlay {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 20px;
	flex: 1 0 auto;
	align-self: stretch;
	width: 100%;
	min-height: var(--screen-h);
	padding: 112px 40px 38px;
	background-image: linear-gradient(180deg, var(--c-black-55) 75%, #000 100%);
}
.d-hero__spacer { width: 100%; }
.d-hero__shell {
	display: flex;
	flex-flow: row nowrap;
	justify-content: space-between;
	align-items: flex-start;
	gap: 28px 36px;
	width: 100%;
	max-width: var(--shell);
	min-height: 450px;
	margin: 0 auto -45px;
}
.d-hero__copy {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 20px;
	flex: 1 0 0%;
	align-self: stretch;
	min-width: 0;
	min-height: 540px;
}
.d-hero__details { display: flex; flex-direction: column; gap: 20px; }
.d-hero__date {
	margin: 0;
	color: var(--c-gold);
	font: 700 16px/1.2 var(--f-body);
	letter-spacing: 2.8px;
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
}
.d-hero__title {
	margin: 0;
	color: var(--c-cream);
	font: 400 clamp(48px, 7vw, 118px)/.82 var(--f-display);
	letter-spacing: var(--ls-display);
	text-shadow: 2px 2px 34px var(--c-black-55);
}
.d-hero__excerpt {
	width: 64%;
	margin-bottom: 4px;
	color: var(--c-sand);
	font: 400 18px/1.55 var(--f-body);
	text-shadow: 0 0 4px #000;
}
.d-hero__actions { display: flex; flex-flow: row wrap; gap: 12px; margin-bottom: 60px; }
.d-btn--shadow { box-shadow: 0 0 10px rgb(0 0 0 / .5); }
.d-btn--gold.d-btn--icon-scale:hover { color: var(--c-gold); }
.d-hero__poster {
	/* Never sized by its content (§10.2); narrower than the Elementor 579 px and fluid, so the title has
	   room on small desktops and the full desktop breathes. A line-up that no longer fits scrolls
	   (marquee is width-gated, re-measured on resize). */
	--hero-right-w: clamp(380px, 34vw, 520px);
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 16px;
	flex: 0 0 var(--hero-right-w);
	width: var(--hero-right-w);
	min-width: 0;
	min-height: 335px;
	margin-top: -22px;
	padding: 26px;
	background: var(--c-black-25);
	border: 1px solid var(--c-gold-42);
	backdrop-filter: blur(7px);
	-webkit-backdrop-filter: blur(7px);
	box-shadow: 0 28px 90px var(--c-black-42);
	color: inherit;
	text-decoration: none;
	transition: border-color var(--t-panel) ease, box-shadow var(--t-panel) ease, transform var(--t-panel) ease;
}
.d-hero__poster:hover { border-color: var(--c-gold-72); box-shadow: 0 36px 110px rgb(0 0 0 / .56); transform: translateY(-4px); }
/* Slide progress: the top border becomes one segment per slide. Past = cream, upcoming = the border
   colour, current fills in gold with the autoplay timer (--d-prog 0…1, set by app.js on the slide);
   without a running timer (visitor took control, reduced motion) the current segment is simply full. */
.d-hero__poster.has-progress { --seg: var(--c-gold-42); border-top-color: transparent; }
.d-hero__poster.has-progress:hover { --seg: var(--c-gold-72); }
.d-hero__progress { position: absolute; top: -1px; right: -1px; left: -1px; display: flex; gap: 4px; height: 2px; pointer-events: none; }
.d-hero__seg { position: relative; flex: 1 1 0; overflow: hidden; background: var(--seg); transition: background-color var(--t-panel) ease; }
.d-hero__seg.is-past { background: var(--c-cream-45); }
.d-hero__seg i { position: absolute; inset: 0; background: var(--c-gold); transform: scaleX(0); transform-origin: 0 50%; }
.d-hero__seg.is-current i { transform: scaleX(var(--d-prog, 1)); }
.d-hero__spot {
	margin: 0;
	color: var(--c-taupe);
	font: 700 10px/1.1 var(--f-body);
	letter-spacing: 2.4px;
	text-transform: uppercase;
}
.d-hero__pdate {
	margin: 0;
	min-height: 106px;
	color: var(--c-cream);
	font: 400 clamp(48px, 7vw, 118px)/.9 var(--f-display);
	letter-spacing: var(--ls-display);
	font-variant-numeric: tabular-nums;
	white-space: nowrap;
}
.d-hero__lineup, .d-hero__facts { display: flex; flex-direction: column; justify-content: flex-start; }
.d-hero__lineup { min-height: 46px; }
.d-hero__facts { min-height: 92px; }
.d-hero__lineup p, .d-hero__facts p,
.d-hero__lineup-value {
	margin: 0;
	min-height: 23px;
	color: var(--c-sand-3);
	font: 400 14px/1.65 var(--f-body);
}
.d-hero__down { position: absolute; left: 50%; bottom: 24px; z-index: 3; display: flex; justify-content: center; transform: translateX(-50%); }
.d-hero__down-link { display: flex; color: var(--c-white); animation: d-nudge 2.2s ease-in-out infinite; will-change: transform; }
.d-hero__down .d-icon { width: 24px; height: 24px; }
@keyframes d-nudge { 0%, 100% { transform: translateY(0); opacity: .7; } 50% { transform: translateY(6px); opacity: .3; } }

@media (max-width: 1024px) {
	.d-hero__overlay { padding: 112px 18px 30px; }
	.d-hero__spacer, .d-hero__down { display: none; }
	.d-hero__shell { flex-direction: column; justify-content: space-between; align-items: stretch; min-height: 0; flex: 1 0 auto; align-self: stretch; margin-bottom: 0; }
	.d-hero__copy { flex: 1 0 auto; width: 100%; min-height: 0; }
	.d-hero__date { font-size: 14px; }
	.d-hero__title { font-size: 82px; }
	.d-hero__excerpt { width: 70%; }
	.d-hero__poster { --hero-right-w: 100%; flex: 0 0 auto; min-height: 302px; margin-top: 0; }
	.d-hero__pdate { font-size: 82px; min-height: 74px; }
}
@media (max-width: 767px) {
	.d-hero__overlay { padding: 111px 14px 24px; }
	.d-hero__copy { gap: 5px; }
	.d-hero__date { font-size: 12px; }
	.d-hero__title { font-size: 52px; }
	.d-hero__excerpt { width: 95%; font-size: 15px; }
	.d-hero__actions { flex-wrap: nowrap; }
	.d-hero__poster { min-height: 174px; padding: 20px 18px; box-shadow: none; }
	.d-hero__spot, .d-hero__pdate { display: none; }
}
@media (prefers-reduced-motion: reduce) {
	.d-hero__down-link { animation: none; }
	.d-hero__poster { transition: none; }
}

/* ── 11. Line-up marquee (§10.2) ──────────────────────────────────────────── */
.d-marquee {
	--fade: 24px;
	position: relative;
	overflow: hidden;
	white-space: nowrap;
	max-width: 100%;
}
.d-marquee__track { display: inline-flex; white-space: nowrap; will-change: transform; }
.d-marquee__item { flex: none; }
.d-marquee__clone { display: none; }
.d-marquee.is-marquee {
	-webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);
	mask-image: linear-gradient(90deg, transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);
}
.d-marquee.is-marquee .d-marquee__clone { display: inline; }
.d-marquee.is-marquee .d-marquee__item { padding-right: 2.5em; }
.d-marquee.is-marquee .d-marquee__item::after { content: "•"; position: relative; left: 1.25em; }
.d-marquee.is-marquee .d-marquee__track { animation: d-marquee var(--marquee-dur, 12s) linear infinite; }
.d-marquee.is-marquee:hover .d-marquee__track, .d-marquee.is-marquee:focus-within .d-marquee__track { animation-play-state: paused; }
@keyframes d-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) {
	.d-marquee.is-marquee .d-marquee__track { animation: none; }
	.d-marquee.is-marquee .d-marquee__clone { display: none; }
	.d-marquee.is-marquee .d-marquee__item::after { content: none; }
}

/* ── 12. Linked events (#eventshell: loop items 979 + 653) ───────────────── */
.d-evlinked { display: flex; flex-flow: row nowrap; justify-content: center; align-items: center; width: 100%; }
.d-evlinked__list { display: flex; flex-direction: column; align-self: stretch; width: 50%; }
.d-evlinked__car { position: relative; display: flex; flex-direction: column; align-self: stretch; width: 50%; box-shadow: 0 0 10px rgb(0 0 0 / .5); }
.d-evlinked__car .swiper { flex: 1 0 auto; height: 100%; width: 100%; }
.d-evlinked__car .swiper-wrapper { height: 100%; align-items: stretch; }
.d-evlinked__car .swiper-slide { display: flex; height: 100%; }
.d-evlinked__car .swiper-slide > * { width: 100%; }
@media (max-width: 1024px) {
	.d-evlinked { flex-direction: column; }
	.d-evlinked__list { display: none; }
	.d-evlinked__car { width: 100%; height: calc(var(--screen-h) * .70); }
}
/* List row (979). */
.d-evrow {
	position: relative;
	display: flex;
	flex-direction: column;
	overflow: hidden;
	color: inherit;
	text-decoration: none;
}
.d-evrow__under {
	position: absolute;
	inset: 0;
	z-index: 1;
	min-height: 116px;
	overflow: hidden;
	background-size: cover;
	background-position: center;
	background-repeat: no-repeat;
	filter: blur(24px);
	transform: translateX(110%);
	transition: transform .25s ease;
}
.d-evrow__under::after {
	content: "";
	position: absolute;
	inset: -40px;
	pointer-events: none;
	background: linear-gradient(270deg, rgb(0 0 0 / .55) 0%, rgb(30 30 30 / .42) 70%, rgb(0 0 0 / 0) 100%);
}
.d-evrow__row { position: relative; z-index: 2; display: flex; flex-direction: row; gap: 10px; }
.d-evrow__img {
	display: block;
	flex: 0 0 142px;
	width: 142px;
	max-width: 142px;
	height: 116px;
	object-fit: cover;
	object-position: center center;
	-webkit-mask-image: linear-gradient(to right, #000 0%, #000 50%, transparent 100%);
	mask-image: linear-gradient(to right, #000 0%, #000 50%, transparent 100%);
}
.d-evrow__text {
	display: flex;
	flex-direction: column;
	justify-content: center;
	gap: 10px;
	flex: 1 1 auto; /* shrinks with the row, so a long title ends in an ellipsis instead of running under the carousel */
	min-width: 0;
	padding: 30px 20px 30px 5px;
	transition: padding-left .25s ease;
}
.d-evrow__date, .d-evrow__title {
	display: block;
	min-width: 0;
	overflow: hidden;
	white-space: nowrap;
	text-overflow: ellipsis;
	color: var(--c-white);
	font: 600 18px/1 var(--f-body);
	text-shadow: 0 0 34px rgb(0 0 0 / .52);
}
.d-evrow__title { font-weight: 400; line-height: 1.2; }
.d-evrow:hover .d-evrow__text, .d-evrow.is-active .d-evrow__text { padding-left: 32px; }
.d-evrow:hover .d-evrow__under, .d-evrow.is-active .d-evrow__under { transform: none; }
@media (max-width: 767px) {
	.d-evrow__text { padding: 18px; }
	.d-evrow:hover .d-evrow__text, .d-evrow.is-active .d-evrow__text { padding-left: 22px; }
}
@media (prefers-reduced-motion: reduce) { .d-evrow__text, .d-evrow__under { transition: none; } }
/* Carousel card (653). */
.d-evcard { display: flex; flex-direction: column; align-self: stretch; overflow: hidden; background: #000; color: inherit; text-decoration: none; }
.d-evcard__media {
	position: relative;
	z-index: 2;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	height: 100% !important;
	align-self: stretch;
	background-position: center center;
	background-repeat: no-repeat;
	background-size: cover !important;
}
.d-evcard__media::before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(180deg, var(--c-black-31) 12%, rgb(0 0 0 / 0) 100%); pointer-events: none; }
.d-evcard__grad {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	height: 100% !important;
	background-image: linear-gradient(180deg, rgb(0 0 0 / 0) 34%, #000 100%);
}
.d-evcard__head { position: relative; z-index: 7; display: flex; flex-direction: column; gap: 10px; padding: 32px; }
.d-evcard__date {
	margin: 0;
	color: var(--c-gold);
	font: 700 18px/1.2 var(--f-body);
	letter-spacing: var(--ls-eyebrow);
	text-transform: uppercase;
	text-shadow: 0 0 12px rgb(0 0 0 / .92);
}
.d-evcard__title {
	margin: 0;
	color: var(--c-cream);
	font: 400 var(--fs-title)/1.04 var(--f-display);
	letter-spacing: var(--ls-display);
	text-transform: uppercase;
	text-shadow: 0 0 26px #000;
}
.d-evcard__foot { display: flex; flex-direction: column; justify-content: flex-start; gap: 14px; padding: 24px; }
.d-evcard__excerpt { color: var(--c-cream-72); font: 400 16px/1.65 var(--f-body); }
@media (max-width: 1024px) {
	.d-evcard__media { min-height: 280px; }
	.d-evcard__head { padding: 24px; }
	.d-evcard__date { font-size: 17px; }
	.d-evcard .d-ev__value { font-size: 17px; }
	.d-evcard .d-ev__label { font-size: 12px; }
}
@media (max-width: 767px) {
	.d-evcard__media { min-height: 240px; }
	.d-evcard__date { font-size: 16px; }
	.d-evcard__foot { padding: 20px; }
	.d-evcard__excerpt { font-size: 15px; }
	.d-evcard .d-ev__cell { gap: 14px; padding: 14px; }
	.d-evcard .d-ev__label { font-size: 11px; }
	.d-evcard .d-ev__value { font-size: 13px; }
}

/* ── 13. Photo strip (former image carousel) ───────────────────────────── */
.d-imgstrip { width: 100%; }
.d-imgstrip .swiper-wrapper { align-items: center; transition-timing-function: linear !important; }
.d-imgstrip .swiper-slide { position: relative; display: flex; align-items: center; width: 100%; height: var(--strip-h, 300px); }
@media (min-width: 767px) { .d-imgstrip .swiper-slide { width: 50%; } }
@media (min-width: 1024px) { .d-imgstrip .swiper-slide { width: calc(100% / var(--per, 4)); } }
.d-imgstrip__link, .d-imgstrip__img { display: flex; width: 100%; height: 100%; }
.d-imgstrip__img { object-fit: cover; border: 0; }
.d-imgstrip .swiper-slide::after {
	content: " ";
	position: absolute;
	inset: 0;
	z-index: 1;
	pointer-events: none;
	opacity: 1;
	transition: opacity .6s;
	background: linear-gradient(180deg, rgb(0 0 0 / .8) 0%, rgb(0 0 0 / .4) 35%, rgb(0 0 0 / .4) 55%, rgb(0 0 0 / .8) 100%);
}
.d-imgstrip .swiper-slide:hover::after { opacity: .4; }

/* ── 14. Gallery carousel (homepage) ──────────────────────────────────── */
.d-gallist--carousel { --per: var(--per-d, 1); }
@media (max-width: 1024px) { .d-gallist--carousel { --per: var(--per-t, 1); } }
@media (max-width: 767px) { .d-gallist--carousel { --per: var(--per-m, 1); } }
.d-gallist--carousel .swiper-slide { width: calc((100% - (var(--per, 1) - 1) * 10px) / var(--per, 1)); margin-right: 10px; }
.d-gallist--carousel .swiper-slide:last-child { margin-right: 0; }
.d-gallist--carousel .swiper-slide > .d-gal { height: 100%; }
.d-gallist--carousel .d-swiper-btn--prev { left: -30px; }
.d-gallist--carousel .d-swiper-btn--next { right: -30px; }
@media (max-width: 1024px) {
	.d-gallist--carousel .d-swiper-btn--prev { left: 0; }
	.d-gallist--carousel .d-swiper-btn--next { right: 0; }
}

/* ── 15. Site info + misc home pieces ─────────────────────────────────── */
.d-siteinfo--card { color: var(--c-cream); font: 400 15px/1.55 var(--f-body); }
.d-siteinfo--buttons { display: flex; flex-flow: row wrap; justify-content: flex-start; align-items: center; gap: 10px; }
.d-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }
/* Home gallery row: the heading keeps its natural width, the carousel fills the rest of the row
   (Elementor sized it by its card's min-content: one gallery was a narrow card in empty space).
   Fewer galleries than a full row share its width: --per = min(natural, count), see render.php. */
.d-home-galrow > .d-box__shell > .d-gallist { flex: 1 1 0; width: auto; min-width: 0; }
.d-home-galrow > .d-box__shell > .wp-block-heading { flex: 0 0 auto; }
@media (max-width: 1024px) {
	.d-home-galrow > .d-box__shell > .d-gallist { flex: 0 0 auto; width: 100%; align-self: stretch; }
	.d-home-galrow > .d-box__shell > .wp-block-heading { flex: 0 0 auto; }
}
/* Scroll reveal (Elementor fadeInUp, "slow" = 2s). */
.d-js .d-reveal:not(.is-revealed) { opacity: 0; }
.d-reveal.is-revealed { animation: d-fade-in-up 2s both; }
@keyframes d-fade-in-up { from { opacity: 0; transform: translate3d(0, 100%, 0); } to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
	.d-js .d-reveal:not(.is-revealed) { opacity: 1; }
	.d-reveal.is-revealed { animation: none; }
}
.d-parity .d-reveal { opacity: 1 !important; animation: none !important; }
.d-w100 { width: 100%; }
.d-mb0 { margin-bottom: 0; }
.d-btns-shadow .wp-block-button__link { text-shadow: 0 0 10px rgb(0 0 0 / .3); }

/* ── Contact form (Elementor Form "Distrikt kontakt" styling) ─────────── */
.d-form { display: flex; flex-wrap: wrap; gap: 18px; width: 100%; }
.d-form__field { display: flex; flex-direction: column; gap: 8px; flex: 1 1 100%; min-width: 0; }
.d-form__field--half { flex-basis: calc(50% - 9px); }
@media (max-width: 767px) { .d-form__field--half { flex-basis: 100%; } }
.d-form label { color: var(--c-gold); font: 700 var(--fs-eyebrow)/1.4 var(--f-body); text-transform: uppercase; letter-spacing: var(--ls-button); }
.d-form__req { margin-inline-start: 3px; }
.d-form input, .d-form textarea {
	width: 100%; padding: 12px 16px; border: 1px solid var(--c-gold-38); border-radius: 0;
	background: var(--c-white-03); color: var(--c-cream); font: 15px/1.5 var(--f-body);
}
.d-form input::placeholder, .d-form textarea::placeholder { color: var(--c-cream-45); }
.d-form input:focus-visible, .d-form textarea:focus-visible { outline: 2px solid var(--c-gold); outline-offset: 0; }
.d-form [aria-invalid="true"] { border-color: #e0876a; }
.d-form__err { color: #e0876a; font: 13px/1.4 var(--f-body); }
.d-form__submit { flex: 1 1 100%; }
.d-btn--solid { background: var(--c-gold); border-color: var(--c-gold); color: #000; }
.d-btn--solid:hover, .d-btn--solid:focus-visible { background: #000; border-color: var(--c-cream); color: var(--c-cream); }
.d-btn[disabled] { opacity: .6; pointer-events: none; }
.d-form__msg { flex: 1 1 100%; font: 15px/1.5 var(--f-body); color: var(--c-cream); }
.d-form__msg:empty { display: none; }
.d-form__msg[data-state="error"] { color: #e0876a; }
.d-form__hp { position: absolute !important; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
