/* =============================================================
   RWC Paris — Meetup 5
   Editorial redesign · Hand-written, no framework
   ============================================================= */

/* ---------- 1 · Tokens ---------- */

:root {
	/* Paper & ink */
	--paper:        #F6F1E7;
	--paper-2:      #EFE8D8;
	--paper-edge:   #E8E0CB;
	--ink:          #15111C;
	--ink-2:        #2E2738;
	--mute:         #6E667A;
	--rule:         rgba(21, 17, 28, 0.12);
	--rule-strong:  rgba(21, 17, 28, 0.32);

	/* Brand purple (kept from the legacy palette, elevated) */
	--purple:       #A640D0;
	--purple-deep:  #6E248F;
	--purple-ink:   #2C0B3D;
	--purple-soft:  #EFE0F7;
	--purple-mute:  rgba(166, 64, 208, 0.14);

	/* Type system */
	--ff-display:   'Bricolage Grotesque', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Arial, sans-serif;
	--ff-body:      'Inter Tight', -apple-system, BlinkMacSystemFont, 'Helvetica Neue', Arial, sans-serif;
	--ff-mono:      'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

	/* Fluid sizes */
	--fs-display-xl: clamp(54px, 9vw, 132px);
	--fs-display-l:  clamp(38px, 5.4vw, 84px);
	--fs-display-m:  clamp(28px, 3.4vw, 48px);
	--fs-display-s:  clamp(22px, 2.4vw, 32px);
	--fs-lede:       clamp(18px, 1.4vw, 22px);
	--fs-body:       17px;
	--fs-small:      14px;
	--fs-micro:      11.5px;

	/* Layout */
	--container:     1320px;
	--pad-x:         clamp(20px, 5vw, 88px);
	--pad-section:   clamp(72px, 11vh, 144px);
	--rad-card:      14px;
	--rad-pill:      999px;

	/* Motion */
	--ease:          cubic-bezier(0.22, 1, 0.36, 1);
	--ease-out:      cubic-bezier(0.16, 1, 0.3, 1);
	--dur-1:         320ms;
	--dur-2:         520ms;
	--dur-3:         800ms;
}

/* ---------- 2 · Reset & base ---------- */

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

html {
	-webkit-text-size-adjust: 100%;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
	scroll-behavior: smooth;
	scroll-padding-top: 96px;
}

body {
	margin: 0;
	background: var(--paper);
	color: var(--ink);
	font-family: var(--ff-body);
	font-size: var(--fs-body);
	line-height: 1.55;
	font-weight: 400;
	font-feature-settings: 'ss01', 'cv11';
	overflow-x: hidden;
	min-height: 100vh;
}

/* Subtle paper grain — distinctive without screaming */
body::before {
	content: '';
	position: fixed;
	inset: 0;
	pointer-events: none;
	z-index: 1;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='240' height='240'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.082  0 0 0 0 0.066  0 0 0 0 0.109  0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.06'/></svg>");
	mix-blend-mode: multiply;
	opacity: 0.55;
}

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

a {
	color: inherit;
	text-decoration: none;
	transition: color var(--dur-1) var(--ease), opacity var(--dur-1) var(--ease);
}

button { font: inherit; cursor: pointer; }

::selection { background: var(--purple); color: #FFF; }

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

.skip-link {
	position: absolute;
	left: 0; top: 0;
	transform: translateY(-110%);
	background: var(--ink);
	color: var(--paper);
	padding: 12px 18px;
	z-index: 1000;
	font-family: var(--ff-mono);
	font-size: 12px;
	letter-spacing: 0.1em;
	text-transform: uppercase;
}
.skip-link:focus { transform: translateY(0); }

/* ---------- 3 · Typography primitives ---------- */

.display {
	font-family: var(--ff-display);
	font-weight: 800;
	font-variation-settings: 'opsz' 96, 'wdth' 100;
	line-height: 0.88;
	letter-spacing: -0.045em;
	margin: 0;
	color: var(--ink);
}

.display .accent,
.section__title .accent {
	color: var(--purple-deep);
	font-style: normal;
}

.eyebrow {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	font-family: var(--ff-mono);
	font-size: var(--fs-micro);
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--ink-2);
}
.eyebrow--accent { color: var(--purple-deep); }
.eyebrow .dot {
	width: 7px; height: 7px;
	background: var(--purple);
	border-radius: 50%;
	box-shadow: 0 0 0 4px var(--purple-mute);
	animation: pulse 2.6s ease-in-out infinite;
}

