/* ==========================================================================
   AES 2026 — component styles
   Design tokens live in theme.json. This file only holds what tokens
   cannot express: animation, pseudo-elements, hover states, small layouts.
   ========================================================================== */

:root {
	--aes-ease: cubic-bezier( 0.2, 0.7, 0.3, 1 );
}

/* --------------------------------------------------------------- Box model
 *
 * Every form on this site had its fields overlapping, and this one missing
 * line was the whole reason.
 *
 * WordPress sets box-sizing: border-box on blocks, so most of the page behaved
 * and the gap went unnoticed. But a hand-written control in a pattern gets the
 * browser default, content-box, where `width: 100%` means "100% for the content
 * alone" and the padding and border are then added OUTSIDE it. A field with
 * 18px of padding and a 1px border came out exactly 38px wider than the column
 * holding it, so two side-by-side fields ran into each other; the contact form,
 * with 14px padding, overflowed by 30px. Measured on the live site before this
 * was written, both were doing it.
 *
 * It also explains why a <select> and an <input> next to each other were
 * different heights: the browser's own stylesheet gives a select border-box,
 * so the same declared height produced two different boxes.
 *
 * Declared once, universally, because "which elements did we remember" is not
 * a question anybody should have to hold in their head while adding a field.
 * ------------------------------------------------------------------------ */

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

body { -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility; }

/* Make the skip link visible on focus. */
.skip-link:focus {
	position: fixed; top: 12px; left: 12px; z-index: 999;
	padding: 10px 16px; background: #0C2142; color: #fff; border-radius: 8px;
}

/* --------------------------------------------------------------- Eyebrow */

.is-style-aes-eyebrow,
.aes-eyebrow {
	font-size: 0.6875rem;
	font-weight: 600;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var( --wp--preset--color--mute );
	margin-bottom: 0.75rem;
}

.aes-eyebrow--green { color: var( --wp--preset--color--navy ); }
.aes-eyebrow--light { color: rgba( 255, 255, 255, 0.72 ); }

/* ----------------------------------------------------------------- Cards */

.is-style-aes-card {
	background: var( --wp--preset--color--white );
	border: 1px solid var( --wp--preset--color--line );
	border-radius: 20px;
	padding: var( --wp--preset--spacing--40 );
}

.aes-card-hover { transition: transform 0.28s var( --aes-ease ), box-shadow 0.28s var( --aes-ease ); }
.aes-card-hover:hover { transform: translateY( -4px ); box-shadow: var( --wp--preset--shadow--lift ); }

/* ------------------------------------------------------------- Tick list */

.is-style-aes-ticks { list-style: none; padding-left: 0; margin: 0; }

.is-style-aes-ticks li {
	position: relative;
	padding-left: 1.65rem;
	margin-bottom: 0.7rem;
	font-size: 0.875rem;
	line-height: 1.5;
	color: var( --wp--preset--color--body );
}

.is-style-aes-ticks li::before {
	content: "";
	position: absolute;
	left: 0; top: 0.18em;
	width: 1.05rem; height: 1.05rem;
	border-radius: 50%;
	background: var( --wp--preset--color--haze );
}

.is-style-aes-ticks li::after {
	content: "";
	position: absolute;
	left: 0.33rem; top: 0.45em;
	width: 0.36rem; height: 0.18rem;
	border-left: 2px solid var( --wp--preset--color--navy );
	border-bottom: 2px solid var( --wp--preset--color--navy );
	transform: rotate( -45deg );
}

/* --------------------------------------------------------------- Buttons */

.is-style-aes-outline-light > .wp-block-button__link {
	background: transparent;
	color: #fff;
	border: 1px solid rgba( 255, 255, 255, 0.45 );
}

.is-style-aes-outline-light > .wp-block-button__link:hover {
	background: rgba( 255, 255, 255, 0.12 );
	border-color: #fff;
	color: #fff;
}

.is-style-aes-outline-dark > .wp-block-button__link {
	background: transparent;
	color: var( --wp--preset--color--ink );
	border: 1px solid var( --wp--preset--color--line );
}

.is-style-aes-outline-dark > .wp-block-button__link:hover {
	background: var( --wp--preset--color--ink );
	border-color: var( --wp--preset--color--ink );
	color: #fff;
}

/* ------------------------------------------------------------------ Hero */

.aes-hero { position: relative; isolation: isolate; }

.aes-hero .wp-block-cover__inner-container { width: 100%; }

.aes-hero__chip {
	display: inline-block;
	padding: 0.7rem 1.4rem;
	border-radius: 999px;
	border: 1px solid rgba( 255, 255, 255, 0.35 );
	background: rgba( 255, 255, 255, 0.07 );
	backdrop-filter: blur( 6px );
	color: #fff;
	font-size: 0.9375rem;
	letter-spacing: 0.02em;
	margin: 0;
}

.aes-hero__title {
	color: #fff;
	letter-spacing: -0.035em;
	line-height: 0.96;
	max-width: 16ch;
}

.aes-hero__lede { color: rgba( 255, 255, 255, 0.86 ); max-width: 46ch; }

.aes-hero__foot { align-items: flex-end; }

@media ( max-width: 781px ) {
	.aes-hero__foot { align-items: flex-start; }
}

/* ------------------------------------------------------------- Countdown */

.aes-countdown {
	display: flex;
	gap: clamp( 1.25rem, 3vw, 2.25rem );
	flex-wrap: wrap;
}

.aes-countdown__unit { display: flex; flex-direction: column; gap: 0.25rem; min-width: 3.5rem; }

.aes-countdown__value {
	font-size: clamp( 1.75rem, 3vw, 1.875rem );
	font-weight: 700;
	line-height: 1;
	font-variant-numeric: tabular-nums;
	letter-spacing: -0.02em;
}

