/* ==========================================================================
   Roteping — main stylesheet
   Palette from the logo: wheel red (actions), wave teal (accents/hover),
   charcoal (text, dark stages), paper/white (grounds). Tints only — no new hues.
   ========================================================================== */

:root {
	/* Colour tokens (keep in sync with rt_palette() in inc/setup.php) */
	--red: #D62B2B;
	--red-deep: #B31F21;      /* pressed/hover red, error text */
	--teal: #2AAFB0;
	--teal-ink: #177A7B;      /* teal text on light grounds — 5.1:1 on white */
	--teal-soft: #E4F5F5;
	--ink: #1A1A1A;
	--ink-2: #242424;
	--paper: #FAFAFA;
	--white: #FFFFFF;
	--line: #E6E3E3;
	--muted: #595959;         /* 7:1 on white */
	--muted-on-dark: #B9B9B9; /* 8.9:1 on charcoal */

	/* Type */
	--font-display: "Big Shoulders Display", "Arial Narrow", "Roboto Condensed", Impact, sans-serif;
	--font-body: "Mukta", "Kohinoor Devanagari", "Noto Sans Devanagari", system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
	--step-0: 1.0625rem;
	--step-1: clamp(1.125rem, 1.05rem + 0.35vw, 1.3rem);
	--step-2: clamp(1.4rem, 1.2rem + 0.9vw, 1.9rem);
	--step-3: clamp(1.9rem, 1.45rem + 2vw, 3rem);
	--step-4: clamp(2.5rem, 1.7rem + 3.6vw, 4.6rem);
	--step-5: clamp(3.1rem, 1.6rem + 6.6vw, 6.75rem);

	/* Layout */
	--wrap: 1240px;
	--gutter: clamp(1.1rem, 4vw, 2.5rem);
	--space-section: clamp(4rem, 8vw, 7rem);
	--header-h: 68px;
	--radius: 16px;
	--ease: cubic-bezier(0.2, 0.7, 0.2, 1);
	--focus: var(--teal-ink);
}

@media (min-width: 1080px) {
	:root { --header-h: 78px; }
}

/* ── Base ──────────────────────────────────────────────────────────────── */

*, *::before, *::after { box-sizing: border-box; }

html {
	-webkit-text-size-adjust: 100%;
	scroll-behavior: smooth;
	scroll-padding-top: calc(var(--header-h) + 1rem);
}

body {
	margin: 0;
	background: var(--white);
	color: var(--ink);
	font-family: var(--font-body);
	font-size: var(--step-0);
	line-height: 1.65;
	text-rendering: optimizeLegibility;
	-webkit-font-smoothing: antialiased;
}

img, svg, video { max-width: 100%; height: auto; }
img { display: block; }

h1, h2, h3, h4 {
	margin: 0;
	font-family: var(--font-display);
	font-weight: 800;
	line-height: 0.92;
	letter-spacing: 0.01em;
	text-transform: uppercase;
	text-wrap: balance;
}

p { margin: 0 0 1em; }

a { color: var(--red); text-underline-offset: 0.18em; }
a:hover { color: var(--red-deep); }

:focus-visible {
	outline: 3px solid var(--focus);
	outline-offset: 3px;
	border-radius: 4px;
}

.stage, .on-dark, .site-footer { --focus: var(--teal); }

.site-main:focus { outline: none; }

.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	clip-path: inset(50%);
	white-space: nowrap;
	border: 0;
}