@keyframes pulse {
	0%, 100% { box-shadow: 0 0 0 4px var(--purple-mute); }
	50%      { box-shadow: 0 0 0 8px rgba(166, 64, 208, 0.05); }
}

.kicker {
	font-family: var(--ff-mono);
	font-size: var(--fs-micro);
	font-weight: 500;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: var(--mute);
	margin: 0 0 8px;
}

.link {
	color: var(--ink);
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
}
.link--underline {
	background-image: linear-gradient(currentColor, currentColor);
	background-size: 100% 1px;
	background-repeat: no-repeat;
	background-position: 0 100%;
	transition: background-size var(--dur-2) var(--ease);
}
.link--underline:hover { background-size: 0 1px; }

/* ---------- 4 · Wordmark ---------- */

.wordmark {
	display: inline-flex;
	align-items: center;
	gap: 0.04em;
	font-family: var(--ff-display);
	font-weight: 800;
	font-variation-settings: 'opsz' 24, 'wdth' 100;
	font-size: 20px;
	letter-spacing: -0.035em;
	color: var(--ink);
	line-height: 1;
	text-decoration: none;
	text-transform: uppercase;
}
.wordmark__rwc {
	font-feature-settings: 'ss01';
	font-variation-settings: 'opsz' 24, 'wdth' 100;
}
.wordmark__slash {
	font-family: var(--ff-mono);
	color: var(--purple);
	font-size: 0.85em;
	font-weight: 400;
	margin: 0 0.18em;
	letter-spacing: 0;
	text-transform: none;
}
.wordmark__paris {
	font-weight: 800;
	letter-spacing: -0.035em;
}
.wordmark--sm { font-size: 18px; }

/* ---------- 5 · Buttons ---------- */

.btn {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	padding: 14px 22px;
	font-family: var(--ff-body);
	font-size: 15px;
	font-weight: 500;
	letter-spacing: -0.005em;
	text-decoration: none;
	border-radius: var(--rad-pill);
	border: 1px solid transparent;
	transition: all var(--dur-1) var(--ease);
	white-space: nowrap;
	background: transparent;
}
.btn .arrow {
	transition: transform var(--dur-2) var(--ease);
	font-family: var(--ff-mono);
	font-weight: 400;
}
.btn:hover .arrow { transform: translateX(6px); }

.btn--primary {
	background: var(--ink);
	color: var(--paper);
	border-color: var(--ink);
}
.btn--primary:hover {
	background: var(--purple-deep);
	border-color: var(--purple-deep);
}

.btn--ghost {
	background: transparent;
	color: var(--ink);
	border-color: var(--rule-strong);
}
.btn--ghost:hover {
	background: var(--ink);
	color: var(--paper);
	border-color: var(--ink);
}

.btn--invert {
	background: var(--paper);
	color: var(--purple-ink);
	border-color: var(--paper);
}
.btn--invert:hover {
	background: var(--purple);
	color: var(--paper);
	border-color: var(--purple);
}

.btn--invert-ghost {
	background: transparent;
	color: var(--paper);
	border-color: rgba(246, 241, 231, 0.4);
}
.btn--invert-ghost:hover {
	background: rgba(246, 241, 231, 0.12);
	border-color: var(--paper);
	color: var(--paper);
}

.btn--text {
	padding-left: 4px; padding-right: 4px;
	color: var(--ink);
}
.btn--text:hover { color: var(--purple-deep); }

.btn--xl {
	padding: 18px 30px;
	font-size: 17px;
}

/* ---------- 6 · Masthead ---------- */

.masthead {
	position: sticky;
	top: 0;
	z-index: 50;
	background: transparent;
	border-bottom: 1px solid transparent;
	transition: background var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), backdrop-filter var(--dur-2) var(--ease);
}
.masthead.is-stuck {
	background: rgba(246, 241, 231, 0.85);
	-webkit-backdrop-filter: blur(14px) saturate(140%);
	backdrop-filter: blur(14px) saturate(140%);
	border-bottom-color: var(--rule);
}

.masthead__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 18px var(--pad-x);
	display: grid;
	grid-template-columns: auto 1fr auto;
	align-items: center;
	gap: 32px;
}