.aes-countdown__label {
	font-size: 0.625rem;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.aes-countdown.is-light .aes-countdown__value { color: #fff; }
.aes-countdown.is-light .aes-countdown__label { color: rgba( 255, 255, 255, 0.62 ); }
.aes-countdown.is-dark .aes-countdown__value { color: var( --wp--preset--color--ink ); }
.aes-countdown.is-dark .aes-countdown__label { color: var( --wp--preset--color--mute ); }
.aes-countdown__done { margin: 0; font-weight: 600; }

/* --------------------------------------------------------------- Marquee */

.aes-marquee {
	background: var( --aes-marquee-bg, #173F73 );
	color: var( --aes-marquee-fg, #fff );
	overflow: hidden;
	padding: 0.85rem 0;
}

.aes-marquee__track { display: flex; width: max-content; }

.aes-marquee:not( .is-static ) .aes-marquee__track {
	animation: aes-marquee-scroll var( --aes-marquee-speed, 38s ) linear infinite;
}

.aes-marquee__run { display: flex; align-items: center; }

.aes-marquee__item {
	font-size: clamp( 0.9375rem, 1.5vw, 1.3125rem );
	font-weight: 700;
	letter-spacing: 0.01em;
	white-space: nowrap;
	padding: 0 1.1rem;
}

.aes-marquee__sep { font-size: 0.6875rem; opacity: 0.75; }

@keyframes aes-marquee-scroll {
	from { transform: translateX( 0 ); }
	to   { transform: translateX( -50% ); }
}

@media ( prefers-reduced-motion: reduce ) {
	.aes-marquee .aes-marquee__track { animation: none; }
	.aes-card-hover { transition: none; }
}

/* ----------------------------------------------------------------- Stats */

.aes-stat__value { line-height: 1; letter-spacing: -0.03em; margin: 0 0 0.35rem; }
.aes-stat__label { font-size: 0.9375rem; color: var( --wp--preset--color--body ); margin: 0; }

/* ------------------------------------------------------------- Why cards */

.aes-why { background: var( --wp--preset--color--clay ); border-radius: 22px; padding: 1.625rem; height: 100%; }
.aes-why__num { font-size: clamp( 2.5rem, 4vw, 3.5rem ); font-weight: 700; line-height: 1; color: var( --wp--preset--color--navy ); margin: 0 0 1.5rem; letter-spacing: -0.04em; }
.aes-why__title { margin: 0 0 0.6rem; }

/* ---------------------------------------------------------- Speaker card */

.aes-speaker {
	background: var( --wp--preset--color--mist );
	border: 1px solid var( --wp--preset--color--line-soft );
	border-radius: 16px;
	overflow: hidden;
	height: 100%;
}

.aes-speaker figure, .aes-speaker img { margin: 0; display: block; width: 100%; }
.aes-speaker img { aspect-ratio: 4 / 5; object-fit: cover; border-radius: 0; }
.aes-speaker__body { padding: 1.1rem 1.15rem 1.3rem; }
.aes-speaker__name { margin: 0 0 0.25rem; }
.aes-speaker__role { font-size: 0.875rem; color: var( --wp--preset--color--body ); margin: 0 0 0.5rem; }
.aes-speaker__org { font-size: 0.625rem; letter-spacing: 0.14em; text-transform: uppercase; color: var( --wp--preset--color--mute ); margin: 0; }

.aes-badge {
	display: inline-block;
	font-size: 0.5625rem;
	font-weight: 700;
	letter-spacing: 0.14em;
	text-transform: uppercase;
	padding: 0.32rem 0.6rem;
	border-radius: 6px;
	background: var( --wp--preset--color--haze );
	color: var( --wp--preset--color--navy-deep );
}

.aes-badge--keynote { background: var( --wp--preset--color--navy ); color: #fff; }

/* ------------------------------------------------------------ Tier cards */

.aes-tier {
	background: var( --wp--preset--color--white );
	border: 1px solid var( --wp--preset--color--line );
	border-radius: 20px;
	padding: 2rem 1.875rem;
	height: 100%;
}

.aes-tier--featured { border-color: var( --wp--preset--color--navy ); box-shadow: var( --wp--preset--shadow--card ); }
.aes-tier__name { margin: 0 0 0.85rem; font-size: 1.0625rem; }
.aes-tier__price { margin: 0 0 0.3rem; letter-spacing: -0.03em; line-height: 1; }
.aes-tier__note { font-size: 0.8125rem; color: var( --wp--preset--color--mute ); margin: 0 0 1.4rem; }

/* ----------------------------------------------------------- Voice cards */

.aes-voice { background: var( --wp--preset--color--clay ); border-radius: 20px; padding: 1.375rem; height: 100%; }
.aes-voice__quote { font-size: 1rem; line-height: 1.55; color: var( --wp--preset--color--ink-soft ); margin: 0.9rem 0 1.2rem; }
.aes-voice__name { margin: 0; font-size: 1.0625rem; font-weight: 700; color: var( --wp--preset--color--ink ); }
.aes-voice__org { margin: 0; font-size: 0.8125rem; color: var( --wp--preset--color--body ); }

/* ------------------------------------------------------------- Programme */

.aes-session {
	display: grid;
	grid-template-columns: 7rem 1fr 11rem;
	gap: 1.25rem;
	padding: 1.15rem 0;
	border-bottom: 1px solid var( --wp--preset--color--line );
	align-items: start;
}

.aes-session:last-child { border-bottom: 0; }
.aes-session__time { font-weight: 700; font-size: 1.0625rem; color: var( --wp--preset--color--ink ); margin: 0; }
.aes-session__title { margin: 0 0 0.3rem; }
.aes-session__desc { margin: 0; font-size: 0.9375rem; }
.aes-session__room { margin: 0; font-size: 0.875rem; color: var( --wp--preset--color--mute ); }

@media ( max-width: 781px ) {
	.aes-session { grid-template-columns: 1fr; gap: 0.35rem; }
	.aes-session__room { order: 3; }
}

.aes-daytab {
	display: inline-block;
	font-size: 0.875rem;
	font-weight: 600;
	padding: 0.5rem 1rem;
	border-radius: 999px;
	background: #FFFFFF;
	border: 1px solid var( --wp--preset--color--line );
	color: var( --wp--preset--color--navy-deep );
	cursor: pointer;
	user-select: none;
	transition: background-color .18s ease, border-color .18s ease, color .18s ease;
}
.aes-daytab.is-active {
	background: var( --wp--preset--color--haze );
	border-color: var( --wp--preset--color--haze );
	color: var( --wp--preset--color--navy );
}
.aes-daytab:hover { border-color: var( --wp--preset--color--navy ); }
.aes-daytab:focus-visible { outline: 2px solid var( --wp--preset--color--navy ); outline-offset: 2px; }
.aes-session[hidden] { display: none; }
.aes-session.is-last { border-bottom: 0; }
@media ( prefers-reduced-motion: reduce ) { .aes-daytab { transition: none; } }

/* ------------------------------------------------------- Photo strips */

.aes-strip { display: flex; gap: 14px; overflow: hidden; }
.aes-strip figure, .aes-strip .wp-block-image { margin: 0; flex: 0 0 auto; }
.aes-strip img { height: clamp( 150px, 18vw, 238px ); width: auto; border-radius: 14px; object-fit: cover; display: block; }

@media ( max-width: 781px ) {
	.aes-strip { overflow-x: auto; scroll-snap-type: x mandatory; -webkit-overflow-scrolling: touch; padding-inline: 20px; }
	.aes-strip figure { scroll-snap-align: start; }
	.aes-strip::-webkit-scrollbar { display: none; }
}

/* ---------------------------------------------------------------- Footer */
/* Measured from Figma 26:400 at 1920: 1280 column, 64/40 padding, and a
   16 / 40 / 34 / 34 / 20 vertical rhythm between the blocks. Block gap is
   set to 0 in the template part so these margins are the only thing
   deciding the spacing. */

.aes-footer { padding-top: 64px; padding-bottom: 40px; }

.aes-wordmark {
	font-weight: 700;
	line-height: 0.9;
	letter-spacing: -0.037em;
	margin: 0 auto;
	text-align: center;
	/* Two layers, clipped to the glyphs. The lower one lightens left to right;
	   the upper one is the footer's own background fading in from the top of
	   each letter down, so the wordmark sinks into the page. One diagonal
	   gradient cannot do both on a box this wide and short. The design uses a
	   baked PNG for this; gradients scale and stay editable. */
	background:
		linear-gradient( 180deg, rgba( 246, 247, 244, 0 ) 38%, rgba( 246, 247, 244, 0.85 ) 100% ),
		linear-gradient( 92deg, #050505 0%, rgba( 24, 26, 28, 0.30 ) 100% );
	-webkit-background-clip: text;
	background-clip: text;
	color: transparent;
	overflow-wrap: anywhere;
	/* The design sets 108px against a 1280 column — 84.8% of it. This tracks
	   that proportion down the viewport instead of pinning one size. */
	font-size: clamp( 1.5rem, calc( 7.4vw - 7px ), 95px );
}

.aes-footer__lede {
	max-width: 680px;
	margin: 16px auto 0;
	font-size: 15px;
	line-height: 1.5;
	color: #4E5560;
	text-align: center;
}

.aes-footer hr.aes-footer__rule {
	margin: 40px 0 0;
	height: 1px;
	border: 0;
	background-color: #DCE0D6;
	color: #DCE0D6;
}
.aes-footer hr.aes-footer__rule-bottom { margin-top: 34px; }

.aes-footer__col h2, .aes-footer__col h3 {
	font-size: 16.5px;
	line-height: 1.5;
	color: #12161A;
	margin: 0 0 14px;
}
.aes-footer__col ul { list-style: none; padding: 0; margin: 0; }
.aes-footer__col li { margin-bottom: 10px; }
.aes-footer__col li:last-child { margin-bottom: 0; }
.aes-footer__col a, .aes-footer__col li {
	font-size: 14px;
	line-height: 1.5;
	color: #4E5560;
	text-decoration: none;
}
.aes-footer__col a:hover { color: var( --wp--preset--color--navy ); text-decoration: underline; }

.aes-footer__bar { margin-top: 20px; font-size: 13px; color: #79818B; gap: 20px; }
.aes-footer__bar a { color: #79818B; text-decoration: none; }
.aes-footer__bar a:hover { color: var( --wp--preset--color--ink ); text-decoration: underline; }

/* Delegate avatar — Figma 26:352. A 46px circle, 12px from a two-line
   name/organisation block. Drawn on the name's ::before so the cards need no
   extra markup and stay editable; the gradient stops are the exported SVG's
   (#173F73 to #063A26 at 45 degrees). When real delegate portraits arrive,
   this is the slot they drop into. */
.aes-voice__name {
	position: relative;
	margin-top: 20px;
	padding-left: 58px;
	min-height: 46px;
	font-size: 16.5px;
	line-height: 1.2;
	color: #12201A;
}
.aes-voice__name::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: linear-gradient( 135deg, #173F73 0%, #063A26 100% );
}
.aes-voice__org {
	padding-left: 58px;
	margin-top: 2px;
	font-size: 13px;
	line-height: 1.35;
	color: #4A5A52;
}

/* ---------------------------------------------------------------- Header */

/* No backdrop-filter here: it makes the header a containing block for
   position:fixed descendants, which traps the navigation overlay inside it. */
.aes-header { position: sticky; top: 0; z-index: 50; background: #FFFFFF; border-bottom: 1px solid transparent; }
.aes-header.is-scrolled { border-bottom-color: var( --wp--preset--color--line ); }
.aes-header .wp-block-navigation { font-size: 0.9375rem; font-weight: 500; }
.aes-header .wp-block-navigation a { color: var( --wp--preset--color--ink ); }
.aes-header .wp-block-navigation a:hover { color: var( --wp--preset--color--navy ); }

/* Hamburger + "Menu" label, as drawn in the design. */
.aes-header .wp-block-navigation__responsive-container-open {
	display: flex;
	align-items: center;
	gap: 10px;
	padding: 0.7rem 0.2rem;
	color: var( --wp--preset--color--ink );
	font-size: 0.9375rem;
	font-weight: 600;
}

.aes-header .wp-block-navigation__responsive-container-open::after {
	content: "Menu";
}

.aes-header .wp-block-navigation__responsive-container-open svg { width: 22px; height: 22px; }

.wp-block-navigation__responsive-container.is-menu-open {
	padding: clamp( 24px, 5vw, 56px );
	background: var( --wp--preset--color--white );
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	gap: 0.35rem;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content {
	font-size: clamp( 1.5rem, 4vw, 2.375rem );
	font-weight: 700;
	letter-spacing: -0.03em;
	color: var( --wp--preset--color--ink );
	padding: 0.3rem 0;
}

.wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item__content:hover {
	color: var( --wp--preset--color--navy );
	text-decoration: none;
}

.aes-header__right { flex: 0 0 auto; }

@media ( max-width: 600px ) {
	.aes-header .wp-block-navigation__responsive-container-open::after { content: none; }
	.aes-logo__sub { display: none; }
}

/* Logo mark — Figma 26:7: a 38px square at 11px radius. The design carries no
   artwork inside it, because Solewant's identity is not final; this is the
   placeholder that lockup uses. Uploading a real logo in Appearance replaces
   it with no code change — the rule below stands it down automatically. */
.aes-logo__mark { width: 38px; height: 38px; border-radius: 11px; background: var( --wp--preset--color--navy ); display: inline-block; flex: 0 0 auto; margin: 0; }
.aes-header:has( .wp-block-site-logo img ) .aes-logo__mark { display: none; }
.aes-logo__name { font-size: 1.25rem; font-weight: 700; line-height: 1.05; margin: 0; color: var( --wp--preset--color--ink ); }
.aes-logo__sub { font-size: 0.625rem; letter-spacing: 0.12em; text-transform: uppercase; color: var( --wp--preset--color--navy ); margin: 0; font-weight: 600; }

/* ------------------------------------------------------------------ Misc */

.aes-map { border-radius: 18px; overflow: hidden; }
.aes-map iframe { display: block; width: 100%; min-height: 420px; border: 0; }

/* Partners — Figma 26:289. Three tiers, each with its own row height and
   type size, so lead partners read larger than supporting ones. */
.aes-partners__title { margin: 12px 0 0; }
.aes-tierlabel {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 26px 0 12px;
	font-size: 10.5px;
	letter-spacing: 1.6px;
	text-transform: uppercase;
	color: #79818B;
	white-space: nowrap;
}
.aes-tierlabel::after {
	content: "";
	flex: 1 0 0;
	height: 1px;
	min-width: 0;
	background: #DCE0D6;
}
/* :first-of-type would match the eyebrow, which is also a p. */
.aes-partners__title + .aes-tierlabel { margin-top: 30px; }
/* The block gap would otherwise add 10px on top of the label's own 12px. */
.aes-partners > .aes-logos { margin-top: 0 !important; }

.aes-logos {
	display: grid;
	gap: 12px;
	grid-template-columns: repeat( var( --aes-cols ), minmax( 0, 1fr ) );
}
.aes-logos--t1 { --aes-cols: 3; --aes-h: 112px; --aes-fs: 26px; }
.aes-logos--t2 { --aes-cols: 4; --aes-h: 86px;  --aes-fs: 19px; }
.aes-logos--t3 { --aes-cols: 6; --aes-h: 64px;  --aes-fs: 14px; }

.aes-logo {
	box-sizing: border-box;
	display: flex;
	align-items: center;
	justify-content: center;
	margin: 0;
	min-height: var( --aes-h );
	padding: 8px 12px;
	background: #EDF0EA;
	border: 1px solid #DCE0D6;
	border-radius: 10px;
	font-size: var( --aes-fs );
	font-weight: 700;
	letter-spacing: -0.4px;
	line-height: 1.5;
	color: #4E5560;
	text-align: center;
}

/* Halve the columns on a tablet, and again on a phone. */
@media ( max-width: 900px ) {
	.aes-logos--t1 { --aes-cols: 2; --aes-h: 92px; --aes-fs: 21px; }
	.aes-logos--t2 { --aes-cols: 2; --aes-h: 78px; --aes-fs: 18px; }
	.aes-logos--t3 { --aes-cols: 3; --aes-h: 60px; }
}
@media ( max-width: 560px ) {
	.aes-logos--t1 { --aes-cols: 1; --aes-h: 84px; --aes-fs: 19px; }
	.aes-logos--t2 { --aes-cols: 2; --aes-h: 68px; --aes-fs: 15px; }
	.aes-logos--t3 { --aes-cols: 2; --aes-h: 56px; --aes-fs: 13px; }
}

/* Equal-height columns for card rows. */
.aes-equal > .wp-block-column { display: flex; }
.aes-equal > .wp-block-column > * { width: 100%; }

/* Long-form legal pages. */
.aes-legal h2 { margin-top: 2.5rem; }
.aes-legal h3 { margin-top: 1.75rem; }
.aes-legal p, .aes-legal li { color: var( --wp--preset--color--body ); }

/* Editor: give patterns room to breathe. */
.editor-styles-wrapper .aes-marquee__track { animation: none; }
/* ---------------------------------------------------------- About page */
.aes-eyebrow--lime { color: #5B9BD5; }

.aes-crumb { font-size: .8125rem; font-weight: 600; color: #fff; margin: 0 0 var(--wp--preset--spacing--30); }
.aes-crumb a { color: #5B9BD5; text-decoration: none; }
.aes-crumb span { color: #A7AEBA; margin: 0 .4rem; font-weight: 400; }

.aes-abouthero__card .wp-block-cover__inner-container { width: 100%; }

.aes-pill { display: inline-block; margin: 0; padding: .55rem 1rem; border-radius: 999px; font-size: .875rem; font-weight: 600; color: var(--wp--preset--color--body); background: var(--wp--preset--color--mist); border: 1px solid var(--wp--preset--color--line); }
.aes-pill.is-active { background: var(--wp--preset--color--navy); border-color: var(--wp--preset--color--navy); color: #fff; }

/* Speaker overview — Figma 94:29. Heading and lede sit side by side above a
   dark card and a 2x2 stat grid. */
.aes-darkcard { background: #081A33; border-radius: 20px; padding: 34px 34px 36px; height: 100%; }
.aes-darkcard__title { margin: 14px 0 0; font-size: 30px; line-height: 40px; font-weight: 700; }
.aes-darkcard__text { margin: 16px 0 0; font-size: 14px; line-height: 22px; }

.aes-spk__lede { margin: 0; }

/* Block gap lands as a margin-top on every grid item but the first, which
   shifts them inside their cells and shortens them — the four cards came out
   different heights and out of line with each other. Zero it, and let both
   rows take the same height. */
.aes-statgrid {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 20px;
	align-content: start;
	grid-auto-rows: 1fr;
}
.aes-statgrid > * { margin: 0 !important; }
.aes-statcard {
	height: 100%;
	box-sizing: border-box;
	background: #FFFFFF;
	border: 1px solid #DDE3DF;
	border-radius: 16px;
	padding: 28px;
}
.aes-statcard__value { margin: 0; font-size: 34px; line-height: 1.15; font-weight: 700; color: #0C2142; letter-spacing: -0.02em; }
.aes-statcard__label { margin: 6px 0 0; font-size: 14px; line-height: 1.35; color: #55606B; }
/* The Tickets page uses the same card for facts rather than figures, and the
   design sets those a little smaller. */
.aes-statgrid--facts .aes-statcard { padding: 29px; }
.aes-statgrid--facts .aes-statcard__value { font-size: 30px; }

@media ( max-width: 900px ) {
	.aes-darkcard { padding: 28px 26px 30px; }
	.aes-darkcard__title { font-size: 25px; line-height: 33px; }
	.aes-statcard { padding: 22px; }
	.aes-statcard__value { font-size: 30px; }
}
@media ( max-width: 560px ) {
	.aes-statgrid { grid-template-columns: 1fr; gap: 14px; }
}
.aes-factrow { padding: .7rem 0; border-bottom: 1px solid rgba(255,255,255,.08); }
.aes-factrow:last-child { border-bottom: 0; }
.aes-factrow p { margin: 0; }

/* The summit's one icon: three white bars in a green tile (Figma 91:405).
   It is used by every icon tile on the site — Event experience and the six
   principles cards on About. Figma draws the bars as rectangles rather than
   exporting an asset, so they are inlined as SVG here: one property, no image
   file, sharp at any density, and the tile still takes its colour from the
   brand token. */
.aes-exp__list .aes-callout {
	align-items: flex-start;
	gap: 18px;
	padding: 22px 24px;
	background: #FFFFFF;
	border: 1px solid #DDE3DF;
	border-radius: 16px;
}
/* !important beats WordPress's font-size preset, which is itself !important. */
.aes-exp__list .aes-callout h2, .aes-exp__list .aes-callout h3 { font-size: 17px !important; line-height: 1.25; color: #0C2142; margin: 0; }
.aes-exp__list .aes-callout p { font-size: 14px; line-height: 22px; color: #55606B; margin: 0; }

.aes-icontile {
	flex: 0 0 auto;
	width: 46px;
	height: 46px;
	border-radius: 12px;
	margin: 0;
	background-color: var( --wp--preset--color--navy );
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'%3E%3Crect y='2' width='20' height='3' rx='1.5' fill='white'/%3E%3Crect y='8.5' width='14' height='3' rx='1.5' fill='white' opacity='0.8'/%3E%3Crect y='15' width='9' height='3' rx='1.5' fill='white' opacity='0.6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 20px 20px;
}

/* The lede sits a little below the heading's cap line in the design. */
.aes-exp__head .aes-exp__lede { margin-top: 22px; }

.aes-exp__feature .aes-chip-dark {
	display: inline-block;
	margin: 0;
	padding: 8px 14px;
	border-radius: 999px;
	background: #0B0D10;
	color: #FFFFFF;
	font-size: 13px !important;
	font-weight: 600;
	line-height: normal;
	letter-spacing: normal;
	text-transform: none;
}

/* These widths are what make the heading break after "people". WordPress's
   constrained layout centres any child that has a width, and it does so with
   !important, so pinning them left needs it too. Figma's 540 wraps a word
   later in this rendering, hence 450. */
.aes-exp__feature h3 { max-width: 450px; margin-left: 0 !important; margin-right: auto !important; }
.aes-exp__feature h3 + p { max-width: 385px; margin-left: 0 !important; margin-right: auto !important; }

@media ( max-width: 781px ) {
	.aes-exp__head .aes-exp__lede { margin-top: 0; }
}

.aes-numbadge { display: inline-flex; align-items: center; justify-content: center; width: 34px; height: 34px; border-radius: 50%; background: var(--wp--preset--color--navy); color: #fff; font-size: .875rem; font-weight: 700; margin: 0; }

/* Why attend — Figma 91:181. Four tiles, each with its own fill and its own
   body colour; the two pale ones are not the same pale. */
.aes-tile { border-radius: 18px; padding: 28px 28px 30px; height: 100%; }
.aes-tile__num { font-size: 36px; font-weight: 700; line-height: 1; margin: 0 0 26px; letter-spacing: -.03em; }
.aes-tile__title { margin: 0 0 10px; font-size: 22px; line-height: 29px; }
.aes-tile__text { margin: 0; font-size: 14px; line-height: 22px; }
.aes-tile--mint { background: #E8F0E4; }
.aes-tile--mint .aes-tile__num, .aes-tile--mint .aes-tile__title { color: #0C2142; }
.aes-tile--mint .aes-tile__text { color: #3E5A49; }
.aes-tile--ash { background: #E4E7E5; }
.aes-tile--ash .aes-tile__num, .aes-tile--ash .aes-tile__title { color: #0C2142; }
.aes-tile--ash .aes-tile__text { color: #4C565C; }
/* kept for any tile still set to the old variant */
.aes-tile--light { background: #fff; border: 1px solid var(--wp--preset--color--line); }
.aes-tile--light .aes-tile__num, .aes-tile--light .aes-tile__title { color: var(--wp--preset--color--ink); }
.aes-tile--light .aes-tile__text { color: #3E5A49; }
.aes-tile--green { background: var(--wp--preset--color--navy); }
.aes-tile--green .aes-tile__num, .aes-tile--green .aes-tile__title { color: #fff; }
.aes-tile--green .aes-tile__text { color: #DFF3E6; }
.aes-tile--deep { background: #102C52; }
.aes-tile--deep .aes-tile__num, .aes-tile--deep .aes-tile__title { color: #fff; }
.aes-tile--deep .aes-tile__text { color: #BFD9C9; }

/* Columns come from the shared .aes-equal breakpoints (4 / 2 / 1 at 1200 and
   700), so the whole site steps down together. Only the gutter and the
   phone-size padding are specific to this grid. */
.aes-tilegrid { gap: 22px; }
@media ( max-width: 1200px ) {
	.aes-tilegrid > .wp-block-column { flex-basis: calc( 50% - 11px ) !important; }
}
@media ( max-width: 600px ) {
	.aes-tile { padding: 24px 22px 26px; }
	.aes-tile__num { margin-bottom: 18px; }
}

/* What we stand for — Figma 91:236. One bordered block with hairline
   dividers, not six separate cards. The dividers are the grid's own 1px gap
   showing the container colour through, which is why they stay correct at
   three, two or one column without a single extra rule per breakpoint. */
.aes-valuegrid {
	gap: 1px !important;
	background: var( --wp--preset--color--line );
	border: 1px solid var( --wp--preset--color--line );
	border-radius: 18px;
	overflow: hidden;
}
.aes-valuecard {
	background: var( --wp--preset--color--tint );
	border: 0;
	border-radius: 0;
	padding: 34px 34px 38px;
	height: 100%;
}
.aes-valuecard h3 { margin: 26px 0 10px; font-size: 21px; line-height: 28px; color: #0C2142; }
.aes-valuecard p { margin: 0; font-size: 14px; line-height: 23px; color: #55606B; }

/* The header for this section is centred in the design. */
.aes-values__head { text-align: center; }
.aes-values__head .aes-eyebrow { text-align: center; }
.aes-values__lede { max-width: 56ch; margin-inline: auto; }

@media ( max-width: 1100px ) {
	.aes-valuegrid { grid-template-columns: 1fr 1fr !important; }
	.aes-valuecard { padding: 28px 28px 32px; }
}
@media ( max-width: 700px ) {
	.aes-valuegrid { grid-template-columns: 1fr !important; }
	.aes-valuecard { padding: 24px 22px 26px; }
	.aes-valuecard h3 { margin-top: 20px; font-size: 19px; line-height: 26px; }
}

.aes-infoblock { background: #F0E9DF; border-radius: 12px; padding: 1.1rem 1.25rem; margin-top: var(--wp--preset--spacing--30); }
.aes-infoblock__title { color: #15803D; margin: 0 0 .35rem; }
.aes-infoblock p { margin: 0; }

.aes-pullquote { border-left: 3px solid var(--wp--preset--color--navy); padding-left: 1.1rem; color: var(--wp--preset--color--ink); margin-top: var(--wp--preset--spacing--40); }

/* ------------------------------------------------------- Speakers page */
.aes-darksection h1,.aes-darksection h2,.aes-darksection h3,.aes-darksection h4{color:#fff}
.aes-panel{background:#181C22;border-radius:20px;padding:clamp(1.5rem,3.5vw,2.5rem)}
.aes-keynote__figure{position:relative}
.aes-keynote__figure figure{margin:0}
.aes-keynote__figure img{width:100%;aspect-ratio:4/5;object-fit:cover;border-radius:14px;display:block}
.aes-chip-dark{display:inline-block;margin:0;padding:.4rem .75rem;border-radius:7px;background:rgba(6,27,18,.72);color:#fff;font-size:.75rem;font-weight:600;letter-spacing:.02em}
.aes-keynote__figure .aes-chip-dark{position:absolute;left:12px;bottom:12px}
.aes-metalabel{margin:0 0 .25rem;font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#5B9BD5}
.aes-metavalue{margin:0;font-size:1rem;font-weight:700;color:#fff;line-height:1.35}
.aes-spkgrid{gap:var(--wp--preset--spacing--30)}
.aes-spk{background:#fff;border-radius:18px;padding:15px;height:100%}
.aes-spk__portrait{position:relative;border-radius:14px;min-height:300px;display:flex;align-items:flex-end;padding:12px;margin-bottom:1rem}
.aes-spk__name{margin:0 0 .3rem;color:var(--wp--preset--color--ink)}
.aes-spk__role{margin:0 0 .5rem;font-size:.8125rem;font-weight:600;color:var(--wp--preset--color--navy)}
.aes-spk p:last-child{margin:0}
.aes-tickdark{position:relative;margin:0;padding-left:1.9rem;color:#fff;font-size:.9375rem;font-weight:600;line-height:1.45}
.aes-tickdark::before{content:"";position:absolute;left:0;top:.1em;width:1.15rem;height:1.15rem;border-radius:50%;background:rgba(134,211,95,.16)}
.aes-tickdark::after{content:"";position:absolute;left:.35rem;top:.42em;width:.4rem;height:.2rem;border-left:2px solid #5B9BD5;border-bottom:2px solid #5B9BD5;transform:rotate(-45deg)}
@media(max-width:781px){.aes-spkgrid{grid-template-columns:1fr !important}}
/* ------------------------------------------------------ Programme page */
.aes-daypill{display:inline-block;margin:0;padding:.7rem 1.15rem;border-radius:999px;font-size:.875rem;font-weight:600;background:#fff;border:1px solid var(--wp--preset--color--line);color:var(--wp--preset--color--ink)}
.aes-daypill.is-active{background:var(--wp--preset--color--ink);border-color:var(--wp--preset--color--ink);color:#fff}
.aes-trackpill{display:inline-block;margin:0;padding:.5rem .95rem;border-radius:999px;font-size:.875rem;font-weight:600;background:transparent;border:1px solid var(--wp--preset--color--line);color:var(--wp--preset--color--ink)}
.aes-trackpill.is-active{background:var(--wp--preset--color--haze);border-color:var(--wp--preset--color--haze);color:var(--wp--preset--color--navy)}
.aes-sess{display:grid;grid-template-columns:120px 1fr 170px;gap:1.5rem;padding:1.4rem 0;border-bottom:1px solid var(--wp--preset--color--line);align-items:start}
.aes-sess:last-child{border-bottom:0}

/* Programme filters. The pills are paragraphs in the markup so the labels stay
   editable; these make them read and behave as controls. */
.aes-daypill, .aes-trackpill { cursor: pointer; user-select: none; transition: background-color .18s ease, border-color .18s ease, color .18s ease; }
.aes-daypill:hover { background: var( --wp--preset--color--mist ); }
.aes-daypill.is-active:hover { background: var( --wp--preset--color--ink ); }
.aes-trackpill:hover { border-color: var( --wp--preset--color--navy ); color: var( --wp--preset--color--navy ); }
.aes-daypill:focus-visible, .aes-trackpill:focus-visible { outline: 2px solid var( --wp--preset--color--navy ); outline-offset: 2px; }
@media ( prefers-reduced-motion: reduce ) {
	.aes-daypill, .aes-trackpill { transition: none; }
}

/* A hidden row must not keep its bottom border or its grid box. */
.aes-sess[hidden] { display: none; }
/* Whatever ends up last after filtering loses its rule, not just the last row
   in the source order. CSS cannot express "last visible" here — the empty
   state is a sibling div, so :last-of-type would match that instead — so the
   script sets this class. */
.aes-sess.is-last { border-bottom: 0; }

.aes-prog__empty { padding: 2.5rem 0 0.5rem; }
.aes-prog__empty[hidden] { display: none; }
.aes-prog__empty-title { margin: 0 0 .4rem; font-size: 1.0625rem; font-weight: 700; color: var( --wp--preset--color--ink ); }
.aes-prog__empty-body { margin: 0; max-width: 46ch; font-size: .9375rem; color: var( --wp--preset--color--body ); }
.aes-sess__when p{margin:0}
.aes-sess__time{font-size:1.375rem;font-weight:700;color:var(--wp--preset--color--ink);letter-spacing:-.02em}
.aes-sess__dur{font-size:.8125rem;color:var(--wp--preset--color--mute)}
.aes-sess__title{margin:0;color:var(--wp--preset--color--ink)}
.aes-sess__chip{margin:0;padding:.25rem .6rem;border-radius:6px;background:var(--wp--preset--color--haze);color:var(--wp--preset--color--navy);font-size:.75rem;font-weight:600}
.aes-sess__desc{margin:.5rem 0 0;font-size:.9375rem;color:var(--wp--preset--color--body)}
.aes-sess__side p{margin:0}
.aes-sess__room{font-size:.875rem;font-weight:600;color:var(--wp--preset--color--navy);margin-bottom:.6rem}
.aes-sess__save{font-size:.875rem;font-weight:600;color:var(--wp--preset--color--ink);cursor:pointer}
.aes-notice{background:var(--wp--preset--color--amber-bg);border-radius:12px;padding:1.1rem 1.35rem}
.aes-notice__label{margin:0 0 .3rem;font-size:.6875rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--wp--preset--color--amber)}
.aes-notice p:last-child{margin:0}
.aes-fmtgrid{gap:var(--wp--preset--spacing--30)}
.aes-fmtcard{background:#fff;border:1px solid var(--wp--preset--color--line);border-radius:16px;padding:clamp(1.25rem,2.5vw,1.5rem);height:100%}
.aes-fmtcard h3{margin:0 0 .45rem}
.aes-fmtcard p{margin:0}
.aes-softcard{background:var(--wp--preset--color--mist);border-radius:20px;padding:clamp(1.5rem,3vw,1.875rem);height:100%}
@media(max-width:781px){
.aes-sess{grid-template-columns:1fr;gap:.5rem}
.aes-sess__when{display:flex;gap:.75rem;align-items:baseline}
.aes-fmtgrid{grid-template-columns:1fr !important}
}
/* -------------------------------------------------------- Tickets page */
.aes-cdtitle{margin:0 0 1rem;font-size:1.5rem;font-weight:600;color:#5B9BD5}
.aes-countdown--boxed{gap:16px}
.aes-countdown--boxed .aes-countdown__unit{background:#F3F1E6;border-radius:18px;padding:1.4rem 1.2rem;min-width:clamp(90px,11vw,168px);align-items:flex-start;gap:.35rem}
.aes-countdown--boxed .aes-countdown__value{font-size:clamp(1.75rem,3.5vw,2.75rem);color:var(--wp--preset--color--ink)}
.aes-countdown--boxed .aes-countdown__label{font-size:.9375rem;letter-spacing:0;text-transform:none;color:#5A6360}
.aes-tier
.aes-tier--dark .aes-tier__name{color:#5B9BD5}
.aes-tier--dark .aes-tier__price{color:#fff}
.aes-tier--dark .aes-tier__note{color:#A7AEBA}
.aes-tier--dark .is-style-aes-ticks li{color:#A7AEBA}
.aes-tier--dark .is-style-aes-ticks li::before{background:rgba(134,211,95,.16)}
.aes-tier--dark .is-style-aes-ticks li::after{border-left-color:#5B9BD5;border-bottom-color:#5B9BD5}
.aes-badge--onDark{background:var(--wp--preset--color--navy);color:#fff}
.aes-numbadge--sm{width:28px;height:28px;font-size:.8125rem}

/* Section head — heading on the left, lede on the right. Shared by Pass
   overview, How it works and Payment & policy; each sets its own column
   widths inline because the design gives all three different splits. */
.aes-sechead__lede, .aes-spk__lede { margin: 0; }

/* How registration works — Figma 100:72. */
.aes-stepcard.aes-stepcard {
	background: #FFFFFF;
	border: 1px solid #DDE3DF;
	border-radius: 18px;
	padding: 28px 28px 30px;
	height: 100%;
}
.aes-stepbadge {
	display: inline-block;
	margin: 0;
	padding: 8px 13px;
	border-radius: 10px;
	background: var( --wp--preset--color--navy );
	color: #FFFFFF;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.2;
}
.aes-stepcard__title { margin: 28px 0 10px; font-size: 21px; line-height: 28px; color: #0C2142; }
.aes-stepcard__text { margin: 0; font-size: 14px; line-height: 22px; color: #55606B; }

/* Payment & policy — Figma 100:111. The three items were bare text; the
   design puts each in a card a shade lighter than the section. */
.aes-policycard {
	background: #181C22;
	border: 1px solid #262C35;
	border-radius: 18px;
	padding: 30px 30px 32px;
	height: 100%;
}
.aes-policycard__title { margin: 0; font-size: 21px; line-height: 28px; }
.aes-policycard__text { margin: 12px 0 0; font-size: 14px; line-height: 23px; }

@media ( max-width: 600px ) {
	.aes-stepcard.aes-stepcard { padding: 22px 22px 24px; }
	.aes-stepcard__title { margin-top: 20px; font-size: 19px; line-height: 26px; }
	.aes-policycard { padding: 24px 24px 26px; }
	.aes-policycard__title { font-size: 19px; line-height: 26px; }
}
.aes-faqgrid{gap:var(--wp--preset--spacing--40) var(--wp--preset--spacing--60)}
.aes-faq h3{margin:0 0 .4rem;color:var(--wp--preset--color--ink)}
.aes-faq p{margin:0}
@media(max-width:781px){.aes-faqgrid{grid-template-columns:1fr !important}}

/* Tier dark variant must beat the base .aes-tier white background. */
.aes-tier.aes-tier--dark { background: #081A33; border-color: #081A33; }
/* -------------------------------------------------- Venue & Travel page */
.aes-hotel{display:grid;grid-template-columns:1fr auto;gap:1.5rem;align-items:center;padding:1.35rem 0;border-bottom:1px solid var(--wp--preset--color--line)}
.aes-hotel:last-child{border-bottom:0}
.aes-hotel__main p{margin:0}
.aes-hotel__name{margin:0 0 .3rem;color:var(--wp--preset--color--ink)}
.aes-hotel__dist{font-size:.875rem;font-weight:600;color:var(--wp--preset--color--navy);margin-bottom:.25rem !important}
.aes-hotel__note{font-size:.875rem;color:var(--wp--preset--color--body)}
.aes-hotel__rate{text-align:right}
.aes-hotel__rate p{margin:0}
.aes-hotel__price{font-size:1.3125rem;font-weight:700;color:var(--wp--preset--color--ink);letter-spacing:-.02em}
.aes-hotel__per{font-size:.8125rem;color:var(--wp--preset--color--mute)}
.aes-travelgrid{gap:var(--wp--preset--spacing--50) var(--wp--preset--spacing--60)}
.aes-travelgrid h3{margin:0 0 .4rem}
.aes-travelgrid p{margin:0}
@media(max-width:781px){
.aes-hotel{grid-template-columns:1fr;gap:.6rem}
.aes-hotel__rate{text-align:left}
.aes-travelgrid{grid-template-columns:1fr !important}
}
/* ------------------------------------------------------- Contact page */
.aes-formcard{background:#fff;border:1px solid var(--wp--preset--color--line);border-radius:20px;padding:clamp(1.5rem,3.5vw,2.25rem);box-shadow:var(--wp--preset--shadow--card)}
.aes-form{margin-top:1.5rem;display:flex;flex-direction:column;gap:1rem}
.aes-form__row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.aes-form__field{display:flex;flex-direction:column;gap:.4rem}
.aes-form__field>span{font-size:.875rem;font-weight:600;color:var(--wp--preset--color--ink)}
.aes-form input,.aes-form select,.aes-form textarea{
 width:100%;font:inherit;font-size:.9375rem;color:var(--wp--preset--color--ink);
 background:#fff;border:1px solid var(--wp--preset--color--line);border-radius:10px;
 padding:.75rem .9rem;outline:none}
.aes-form input::placeholder,.aes-form textarea::placeholder{color:var(--wp--preset--color--mute)}
.aes-form input:focus,.aes-form select:focus,.aes-form textarea:focus{border-color:var(--wp--preset--color--navy);box-shadow:0 0 0 3px rgba(19,160,92,.12)}
.aes-form textarea{resize:vertical;min-height:120px}
.aes-form__submit{
 align-self:flex-start;margin-top:.35rem;cursor:pointer;
 background:var(--wp--preset--color--navy);color:#fff;border:0;border-radius:999px;
 padding:.85rem 1.6rem;font:inherit;font-size:.9375rem;font-weight:600}
.aes-form__submit:hover{background:var(--wp--preset--color--navy-deep)}
.aes-deskcard{background:#fff;border:1px solid var(--wp--preset--color--line);border-radius:16px;padding:clamp(1.25rem,2.5vw,1.5rem);height:100%}
.aes-deskcard h3{margin:0 0 .4rem;color:var(--wp--preset--color--ink)}
.aes-deskcard__mail{margin:0 0 .5rem;font-size:.875rem;font-weight:600}
.aes-deskcard__mail a{color:var(--wp--preset--color--navy);text-decoration:none;overflow-wrap:anywhere}
.aes-deskcard p:last-child{margin:0}
.aes-acc{border-bottom:1px solid var(--wp--preset--color--line)}
.aes-acc__q{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:1rem;
 padding:1.15rem 0;font-size:1.1875rem;font-weight:700;color:var(--wp--preset--color--ink)}
.aes-acc__q::-webkit-details-marker{display:none}
.aes-acc__q::after{content:"+";font-size:1.25rem;font-weight:600;color:var(--wp--preset--color--mute)}
.aes-acc[open] .aes-acc__q::after{content:"–";color:var(--wp--preset--color--navy)}
.aes-acc__a{padding:0 0 1.2rem}
.aes-acc__a p{margin:0;font-size:.9375rem;color:var(--wp--preset--color--body);max-width:78ch}
@media(max-width:781px){.aes-form__row{grid-template-columns:1fr}}

/* ---------------------------------------------------------- Hero grid
   Every hero's content sits on the same 1280 column as the sections
   below it, so at 1920 the side margin is exactly 320px as drawn.
   The cover's own horizontal padding is removed above the breakpoint
   so the inner container centres on the viewport, not inside the card. */
.aes-hero > .wp-block-cover__inner-container,
.aes-abouthero__card > .wp-block-cover__inner-container {
	max-width: var( --wp--style--global--content-size, 1280px );
	width: 100%;
	margin-inline: auto;
	padding-inline: 0;
}

.aes-hero,
.aes-abouthero__card { padding-left: 0; padding-right: 0; }

@media ( max-width: 1376px ) {
	.aes-hero,
	.aes-abouthero__card {
		padding-left: clamp( 20px, 5vw, 40px );
		padding-right: clamp( 20px, 5vw, 40px );
	}
}

/* ======================================================= Mega menu
   Full-screen overlay: dark bar on top, green gradient panel below.
   ================================================================ */

.aes-mega-toggle {
	display: flex; align-items: center; gap: 10px;
	background: none; border: 0; cursor: pointer; padding: .6rem .2rem;
	font: inherit; font-size: .9375rem; font-weight: 600;
	color: var( --wp--preset--color--ink );
}
.aes-mega-toggle__bars { display: flex; flex-direction: column; gap: 5px; width: 22px; }
.aes-mega-toggle__bars span { display: block; height: 2px; border-radius: 2px; background: currentColor; }
.aes-mega-toggle__bars span:last-child { width: 70%; }

.aes-mega {
	position: fixed; inset: 0; z-index: 200;
	display: flex; flex-direction: column;
	background: #0A0F0C;
	opacity: 0; visibility: hidden;
	transition: opacity .24s ease, visibility .24s ease;
	overflow-y: auto;
}
.aes-mega.is-open { opacity: 1; visibility: visible; }
.aes-mega[hidden] { display: none; }

/* Logged-in users get the WP admin bar, which would otherwise cover the
   overlay's own bar. Offset by its height at each of its two breakpoints. */
body.admin-bar .aes-mega { top: 32px; }
@media ( max-width: 782px ) {
	body.admin-bar .aes-mega { top: 46px; }
}

body.aes-mega-lock { position: fixed; width: 100%; overflow: hidden; }

.aes-mega__bar {
	background: #0A0F0C; padding-top: 18px; padding-bottom: 18px;
	flex: 0 0 auto;
}
.aes-logo__name--light { color: #fff !important; }
.aes-logo__sub--light { color: rgba( 255, 255, 255, .55 ) !important; }

.aes-mega-close {
	background: none; border: 0; cursor: pointer; color: #fff;
	padding: .4rem; line-height: 0; border-radius: 8px;
}
.aes-mega-close:hover { background: rgba( 255, 255, 255, .1 ); }

.aes-mega__body { flex: 1 1 auto; display: flex; }

.aes-mega__panel {
	flex: 1 1 auto;
	background: linear-gradient( 128deg, #0B2B1A 0%, #14512A 38%, #3D9E36 72%, #6BC93E 100% );
	border-radius: 22px 22px 0 0;
	padding-top: clamp( 2.5rem, 5vw, 4rem );
	padding-bottom: clamp( 2.5rem, 5vw, 4rem );
}

.aes-mega__cols { gap: clamp( 1.5rem, 4vw, 3.5rem ); align-items: start; }

.aes-mega__heading {
	color: #fff !important;
	font-size: .8125rem !important;
	font-weight: 700;
	letter-spacing: .14em;
	text-transform: uppercase;
	margin: 0 0 .9rem;
	padding-bottom: .75rem;
	border-bottom: 1px solid rgba( 255, 255, 255, .38 );
}
.aes-mega__col .aes-mega__heading:not(:first-child) { margin-top: 2.25rem; }

.aes-mega__links { list-style: none; margin: 0; padding: 0; }
.aes-mega__links li { margin: 0 0 .55rem; }
.aes-mega__links a {
	color: rgba( 255, 255, 255, .92 );
	font-size: .6875rem;
	font-weight: 500;
	letter-spacing: .1em;
	text-transform: uppercase;
	text-decoration: none;
	transition: color .15s ease;
}
.aes-mega__links a:hover { color: #fff; text-decoration: underline; text-underline-offset: 3px; }

/* Social icons in the menus. Core forces the list item back to display:block,
   which left the anchor — and so the glyph — at the top-left of the circle
   instead of filling it. Both the item and the anchor need to be centring
   flex boxes, and the !important is what beats core's own rule. */
.aes-mega__social { gap: 16px !important; margin-top: .25rem; }
.aes-mega__social .wp-social-link {
	box-sizing: border-box;
	width: 38px !important; height: 38px !important;
	border: 1px solid rgba( 255, 255, 255, .55 );
	border-radius: 50%;
	background: transparent !important;
	padding: 0 !important;
	margin: 0 !important;
	display: flex !important; align-items: center; justify-content: center;
}
.aes-mega__social .wp-social-link a {
	display: flex !important; align-items: center; justify-content: center;
	width: 100%; height: 100%; padding: 0 !important; line-height: 0;
}
.aes-mega__social .wp-social-link svg { width: 17px !important; height: 17px !important; display: block; }
.aes-mega__social .wp-social-link:hover { background: rgba( 255, 255, 255, .16 ) !important; }
.aes-mega__social .wp-social-link:focus-within { outline: 2px solid #FFFFFF; outline-offset: 2px; }

.aes-mega__note {
	margin: 1.1rem 0 0;
	font-size: .75rem;
	line-height: 1.6;
	color: rgba( 255, 255, 255, .72 );
	max-width: 30ch;
}

/* Mobile list — hidden on desktop, replaces the columns below the breakpoint. */
.aes-mega__mobile { display: none; }

@media ( max-width: 900px ) {
	.aes-mega__body { display: none; }
	.aes-mega__mobile {
		display: block;
		flex: 1 1 auto;
		background: linear-gradient( 160deg, #0B2B1A 0%, #1B5C2E 45%, #63C63C 100% );
		padding: clamp( 1.25rem, 5vw, 2rem );
	}
	.aes-mnav { display: block; }
	.aes-mnav__item {
		display: flex; align-items: center; justify-content: space-between;
		padding: 1.05rem .2rem;
		border-bottom: 1px solid rgba( 255, 255, 255, .22 );
		color: #fff; text-decoration: none;
		font-size: .9375rem; font-weight: 600;
	}
	.aes-mnav__item::after { content: "›"; font-size: 1.1rem; opacity: .7; }
	.aes-mnav__item:hover { color: #fff; }
	.aes-mnav__cta .wp-block-button__link { border-radius: 999px; }
}

@media ( max-width: 600px ) {
	.aes-mega-toggle__label { display: none; }
}

@media ( prefers-reduced-motion: reduce ) {
	.aes-mega { transition: none; }
}

/* In the editor the overlay must not cover the canvas. */
.editor-styles-wrapper .aes-mega {
	position: static; opacity: 1; visibility: visible; inset: auto;
}

/* ======================================================= Mobile refinements
   Measured at 390px: the wordmark wrapped to three lines, the header CTA
   wrapped to three, and the menu toggle was a 28px tap target.
   ========================================================================= */

@media ( max-width: 782px ) {
	.aes-header { padding-top: 12px !important; padding-bottom: 12px !important; }

	.aes-header .aes-logo__name,
	.aes-mega__bar .aes-logo__name {
		font-size: .9375rem !important;
		line-height: 1.15 !important;
	}
	.aes-header .aes-logo__sub,
	.aes-mega__bar .aes-logo__sub { display: none; }

	/* Keep the CTA on one line and give the wordmark the room back. */
	.aes-header .wp-block-button__link {
		font-size: .8125rem !important;
		padding: 10px 14px !important;
		white-space: nowrap;
	}

	/* 44px tap target (WCAG 2.5.5) without moving the icon. */
	.aes-mega-toggle {
		min-width: 44px; min-height: 44px;
		justify-content: flex-end;
		padding: .5rem 0 .5rem .75rem;
	}

	.aes-mega__bar { padding-top: 12px !important; padding-bottom: 12px !important; }
	.aes-mega-close {
		min-width: 44px; min-height: 44px;
		display: flex; align-items: center; justify-content: center;
	}
}

@media ( max-width: 600px ) {
	/* The overlay's own CTA duplicated the two buttons directly below it in
	   the mobile panel, and wrapped to three lines doing it. */
	.aes-mega__bar .wp-block-buttons { display: none; }
}

/* ======================================================= I'll be attending
   Share-card generator (Figma 126:28) and tracked-link cards (126:111).
   ======================================================================== */

.aes-gen { align-items: flex-start; }

/* ---- Preview card ---- */
.aes-sharecard {
	padding: 46px 54px 42px;
	border-radius: 20px;
	overflow: hidden;
	text-align: center;
}
.aes-sharecard > * { margin-block: 0; }
.aes-sharecard__date {
	color: #5B9BD5; font-size: .8125rem; font-weight: 700;
	letter-spacing: .18em; line-height: 1.2;
}
.aes-sharecard__venue {
	margin-top: 8px !important;
	color: #BFD9C9; font-size: .65625rem; font-weight: 600; letter-spacing: .12em;
}
.aes-sharecard__photo {
	width: 196px; height: 196px; margin: 26px auto 0;
	border: 2px solid #5B9BD5; border-radius: 999px;
	background: linear-gradient( 127deg, #147140 0%, #0A2A1C 71.43% );
	display: flex; align-items: center; justify-content: center;
}
.aes-sharecard__photolabel {
	margin: 0 !important;
	color: #9FBDA9; font-size: .625rem; font-weight: 600; letter-spacing: .12em;
}
.aes-sharecard__claim {
	margin-top: 26px !important;
	color: #fff; font-size: 2.125rem; font-weight: 700;
	line-height: 1.235; letter-spacing: .02em;
}
.aes-sharecard__event {
	margin-top: 6px !important;
	color: #5B9BD5; font-size: 1.1875rem; font-weight: 700;
	line-height: 1.37; letter-spacing: .01em;
}
.aes-sharecard__rule {
	margin: 22px 0 !important; border: 0; height: 1px;
	background: #2A5C43; opacity: 1; width: 100%;
}
.aes-sharecard__name {
	color: #fff; font-size: 1.625rem; font-weight: 700;
	line-height: 1.308; letter-spacing: .01em;
}
.aes-sharecard__org {
	margin-top: 6px !important;
	color: #BFD9C9; font-size: .9375rem;
}
.aes-sharecard__url {
	margin-top: 30px !important;
	display: flex; align-items: center; justify-content: center; gap: 10px;
	color: #CFE0D6; font-size: .8125rem; font-weight: 600;
}
.aes-sharecard__chip {
	width: 18px; height: 18px; border-radius: 5px;
	background: var( --wp--preset--color--navy ); flex: 0 0 auto;
}

.aes-gen__actions .wp-block-button__link { border-radius: 999px; padding: 16px 30px; font-size: .9375rem; font-weight: 600; }

/* ---- Builder ---- */
.aes-builder { padding: 38px 40px 40px; }

.aes-step {
	display: flex; align-items: center; gap: 10px;
	margin: 0 0 14px;
	color: var( --wp--preset--color--navy );
	font-size: .71875rem; font-weight: 700; letter-spacing: .1em;
}
.aes-builder > .aes-step:not(:first-child) { margin-top: 28px; }
.aes-step__num {
	width: 22px; height: 22px; border-radius: 999px;
	background: var( --wp--preset--color--navy ); color: #fff;
	display: flex; align-items: center; justify-content: center;
	font-size: .6875rem; font-weight: 700;
}

.aes-drop {
	background: #fff; border: 1px dashed #BCC9BF; border-radius: 14px;
	padding: 38px 24px; text-align: center;
}
.aes-drop__title { margin: 0; font-size: 1.1875rem; font-weight: 700; color: var( --wp--preset--color--ink ); }
.aes-drop__hint { margin: 8px 0 0; font-size: .8125rem; color: var( --wp--preset--color--mute ); }

.aes-fields .wp-block-column { margin-top: 0; }
.aes-field { display: block; }
.aes-field__label { display: block; font-size: .8125rem; font-weight: 600; color: var( --wp--preset--color--ink ); }
.aes-field__box {
	display: block; margin-top: 8px;
	background: #fff; border: 1px solid var( --wp--preset--color--line ); border-radius: 12px;
	padding: 14px 18px; font-size: .90625rem; font-weight: 600;
	color: var( --wp--preset--color--ink );
}

.aes-caption {
	background: #fff; border: 1px solid var( --wp--preset--color--line ); border-radius: 14px;
	padding: 20px 22px 22px;
}
.aes-caption > * { margin-block: 0; }
.aes-caption__body { font-size: .90625rem; line-height: 1.586; color: var( --wp--preset--color--ink ); }
.aes-caption__tags { margin-top: 14px !important; font-size: .90625rem; font-weight: 600; color: var( --wp--preset--color--ink ); }
.aes-caption__link {
	margin-top: 14px !important;
	font-size: .8125rem; line-height: 1.538;
	color: var( --wp--preset--color--navy ); word-break: break-all;
}

.aes-btn--sm .wp-block-button__link { padding: 13px 24px; font-size: .875rem; }

.aes-note { padding: 20px 24px 22px; position: relative; padding-left: 43px; }
.aes-note::before {
	content: ""; position: absolute; left: 24px; top: 20px;
	width: 3px; height: 52px; border-radius: 2px;
	background: var( --wp--preset--color--navy );
}
.aes-note__label { margin: 0; font-size: .6875rem; font-weight: 700; letter-spacing: .1em; color: var( --wp--preset--color--navy ); }
.aes-note__body { margin: 7px 0 0; font-size: .84375rem; line-height: 1.556; color: var( --wp--preset--color--body ); }

/* ---- Tracked-link cards ---- */
.aes-tracked { padding: 28px 28px 30px; height: 100%; }
.aes-tracked__num {
	display: inline-block; margin: 0;
	background: var( --wp--preset--color--navy ); color: #fff;
	border-radius: 10px; padding: 8px 13px;
	font-size: .8125rem; font-weight: 700; line-height: 1;
}
.aes-tracked__title { margin: 26px 0 0; font-size: 1.3125rem; font-weight: 700; line-height: 1.333; }
.aes-tracked__body { margin: 10px 0 0; font-size: .875rem; line-height: 1.571; color: var( --wp--preset--color--body ); }

@media ( max-width: 900px ) {
	.aes-gen .wp-block-column { flex-basis: 100% !important; }
	.aes-sharecard { padding: 34px 26px 32px; }
	.aes-sharecard__claim { font-size: 1.75rem; }
	.aes-builder { padding: 26px 22px 28px; }
}

/* ======================================================= Legal pages
   Privacy (130:2), Terms (132:2), NDPR (132:246) share one layout:
   a sticky index on the left, numbered sections on the right.
   ================================================================== */

.aes-legal__updated {
	display: inline-block;
	margin-top: 24px !important;
	padding: 11px 19px;
	border: 1px solid rgba( 255, 255, 255, .34 );
	border-radius: 999px;
	color: rgba( 255, 255, 255, .86 );
	font-size: .8125rem; font-weight: 600;
}

.aes-legal__cols { align-items: flex-start; }
.aes-legal__aside { position: sticky; top: 104px; }

.aes-toc {
	background: var( --wp--preset--color--tint );
	border: 1px solid var( --wp--preset--color--line );
	border-radius: 18px;
	padding: 28px;
}
.aes-toc__label {
	margin: 0 0 16px;
	font-size: .6875rem; font-weight: 700; letter-spacing: .12em;
	color: var( --wp--preset--color--mute );
}
.aes-toc__list { list-style: none; margin: 0; padding: 0; counter-reset: none; }
.aes-toc__list li { margin: 0 0 10px; }
.aes-toc__list a {
	color: var( --wp--preset--color--ink );
	font-size: .875rem; font-weight: 500; text-decoration: none;
	transition: color .15s ease;
}
.aes-toc__list a:hover,
.aes-toc__list a:focus-visible { color: var( --wp--preset--color--navy ); text-decoration: underline; text-underline-offset: 3px; }

.aes-legal__num {
	margin: 40px 0 10px;
	font-size: .8125rem; font-weight: 700; letter-spacing: .06em;
	color: var( --wp--preset--color--navy );
}
.aes-legal__main > .aes-legal__num:first-child { margin-top: 0; }
.aes-legal__h {
	margin: 0 0 14px;
	font-size: 1.75rem; font-weight: 700; line-height: 1.25;
	color: var( --wp--preset--color--ink );
	/* Clears the sticky header when an index link jumps here. */
	scroll-margin-top: 104px;
}
.aes-legal__p {
	margin: 0 0 14px;
	font-size: 1rem; line-height: 1.7;
	color: var( --wp--preset--color--body );
}
.aes-legal__list { margin: 4px 0 14px; padding: 0; list-style: none; }
.aes-legal__list li {
	position: relative;
	margin: 0 0 10px;
	padding-left: 21px;
	font-size: 1rem; line-height: 1.55;
	color: var( --wp--preset--color--body );
}
.aes-legal__list li::before {
	content: ""; position: absolute; left: 0; top: .6em;
	width: 7px; height: 7px; border-radius: 50%;
	background: var( --wp--preset--color--navy );
}
.aes-legal__list li strong { color: var( --wp--preset--color--ink ); font-weight: 600; }

.aes-legal__rule {
	margin: 30px 0 0 !important;
	border: 0; height: 1px; opacity: 1;
	background: var( --wp--preset--color--line );
}

.aes-legal__contact { padding: 30px 32px 32px; }
.aes-legal__contactlabel {
	margin: 0; font-size: .8125rem; font-weight: 700;
	color: var( --wp--preset--color--ink );
}
.aes-legal__contactmail { margin: 10px 0 0; font-size: 1.1875rem; font-weight: 600; }
.aes-legal__contactmail a { color: var( --wp--preset--color--navy ); text-decoration: none; }
.aes-legal__contactmail a:hover { text-decoration: underline; }
.aes-legal__contactaddr {
	margin: 10px 0 0; font-size: .875rem; line-height: 1.6;
	color: var( --wp--preset--color--body );
}

@media ( max-width: 900px ) {
	.aes-legal__aside { position: static; flex-basis: 100% !important; }
	.aes-legal__cols { flex-wrap: wrap !important; }
	.aes-legal__main { flex-basis: 100% !important; }
	.aes-legal__h { font-size: 1.5rem; }
}

/* ======================================================= Scrolling
   In-page links land below the sticky header rather than under it,
   and the jump is animated unless the visitor asks for less motion.
   ================================================================= */

html { scroll-behavior: smooth; }
@media ( prefers-reduced-motion: reduce ) {
	html { scroll-behavior: auto; }
}

/* Any anchor target clears the sticky header. */
:target,
[id] { scroll-margin-top: 104px; }

@media ( max-width: 782px ) {
	:target,
	[id] { scroll-margin-top: 80px; }
	.aes-legal__aside { top: 80px; }
}

/* Deliberately NOT setting overflow-x on <body>: with overflow-x hidden the
   browser computes overflow-y as auto, which turns <body> into its own scroll
   container. That breaks position:sticky on the header and makes the page
   scroll in a nested scrollport. Horizontal overflow is handled per-component
   instead (the marquee and strips clip themselves). */

/* ======================================================= Highlight marquee
   The two photo strips scroll continuously in opposite directions: the top
   one travels right, the one below it left. strips.js builds the track and
   its duplicate; the animation lives here.
   ======================================================================== */

.aes-strip.is-marquee { display: block; overflow: hidden; }
.aes-strip__rail {
	display: flex;
	width: max-content;
	--aes-marquee-duration: 40s;
	will-change: transform;
}
.aes-strip__track { display: flex; gap: 14px; padding-right: 14px; }
.aes-strip__track figure,
.aes-strip__track .wp-block-image { margin: 0; flex: 0 0 auto; }

.aes-strip__rail.is-left  { animation: aes-marquee-left  var( --aes-marquee-duration ) linear infinite; }
.aes-strip__rail.is-right { animation: aes-marquee-right var( --aes-marquee-duration ) linear infinite; }

/* Pause on hover or keyboard focus so a photo can actually be looked at. */
.aes-strip.is-marquee:hover .aes-strip__rail,
.aes-strip.is-marquee:focus-within .aes-strip__rail { animation-play-state: paused; }

@keyframes aes-marquee-left  { from { transform: translate3d( 0, 0, 0 ); }        to { transform: translate3d( -50%, 0, 0 ); } }
@keyframes aes-marquee-right { from { transform: translate3d( -50%, 0, 0 ); }     to { transform: translate3d( 0, 0, 0 ); } }

@media ( prefers-reduced-motion: reduce ) {
	.aes-strip__rail { animation: none !important; }
}

/* On phones the marquee replaces the swipe strip, so drop the scroll styling. */
@media ( max-width: 781px ) {
	.aes-strip.is-marquee { overflow-x: hidden; scroll-snap-type: none; padding-inline: 0; }
}

/* ======================================================= Share-card controls
   Real form controls for the generator, styled to the Figma card.
   ========================================================================= */

/* Portrait slot: the label sits behind the chosen photo. */
.aes-sharecard__photo { position: relative; overflow: hidden; }
.aes-sharecard__photo #aes-card-img {
	position: absolute; inset: 0;
	width: 100%; height: 100%;
	object-fit: cover; border-radius: 50%;
}
.aes-sharecard__photo.has-photo .aes-sharecard__photolabel { display: none; }

/* Drop zone / file picker. */
.aes-drop { display: block; cursor: pointer; transition: border-color .15s ease, background .15s ease; }
.aes-drop__title { display: block; font-size: 1.1875rem; font-weight: 700; color: var( --wp--preset--color--ink ); }
.aes-drop__hint  { display: block; margin-top: 8px; font-size: .8125rem; color: var( --wp--preset--color--mute ); }
.aes-drop__file  { display: block; margin-top: 10px; font-size: .8125rem; font-weight: 600; color: var( --wp--preset--color--navy ); }
.aes-drop__input { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.aes-drop.is-over,
.aes-drop:hover { border-color: var( --wp--preset--color--navy ); background: #FAFDFA; }
.aes-drop.has-photo { border-style: solid; border-color: var( --wp--preset--color--navy ); }
.aes-drop:focus-within { outline: 2px solid var( --wp--preset--color--navy ); outline-offset: 3px; }

/* Text fields. */
.aes-fields {
	display: flex;
	/* 18px read as "touching": the boxes are ~260px wide, white-on-near-white,
	   with a hairline border, so a small gap disappeared between them. */
	gap: 32px;
	flex-wrap: wrap;
}
.aes-fields .aes-field { flex: 1 1 200px; }
input.aes-field__box {
	display: block; width: 100%; margin-top: 8px;
	background: #fff; border: 1px solid var( --wp--preset--color--line ); border-radius: 12px;
	padding: 14px 18px; font: inherit; font-size: .90625rem; font-weight: 600;
	color: var( --wp--preset--color--ink );
}
input.aes-field__box::placeholder { color: var( --wp--preset--color--mute ); font-weight: 500; }
input.aes-field__box:focus-visible { outline: 2px solid var( --wp--preset--color--navy ); outline-offset: 1px; border-color: transparent; }

/* Buttons — same shape as the theme's button block, but real <button>s. */
.aes-gen__actions { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 20px; }
.aes-gen__actions--sm { margin-top: 16px; }
.aes-btn {
	font: inherit; font-size: .9375rem; font-weight: 600;
	padding: 16px 30px; border-radius: 999px; border: 1px solid transparent;
	cursor: pointer; transition: background .15s ease, color .15s ease, border-color .15s ease;
}
.aes-btn--green { background: var( --wp--preset--color--navy ); color: #fff; }
.aes-btn--green:hover { background: #102C52; }
.aes-btn--outline { background: #fff; border-color: var( --wp--preset--color--line ); color: var( --wp--preset--color--ink ); }
.aes-btn--outline:hover { border-color: var( --wp--preset--color--ink ); }
.aes-btn--sm { padding: 13px 24px; font-size: .875rem; }
.aes-btn:focus-visible { outline: 2px solid var( --wp--preset--color--navy ); outline-offset: 3px; }

/* Export size. */
.aes-format { border: 0; padding: 0; margin: 16px 0 0; display: flex; gap: 18px; flex-wrap: wrap; align-items: center; }
.aes-format__legend { padding: 0; font-size: .6875rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var( --wp--preset--color--mute ); }
.aes-format label { display: inline-flex; align-items: center; gap: 7px; font-size: .8125rem; font-weight: 500; color: var( --wp--preset--color--body ); cursor: pointer; }
.aes-format input { accent-color: var( --wp--preset--color--navy ); margin: 0; }

.aes-gen__note { margin: 14px 0 0; font-size: .75rem; line-height: 1.6; color: var( --wp--preset--color--mute ); }
.aes-gen__status { margin: 8px 0 0; font-size: .8125rem; font-weight: 600; color: var( --wp--preset--color--navy ); min-height: 1.2em; }
.aes-gen__status.is-error { color: #B3261E; }

@media ( max-width: 600px ) {
	.aes-fields { gap: 20px; }
	.aes-gen__actions .aes-btn { flex: 1 1 100%; }
}

/* ======================================================= Hero, to Figma 26:23
   Measured at 1920x1080: 320px side margins (the 1280 column), three-line
   title with the lime middle line, hairline rule above the foot, and the
   countdown as bordered cells rather than loose numbers.
   =========================================================================== */

.aes-hero__title {
	letter-spacing: -0.0385em;   /* -4.3366px at 112.752px */
	line-height: 0.92;
	max-width: 860px;
}
.aes-hero__accent { color: #5B9BD5; }

.aes-hero__chip {
	font-size: 0.958rem;          /* 15.332px */
	letter-spacing: 0.1167em;     /* 1.7887px */
	border-width: 1.278px;
	border-color: #fff;
	padding: 0.719rem 1.437rem;
}

/* Hairline rule between the headline and the foot row. */
.aes-hero__foot {
	border-top: 1px solid #fff;
	padding-top: 30px;
	margin-top: 0;
}
.aes-hero__lede { max-width: 739px; font-size: 1.363rem; line-height: 1.5; color: #fff; }

/* Countdown cells (Figma 26:38). */
.aes-countdown.is-light { gap: 8px; }
.aes-countdown.is-light .aes-countdown__unit {
	width: 78px;
	padding: 14px 0;
	gap: 6px;
	align-items: center;
	text-align: center;
	background: rgba( 255, 255, 255, 0.08 );
	border: 1px solid #23272F;
	border-radius: 12px;
	backdrop-filter: blur( 2px );
}
.aes-countdown.is-light .aes-countdown__value { font-size: 1.875rem; line-height: 1; }
.aes-countdown.is-light .aes-countdown__label {
	font-size: 0.625rem; letter-spacing: 0.12em; color: #6D7683;
}

@media ( max-width: 600px ) {
	.aes-countdown.is-light .aes-countdown__unit { width: 68px; padding: 11px 0; }
	.aes-countdown.is-light .aes-countdown__value { font-size: 1.5rem; }
}

/* ======================================================= Pricing tiers
   The featured card's badge used to push its heading down, so nothing lined
   up across the row. Every card now carries the badge slot; the non-featured
   ones just hide theirs. Buttons are pinned to the bottom so they align
   whatever the bullet count.
   =================================================================== */

.aes-tier {
	display: flex;
	flex-direction: column;
	transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}
/* The block ships an inline margin-top, so `auto` needs to win for the
   buttons to sit on one line across cards with different bullet counts. */
.aes-tier > .wp-block-buttons { margin-top: auto !important; padding-top: var( --wp--preset--spacing--30 ); }
.aes-tier .is-style-aes-ticks { margin-bottom: 1.5rem; }

.aes-badge--ghost { visibility: hidden; }

/* Hover / keyboard focus. */
.aes-tier:hover,
.aes-tier:focus-within {
	transform: translateY( -4px );
	border-color: var( --wp--preset--color--navy );
	box-shadow: 0 18px 40px -22px rgba( 11, 31, 23, .45 );
}
.aes-tier--featured:hover,
.aes-tier--featured:focus-within { box-shadow: 0 22px 48px -22px rgba( 19, 160, 92, .42 ); }

.aes-tier .wp-block-button__link { transition: background-color .15s ease, color .15s ease, border-color .15s ease; }
.aes-tier .is-style-aes-outline-dark .wp-block-button__link:hover {
	background: var( --wp--preset--color--navy );
	border-color: var( --wp--preset--color--navy );
	color: #fff;
}
.aes-tier--dark:hover,
.aes-tier--dark:focus-within { border-color: #5B9BD5; }

@media ( prefers-reduced-motion: reduce ) {
	.aes-tier, .aes-tier .wp-block-button__link { transition: none; }
	.aes-tier:hover, .aes-tier:focus-within { transform: none; }
}

/* Responsive: 4 across, then 2, then 1. */
@media ( max-width: 1200px ) {
	.aes-equal { flex-wrap: wrap !important; }
	.aes-equal > .wp-block-column { flex-basis: calc( 50% - 1rem ) !important; }
}
@media ( max-width: 700px ) {
	.aes-equal > .wp-block-column { flex-basis: 100% !important; }
	.aes-tier { padding: 1.75rem 1.5rem; }
}


/* ======================================================= Hero to marquee
   The marquee sits flush against the hero, with no light band between them.
   ======================================================================= */

.aes-hero { margin-bottom: 0 !important; }
.aes-marquee { margin-top: 0 !important; margin-bottom: 0 !important; display: block; }
.aes-hero + .aes-marquee,
.aes-hero + * > .aes-marquee:first-child { margin-top: 0 !important; }

/* ======================================================= Sticky header
   .aes-header sat inside a .wp-block-template-part wrapper that is exactly
   as tall as the header, so a sticky child had no travel and scrolled away.
   The wrapper has to be the sticky element instead.
   ==================================================================== */

.wp-site-blocks > .wp-block-template-part:first-child {
	position: sticky;
	top: 0;
	z-index: 60;
}
body.admin-bar .wp-site-blocks > .wp-block-template-part:first-child { top: 32px; }
@media ( max-width: 782px ) {
	body.admin-bar .wp-site-blocks > .wp-block-template-part:first-child { top: 46px; }
}
/* The inner header no longer needs to stick on its own. */
.aes-header { position: static; }

/* ======================================================= About the Summit
   Figma 44:34. The figure is a 600x420 card with the summit photo cropped to
   fill it, over the green gradient, and the section closes with a hairline.
   ====================================================================== */

.aes-about { border-bottom: 1px solid #E6E2D8; }

.aes-about__figure {
	margin: 0;
	border-radius: 16px;
	overflow: hidden;
	background: linear-gradient( 141.5deg, #083221 0%, #136D45 39%, #5B9BD5 71% );
}
.aes-about__figure img {
	display: block;
	width: 100%;
	height: 420px;
	object-fit: cover;
	border-radius: 16px;
}

/* Stat figures sit at 46px in the design. */
.aes-about .aes-stat__value { font-size: clamp( 2rem, 3.2vw, 2.875rem ); letter-spacing: -0.039em; line-height: 1; }
.aes-about .aes-stat__label { font-size: 0.9375rem; color: #4E5560; }

@media ( max-width: 900px ) {
	.aes-about__figure img { height: 300px; }
}

/* Strip images need a size before they load, or the marquee measures a track
   of almost nothing and the row collapses. aspect-ratio gives the browser the
   width from the height immediately, so layout is stable pre-load. */
.aes-strip img,
.aes-strip__track img {
	height: clamp( 150px, 18vw, 238px );
	width: auto;
	aspect-ratio: 16 / 9;
	object-fit: cover;
	border-radius: 14px;
	display: block;
	background: var( --wp--preset--color--haze );
}
.aes-strip .wp-block-image,
.aes-strip__track .wp-block-image { margin: 0; flex: 0 0 auto; }

/* ======================================================= Delegate voices
   A carousel rather than a static row: scroll-snap does the work, so it
   drags on touch and trackpad natively, and the arrows drive it on desktop.
   ===================================================================== */

.aes-voices {
	display: flex !important;
	flex-wrap: nowrap !important;
	gap: var( --wp--preset--spacing--30 );
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	padding-bottom: 4px;
	/* bleed to the viewport edge so cards run off-screen like a carousel */
	scroll-padding-left: 0;
}
.aes-voices::-webkit-scrollbar { display: none; }
.aes-voices > .wp-block-column {
	flex: 0 0 clamp( 280px, 31%, 400px ) !important;
	scroll-snap-align: start;
	margin-left: 0 !important;
}
.aes-voice { height: 100%; transition: transform .18s ease, box-shadow .18s ease; }
.aes-voices > .wp-block-column:hover .aes-voice {
	transform: translateY( -3px );
	box-shadow: 0 16px 34px -20px rgba( 11, 31, 23, .4 );
}

.aes-voices__nav { display: flex; gap: 10px; margin-top: 1.25rem; }
.aes-voices__btn {
	width: 44px; height: 44px; border-radius: 999px; cursor: pointer;
	border: 1px solid var( --wp--preset--color--line );
	background: #fff; color: var( --wp--preset--color--ink );
	font: inherit; font-size: 1.125rem; line-height: 1;
	display: flex; align-items: center; justify-content: center;
	transition: background-color .15s ease, border-color .15s ease, color .15s ease;
}
.aes-voices__btn:hover:not([disabled]) {
	background: var( --wp--preset--color--navy );
	border-color: var( --wp--preset--color--navy );
	color: #fff;
}
.aes-voices__btn[disabled] { opacity: .35; cursor: default; }
.aes-voices__btn:focus-visible { outline: 2px solid var( --wp--preset--color--navy ); outline-offset: 3px; }

@media ( prefers-reduced-motion: reduce ) {
	.aes-voices { scroll-behavior: auto; }
	.aes-voices > .wp-block-column:hover .aes-voice { transform: none; }
}

/* ======================================================= Why attend
   Figma 26:73. Four cards on a fixed colour rotation: clay, deep green,
   pale green, brand green. Numbers and body take the card's own ink.
   ================================================================= */

.aes-whysec { border-bottom: 1px solid #DCE0D6; }
.aes-whysec .aes-eyebrow { font-size: 0.6875rem; letter-spacing: 0.182em; color: #15803D; }

.aes-whygrid { gap: 16px; }
.aes-whygrid > .wp-block-column { margin-top: 0 !important; }

.aes-why {
	border-radius: 22px;
	padding: 26px 26px 30px;
	height: 100%;
	display: flex;
	flex-direction: column;
}

/* Colour rotation, in the design's order. */
.aes-whygrid > .wp-block-column:nth-child(4n+1) .aes-why { background: #EFEBE1; color: #12201A; }
.aes-whygrid > .wp-block-column:nth-child(4n+2) .aes-why { background: #0B5137; color: #FFFFFF; }
.aes-whygrid > .wp-block-column:nth-child(4n+3) .aes-why { background: #E3E9E4; color: #12201A; }
.aes-whygrid > .wp-block-column:nth-child(4n+4) .aes-why { background: #173F73; color: #FFFFFF; }

/* The number, title and body all inherit the card's ink rather than a
   fixed palette colour, so a card only has to set `color` once. */
.aes-why__num {
	margin: 0 0 64px;
	font-size: 3.5rem;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.0357em;
	color: inherit;
}
.aes-why__title {
	margin: 0 0 13px;
	font-size: 1.9375rem !important;
	font-weight: 700;
	line-height: 1;
	letter-spacing: -0.032em;
	color: inherit;
}
.aes-why p:last-child {
	margin: 0;
	font-size: 0.90625rem;
	line-height: 1.5;
	color: inherit;
	opacity: 0.82;
}

@media ( max-width: 1100px ) {
	.aes-whygrid { flex-wrap: wrap !important; }
	.aes-whygrid > .wp-block-column { flex-basis: calc( 50% - 8px ) !important; }
	.aes-why__num { margin-bottom: 40px; }
}
@media ( max-width: 640px ) {
	.aes-whygrid > .wp-block-column { flex-basis: 100% !important; }
}

/* ======================================================= Section seams
   Every full-width section carries its own padding, so WordPress's 22px
   block gap between them only served to show the white page background as
   a band between colours. Sections butt together instead.
   =================================================================== */

.entry-content > *,
.wp-block-post-content > * {
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
}

/* Same at the outer level, or a band appears above the footer. */
.wp-site-blocks > * {
	margin-block-start: 0 !important;
	margin-block-end: 0 !important;
}

/* Closing CTA — centred block, per the footer design system. */
.aes-cta__lede { max-width: 30rem; margin-inline: auto; }

/* ---------------------------------------------------------------------------
 * Solewant brand rules
 *
 * From the guidelines supplied with the rebrand, stated last so they win
 * without each earlier rule having to be found and edited.
 *
 * Two of them reverse what this theme did before: buttons were fully rounded
 * and the guidelines say "avoid excessive rounded pill buttons"; and there was
 * no red at all, where red is now the primary call to action — reserved, in the
 * guidelines' words, for Register, Book a Booth and Become a Sponsor, and never
 * allowed to compete with the blue system elsewhere.
 * ------------------------------------------------------------------------ */

.wp-block-button__link,
.aes-btn,
.aes-form__submit {
	min-height: 48px;
	padding: 13px 26px;
	border-radius: 8px;
	font-family: var( --wp--preset--font-family--display );
	font-weight: 600;
	font-size: 0.9375rem;
	letter-spacing: 0;
}

/* Secondary by default: navy. View Programme, Explore Speakers, Partner With Us. */
.wp-block-button__link,
.aes-btn--green,
.aes-form__submit {
	background-color: var( --wp--preset--color--navy );
	color: var( --wp--preset--color--white );
}

.wp-block-button__link:hover,
.aes-btn--green:hover,
.aes-form__submit:hover {
	background-color: var( --wp--preset--color--navy-deep );
	color: var( --wp--preset--color--white );
}

/*
 * Primary: red. Applied by class rather than to every button, because the
 * guidelines are explicit that red is for high-attention actions only — the
 * CTA rewriter in inc/register-links.php marks exactly those links, so the two
 * stay in step without anybody tagging buttons by hand.
 */
.wp-block-button__link.is-style-primary,
.aes-btn--primary,
.wp-block-button.is-style-primary .wp-block-button__link {
	background-color: var( --wp--preset--color--red );
	color: var( --wp--preset--color--white );
}

.wp-block-button__link.is-style-primary:hover,
.aes-btn--primary:hover,
.wp-block-button.is-style-primary .wp-block-button__link:hover {
	background-color: var( --wp--preset--color--red-deep );
	color: var( --wp--preset--color--white );
}

/* Tertiary: outlined navy on white. */
.aes-btn--outline,
.wp-block-button.is-style-outline .wp-block-button__link {
	background-color: transparent;
	border: 1px solid var( --wp--preset--color--navy );
	color: var( --wp--preset--color--navy );
}

.wp-block-button__link:focus-visible,
.aes-btn:focus-visible {
	outline: 2px solid var( --wp--preset--color--blue );
	outline-offset: 2px;
}

/* Links and secondary headings take Summit Blue, per the palette's stated use. */
.aes-prose a,
.entry-content a:not(.wp-block-button__link) {
	color: var( --wp--preset--color--blue );
}

/* Statistics: Montserrat Bold, as the guidelines specify for key figures. */
.aes-stat__value,
.aes-statgrid strong,
.aes-figure {
	font-family: var( --wp--preset--font-family--display );
	font-weight: 700;
}

/* Long-form reading measure: the guidelines ask for 720–850px on About, FAQs
   and biographies, against 1200–1280 for the page. */
.aes-prose,
.aes-faq__answer,
.aes-bio {
	max-width: 820px;
}