.skip-link {
	position: absolute;
	left: 1rem; top: -100px;
	z-index: 1000;
	padding: 0.75rem 1.1rem;
	background: var(--ink);
	color: #fff;
	font-weight: 700;
	border-radius: 0 0 10px 10px;
	text-decoration: none;
}
.skip-link:focus { top: 0; color: #fff; }

.wrap {
	width: min(100% - 2 * var(--gutter), var(--wrap));
	margin-inline: auto;
}
.narrow { max-width: 760px; }

.icon { width: 1.25em; height: 1.25em; flex: none; }

/* ── Shared type components ────────────────────────────────────────────── */

.eyebrow {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.35rem 0.7rem;
	margin: 0 0 1rem;
	color: var(--teal-ink);
	font-size: 0.8rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}
.eyebrow::before {
	content: "";
	width: 0.7rem; height: 0.7rem;
	border: 2px solid var(--red);
	border-radius: 50%;
	flex: none;
}
/* Devanagari: never letter-space (breaks conjuncts) or uppercase. */
.eyebrow__ne {
	letter-spacing: 0;
	text-transform: none;
	font-weight: 500;
	font-size: 0.95rem;
	opacity: 0.85;
}
.stage .eyebrow, .on-dark .eyebrow { color: var(--teal); }

.section-head {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-end;
	justify-content: space-between;
	gap: 1rem 2rem;
	margin-bottom: clamp(1.75rem, 4vw, 3rem);
}
.section-head__title {
	font-size: var(--step-4);
	max-width: 18ch;
}
.section-head__lede {
	max-width: 56ch;
	margin: 1rem 0 0;
	color: var(--muted);
	font-size: var(--step-1);
	line-height: 1.5;
}
.stage .section-head__lede { color: var(--muted-on-dark); }

.mini-title {
	font-size: var(--step-2);
	margin-bottom: 1.1rem;
}

.text-link {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
	color: var(--ink);
	font-weight: 700;
	font-size: 0.98rem;
	text-decoration: underline;
	text-decoration-color: var(--teal);
	text-decoration-thickness: 2px;
	text-underline-offset: 0.35em;
	white-space: nowrap;
}
.text-link .icon { width: 1.1em; height: 1.1em; transition: transform 0.2s var(--ease); }
.text-link:hover { color: var(--teal-ink); }
.text-link:hover .icon { transform: translateX(3px); }
.text-link--light, .site-footer .text-link { color: #fff; }
.text-link--light:hover, .site-footer .text-link:hover { color: var(--teal); }

.prose { max-width: 68ch; }
.prose > :last-child { margin-bottom: 0; }
.prose h2 { font-size: var(--step-3); margin: 1.6em 0 0.5em; }
.prose h3 { font-size: var(--step-2); margin: 1.4em 0 0.5em; }
.prose ul, .prose ol { padding-left: 1.2em; }
.prose li { margin-bottom: 0.35em; }
.prose--lead { font-size: var(--step-1); line-height: 1.6; }
.prose em { font-style: italic; }

/* ── Buttons ───────────────────────────────────────────────────────────── */

.btn-row {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.75rem 1.1rem;
}

.btn {
	--btn-bg: transparent;
	--btn-fg: var(--ink);
	--btn-bd: rgb(26 26 26 / 0.35);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.55em;
	min-height: 48px;
	padding: 0.72em 1.35em 0.62em;
	border: 2px solid var(--btn-bd);
	border-radius: 999px;
	background: var(--btn-bg);
	color: var(--btn-fg);
	font-family: var(--font-display);
	font-size: 1.15rem;
	font-weight: 800;
	line-height: 1;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	text-decoration: none;
	cursor: pointer;
	transition: background-color 0.2s, color 0.2s, border-color 0.2s, transform 0.2s var(--ease);
}
.btn .icon { width: 1.15em; height: 1.15em; margin-top: -0.1em; }
.btn:hover { color: var(--btn-fg); }
.btn:active { transform: translateY(1px); }

.btn--red { --btn-bg: var(--red); --btn-fg: #fff; --btn-bd: var(--red); }
.btn--red:hover { --btn-bg: var(--red-deep); --btn-bd: var(--red-deep); }

.btn--ghost:hover { --btn-fg: var(--teal-ink); --btn-bd: var(--teal-ink); }
.stage .btn--ghost, .on-dark .btn--ghost { --btn-fg: #fff; --btn-bd: rgb(255 255 255 / 0.45); }
.stage .btn--ghost:hover, .on-dark .btn--ghost:hover { --btn-fg: var(--teal); --btn-bd: var(--teal); }

.btn--white { --btn-bg: #fff; --btn-fg: var(--red); --btn-bd: #fff; }
.btn--white:hover { --btn-bg: var(--ink); --btn-fg: #fff; --btn-bd: var(--ink); }

.btn--ghost-light { --btn-fg: #fff; --btn-bd: rgb(255 255 255 / 0.75); }
.btn--ghost-light:hover { --btn-bg: rgb(255 255 255 / 0.14); --btn-bd: #fff; }

.btn--disabled { --btn-bg: var(--paper); --btn-fg: var(--muted); --btn-bd: var(--line); cursor: not-allowed; }

/* ── Header & navigation ───────────────────────────────────────────────── */

.site-header {
	position: sticky;
	top: var(--wp-admin--admin-bar--height, 0px);
	z-index: 100;
	background: rgb(255 255 255 / 0.96);
	border-bottom: 1px solid var(--line);
	backdrop-filter: saturate(1.4) blur(10px);
}
.site-header__inner {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	min-height: var(--header-h);
}

.brand {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	color: var(--ink);
	text-decoration: none;
	flex: none;
}
.brand:hover { color: var(--ink); }
.brand__mark { width: 44px; height: 48px; }
.brand__text { display: flex; flex-direction: column; line-height: 1; }
.brand__word {
	color: var(--red);
	font-family: var(--font-display);
	font-size: 1.7rem;
	font-weight: 900;
	line-height: 0.85;
	letter-spacing: 0.05em;
	text-transform: uppercase;
}
.brand__sub {
	margin-top: 0.3rem;
	font-size: 0.6rem;
	font-weight: 700;
	letter-spacing: 0.34em;
	text-transform: uppercase;
}
.brand--light { color: #fff; }
.brand--light:hover { color: #fff; }
.custom-logo-link { display: inline-block; flex: none; }
.custom-logo { max-height: 54px; width: auto; }
.brand--image img { max-height: 64px; width: auto; }

.menu-toggle {
	display: inline-flex;
	align-items: center;
	gap: 0.45rem;
	min-height: 44px;
	padding: 0 1rem;
	border: 2px solid var(--ink);
	border-radius: 999px;
	background: transparent;
	color: var(--ink);
	font-family: var(--font-display);
	font-size: 1.05rem;
	font-weight: 800;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	cursor: pointer;
}
.menu-toggle .icon { width: 22px; height: 22px; display: block; }
.menu-toggle__icon--close,
.menu-toggle[aria-expanded="true"] .menu-toggle__icon--open { display: none; }
.menu-toggle[aria-expanded="true"] .menu-toggle__icon--close { display: block; }

.nav__list, .nav__sub { list-style: none; margin: 0; padding: 0; }

@media (max-width: 1079.98px) {
	.site-nav {
		position: fixed;
		top: calc(var(--header-h) + var(--wp-admin--admin-bar--height, 0px));
		right: 0; bottom: 0; left: 0;
		display: flex;
		flex-direction: column;
		gap: 2rem;
		padding: 1.25rem var(--gutter) 3rem;
		overflow-y: auto;
		background: var(--ink);
		color: #fff;
		--focus: var(--teal);
		visibility: hidden;
		opacity: 0;
		transform: translateY(-8px);
		transition: opacity 0.2s, transform 0.2s var(--ease), visibility 0s linear 0.2s;
	}
	.nav-open { overflow: hidden; }
	.nav-open .site-nav {
		visibility: visible;
		opacity: 1;
		transform: none;
		transition: opacity 0.2s, transform 0.25s var(--ease);
	}
	.nav__list > li { border-bottom: 1px solid rgb(255 255 255 / 0.1); }
	.nav__list > li > a {
		display: block;
		padding: 0.7rem 0 0.55rem;
		color: #fff;
		font-family: var(--font-display);
		font-size: 2.1rem;
		font-weight: 900;
		line-height: 1;
		text-transform: uppercase;
		text-decoration: none;
	}
	.nav__list > .current-menu-item > a,
	.nav__list > .current-menu-ancestor > a { color: var(--teal); }
	.nav__sub {
		margin: 0 0 0.9rem;
		padding-left: 1rem;
		border-left: 2px solid var(--teal);
	}
	.nav__sub a {
		display: block;
		padding: 0.4rem 0;
		color: var(--muted-on-dark);
		font-weight: 600;
		text-decoration: none;
	}
	.nav__sub a:hover { color: #fff; }
	.nav__toggle { display: none; }
	.site-nav .btn { align-self: flex-start; }
}

@media (min-width: 1080px) {
	.menu-toggle { display: none; }
	.site-nav { display: flex; align-items: center; gap: 1.1rem; }
	.nav__list { display: flex; align-items: center; }
	.nav__list > li { position: relative; display: flex; align-items: center; }
	.nav__list > li > a {
		position: relative;
		display: block;
		padding: 0.65rem 0.7rem;
		color: var(--ink);
		font-size: 0.98rem;
		font-weight: 600;
		text-decoration: none;
		white-space: nowrap;
	}
	.nav__list > li > a::after {
		content: "";
		position: absolute;
		left: 0.7rem; right: 0.7rem; bottom: 0.3rem;
		height: 2px;
		background: var(--teal);
		transform: scaleX(0);
		transform-origin: left;
		transition: transform 0.2s var(--ease);
	}
	.nav__list > li > a:hover { color: var(--teal-ink); }
	.nav__list > li > a:hover::after { transform: scaleX(1); }
	.nav__list > .current-menu-item > a::after,
	.nav__list > .current-menu-ancestor > a::after,
	.nav__list > .current-page-ancestor > a::after { transform: scaleX(1); background: var(--red); }
	.nav__list > .menu-item-has-children > a { padding-right: 0.15rem; }
	.nav__list > .menu-item-has-children > a::after { right: 0.15rem; }

	.nav__toggle {
		display: grid;
		place-items: center;
		width: 28px; height: 28px;
		margin-right: 0.35rem;
		padding: 0;
		border: 0;
		border-radius: 6px;
		background: transparent;
		color: var(--ink);
		cursor: pointer;
	}
	.nav__toggle .icon { width: 16px; height: 16px; transition: transform 0.2s; }
	.nav__toggle[aria-expanded="true"] .icon { transform: rotate(180deg); }
	.nav__toggle:hover { color: var(--teal-ink); }

	.nav__sub {
		position: absolute;
		top: 100%; left: 0;
		min-width: 250px;
		padding: 0.5rem;
		background: #fff;
		border: 1px solid var(--line);
		border-radius: 14px;
		box-shadow: 0 22px 44px -22px rgb(0 0 0 / 0.35);
		visibility: hidden;
		opacity: 0;
		transform: translateY(6px);
		transition: opacity 0.15s, transform 0.15s, visibility 0s linear 0.15s;
	}
	.is-open > .nav__sub {
		visibility: visible; opacity: 1; transform: none;
		transition: opacity 0.15s, transform 0.15s;
	}
	.nav__sub a {
		display: block;
		padding: 0.6rem 0.8rem;
		border-radius: 8px;
		color: var(--ink);
		font-weight: 500;
		text-decoration: none;
	}
	.nav__sub a:hover { background: var(--teal-soft); color: var(--teal-ink); }
	.site-nav .btn { min-height: 44px; font-size: 1.02rem; }
}

@media (min-width: 1080px) and (hover: hover) {
	.menu-item-has-children:hover > .nav__sub {
		visibility: visible; opacity: 1; transform: none;
		transition: opacity 0.15s, transform 0.15s;
	}
}

/* ── Stage: dark sections lit by red and teal spotlights ───────────────── */

.stage {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	background: var(--ink);
	color: #fff;
}
.stage__beams {
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	background:
		conic-gradient(from 150deg at 10% -6%, transparent 0deg 5deg, rgb(214 43 43 / 0.42) 11deg, transparent 23deg),
		conic-gradient(from 177deg at 52% -12%, transparent 0deg 2deg, rgb(255 255 255 / 0.06) 8deg, transparent 15deg),
		conic-gradient(from 197deg at 90% -6%, transparent 0deg 5deg, rgb(42 175 176 / 0.36) 12deg, transparent 25deg),
		radial-gradient(110% 55% at 50% 115%, rgb(42 175 176 / 0.14), transparent 60%);
	filter: blur(5px);
}
.stage__beams--soft { opacity: 0.55; }

.stage__wave {
	position: absolute;
	left: 0; right: 0; bottom: -1px;
	z-index: 1;
	width: 100%;
	height: clamp(22px, 3vw, 40px);
	display: block;
}
.wave__fill { fill: var(--wave-fill, #fff); }
.wave__line { fill: none; stroke: var(--teal); stroke-width: 3; vector-effect: non-scaling-stroke; }

/* ── The roteping (Ferris wheel) ───────────────────────────────────────── */

.wheel { display: block; width: 100%; height: auto; overflow: visible; --turn: 0deg; }
.wheel__stand path { fill: none; stroke: rgb(255 255 255 / 0.26); stroke-width: 7; stroke-linecap: round; }
.wheel__rim { fill: none; stroke: var(--red); stroke-width: 6; }
.wheel__rim2 { fill: none; stroke: var(--teal); stroke-width: 2.5; }
.wheel__spokes line { stroke: rgb(255 255 255 / 0.3); stroke-width: 1.6; }
.bulb--w { fill: #fff; }
.bulb--t { fill: var(--teal); }
.bulb--r { fill: var(--red); }
.wheel__cabin line { stroke: rgb(255 255 255 / 0.6); stroke-width: 2; }
.cabin--red rect { fill: var(--red); }
.cabin--teal rect { fill: var(--teal); }
.wheel__cabin .cabin__window { fill: rgb(26 26 26 / 0.5); }
.wheel__hub { fill: #fff; stroke: var(--red); stroke-width: 4; }
.wheel__r { fill: var(--red); font-family: var(--font-display); font-size: 34px; font-weight: 900; }
.wheel__wave { fill: none; stroke: var(--teal); stroke-width: 6; stroke-linecap: round; }

.wheel--spin .wheel__spin {
	transform-origin: 200px 200px;
	rotate: var(--turn);
	animation: rt-turn 90s linear infinite;
}
.wheel--spin .wheel__cabin {
	transform-box: fill-box;
	transform-origin: 50% 0;
	rotate: calc(var(--turn) * -1);
	animation: rt-turn 90s linear infinite reverse;
}
@keyframes rt-turn { to { transform: rotate(360deg); } }

/* ── Hero ──────────────────────────────────────────────────────────────── */

.hero {
	display: flex;
	align-items: center;
	min-height: min(calc(100svh - var(--header-h)), 880px);
	padding-block: clamp(2.5rem, 7vw, 5.5rem) clamp(4.5rem, 9vw, 7rem);
}
.hero__grid {
	position: relative;
	display: grid;
	gap: 2rem;
	align-items: center;
}
.hero__copy { position: relative; z-index: 1; }
.hero__title {
	max-width: 13ch;
	margin: 0.35em 0 0.4em;
	font-size: clamp(2.5rem, 1.5rem + 4.2vw, 4.9rem);
	font-weight: 900;
	line-height: 0.9;
	letter-spacing: 0.005em;
}
.hero__title em { font-style: normal; color: var(--teal); }
.hero__intro {
	max-width: 44ch;
	margin-bottom: 2rem;
	color: var(--muted-on-dark);
	font-size: var(--step-1);
	line-height: 1.55;
}

/* Hero video — beside the headline on desktop, below it on mobile. */
.hero__feature {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 100%;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	border-radius: var(--radius);
	background: var(--ink-2);
	box-shadow: 0 0 0 1px rgb(255 255 255 / 0.12), 0 28px 60px -24px rgb(0 0 0 / 0.75);
}
.hero__feature-video,
.hero__feature-embed,
.hero__feature-embed iframe { display: block; width: 100%; height: 100%; border: 0; }
.hero__feature-video { object-fit: cover; background: #000; }
.hero__feature-yt { position: relative; pointer-events: none; background: var(--ink-2) center / cover no-repeat; }
.hero__feature-embed.hero__feature-yt iframe {
	position: absolute;
	top: -100%;
	left: 0;
	height: 300%;
	opacity: 0;
	transition: opacity 0.6s ease;
}
.hero__feature-yt.is-playing iframe { opacity: 1; }
.hero__feature-placeholder {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	gap: 0.9rem;
	height: 100%;
	background:
		radial-gradient(circle at 25% 20%, rgb(42 175 176 / 0.3), transparent 55%),
		radial-gradient(circle at 85% 90%, rgb(214 43 43 / 0.32), transparent 50%),
		var(--ink-2);
}
.hero__feature-play {
	display: grid;
	place-items: center;
	width: 4.5rem;
	height: 4.5rem;
	border-radius: 50%;
	background: var(--red);
	color: #fff;
	box-shadow: 0 0 0 10px rgb(214 43 43 / 0.18);
}
.hero__feature-play .icon { width: 1.9rem; height: 1.9rem; margin-left: 0.2rem; }
.hero__feature-label {
	color: var(--muted-on-dark);
	font-family: var(--font-display);
	font-size: 1.05rem;
	font-weight: 800;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}

@media (min-width: 900px) {
	.hero__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); gap: clamp(2rem, 4vw, 4rem); }
}

.hero__media { position: absolute; inset: 0; z-index: -3; }
.hero__media img, .hero__media video { width: 100%; height: 100%; object-fit: cover; }
.hero--media::before {
	content: "";
	position: absolute;
	inset: 0;
	z-index: -2;
	background: linear-gradient(90deg, rgb(26 26 26 / 0.93) 0%, rgb(26 26 26 / 0.72) 55%, rgb(26 26 26 / 0.5) 100%);
}

/* ── Inner page header ─────────────────────────────────────────────────── */

.page-head {
	padding-block: clamp(3.25rem, 8vw, 6rem) calc(clamp(3.25rem, 7vw, 5.5rem) + 24px);
}
.page-head__inner { position: relative; z-index: 1; }
.page-head__title {
	max-width: 16ch;
	font-size: clamp(2.8rem, 1.5rem + 5.2vw, 5.75rem);
	font-weight: 900;
	line-height: 0.88;
}
.page-head__lede {
	max-width: 56ch;
	margin: 1.25rem 0 0;
	color: var(--muted-on-dark);
	font-size: var(--step-1);
	line-height: 1.55;
}
.page-head__wheel {
	position: absolute;
	top: 50%; right: -120px;
	width: min(460px, 62vw);
	opacity: 0.2;
	transform: translateY(-50%);
	pointer-events: none;
}
@media (max-width: 699.98px) {
	.page-head__wheel { right: -38vw; opacity: 0.12; }
}

.subnav { background: #fff; border-bottom: 1px solid var(--line); }
.subnav__inner {
	display: flex;
	gap: 0.5rem;
	padding-block: 0.9rem;
	overflow-x: auto;
	scrollbar-width: none;
}
.subnav a {
	flex: none;
	padding: 0.45rem 1rem 0.4rem;
	border: 1.5px solid var(--line);
	border-radius: 999px;
	color: var(--ink);
	font-weight: 600;
	font-size: 0.92rem;
	text-decoration: none;
}
.subnav a:hover { border-color: var(--teal-ink); color: var(--teal-ink); }

/* ── Sections ──────────────────────────────────────────────────────────── */

.section { padding-block: var(--space-section); background: var(--white); }
.section--paper { background: var(--paper); }
.section.stage { background: var(--ink); }

.split { display: grid; gap: 2.5rem; align-items: start; }
@media (min-width: 900px) {
	.split { grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: clamp(2.5rem, 5vw, 5rem); }
	.split--wide { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
}

/* Home intro */
.intro__grid { display: grid; gap: 2.5rem; align-items: start; }
.intro__text .section-head__title { margin-bottom: 1.5rem; max-width: 16ch; }
.intro__text .prose { margin-bottom: 1.5rem; }
.intro__offer {
	padding: clamp(1.4rem, 3vw, 2rem);
	background: var(--paper);
	border-radius: var(--radius);
	border-top: 4px solid var(--teal);
}
.offer-list {
	display: grid;
	gap: 0.7rem;
	margin: 0 0 1.5rem;
	padding: 0;
	list-style: none;
	font-weight: 600;
}
.offer-list li { display: flex; align-items: center; gap: 0.75rem; }
.offer-list .icon { color: var(--teal-ink); width: 22px; height: 22px; }
@media (min-width: 900px) {
	.intro__grid { grid-template-columns: minmax(0, 1.45fr) minmax(0, 0.85fr); gap: clamp(3rem, 6vw, 6rem); }
}

/* ── Records: ticket stubs ─────────────────────────────────────────────── */

.stubs {
	display: grid;
	gap: 1.1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
@media (min-width: 700px) { .stubs { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .stubs { grid-template-columns: repeat(3, 1fr); } }

.stub {
	--fig: 7.75rem;
	position: relative;
	display: grid;
	grid-template-columns: var(--fig) 1fr;
	background: #fff;
	border: 1px solid var(--line);
	border-radius: var(--radius);
	transition: border-color 0.2s, box-shadow 0.2s;
}
/* Perforation notches, top and bottom of the tear line. */
.stub::before, .stub::after {
	content: "";
	position: absolute;
	left: calc(var(--fig) - 11px);
	width: 22px; height: 22px;
	border-radius: 50%;
	background: var(--paper);
	border: 1px solid var(--line);
}
.stub::before { top: -12px; clip-path: inset(50% 0 0 0); }
.stub::after { bottom: -12px; clip-path: inset(0 0 50% 0); }
.stub:hover, .stub:focus-within { border-color: var(--teal); box-shadow: 0 16px 30px -24px rgb(0 0 0 / 0.5); }

.stub__figure {
	display: grid;
	place-items: center;
	margin: 0;
	padding: 1.25rem 0.6rem;
	border-right: 2px dashed var(--line);
	color: var(--red);
	font-family: var(--font-display);
	font-size: clamp(2.3rem, 1.8rem + 1.5vw, 3rem);
	font-weight: 900;
	line-height: 0.88;
	text-align: center;
	text-transform: uppercase;
}
.stub__body { padding: 1.15rem 1.25rem 1.1rem; }
.stub__label {
	margin: 0 0 0.35rem;
	font-family: var(--font-display);
	font-size: 1.45rem;
	font-weight: 800;
	line-height: 1;
	text-transform: uppercase;
}
.stub__label a { color: var(--ink); text-decoration: none; }
.stub__label a::after { content: ""; position: absolute; inset: 0; border-radius: var(--radius); }
.stub__note { margin: 0 0 0.6rem; color: var(--muted); font-size: 0.95rem; line-height: 1.45; }
.stub__meta {
	margin: 0;
	color: var(--teal-ink);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

/* ── Cards & posters ───────────────────────────────────────────────────── */

.card-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1.75rem 1rem;
}
@media (min-width: 700px) { .card-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2rem 1.25rem; } }
@media (min-width: 1000px) { .card-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
@media (min-width: 1100px) { .card-grid--6 { grid-template-columns: repeat(6, minmax(0, 1fr)); } }

.card { position: relative; }
.card__poster { position: relative; margin-bottom: 0.85rem; }
.card__poster .badge { position: absolute; top: 0.6rem; left: 0.6rem; }
.card__title { font-size: 1.35rem; line-height: 1; }
.card__title a { color: var(--ink); text-decoration: none; }
.card__title a::after { content: ""; position: absolute; inset: 0; }
.card__meta { margin: 0.4rem 0 0; color: var(--muted); font-size: 0.88rem; line-height: 1.4; }
.card__stat { margin: 0.4rem 0 0; font-size: 0.88rem; line-height: 1.35; color: var(--muted); }
.card__stat strong { color: var(--red); font-family: var(--font-display); font-size: 1.2rem; font-weight: 900; }
.card:hover .poster, .card:focus-within .poster {
	transform: translateY(-4px);
	box-shadow: 0 0 0 3px var(--teal), 0 20px 30px -20px rgb(0 0 0 / 0.55);
}
.card:hover .card__title a { color: var(--teal-ink); }

.poster {
	position: relative;
	aspect-ratio: 2 / 3;
	overflow: hidden;
	border-radius: 10px;
	background: var(--ink);
	transition: transform 0.25s var(--ease), box-shadow 0.25s;
}
.poster img { width: 100%; height: 100%; object-fit: cover; }

/* Typographic stand-in until the real poster is uploaded. */
.poster--type {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 0.45rem;
	padding: 1rem 0.9rem;
	color: #fff;
	background:
		radial-gradient(120% 70% at 85% 0%, rgb(214 43 43 / 0.72), transparent 62%),
		radial-gradient(90% 60% at 0% 45%, rgb(42 175 176 / 0.3), transparent 66%),
		var(--ink);
}
.poster--tone-b {
	background:
		radial-gradient(120% 70% at 15% 0%, rgb(42 175 176 / 0.62), transparent 62%),
		radial-gradient(90% 60% at 100% 55%, rgb(214 43 43 / 0.38), transparent 66%),
		var(--ink);
}
.poster--type::before {
	content: "";
	position: absolute;
	top: -50%; right: -62%;
	width: 140%;
	aspect-ratio: 1;
	border: 2px dashed rgb(255 255 255 / 0.14);
	border-radius: 50%;
}
.poster__kicker {
	color: var(--teal);
	font-size: 0.66rem;
	font-weight: 700;
	line-height: 1.2;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.poster__title {
	font-family: var(--font-display);
	font-size: clamp(1.6rem, 1.1rem + 1.6vw, 2.35rem);
	font-weight: 900;
	line-height: 0.86;
	text-transform: uppercase;
	overflow-wrap: anywhere;
}
.poster__foot {
	margin-top: 0.3rem;
	padding-top: 0.5rem;
	border-top: 1px solid rgb(255 255 255 / 0.18);
	color: rgb(255 255 255 / 0.62);
	font-size: 0.62rem;
	font-weight: 700;
	letter-spacing: 0.2em;
	text-transform: uppercase;
}

/* Status badges — same colour code as the Ticket Cart legend. */
.badge {
	display: inline-flex;
	align-items: center;
	gap: 0.45em;
	padding: 0.38em 0.75em 0.3em;
	border: 1.5px solid transparent;
	border-radius: 999px;
	font-size: 0.72rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: 0.1em;
	text-transform: uppercase;
	white-space: nowrap;
}
.badge::before { content: ""; width: 0.5em; height: 0.5em; border-radius: 50%; background: currentColor; }
.badge--upcoming { background: var(--teal); color: var(--ink); }
.badge--live { background: var(--red); color: #fff; }
.badge--soldout { background: var(--ink); color: #fff; border-color: rgb(255 255 255 / 0.4); }
.badge--past { background: #fff; color: var(--muted); border-color: var(--line); }

.year-group { margin-top: clamp(2.75rem, 5vw, 4rem); }
.year-group__title {
	display: flex;
	align-items: center;
	gap: 1rem;
	margin: clamp(2.75rem, 5vw, 4rem) 0 1.5rem;
	font-size: var(--step-3);
	font-weight: 900;
}
.year-group > .year-group__title { margin-top: 0; }
.year-group__title::after { content: ""; flex: 1; height: 2px; background: var(--line); }

/* ── Ticket band ───────────────────────────────────────────────────────── */

.ticket-band {
	position: relative;
	overflow: hidden;
	padding-block: clamp(3.25rem, 7vw, 5rem);
	background: var(--red);
	color: #fff;
	--focus: #fff;
}
/* Perforated top and bottom edges. */
.ticket-band::before, .ticket-band::after {
	content: "";
	position: absolute;
	left: 0; right: 0;
	height: 8px;
	background: radial-gradient(circle at 12px 50%, #fff 5px, transparent 5.5px) 0 0 / 24px 8px repeat-x;
}
.ticket-band::before { top: -4px; }
.ticket-band::after { bottom: -4px; }
.ticket-band__inner {
	position: relative;
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
}
.ticket-band__inner::before {
	content: "";
	position: absolute;
	top: -230px; right: -140px;
	width: 520px;
	aspect-ratio: 1;
	border: 2px dashed rgb(255 255 255 / 0.22);
	border-radius: 50%;
	pointer-events: none;
}
.ticket-band .eyebrow { color: #fff; }
.ticket-band .eyebrow::before { border-color: #fff; }
.ticket-band__title { max-width: 15ch; margin: 0 0 0.6rem; font-size: var(--step-4); font-weight: 900; }
.ticket-band__text p:last-child { max-width: 48ch; margin: 0; font-size: var(--step-1); line-height: 1.5; }

/* ── Partners ──────────────────────────────────────────────────────────── */

.partners {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(46%, 170px), 1fr));
	gap: 0.75rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.partner__inner {
	display: grid;
	place-items: center;
	height: 100%;
	aspect-ratio: 3 / 2;
	padding: 1rem;
	background: #fff;
	border: 1px solid var(--line);
	border-radius: 14px;
	text-align: center;
	text-decoration: none;
	transition: border-color 0.2s, box-shadow 0.2s;
}
.partner__logo {
	max-width: 100%;
	max-height: 64px;
	width: auto;
	object-fit: contain;
	filter: grayscale(1);
	opacity: 0.72;
	transition: filter 0.25s, opacity 0.25s;
}
.partner__name {
	color: #666;
	font-family: var(--font-display);
	font-size: 1.15rem;
	font-weight: 800;
	line-height: 1;
	text-transform: uppercase;
	transition: color 0.2s;
}
.partner__inner:hover, a.partner__inner:focus-visible { border-color: var(--teal); box-shadow: 0 12px 24px -20px rgb(0 0 0 / 0.5); }
.partner__inner:hover .partner__logo, a.partner__inner:focus-visible .partner__logo { filter: none; opacity: 1; }
.partner__inner:hover .partner__name, a.partner__inner:focus-visible .partner__name { color: var(--ink); }

/* ── Instagram band ────────────────────────────────────────────────────── */

.insta__inner { display: grid; gap: 1.5rem; align-items: center; }
@media (min-width: 900px) { .insta__inner { grid-template-columns: auto 1fr auto; gap: 2.5rem; } }
.insta__icon {
	display: grid;
	place-items: center;
	width: 84px; height: 84px;
	border: 2px solid var(--red);
	border-radius: 50%;
	color: var(--red);
}
.insta__icon .icon { width: 38px; height: 38px; }
.insta__handle {
	font-size: clamp(1.9rem, 0.9rem + 4.4vw, 4.25rem);
	font-weight: 900;
	text-transform: none;
	letter-spacing: 0;
	overflow-wrap: anywhere;
}
.insta__handle a { color: var(--ink); text-decoration: none; }
.insta__handle a:hover { color: var(--teal-ink); }
.insta__text { margin: 0.6rem 0 0; color: var(--muted); }

/* ── About ─────────────────────────────────────────────────────────────── */

.split .section-head__title { margin-bottom: 1.5rem; }

.facts-card {
	padding: clamp(1.4rem, 3vw, 2rem);
	background: var(--paper);
	border-radius: var(--radius);
	border-top: 4px solid var(--teal);
}
.facts { margin: 0; }
.facts > div { padding: 0.85rem 0; border-bottom: 1px solid var(--line); }
.facts > div:first-child { padding-top: 0; }
.facts > div:last-child { border-bottom: 0; padding-bottom: 0; }
.facts dt {
	color: var(--teal-ink);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.facts dd { margin: 0.15rem 0 0; font-weight: 500; line-height: 1.45; }
.facts--dark { margin: 1.5rem 0; }
.facts--dark > div { border-color: rgb(255 255 255 / 0.14); }
.facts--dark > div:first-child { padding-top: 0.85rem; border-top: 1px solid rgb(255 255 255 / 0.14); }
.facts--dark dt { color: var(--teal); }
@media (min-width: 600px) {
	.facts--dark { display: grid; grid-template-columns: 1fr 1fr; column-gap: 1.5rem; }
	.facts--dark > div:nth-child(2) { padding-top: 0.85rem; border-top: 1px solid rgb(255 255 255 / 0.14); }
}

.vm { display: grid; gap: 1.25rem; }
@media (min-width: 800px) { .vm { grid-template-columns: 1fr 1fr; } }
.vm__card {
	padding: clamp(1.75rem, 4vw, 3rem);
	background: #fff;
	border: 1px solid var(--line);
	border-radius: 20px;
}
.vm__card p { margin: 0; font-size: var(--step-1); line-height: 1.55; }
.vm__label { margin-bottom: 1rem; font-size: var(--step-4); font-weight: 900; }
.vm__label::before {
	content: "";
	display: block;
	width: 48px; height: 5px;
	margin-bottom: 1rem;
	border-radius: 3px;
	background: var(--red);
}
.vm__card--alt .vm__label::before { background: var(--teal); }

/* Global presence */
.presence__grid { display: grid; gap: 2rem; align-items: center; }
@media (min-width: 900px) { .presence__grid { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); gap: 3rem; } }
.presence__map { margin: 0; }
.presence__map svg { width: 100%; height: auto; overflow: visible; }
.presence__lat line { stroke: rgb(255 255 255 / 0.22); stroke-width: 1.5; stroke-dasharray: 2 7; }
.presence__lat text, .presence__coord {
	fill: rgb(255 255 255 / 0.62);
	font-family: var(--font-body);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.presence__arc { fill: none; stroke: var(--teal); stroke-width: 2.5; stroke-dasharray: 7 9; stroke-linecap: round; }
.presence__km { fill: #fff; font-family: var(--font-display); font-size: 28px; font-weight: 800; }
.presence__pin--au circle:last-child { fill: var(--red); }
.presence__pin--au .presence__halo { fill: rgb(214 43 43 / 0.25); }
.presence__pin--np circle:last-child { fill: var(--ink); stroke: var(--teal); stroke-width: 3.5; }
.presence__pin--np .presence__halo { fill: rgb(42 175 176 / 0.18); }
.presence__city { fill: #fff; font-family: var(--font-display); font-size: 32px; font-weight: 900; text-transform: uppercase; }
.presence__places { display: grid; gap: 1rem; }
.place {
	padding: 1.5rem;
	border: 1px solid rgb(255 255 255 / 0.14);
	border-radius: var(--radius);
	background: rgb(255 255 255 / 0.03);
}
.place p { margin: 0; color: var(--muted-on-dark); }
.place .place__tag { margin-bottom: 0.75rem; }
.place__name { margin-bottom: 0.4rem; font-size: var(--step-3); font-weight: 900; }

/* Closing CTA strip */
.cta-strip {
	padding-block: clamp(3rem, 6vw, 4.5rem);
	background: var(--paper);
	border-top: 1px solid var(--line);
}
.cta-strip__inner {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1.5rem 2rem;
}
.cta-strip__title { max-width: 22ch; font-size: var(--step-3); font-weight: 900; }
.cta-strip p { margin: 0.6rem 0 0; color: var(--muted); }

/* ── Services ──────────────────────────────────────────────────────────── */

.services-intro { margin-bottom: clamp(2rem, 4vw, 3rem); }
.services {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
	gap: 1rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.service {
	padding: 1.5rem 1.4rem 1.6rem;
	background: #fff;
	border: 1px solid var(--line);
	border-radius: var(--radius);
	transition: border-color 0.2s, transform 0.2s var(--ease);
}
.service:hover { border-color: var(--teal); transform: translateY(-2px); }
.service__icon {
	display: grid;
	place-items: center;
	width: 54px; height: 54px;
	border-radius: 50%;
	background: var(--teal-soft);
	color: var(--teal-ink);
}
.service__icon .icon { width: 27px; height: 27px; }
.service__title { margin: 1.1rem 0 0.5rem; font-size: 1.6rem; line-height: 0.95; }
.service p { margin: 0; color: var(--muted); line-height: 1.55; }

/* ── Portfolio ─────────────────────────────────────────────────────────── */

.figures {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.9rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
.figure {
	padding: 1.25rem 1.2rem;
	background: var(--paper);
	border-radius: 14px;
}
.figure__num {
	color: var(--red);
	font-family: var(--font-display);
	font-size: clamp(3rem, 2.2rem + 3vw, 4.6rem);
	font-weight: 900;
	line-height: 0.85;
}
.figure__unit {
	margin-left: 0.3rem;
	font-family: var(--font-display);
	font-size: 1.35rem;
	font-weight: 800;
	text-transform: uppercase;
}
.figure__text { display: block; margin-top: 0.55rem; color: var(--muted); font-size: 0.93rem; line-height: 1.4; }

.feature {
	display: grid;
	gap: clamp(1.5rem, 4vw, 3rem);
	align-items: center;
	margin-top: clamp(1.5rem, 3vw, 2.5rem);
	padding: clamp(1.25rem, 3vw, 2rem);
	background: #fff;
	border: 1px solid var(--line);
	border-radius: 22px;
}
.feature__poster { max-width: 320px; }
@media (min-width: 800px) { .feature { grid-template-columns: minmax(200px, 320px) 1fr; } }
.feature__figure { margin: 0 0 1rem; font-weight: 600; font-size: var(--step-1); line-height: 1.3; }
.feature__figure span {
	display: block;
	color: var(--red);
	font-family: var(--font-display);
	font-size: clamp(3.5rem, 2rem + 6vw, 6.5rem);
	font-weight: 900;
	line-height: 0.82;
}
.feature__title { margin-bottom: 0.4rem; font-size: var(--step-3); }
.feature__title a { color: var(--ink); text-decoration: none; }
.feature__title a:hover { color: var(--teal-ink); }
.feature__meta {
	margin-bottom: 1.1rem;
	color: var(--teal-ink);
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

/* Masonry photo gallery */
.masonry { columns: 2; column-gap: 0.75rem; }
@media (min-width: 700px) { .masonry { columns: 3; } }
@media (min-width: 1100px) { .masonry { columns: 4; } }
.masonry__item {
	display: block;
	margin-bottom: 0.75rem;
	overflow: hidden;
	border-radius: 10px;
	break-inside: avoid;
	background: var(--ink);
}
.masonry__item img { width: 100%; height: auto; transition: transform 0.4s var(--ease), opacity 0.2s; }
.masonry__item:hover img { transform: scale(1.03); opacity: 0.92; }

.stage-tile {
	display: flex;
	flex-direction: column;
	justify-content: flex-end;
	gap: 0.3rem;
	margin-bottom: 0.75rem;
	padding: 1rem;
	border-radius: 10px;
	break-inside: avoid;
	color: #fff;
	aspect-ratio: 4 / 5;
	background:
		conic-gradient(from 160deg at 28% -5%, transparent 0deg 4deg, rgb(214 43 43 / 0.55) 12deg, transparent 26deg),
		var(--ink);
}
.stage-tile--1 { aspect-ratio: 1; background: conic-gradient(from 190deg at 75% -5%, transparent 0deg 4deg, rgb(42 175 176 / 0.5) 12deg, transparent 26deg), var(--ink); }
.stage-tile--2 { aspect-ratio: 3 / 4; background: conic-gradient(from 155deg at 15% -5%, transparent 0deg 3deg, rgb(42 175 176 / 0.45) 10deg, transparent 20deg), conic-gradient(from 200deg at 85% -5%, transparent 0deg 3deg, rgb(214 43 43 / 0.45) 10deg, transparent 20deg), var(--ink); }
.stage-tile--3 { aspect-ratio: 4 / 3; background: radial-gradient(80% 60% at 50% 110%, rgb(214 43 43 / 0.5), transparent 70%), var(--ink); }
.stage-tile__title { font-family: var(--font-display); font-size: 1.3rem; font-weight: 800; line-height: 1; text-transform: uppercase; }
.stage-tile__note { color: rgb(255 255 255 / 0.66); font-size: 0.7rem; font-weight: 700; letter-spacing: 0.14em; text-transform: uppercase; }

/* ── Future plans ──────────────────────────────────────────────────────── */

.plans { display: grid; gap: 1.5rem; }
@media (min-width: 900px) { .plans { grid-template-columns: 1fr 1fr; } }
.plan {
	position: relative;
	isolation: isolate;
	display: flex;
	flex-direction: column;
	min-height: 440px;
	padding: clamp(1.75rem, 4vw, 3rem);
	overflow: hidden;
	border-radius: 22px;
	background: radial-gradient(90% 70% at 100% 0%, rgb(214 43 43 / 0.45), transparent 62%), var(--ink);
	color: #fff;
}
.plan--2 { background: radial-gradient(90% 70% at 100% 0%, rgb(42 175 176 / 0.4), transparent 62%), var(--ink); }
.plan__ring {
	position: absolute;
	top: -170px; right: -170px;
	z-index: -1;
	width: 420px;
	aspect-ratio: 1;
	border: 2px dashed rgb(255 255 255 / 0.13);
	border-radius: 50%;
	box-shadow: inset 0 0 0 70px transparent, inset 0 0 0 72px rgb(255 255 255 / 0.06);
}
.plan__meta { display: flex; flex-wrap: wrap; align-items: center; gap: 0.75rem 1rem; margin: 0; }
.plan__meta > span:first-child:not(.badge) {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	color: var(--teal);
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}
.plan__meta .icon { width: 18px; height: 18px; }
.plan__title { max-width: 12ch; margin: 1.5rem 0 1rem; font-size: clamp(2.5rem, 1.6rem + 3.4vw, 4.25rem); font-weight: 900; line-height: 0.86; }
.plan__text { max-width: 46ch; color: var(--muted-on-dark); font-size: var(--step-1); line-height: 1.55; }
.plan__points { margin: auto 0 0; padding: 0; list-style: none; border-top: 1px solid rgb(255 255 255 / 0.14); }
.plan__points li {
	display: flex;
	align-items: baseline;
	gap: 0.7rem;
	padding: 0.7rem 0;
	border-bottom: 1px solid rgb(255 255 255 / 0.1);
	font-weight: 500;
}
.plan__points li::before { content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--red); flex: none; transform: translateY(-2px); }
.plan--2 .plan__points li::before { background: var(--teal); }

/* ── Team ──────────────────────────────────────────────────────────────── */

.headshot {
	width: 100%;
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: 50%;
	background: var(--ink);
}
.headshot img { width: 100%; height: 100%; object-fit: cover; }
.headshot--initials {
	display: grid;
	place-items: center;
	box-shadow: inset 0 0 0 5px var(--ink), inset 0 0 0 7px var(--red);
}
.headshot--initials span {
	color: var(--teal);
	font-family: var(--font-display);
	font-size: clamp(2.2rem, 1.6rem + 2vw, 3.2rem);
	font-weight: 900;
	line-height: 1;
}
.headshot--lg { width: 112px; }
.headshot--lg span { font-size: 2.4rem; }

.ceo-grid { display: grid; gap: 1.5rem; }
@media (min-width: 900px) { .ceo-grid { grid-template-columns: 1fr 1fr; } }
.ceo {
	display: flex;
	flex-direction: column;
	gap: 1.25rem;
	margin: 0;
	padding: clamp(1.5rem, 3.5vw, 2.5rem);
	background: #fff;
	border: 1px solid var(--line);
	border-radius: 22px;
}
.ceo__quote { margin: 0; font-size: var(--step-1); line-height: 1.6; }
.ceo__quote::before {
	content: "“";
	display: block;
	height: 0.55em;
	color: var(--teal);
	font-family: var(--font-display);
	font-size: 5rem;
	font-weight: 900;
	line-height: 1;
}
.ceo__quote p:last-child { margin: 0; }
.ceo__by { display: flex; flex-direction: column; margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--line); }
.ceo__name { font-family: var(--font-display); font-size: 1.5rem; font-weight: 800; text-transform: uppercase; line-height: 1; }
.ceo__role { margin-top: 0.3rem; color: var(--muted); font-size: 0.92rem; }

.team-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 2rem 1.25rem;
	margin: 0;
	padding: 0;
	list-style: none;
}
@media (min-width: 640px) { .team-grid { grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); } }
.member { text-align: center; }
.member .headshot { max-width: 180px; margin-inline: auto; }
.member__name { margin: 1rem 0 0.2rem; font-size: 1.35rem; line-height: 1; }
.member__role { margin: 0; color: var(--muted); font-size: 0.92rem; line-height: 1.4; }

/* ── Ticket Cart ───────────────────────────────────────────────────────── */

.tc-cta {
	padding: clamp(1.5rem, 3.5vw, 2.25rem);
	background: var(--paper);
	border: 1px solid var(--line);
	border-top: 4px solid var(--red);
	border-radius: 20px;
}
.tc-cta__label {
	margin: 0 0 1rem;
	font-family: var(--font-display);
	font-size: var(--step-2);
	font-weight: 800;
	text-transform: uppercase;
	line-height: 1;
}
.tc-cta__note { margin: 1rem 0 0; color: var(--muted); font-size: 0.95rem; }
.tc-cta .btn { width: 100%; }

.legend { display: grid; gap: 0.75rem; margin: 0; padding: 0; list-style: none; }
.legend li {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.6rem 1rem;
	padding: 1rem 1.1rem;
	background: var(--paper);
	border-radius: 14px;
}
.legend .badge { min-width: 12.5rem; justify-content: center; }

/* ── Contact ───────────────────────────────────────────────────────────── */

.contact-grid { display: grid; gap: clamp(2rem, 5vw, 4rem); align-items: start; }
@media (min-width: 900px) { .contact-grid { grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); } }
.contact-list { display: grid; gap: 1.35rem; margin: 1.5rem 0 0; padding: 0; list-style: none; }
.contact-list li { display: flex; gap: 1rem; align-items: flex-start; }
.contact-list li > .icon {
	width: 44px; height: 44px;
	padding: 10px;
	border-radius: 50%;
	background: var(--teal-soft);
	color: var(--teal-ink);
}
.contact-list div { display: flex; flex-direction: column; }
.contact-list__label {
	color: var(--teal-ink);
	font-size: 0.74rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.contact-list a, .contact-list div > span:not(.contact-list__label) {
	color: var(--ink);
	font-size: var(--step-1);
	font-weight: 600;
	text-decoration: none;
	overflow-wrap: anywhere;
}
.contact-list a:hover { color: var(--teal-ink); text-decoration: underline; text-decoration-color: var(--teal); }

.contact-form {
	padding: clamp(1.5rem, 3.5vw, 2.5rem);
	background: var(--paper);
	border: 1px solid var(--line);
	border-radius: 22px;
}

/* Contact Form 7 (its own stylesheet is not loaded) */
.wpcf7-form { display: grid; gap: 1.1rem; }
@media (min-width: 600px) {
	.wpcf7-form { grid-template-columns: 1fr 1fr; }
	.wpcf7-form .field--full, .wpcf7-form .wpcf7-response-output { grid-column: 1 / -1; }
}
.wpcf7-form label { display: block; margin-bottom: 0.35rem; font-weight: 600; }
.wpcf7-form-control-wrap { position: relative; display: block; }
.wpcf7-form input[type="text"],
.wpcf7-form input[type="email"],
.wpcf7-form input[type="tel"],
.wpcf7-form textarea {
	width: 100%;
	padding: 0.8rem 1rem;
	border: 1.5px solid #C9C6C6;
	border-radius: 10px;
	background: #fff;
	color: var(--ink);
	font: inherit;
	transition: border-color 0.15s, box-shadow 0.15s;
}
.wpcf7-form textarea { min-height: 160px; resize: vertical; }
.wpcf7-form input:focus, .wpcf7-form textarea:focus {
	border-color: var(--teal-ink);
	box-shadow: 0 0 0 3px rgb(23 122 123 / 0.2);
	outline: none;
}
.wpcf7-form .wpcf7-not-valid { border-color: var(--red-deep); }
.wpcf7-not-valid-tip { display: block; margin-top: 0.35rem; color: var(--red-deep); font-size: 0.9rem; font-weight: 600; }
.wpcf7-submit { font-family: var(--font-display); }
.wpcf7 .screen-reader-response {
	position: absolute; overflow: hidden;
	width: 1px; height: 1px; margin: -1px; padding: 0; border: 0;
	clip: rect(1px, 1px, 1px, 1px); clip-path: inset(50%);
	word-wrap: normal !important;
}
.wpcf7 form .wpcf7-response-output {
	margin: 0;
	padding: 0.9rem 1rem;
	border: 2px solid var(--teal-ink);
	border-radius: 10px;
	font-weight: 600;
}
.wpcf7 form.init .wpcf7-response-output,
.wpcf7 form.resetting .wpcf7-response-output,
.wpcf7 form.submitting .wpcf7-response-output { display: none; }
.wpcf7 form.invalid .wpcf7-response-output,
.wpcf7 form.unaccepted .wpcf7-response-output,
.wpcf7 form.payment-required .wpcf7-response-output,
.wpcf7 form.failed .wpcf7-response-output,
.wpcf7 form.aborted .wpcf7-response-output,
.wpcf7 form.spam .wpcf7-response-output { border-color: var(--red-deep); }
.wpcf7-spinner {
	visibility: hidden;
	display: inline-block;
	width: 22px; height: 22px;
	margin: 0 0.75rem;
	vertical-align: middle;
	border: 3px solid var(--line);
	border-top-color: var(--red);
	border-radius: 50%;
	animation: rt-turn 0.8s linear infinite;
}
.wpcf7 form.submitting .wpcf7-spinner { visibility: visible; }

.map { padding-bottom: var(--space-section); background: #fff; }
.map__frame {
	overflow: hidden;
	aspect-ratio: 16 / 7;
	min-height: 320px;
	border: 1px solid var(--line);
	border-radius: 22px;
	background: var(--paper);
}
.map__frame iframe { display: block; width: 100%; height: 100%; border: 0; }

/* ── Single movie / event ──────────────────────────────────────────────── */

.show-head { padding-block: clamp(2.5rem, 6vw, 4.5rem) calc(clamp(3rem, 6vw, 5rem) + 24px); }
.show-head__grid { position: relative; z-index: 1; display: grid; gap: 2rem; align-items: center; }
.show-head__poster { width: min(260px, 70vw); }
.show-head__poster .poster { box-shadow: 0 30px 60px -30px rgb(0 0 0 / 0.8); }
@media (min-width: 800px) {
	.show-head__grid { grid-template-columns: minmax(220px, 340px) 1fr; gap: clamp(2rem, 5vw, 4rem); }
	.show-head__poster { width: 100%; }
}
.show-head__title { margin: 0.2em 0 0.5em; font-size: clamp(2.6rem, 1.4rem + 4.5vw, 5rem); font-weight: 900; line-height: 0.88; }
.show-head__stat { margin: 1rem 0 0; font-size: var(--step-1); color: var(--muted-on-dark); }
.show-head__stat strong { color: var(--teal); font-family: var(--font-display); font-size: 2.6rem; font-weight: 900; line-height: 1; }

/* ── Empty states & misc ───────────────────────────────────────────────── */

.empty-state {
	padding: clamp(1.5rem, 4vw, 2.5rem);
	background: var(--paper);
	border: 2px dashed var(--line);
	border-radius: 20px;
}
.empty-state__title { margin: 0 0 0.4rem; font-family: var(--font-display); font-size: var(--step-2); font-weight: 800; text-transform: uppercase; line-height: 1; }
.empty-state p { color: var(--muted); }
.empty-state .btn-row { margin-top: 1.25rem; }

.post-list { margin: 0; padding: 0; list-style: none; }
.post-list__item { padding-block: 1.75rem; border-bottom: 1px solid var(--line); }
.post-list__title { font-size: var(--step-3); }
.post-list__title a { color: var(--ink); text-decoration: none; }
.post-list__meta { margin: 0.4rem 0 0.8rem; color: var(--muted); font-size: 0.9rem; }

/* ── Footer ────────────────────────────────────────────────────────────── */

.site-footer {
	padding-top: clamp(3.5rem, 7vw, 5rem);
	background: var(--ink);
	color: rgb(255 255 255 / 0.84);
}
.site-footer__grid { display: grid; gap: 2.5rem; }
@media (min-width: 700px) { .site-footer__grid { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1100px) { .site-footer__grid { grid-template-columns: 1.35fr 1fr 0.9fr 1.15fr; gap: 3rem; } }
.site-footer__tag { max-width: 32ch; margin: 1.25rem 0 1rem; color: var(--muted-on-dark); }
.site-footer__where {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5rem 0.7rem;
	margin: 0;
	color: #fff;
	font-size: 0.78rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
}
.site-footer__dot { width: 6px; height: 6px; border-radius: 50%; background: var(--teal); }
.site-footer__h { margin-bottom: 1rem; color: #fff; font-size: 1.35rem; letter-spacing: 0.04em; }
.site-footer a:not(.btn):not(.brand) { color: rgb(255 255 255 / 0.88); text-decoration: none; }
.site-footer a:not(.btn):not(.brand):hover { color: var(--teal); text-decoration: underline; }
.footer-contact, .footer-menu { display: grid; gap: 0.55rem; margin: 0; padding: 0; list-style: none; }
.footer-contact li { display: flex; align-items: center; gap: 0.6rem; overflow-wrap: anywhere; }
.footer-contact .icon { width: 18px; height: 18px; color: var(--teal); }
.site-footer__tickets p { color: var(--muted-on-dark); }
.site-footer__base {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	margin-top: clamp(2.5rem, 5vw, 4rem);
	padding-block: 1.5rem;
	border-top: 1px solid rgb(255 255 255 / 0.12);
	color: var(--muted-on-dark);
	font-size: 0.88rem;
}
.site-footer__base p { margin: 0; }

/* ── Lightbox ──────────────────────────────────────────────────────────── */

.lightbox {
	width: 100vw; height: 100vh;
	max-width: 100vw; max-height: 100vh;
	margin: 0; padding: 0;
	border: 0;
	background: transparent;
	color: #fff;
	--focus: var(--teal);
}
.lightbox::backdrop { background: rgb(12 12 12 / 0.93); }
.lightbox__fig { display: grid; place-items: center; gap: 0.75rem; height: 100%; margin: 0; padding: 4rem 4.5rem 2rem; }
.lightbox__fig img { max-width: 100%; max-height: calc(100vh - 8rem); width: auto; object-fit: contain; border-radius: 8px; }
.lightbox__fig figcaption { font-weight: 600; text-align: center; }
.lightbox__btn {
	position: fixed;
	display: grid;
	place-items: center;
	width: 48px; height: 48px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgb(255 255 255 / 0.12);
	color: #fff;
	font-size: 2rem;
	line-height: 1;
	cursor: pointer;
}
.lightbox__btn:hover { background: var(--red); }
.lightbox__close { top: 1rem; right: 1rem; }
.lightbox__prev { top: 50%; left: 0.75rem; transform: translateY(-50%); }
.lightbox__next { top: 50%; right: 0.75rem; transform: translateY(-50%); }

/* ── Reduced motion ────────────────────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
	html { scroll-behavior: auto; }
	*, *::before, *::after {
		animation-duration: 0.01ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.01ms !important;
	}
	.wheel--spin .wheel__spin, .wheel--spin .wheel__cabin { animation: none; rotate: none; }
}