.masthead__nav {
	display: flex;
	justify-content: center;
	gap: clamp(8px, 1.6vw, 28px);
	font-family: var(--ff-body);
	font-size: 14px;
	font-weight: 500;
	color: var(--ink-2);
}
.masthead__nav a {
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
	padding: 6px 4px;
	position: relative;
	transition: color var(--dur-1) var(--ease);
}
.masthead__nav a .num {
	font-family: var(--ff-mono);
	font-size: 11px;
	color: var(--purple);
	letter-spacing: 0;
}
.masthead__nav a::after {
	content: '';
	position: absolute;
	left: 4px; right: 4px; bottom: 0;
	height: 1px;
	background: var(--ink);
	transform: scaleX(0);
	transform-origin: left center;
	transition: transform var(--dur-2) var(--ease);
}
.masthead__nav a:hover { color: var(--ink); }
.masthead__nav a:hover::after { transform: scaleX(1); }
.masthead__nav a[aria-current="true"] { color: var(--ink); }
.masthead__nav a[aria-current="true"] .num { color: var(--purple-deep); }
.masthead__nav a[aria-current="true"]::after {
	transform: scaleX(1);
	background: var(--purple);
}

@media (max-width: 920px) {
	.masthead__nav { display: none; }
	.masthead__inner { grid-template-columns: auto 1fr auto; }
}

@media (max-width: 520px) {
	.masthead .btn--ghost { padding: 10px 14px; font-size: 13px; }
}

/* ---------- 7 · Hero ---------- */

.hero {
	position: relative;
	padding: clamp(48px, 9vh, 120px) 0 0;
	overflow: hidden;
	isolation: isolate;
}

.hero__bg {
	position: absolute;
	inset: 0;
	z-index: -1;
	pointer-events: none;
	overflow: hidden;
}
.hero__bg img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center 35%;
	opacity: 0.85;
	filter: saturate(1.05) contrast(1.02);
}
.hero__bg::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		linear-gradient(
			180deg,
			var(--paper) 0%,
			rgba(246, 241, 231, 0.92) 12%,
			rgba(246, 241, 231, 0.55) 38%,
			rgba(246, 241, 231, 0.35) 62%,
			rgba(246, 241, 231, 0.75) 88%,
			var(--paper) 100%
		),
		linear-gradient(
			90deg,
			rgba(246, 241, 231, 0.72) 0%,
			rgba(246, 241, 231, 0.32) 45%,
			rgba(246, 241, 231, 0.05) 100%
		);
	z-index: 1;
}
.hero__bg::after {
	content: '';
	position: absolute;
	inset: 0;
	background: radial-gradient(
		1100px 700px at 18% 32%,
		rgba(246, 241, 231, 0.85),
		transparent 70%
	);
	z-index: 2;
}

.hero__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 var(--pad-x);
	position: relative;
	z-index: 1;
}

.hero__meta {
	display: flex;
	justify-content: space-between;
	align-items: center;
	padding-bottom: 28px;
	margin-bottom: clamp(40px, 8vh, 96px);
	border-bottom: 1px solid var(--rule);
	gap: 24px;
	flex-wrap: wrap;
}

.hero__body {
	display: grid;
	grid-template-columns: minmax(0, 1fr) clamp(280px, 28vw, 360px);
	gap: clamp(32px, 5vw, 80px);
	align-items: end;
}

.hero__headline { grid-column: 1; }

.display__line {
	display: block;
	padding: 0.02em 0 0.04em;
}

#hero-title { font-size: var(--fs-display-xl); }

.hero__lede {
	font-family: var(--ff-body);
	font-size: clamp(18px, 1.6vw, 22px);
	font-weight: 400;
	line-height: 1.45;
	color: var(--ink-2);
	max-width: 36ch;
	margin: clamp(28px, 4vh, 48px) 0 0;
	letter-spacing: -0.005em;
}

.hero__card {
	grid-column: 2;
	position: relative;
	display: flex;
	flex-direction: column;
	gap: 32px;
}

.card {
	background: var(--paper);
	border: 1px solid var(--rule-strong);
	border-radius: var(--rad-card);
	padding: 6px 28px 24px;
	font-family: var(--ff-mono);
	font-size: 13px;
	position: relative;
	box-shadow: 0 1px 0 var(--rule), 0 12px 40px -28px rgba(21, 17, 28, 0.3);
}
.card__row {
	display: grid;
	grid-template-columns: 70px 1fr;
	gap: 16px;
	align-items: baseline;
	padding: 16px 0;
	border-bottom: 1px solid var(--rule);
}
.card__row:last-child { border-bottom: none; padding-bottom: 0; }
.card__row--top {
	padding-top: 22px;
	align-items: baseline;
}
.card__label {
	color: var(--mute);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-size: 10.5px;
}
.card__value {
	font-family: var(--ff-body);
	font-size: 15px;
	font-weight: 500;
	color: var(--ink);
	letter-spacing: -0.005em;
}
.card__value--num {
	font-family: var(--ff-display);
	font-size: clamp(56px, 7vw, 92px);
	font-weight: 800;
	line-height: 0.85;
	letter-spacing: -0.05em;
	color: var(--purple-deep);
	font-variation-settings: 'opsz' 96, 'wdth' 100;
}
.card__sub {
	font-family: var(--ff-mono);
	font-size: 11.5px;
	color: var(--mute);
	letter-spacing: 0.04em;
}
.card__row--cta {
	padding-top: 18px;
	margin-top: 4px;
	border-top: 1px solid var(--rule);
	grid-template-columns: 1fr;
}
.card__link {
	color: var(--purple-deep);
	font-family: var(--ff-body);
	font-size: 13px;
	font-weight: 500;
	letter-spacing: 0.01em;
	display: inline-flex;
	align-items: baseline;
	gap: 6px;
	transition: color var(--dur-1) var(--ease), gap var(--dur-1) var(--ease);
}
.card__link:hover { color: var(--purple); gap: 10px; }

.hero__cta {
	grid-column: 1 / -1;
	display: flex;
	align-items: center;
	gap: 24px;
	flex-wrap: wrap;
	margin-top: clamp(56px, 9vh, 104px);
	padding-top: 32px;
	border-top: 1px solid var(--rule);
}

.hero__footnote {
	display: flex;
	gap: 12px;
	margin: 40px 0 0;
	font-family: var(--ff-mono);
	font-size: 11px;
	color: var(--mute);
	letter-spacing: 0.04em;
	justify-content: flex-end;
}

/* Ticker */
.ticker {
	margin-top: clamp(56px, 9vh, 112px);
	background: var(--ink);
	color: var(--paper);
	overflow: hidden;
	border-top: 1px solid var(--rule-strong);
	border-bottom: 1px solid var(--rule-strong);
	position: relative;
	z-index: 2;
}
.ticker__track {
	display: inline-flex;
	gap: 0;
	padding: 14px 0;
	font-family: var(--ff-mono);
	font-size: 12.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	white-space: nowrap;
	animation: marquee 60s linear infinite;
	will-change: transform;
}
.ticker__track span { padding-right: 1.5em; }
@keyframes marquee {
	from { transform: translateX(0); }
	to   { transform: translateX(-33.333%); }
}
.ticker:hover .ticker__track { animation-play-state: paused; }

/* Hero responsive */
@media (max-width: 880px) {
	.hero__body {
		grid-template-columns: 1fr;
		align-items: start;
	}
	.hero__headline, .hero__card { grid-column: 1; }
	.hero__lede { max-width: none; }
	.hero__footnote { justify-content: flex-start; flex-wrap: wrap; }
}
@media (max-width: 520px) {
	.hero__meta { flex-direction: column; align-items: flex-start; gap: 12px; }
	.hero__cta .btn { flex: 1; justify-content: center; }
}

/* ---------- 8 · Sections (editorial structure) ---------- */

.section {
	position: relative;
	padding: var(--pad-section) 0;
	border-top: 1px solid var(--rule);
}
.section + .section { margin-top: 0; }

.section__header,
.section__body {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 var(--pad-x);
}
.section__header {
	display: flex;
	align-items: baseline;
	gap: 18px;
	flex-wrap: wrap;
	margin-bottom: clamp(40px, 5vh, 64px);
}
.section__num {
	font-family: var(--ff-mono);
	font-weight: 500;
	font-size: clamp(13px, 1vw, 15px);
	color: var(--purple-deep);
	line-height: 1;
	letter-spacing: 0.04em;
	min-width: 1.4ch;
	padding-top: 6px;
}
.section__eyebrow {
	font-family: var(--ff-mono);
	font-size: var(--fs-micro);
	font-weight: 500;
	letter-spacing: 0.18em;
	text-transform: uppercase;
	color: var(--ink-2);
	padding-bottom: 4px;
	border-bottom: 1px solid var(--rule);
	flex: 1;
	min-width: 200px;
}

.section__title {
	font-family: var(--ff-display);
	font-weight: 700;
	font-variation-settings: 'opsz' 96, 'wdth' 100;
	font-size: var(--fs-display-l);
	line-height: 0.95;
	letter-spacing: -0.035em;
	margin: 0 0 clamp(28px, 4vh, 48px);
	max-width: 22ch;
	color: var(--ink);
}

.prose {
	max-width: 62ch;
	font-size: var(--fs-lede);
	line-height: 1.6;
	color: var(--ink-2);
}
.prose p { margin: 0 0 1.1em; }
.prose p:last-child { margin-bottom: 0; }
.prose__lede { font-size: clamp(18px, 1.5vw, 22px); }

.dropcap {
	float: left;
	font-family: var(--ff-display);
	font-variation-settings: 'opsz' 96, 'wdth' 100;
	font-size: 4.4em;
	font-weight: 800;
	line-height: 0.86;
	padding: 0.08em 0.14em 0 0;
	margin: 0.04em 0 -0.12em -0.02em;
	color: var(--purple-deep);
	letter-spacing: -0.05em;
}

/* ---------- 9 · About section ---------- */

.section--about .section__body {
	display: grid;
	grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr);
	gap: clamp(40px, 6vw, 96px);
	align-items: start;
}
.section--about .section__title { grid-column: 1; }
.section--about .prose { grid-column: 2; }

@media (max-width: 880px) {
	.section--about .section__body {
		grid-template-columns: 1fr;
		gap: 36px;
	}
	.section--about .section__title,
	.section--about .prose { grid-column: 1; }
}

/* ---------- 10 · CFP section (inverted, dominant) ---------- */

.section--cfp {
	background: var(--purple-ink);
	color: var(--paper);
	border-top: 0;
	position: relative;
	overflow: hidden;
	padding: clamp(96px, 16vh, 192px) 0;
}
.section--cfp::before {
	content: '';
	position: absolute;
	inset: 0;
	background:
		radial-gradient(900px 600px at 12% 18%, rgba(166, 64, 208, 0.22), transparent 60%),
		radial-gradient(700px 500px at 88% 78%, rgba(110, 36, 143, 0.32), transparent 60%);
	pointer-events: none;
}
.section--cfp::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image:
		linear-gradient(rgba(246, 241, 231, 0.04) 1px, transparent 1px),
		linear-gradient(90deg, rgba(246, 241, 231, 0.04) 1px, transparent 1px);
	background-size: 88px 88px;
	pointer-events: none;
	mask-image: radial-gradient(ellipse at center, #000 30%, transparent 80%);
	-webkit-mask-image: radial-gradient(ellipse at center, #000 30%, transparent 80%);
}
.section--cfp > * { position: relative; z-index: 1; }

.section__header--inverted {
	color: var(--paper);
}
.section__header--inverted .section__num { color: var(--purple); }
.section__header--inverted .section__eyebrow {
	color: rgba(246, 241, 231, 0.7);
	border-bottom-color: rgba(246, 241, 231, 0.18);
}
.section__body--inverted { color: var(--paper); }
.section__title--inverted { color: var(--paper); }
.section__title--inverted em { color: var(--purple); }

.badge {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	padding: 6px 14px;
	background: var(--purple);
	color: var(--purple-ink);
	font-family: var(--ff-mono);
	font-size: 11px;
	font-weight: 500;
	letter-spacing: 0.16em;
	text-transform: uppercase;
	border-radius: var(--rad-pill);
}
.badge__dot {
	width: 7px; height: 7px;
	background: var(--purple-ink);
	border-radius: 50%;
}

.cfp__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: clamp(32px, 5vw, 80px);
	margin-top: clamp(40px, 6vh, 72px);
	max-width: 1000px;
}
.cfp__col h3.kicker {
	color: var(--purple);
	margin-top: 0;
	margin-bottom: 16px;
}
.cfp__col h3.kicker + .kicker { margin-top: 28px; }
.cfp__col p {
	font-family: var(--ff-body);
	color: rgba(246, 241, 231, 0.82);
	font-size: 16px;
	line-height: 1.55;
	margin: 0 0 1em;
	max-width: 38ch;
}
.cfp__list {
	list-style: none;
	margin: 0; padding: 0;
}
.cfp__list li {
	padding: 12px 0 12px 22px;
	border-top: 1px solid rgba(246, 241, 231, 0.12);
	position: relative;
	font-size: 15.5px;
	color: rgba(246, 241, 231, 0.92);
}
.cfp__list li:last-child { border-bottom: 1px solid rgba(246, 241, 231, 0.12); }
.cfp__list li::before {
	content: '+';
	position: absolute;
	left: 0; top: 12px;
	font-family: var(--ff-mono);
	color: var(--purple);
	font-size: 14px;
}

.cfp__cta {
	display: flex;
	align-items: center;
	gap: 32px;
	margin-top: clamp(48px, 7vh, 80px);
	padding-top: 32px;
	border-top: 1px solid rgba(246, 241, 231, 0.18);
	flex-wrap: wrap;
}
.cfp__note {
	font-family: var(--ff-mono);
	font-size: 12px;
	letter-spacing: 0.06em;
	color: rgba(246, 241, 231, 0.7);
	margin: 0;
}
.cfp__note a {
	color: var(--paper);
	border-bottom: 1px solid rgba(246, 241, 231, 0.4);
}
.cfp__note a:hover { border-bottom-color: var(--paper); }

@media (max-width: 720px) {
	.cfp__grid { grid-template-columns: 1fr; }
	.cfp__cta { flex-direction: column; align-items: flex-start; gap: 16px; }
}

/* ---------- 11 · Venue section ---------- */

.venue__grid {
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr);
	gap: clamp(40px, 6vw, 96px);
	align-items: start;
}

.venue__card {
	background: var(--paper-2);
	border: 1px solid var(--rule);
	border-radius: var(--rad-card);
	padding: 32px;
}

.datatable {
	margin: 0;
	font-family: var(--ff-mono);
	font-size: 13px;
}
.datatable > div {
	display: grid;
	grid-template-columns: 1fr 2fr;
	gap: 16px;
	padding: 14px 0;
	border-bottom: 1px solid var(--rule);
}
.datatable > div:last-child { border-bottom: none; padding-bottom: 0; }
.datatable > div:first-child { padding-top: 0; }
.datatable dt {
	color: var(--mute);
	letter-spacing: 0.12em;
	text-transform: uppercase;
	font-size: 10.5px;
	align-self: center;
}
.datatable dd {
	margin: 0;
	font-family: var(--ff-body);
	font-size: 15px;
	font-weight: 500;
	color: var(--ink);
}

@media (max-width: 880px) {
	.venue__grid { grid-template-columns: 1fr; }
}

/* ---------- 12 · Recap (video) ---------- */

.video { margin: 0; max-width: 1000px; }
.video__frame {
	position: relative;
	aspect-ratio: 16 / 9;
	background: var(--ink);
	border-radius: var(--rad-card);
	overflow: hidden;
	border: 1px solid var(--rule-strong);
	box-shadow: 0 24px 80px -32px rgba(21, 17, 28, 0.35);
}
.video__frame iframe {
	position: absolute;
	inset: 0;
	width: 100%; height: 100%;
	border: 0;
}
.video figcaption {
	margin-top: 20px;
	font-family: var(--ff-mono);
	font-size: 12.5px;
	letter-spacing: 0.06em;
	color: var(--mute);
	max-width: 65ch;
}

/* ---------- 13 · Sponsors ---------- */

.sponsors__grid {
	list-style: none;
	margin: clamp(40px, 5vh, 64px) 0 0;
	padding: 0;
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 0;
	border-top: 1px solid var(--rule);
	border-bottom: 1px solid var(--rule);
}
.sponsors__grid li {
	border-right: 1px solid var(--rule);
	padding: clamp(28px, 4vw, 48px) clamp(20px, 3vw, 36px);
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 140px;
}
.sponsors__grid li:last-child { border-right: 0; }
.sponsors__grid img {
	max-width: 100%;
	max-height: 56px;
	width: auto;
	height: auto;
	object-fit: contain;
	filter: grayscale(1) contrast(0.95);
	opacity: 0.7;
	transition: filter var(--dur-2) var(--ease), opacity var(--dur-2) var(--ease), transform var(--dur-2) var(--ease);
}
.sponsors__grid a {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
}
.sponsors__grid a:hover img {
	filter: grayscale(0) contrast(1);
	opacity: 1;
	transform: translateY(-2px);
}

.sponsors__grid--two { grid-template-columns: 1fr 1fr; }

.sponsor-wordmark {
	font-family: var(--ff-display);
	font-weight: 500;
	font-variation-settings: 'opsz' 64, 'wdth' 100;
	font-size: clamp(32px, 4vw, 48px);
	letter-spacing: -0.04em;
	color: var(--ink);
	line-height: 1;
	opacity: 0.7;
	filter: grayscale(1);
	transition: opacity var(--dur-2) var(--ease), filter var(--dur-2) var(--ease), transform var(--dur-2) var(--ease), color var(--dur-2) var(--ease);
}
.sponsors__grid a:hover .sponsor-wordmark {
	opacity: 1;
	filter: none;
	color: var(--purple-deep);
	transform: translateY(-2px);
}

.sponsors__cta {
	margin-top: clamp(40px, 5vh, 56px);
	padding: clamp(24px, 3vw, 36px);
	border: 1px dashed var(--rule-strong);
	border-radius: var(--rad-card);
	display: grid;
	grid-template-columns: 1fr auto;
	gap: 32px;
	align-items: center;
	background: var(--paper);
}
.sponsors__cta .kicker { color: var(--purple-deep); margin-bottom: 6px; }
.sponsors__cta p {
	margin: 0;
	max-width: 56ch;
	color: var(--ink-2);
	font-size: 15.5px;
	line-height: 1.5;
}

@media (max-width: 720px) {
	.sponsors__grid {
		grid-template-columns: 1fr 1fr;
		border-bottom: 0;
	}
	.sponsors__grid li {
		border-bottom: 1px solid var(--rule);
		min-height: 120px;
	}
	.sponsors__grid li:nth-child(2n) { border-right: 0; }
	.sponsors__grid li:nth-last-child(-n+1) { border-bottom: 0; }
	.sponsors__cta { grid-template-columns: 1fr; gap: 20px; }
}

/* ---------- 14 · Contact ---------- */

.contact__grid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 24px;
}
.contact__card {
	display: block;
	padding: clamp(28px, 3.5vw, 44px);
	border: 1px solid var(--rule-strong);
	border-radius: var(--rad-card);
	background: var(--paper);
	transition: transform var(--dur-2) var(--ease), border-color var(--dur-2) var(--ease), background var(--dur-2) var(--ease), box-shadow var(--dur-2) var(--ease);
	color: var(--ink);
}
.contact__card:hover {
	background: var(--ink);
	color: var(--paper);
	border-color: var(--ink);
	transform: translateY(-2px);
	box-shadow: 0 24px 60px -32px rgba(21, 17, 28, 0.4);
}
.contact__kicker {
	display: block;
	font-family: var(--ff-mono);
	font-size: var(--fs-micro);
	letter-spacing: 0.16em;
	text-transform: uppercase;
	color: var(--purple);
	margin-bottom: 24px;
}
.contact__title {
	font-family: var(--ff-display);
	font-weight: 700;
	font-variation-settings: 'opsz' 96, 'wdth' 100;
	font-size: clamp(28px, 3vw, 40px);
	line-height: 1;
	letter-spacing: -0.035em;
	margin: 0 0 20px;
}
.contact__card p {
	margin: 0;
	color: inherit;
	opacity: 0.78;
	font-size: 15.5px;
	max-width: 38ch;
}
.contact__card:hover .contact__kicker { color: var(--purple); }
.contact__card:hover .arrow { transform: translateX(6px); }
.contact__card .arrow {
	display: inline-block;
	transition: transform var(--dur-2) var(--ease);
}

@media (max-width: 720px) {
	.contact__grid { grid-template-columns: 1fr; }
}

/* ---------- 15 · Closing CTA ---------- */

.closing {
	border-top: 1px solid var(--rule);
	padding: clamp(96px, 16vh, 200px) 0;
	background:
		linear-gradient(to bottom, transparent 0%, var(--paper-2) 100%);
	text-align: center;
	position: relative;
	overflow: hidden;
}
.closing::before {
	content: '※';
	position: absolute;
	top: 48px; left: 50%;
	transform: translateX(-50%);
	font-family: var(--ff-display);
	font-size: 28px;
	color: var(--purple);
	opacity: 0.6;
}
.closing__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 var(--pad-x);
}
.closing__title {
	font-family: var(--ff-display);
	font-weight: 800;
	font-variation-settings: 'opsz' 96, 'wdth' 100;
	font-size: var(--fs-display-l);
	line-height: 0.95;
	letter-spacing: -0.045em;
	margin: 24px 0 48px;
	max-width: 18ch;
	margin-inline: auto;
}
.closing__cta {
	display: inline-flex;
	gap: 16px;
	align-items: center;
	flex-wrap: wrap;
	justify-content: center;
}

@media (max-width: 520px) {
	.closing__cta { flex-direction: column; gap: 12px; }
	.closing__cta .btn { width: 100%; justify-content: center; }
}

/* ---------- 16 · Colophon (footer) ---------- */

.colophon {
	background: var(--ink);
	color: rgba(246, 241, 231, 0.78);
	padding: clamp(56px, 8vh, 96px) 0 clamp(32px, 5vh, 56px);
}
.colophon__inner {
	max-width: var(--container);
	margin: 0 auto;
	padding: 0 var(--pad-x);
	display: grid;
	grid-template-columns: minmax(0, 1.2fr) minmax(0, 1.8fr);
	gap: clamp(32px, 5vw, 80px);
	align-items: start;
}
.colophon .wordmark { color: var(--paper); }
.colophon .wordmark__slash { color: var(--purple); }
.colophon__brand p {
	margin: 16px 0 0;
	max-width: 36ch;
	font-size: 14px;
	color: rgba(246, 241, 231, 0.6);
}
.colophon__meta {
	margin: 0;
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 24px;
}
.colophon__meta > div { min-width: 0; }
.colophon__meta dt {
	font-family: var(--ff-mono);
	font-size: 10.5px;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	color: rgba(246, 241, 231, 0.45);
	margin-bottom: 8px;
}
.colophon__meta dd {
	margin: 0;
	font-size: 13.5px;
	color: rgba(246, 241, 231, 0.85);
	line-height: 1.5;
}
.colophon__meta a {
	color: var(--paper);
	border-bottom: 1px solid rgba(246, 241, 231, 0.3);
}
.colophon__meta a:hover { border-bottom-color: var(--purple); color: var(--purple); }

@media (max-width: 880px) {
	.colophon__inner { grid-template-columns: 1fr; }
	.colophon__meta { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 520px) {
	.colophon__meta { grid-template-columns: 1fr; }
}

/* ---------- 17 · Reveal motion ---------- */

[data-reveal] {
	opacity: 0;
	transform: translateY(16px);
	transition: opacity var(--dur-3) var(--ease-out), transform var(--dur-3) var(--ease-out);
	will-change: opacity, transform;
}
[data-reveal].is-in {
	opacity: 1;
	transform: none;
}

.hero [data-reveal]:nth-child(1) { transition-delay: 0ms; }
.hero [data-reveal]:nth-child(2) { transition-delay: 80ms; }
.hero [data-reveal]:nth-child(3) { transition-delay: 160ms; }
.display__line[data-reveal]:nth-child(1) { transition-delay: 120ms; }
.display__line[data-reveal]:nth-child(2) { transition-delay: 220ms; }
.display__line[data-reveal]:nth-child(3) { transition-delay: 320ms; }

/* ---------- 18 · Reduced motion ---------- */

@media (prefers-reduced-motion: reduce) {
	* {
		animation-duration: 0.001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: 0.001ms !important;
		scroll-behavior: auto !important;
	}
	[data-reveal] { opacity: 1; transform: none; }
	.ticker__track { animation: none; }
	.hero__glyph { animation: none; }
	.eyebrow .dot { animation: none; }
}

/* ---------- 19 · Print ---------- */

@media print {
	.masthead, .ticker, .closing { display: none; }
	body { background: white; color: black; }
	.section { padding: 24pt 0; border-top-color: #999; }
}
