/**
 * agriNews Event Manager — public design system.
 *
 * Every rule is scoped under .aem-public (AD-29). Nothing here styles body, the
 * theme header, the theme footer or global typography: the theme owns the site,
 * this file owns the plugin's own content and nothing else.
 *
 * No framework, no external font, no hardcoded brand colour. The type family is
 * inherited; the palette arrives as custom properties written per event line
 * (AD-38), and every value below falls back to a neutral that borrows the
 * theme's own text and link colours. A site with no palette configured still
 * looks deliberate.
 *
 * Specificity stays at one class deep so Elementor and the theme can override
 * anything without a fight. There is no !important in this file.
 *
 * Order: tokens, shell, typography, primitives, components, responsive.
 */

/* ------------------------------------------------------------------ tokens */

.aem-public {
	--aem-container: 1240px;
	--aem-gutter: clamp(16px, 4vw, 32px);

	--aem-space-1: 4px;
	--aem-space-2: 8px;
	--aem-space-3: 12px;
	--aem-space-4: 16px;
	--aem-space-5: 24px;
	--aem-space-6: 32px;
	--aem-space-7: 48px;
	--aem-space-8: 64px;
	--aem-space-9: 80px;

	--aem-radius-sm: 8px;
	/* --aem-radius is the documented one: the rest derive from the same idea. */
	--aem-radius: 14px;
	--aem-radius-lg: 20px;
	--aem-radius-pill: 999px;

	/*
	 * The palette. Branding overrides --aem-primary, --aem-secondary and
	 * --aem-primary-contrast, plus their -rgb triplets, per event line; the
	 * rest is neutral and inherits from the theme.
	 */
	--aem-primary: currentColor;
	--aem-primary-rgb: 17 17 17;
	--aem-secondary: currentColor;
	--aem-secondary-rgb: 17 17 17;
	--aem-primary-contrast: #fff;
	--aem-secondary-contrast: #fff;

	--aem-text: inherit;
	--aem-muted: rgba(0, 0, 0, 0.6);
	--aem-border: rgba(0, 0, 0, 0.1);
	--aem-border-strong: rgba(0, 0, 0, 0.18);
	--aem-surface: rgba(0, 0, 0, 0.02);
	--aem-surface-raised: rgba(0, 0, 0, 0.04);
	--aem-card: #fff;

	/* Brand tints, derived from the palette so a site only sets two colours. */
	--aem-primary-soft: rgb(var(--aem-primary-rgb) / 0.08);
	--aem-primary-line: rgb(var(--aem-primary-rgb) / 0.28);
	--aem-secondary-soft: rgb(var(--aem-secondary-rgb) / 0.1);

	--aem-shadow: 0 1px 2px rgba(0, 0, 0, 0.04);
	--aem-shadow-raised: 0 8px 28px rgba(0, 0, 0, 0.08);

	--aem-ratio-portrait: 4 / 5;
	--aem-ratio-landscape: 16 / 9;

	/* Kept for themes that referenced the 1.1 names. */
	--aem-accent: var(--aem-primary);
	--aem-text-muted: var(--aem-muted);

	color: var(--aem-text);
}

/* ------------------------------------------------------------------- shell */

/*
 * The vertical rhythm of a plugin page. A section page is a short archive for
 * most of the year, and a short archive that starts under the header and ends
 * on the footer reads as broken even when it is correct — so the shell reserves
 * its own space and a minimum height instead of leaving the balance to whatever
 * the theme does with an almost empty content area.
 */
.aem-public {
	--aem-shell-top: clamp(40px, 5vw, 72px);
	--aem-shell-bottom: clamp(48px, 6vw, 80px);
}

.aem-public.aem-editions,
.aem-public.aem-edition-hub,
.aem-public.aem-speakers,
.aem-public.aem-sessions,
.aem-public.aem-sponsors,
.aem-public.aem-news,
.aem-public.aem-gallery,
.aem-public.aem-social-feed,
.aem-public.aem-empty {
	display: block;
	margin-block: var(--aem-shell-top) var(--aem-shell-bottom);
	min-block-size: clamp(240px, 30vh, 420px);
}

/* A single owns the whole main area, so it pads: the theme's content wrapper
   is already around it. */
.aem-public.aem-single {
	display: block;
	min-block-size: clamp(320px, 40vh, 560px);
	padding-block: var(--aem-shell-top) var(--aem-shell-bottom);
}

.aem-public .aem-container {
	box-sizing: border-box;
	margin-inline: auto;
	max-width: var(--aem-container);
	padding-inline: var(--aem-gutter);
	width: 100%;
}

.aem-public .aem-single-body > * + * {
	margin-top: var(--aem-space-7);
}

.aem-public .aem-stack {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-5);
}

.aem-public .aem-section + .aem-section {
	margin-top: var(--aem-space-7);
}

/* ------------------------------------------------------------ breadcrumbs */

.aem-public .aem-breadcrumbs {
	color: var(--aem-muted);
	font-size: 0.8125em;
	margin-bottom: var(--aem-space-4);
}

.aem-public .aem-breadcrumb-list {
	align-items: center;
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2);
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-breadcrumb-item a {
	color: inherit;
	text-decoration: none;
}

.aem-public .aem-breadcrumb-item a:hover,
.aem-public .aem-breadcrumb-item a:focus-visible {
	color: var(--aem-primary);
	text-decoration: underline;
}

.aem-public .aem-breadcrumb-item + .aem-breadcrumb-item::before {
	content: "/";
	margin-right: var(--aem-space-2);
	opacity: 0.45;
}

.aem-public .aem-breadcrumb-item [aria-current] {
	color: inherit;
	opacity: 0.85;
}

/* ------------------------------------------------------------- typography */

.aem-public .aem-eyebrow {
	color: var(--aem-primary);
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.12em;
	line-height: 1.4;
	margin: 0 0 var(--aem-space-3);
	text-transform: uppercase;
}

.aem-public .aem-hero-title {
	font-size: clamp(2rem, 1.4rem + 2.4vw, 3.25rem);
	letter-spacing: -0.015em;
	line-height: 1.08;
	margin: 0;
}

.aem-public .aem-hero-role {
	font-size: clamp(1rem, 0.95rem + 0.3vw, 1.25rem);
	margin: var(--aem-space-3) 0 0;
}

.aem-public .aem-hero-company,
.aem-public .aem-hero-lead {
	color: var(--aem-muted);
	margin: var(--aem-space-2) 0 0;
}

.aem-public .aem-hero-lead {
	font-size: 1.0625em;
	max-width: 62ch;
}

.aem-public .aem-section-title {
	font-size: clamp(1.25rem, 1.05rem + 0.8vw, 1.75rem);
	letter-spacing: -0.01em;
	line-height: 1.2;
	margin: 0 0 var(--aem-space-5);
}

.aem-public .aem-section-head {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2) var(--aem-space-4);
	justify-content: space-between;
	margin-bottom: var(--aem-space-5);
}

.aem-public .aem-section-head .aem-section-title {
	margin-bottom: 0;
}

.aem-public .aem-card-title {
	font-size: 1.125em;
	letter-spacing: -0.005em;
	line-height: 1.25;
	margin: 0;
}

.aem-public .aem-meta {
	color: var(--aem-muted);
	font-size: 0.9375em;
	margin: 0;
}

.aem-public .aem-caption {
	color: var(--aem-muted);
	font-size: 0.8125em;
	margin: 0;
}

.aem-public .aem-prose {
	max-width: 72ch;
}

.aem-public .aem-prose > * + * {
	margin-top: var(--aem-space-4);
}

/* -------------------------------------------------------------- primitives */

.aem-public .aem-list,
.aem-public .aem-sublist,
.aem-public .aem-nav-list,
.aem-public .aem-session-list,
.aem-public .aem-sponsor-strip {
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-grid,
.aem-public.aem-speakers .aem-list,
.aem-public.aem-sponsors .aem-list,
.aem-public.aem-news .aem-list,
.aem-public.aem-editions .aem-list {
	display: grid;
	gap: var(--aem-space-5);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}

/* Speakers are the densest archive: four across on a wide container. */
.aem-public.aem-speakers .aem-list {
	gap: var(--aem-space-5) var(--aem-space-4);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 230px), 1fr));
}

.aem-public.aem-news .aem-list,
.aem-public.aem-editions .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
}

.aem-public .aem-grid-people {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}

.aem-public.aem-cols-1 .aem-list {
	grid-template-columns: 1fr;
}

.aem-public.aem-cols-2 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 320px), 1fr));
}

.aem-public.aem-cols-3 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 280px), 1fr));
}

.aem-public.aem-cols-4 .aem-list,
.aem-public.aem-cols-5 .aem-list,
.aem-public.aem-cols-6 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 200px), 1fr));
}

/* ------------------------------------------------------------------- cards */

.aem-public .aem-card,
.aem-public .aem-person-card,
.aem-public .aem-edition-block {
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	box-shadow: var(--aem-shadow);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	padding: var(--aem-space-5);
	position: relative;
	transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

.aem-public .aem-card > :first-child,
.aem-public .aem-edition-block > :first-child {
	margin-top: 0;
}

.aem-public .aem-card:hover,
.aem-public .aem-card:focus-within {
	border-color: var(--aem-primary-line);
	box-shadow: var(--aem-shadow-raised);
	transform: translateY(-2px);
}

.aem-public .aem-card-media {
	margin: 0;
}

.aem-public .aem-card-media img {
	display: block;
	height: auto;
	width: 100%;
}

.aem-public .aem-card-body {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-2);
	min-width: 0;
}

.aem-public .aem-card-cta {
	color: var(--aem-primary);
	font-size: 0.9375em;
	font-weight: 600;
	margin: auto 0 0;
	padding-top: var(--aem-space-4);
}

.aem-public .aem-card-cta::after {
	content: "\2192";
	margin-left: var(--aem-space-2);
}

/*
 * The whole card is clickable through its title link, which stays the only
 * link in the accessibility tree: no duplicated tab stop, no div with a click
 * handler, and the link text is the card title.
 */
.aem-public .aem-stretch::after {
	content: "";
	inset: 0;
	position: absolute;
}

/* Anything that must stay clickable inside a stretched card sits above it. */
.aem-public .aem-above {
	position: relative;
	z-index: 1;
}

/* ------------------------------------------------------------------ pills */

.aem-public .aem-pill {
	background: var(--aem-surface);
	border: 1px solid var(--aem-border-strong);
	border-radius: var(--aem-radius-pill);
	color: inherit;
	display: inline-block;
	font-size: 0.75em;
	font-weight: 600;
	letter-spacing: 0.04em;
	line-height: 1.9;
	margin: 0;
	padding: 0 0.9em;
	text-transform: uppercase;
	width: fit-content;
}

/* The status is spelled out in the label, so colour is never the only signal. */
.aem-public .aem-pill-current,
.aem-public .aem-pill-upcoming {
	background: var(--aem-primary-soft);
	border-color: var(--aem-primary-line);
}

/* ----------------------------------------------------------------- buttons */

.aem-public .aem-button {
	align-items: center;
	background: var(--aem-primary);
	border: 1px solid var(--aem-primary);
	border-radius: var(--aem-radius-sm);
	color: var(--aem-primary-contrast);
	display: inline-flex;
	font-size: 0.9375em;
	font-weight: 600;
	gap: var(--aem-space-2);
	line-height: 1.2;
	padding: 0.85em 1.4em;
	text-decoration: none;
	transition: opacity 150ms ease;
}

.aem-public .aem-button:hover,
.aem-public .aem-button:focus-visible {
	color: var(--aem-primary-contrast);
	opacity: 0.88;
}

.aem-public .aem-button-secondary {
	background: transparent;
	border-color: var(--aem-border-strong);
	color: inherit;
}

.aem-public .aem-button-secondary:hover,
.aem-public .aem-button-secondary:focus-visible {
	border-color: var(--aem-primary);
	color: var(--aem-primary);
	opacity: 1;
}

.aem-public .aem-link-cta {
	color: var(--aem-primary);
	font-weight: 600;
	text-decoration: none;
}

.aem-public .aem-link-cta:hover,
.aem-public .aem-link-cta:focus-visible {
	text-decoration: underline;
}

/* -------------------------------------------------------------------- hero */

.aem-public .aem-hero {
	align-items: start;
	display: grid;
	gap: var(--aem-space-7);
	grid-template-columns: minmax(0, 360px) minmax(0, 1fr);
	margin-bottom: var(--aem-space-7);
}

.aem-public .aem-session-hero,
.aem-public .aem-social-hero {
	grid-template-columns: minmax(0, 1fr);
}

.aem-public .aem-hero-media,
.aem-public .aem-hero-logo {
	margin: 0;
}

/* A portrait is a portrait: one ratio and a ceiling, never the file's own
   1000px. */
.aem-public .aem-hero-media img {
	aspect-ratio: var(--aem-ratio-portrait);
	border-radius: var(--aem-radius-lg);
	display: block;
	height: auto;
	max-width: 380px;
	object-fit: cover;
	width: 100%;
}

/* A logo is not a photograph: it keeps its own proportions and is never
   stretched to fill a box. */
.aem-public .aem-hero-logo img {
	display: block;
	height: auto;
	max-height: 120px;
	max-width: 240px;
	object-fit: contain;
	width: auto;
}

.aem-public .aem-meta-list {
	color: var(--aem-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: 0.9375em;
	gap: var(--aem-space-2) var(--aem-space-4);
	list-style: none;
	margin: 0 0 var(--aem-space-3);
	padding: 0;
}

.aem-public .aem-meta-item + .aem-meta-item::before {
	content: "\00b7";
	margin-right: var(--aem-space-4);
	opacity: 0.6;
}

.aem-public .aem-links {
	display: flex;
	flex-wrap: wrap;
	font-size: 0.9375em;
	gap: var(--aem-space-4);
	list-style: none;
	margin: var(--aem-space-4) 0 0;
	padding: 0;
}

/* ------------------------------------------------------------ person cards */

.aem-public .aem-person-card {
	align-items: center;
	display: grid;
	gap: var(--aem-space-4);
	grid-template-columns: 64px minmax(0, 1fr);
	padding: var(--aem-space-4);
}

.aem-public .aem-person-photo {
	margin: 0;
}

.aem-public .aem-person-photo img {
	aspect-ratio: 1;
	border-radius: 50%;
	display: block;
	height: 64px;
	object-fit: cover;
	width: 64px;
}

.aem-public .aem-person-body {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.aem-public .aem-person-name {
	font-size: 1em;
	line-height: 1.3;
	margin: 0;
}

.aem-public .aem-person-role,
.aem-public .aem-person-company {
	color: var(--aem-muted);
	font-size: 0.875em;
	margin: 0;
}

.aem-public .aem-person-cta {
	font-size: 0.9375em;
	margin: var(--aem-space-2) 0 0;
}

/* ----------------------------------------------------------- speaker cards */

.aem-public .aem-speaker {
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-1);
	overflow: hidden;
	padding: 0 0 var(--aem-space-5);
	position: relative;
	transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

.aem-public .aem-speaker:hover,
.aem-public .aem-speaker:focus-within {
	border-color: var(--aem-primary-line);
	box-shadow: var(--aem-shadow-raised);
	transform: translateY(-2px);
}

.aem-public .aem-speaker-photo {
	background: var(--aem-surface);
	margin: 0 0 var(--aem-space-4);
}

/* One ratio for every portrait, whatever the editor uploaded. */
.aem-public .aem-speaker-photo img {
	aspect-ratio: var(--aem-ratio-portrait);
	display: block;
	height: auto;
	object-fit: cover;
	object-position: center top;
	width: 100%;
}

.aem-public .aem-speaker-name {
	font-size: 1.0625em;
	line-height: 1.3;
	margin: 0;
	padding-inline: var(--aem-space-5);
}

.aem-public .aem-speaker-name a {
	color: inherit;
	text-decoration: none;
}

.aem-public .aem-speaker:hover .aem-speaker-name,
.aem-public .aem-speaker:focus-within .aem-speaker-name {
	color: var(--aem-primary);
}

.aem-public .aem-speaker-job-title,
.aem-public .aem-speaker-company {
	color: var(--aem-muted);
	font-size: 0.875em;
	line-height: 1.45;
	margin: 0;
	padding-inline: var(--aem-space-5);
}

/* --------------------------------------------------------- edition archive */

.aem-public .aem-editions-intro {
	color: var(--aem-muted);
	margin: 0 0 var(--aem-space-6);
	max-width: 68ch;
}

.aem-public .aem-editions-group + .aem-editions-group {
	margin-top: var(--aem-space-8);
}

.aem-public .aem-editions-group-label {
	font-size: clamp(1.125rem, 1rem + 0.5vw, 1.5rem);
	margin: 0 0 var(--aem-space-5);
}

.aem-public .aem-edition-card {
	gap: var(--aem-space-2);
	padding: 0;
}

.aem-public .aem-edition-card .aem-card-media img {
	aspect-ratio: var(--aem-ratio-landscape);
	object-fit: cover;
}

.aem-public .aem-edition-card .aem-card-body {
	gap: var(--aem-space-2);
	padding: var(--aem-space-5);
}

.aem-public .aem-edition-year {
	color: var(--aem-muted);
	font-size: 0.8125em;
	font-variant-numeric: tabular-nums;
	letter-spacing: 0.08em;
	margin: 0;
	text-transform: uppercase;
}

.aem-public .aem-edition-name {
	font-size: 1.1875em;
	margin: 0;
}

.aem-public .aem-edition-name a {
	color: inherit;
	text-decoration: none;
}

.aem-public .aem-edition-card:hover .aem-edition-name,
.aem-public .aem-edition-card:focus-within .aem-edition-name {
	color: var(--aem-primary);
}

.aem-public .aem-edition-card-counts {
	color: var(--aem-muted);
	display: flex;
	flex-wrap: wrap;
	font-size: 0.875em;
	gap: var(--aem-space-2) var(--aem-space-4);
	list-style: none;
	margin: var(--aem-space-2) 0 0;
	padding: 0;
}

.aem-public .aem-edition-card-counts strong {
	font-variant-numeric: tabular-nums;
}

.aem-public .aem-edition-cta {
	margin-top: auto;
	padding-top: var(--aem-space-4);
}

/* The featured edition is one wide card, not a card in a grid of one. */
.aem-public .aem-editions-featured .aem-list {
	display: block;
}

.aem-public .aem-edition-hero {
	border-color: var(--aem-primary-line);
	display: grid;
	gap: 0;
	grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
	padding: 0;
}

.aem-public .aem-edition-hero:hover,
.aem-public .aem-edition-hero:focus-within {
	transform: none;
}

.aem-public .aem-edition-hero .aem-card-media {
	height: 100%;
}

.aem-public .aem-edition-hero .aem-card-media img {
	aspect-ratio: auto;
	height: 100%;
	min-height: 280px;
	object-fit: cover;
}

.aem-public .aem-edition-hero .aem-card-body {
	gap: var(--aem-space-3);
	justify-content: center;
	padding: clamp(24px, 3vw, 48px);
}

.aem-public .aem-edition-hero .aem-edition-name {
	font-size: clamp(1.5rem, 1.2rem + 1.4vw, 2.25rem);
	letter-spacing: -0.015em;
	line-height: 1.1;
}

.aem-public .aem-edition-hero .aem-edition-card-counts {
	font-size: 0.9375em;
	gap: var(--aem-space-3) var(--aem-space-5);
}

/* Kept from 1.1: a second, non colour signal on the current edition. */
.aem-public .aem-edition-featured {
	border-color: var(--aem-primary-line);
}

/* ------------------------------------------------------------- edition hub */

.aem-public .aem-hub-header {
	border-bottom: 1px solid var(--aem-border);
	margin-bottom: var(--aem-space-7);
	padding-bottom: var(--aem-space-6);
}

.aem-public .aem-hub-media {
	margin: 0 0 var(--aem-space-5);
}

.aem-public .aem-hub-media img {
	aspect-ratio: var(--aem-ratio-landscape);
	border-radius: var(--aem-radius-lg);
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}

.aem-public .aem-hub-line {
	color: var(--aem-primary);
	font-size: 0.75em;
	font-weight: 700;
	letter-spacing: 0.12em;
	margin: 0 0 var(--aem-space-3);
	text-transform: uppercase;
}

.aem-public .aem-hub-title {
	font-size: clamp(2rem, 1.4rem + 2.4vw, 3.25rem);
	letter-spacing: -0.015em;
	line-height: 1.08;
	margin: 0 0 var(--aem-space-4);
}

.aem-public .aem-hub-facts {
	align-items: center;
	color: var(--aem-muted);
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-3) var(--aem-space-5);
}

.aem-public .aem-hub-dates,
.aem-public .aem-hub-place {
	font-size: 1.0625em;
	margin: 0;
}

.aem-public .aem-hub-sections-title {
	font-size: clamp(1.125rem, 1rem + 0.5vw, 1.5rem);
	margin: 0 0 var(--aem-space-5);
}

/* ------------------------------------------------------------- navigation */

.aem-public .aem-nav-list {
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-3);
}

.aem-public.aem-nav-stacked .aem-nav-list {
	align-items: stretch;
	flex-direction: column;
}

.aem-public .aem-nav-link {
	align-items: center;
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius-pill);
	color: inherit;
	display: inline-flex;
	gap: var(--aem-space-2);
	padding: 0.6em 1.1em;
	text-decoration: none;
	transition: border-color 150ms ease, background-color 150ms ease;
}

.aem-public .aem-nav-link:hover,
.aem-public .aem-nav-link:focus-visible {
	background: var(--aem-primary-soft);
	border-color: var(--aem-primary-line);
	color: inherit;
}

.aem-public .aem-nav-link.is-current {
	background: var(--aem-primary-soft);
	border-color: var(--aem-primary-line);
	font-weight: 600;
}

.aem-public .aem-nav-count {
	color: var(--aem-muted);
	font-size: 0.8125em;
	font-variant-numeric: tabular-nums;
}

/* The card variant: the section grid of the hub. Subtle surfaces with one
   brand accent, never eight saturated blocks. */
.aem-public .aem-nav-cards .aem-nav-list {
	display: grid;
	gap: var(--aem-space-4);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr));
}

.aem-public .aem-nav-cards .aem-nav-link {
	align-items: flex-start;
	background: var(--aem-card);
	border-radius: var(--aem-radius);
	flex-direction: column;
	gap: var(--aem-space-1);
	height: 100%;
	overflow: hidden;
	padding: var(--aem-space-5);
	position: relative;
}

.aem-public .aem-nav-cards .aem-nav-link::before {
	background: var(--aem-primary);
	content: "";
	height: 3px;
	left: 0;
	opacity: 0;
	position: absolute;
	right: 0;
	top: 0;
	transition: opacity 150ms ease;
}

.aem-public .aem-nav-cards .aem-nav-link:hover::before,
.aem-public .aem-nav-cards .aem-nav-link:focus-visible::before,
.aem-public .aem-nav-cards .aem-nav-link.is-current::before {
	opacity: 1;
}

.aem-public .aem-nav-card-title {
	font-size: 1.0625em;
	font-weight: 600;
}

.aem-public .aem-nav-card-count {
	color: var(--aem-muted);
	font-size: 0.875em;
}

.aem-public .aem-nav-card-cta {
	color: var(--aem-primary);
	font-size: 0.875em;
	font-weight: 600;
	margin-top: var(--aem-space-3);
}

/* --------------------------------------------------------- session cards */

.aem-public .aem-session-group {
	border-bottom: 1px solid var(--aem-border);
	font-size: 1.0625em;
	letter-spacing: 0.04em;
	margin: var(--aem-space-7) 0 var(--aem-space-4);
	padding-bottom: var(--aem-space-2);
	text-transform: uppercase;
}

.aem-public .aem-session-group:first-child {
	margin-top: 0;
}

.aem-public.aem-sessions .aem-list {
	display: grid;
	gap: var(--aem-space-5);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 420px), 1fr));
}

/* ------------------------------------------------------------------ agenda */

/*
 * The programme of the event: one row per session, the hour on the left, the
 * face of who gives it beside it, the session in the middle and its sponsor on
 * the right. Rows sit one under another because that is how a programme is
 * read, not because a grid was easier.
 */
.aem-public.aem-agenda .aem-list {
	display: block;
}

.aem-public.aem-agenda .aem-session {
	align-items: start;
	border: 0;
	border-bottom: 1px solid var(--aem-border);
	border-radius: 0;
	box-shadow: none;
	column-gap: var(--aem-space-5);
	display: grid;
	grid-template-columns: 7rem 88px minmax(0, 1fr) minmax(0, 190px);
	padding: var(--aem-space-5) var(--aem-space-2);
	row-gap: var(--aem-space-3);
}

.aem-public.aem-agenda .aem-session:hover,
.aem-public.aem-agenda .aem-session:focus-within {
	background: var(--aem-primary-soft);
	border-color: var(--aem-primary-line);
	box-shadow: none;
	transform: none;
}

.aem-public.aem-agenda .aem-session-schedule {
	font-size: 1rem;
	letter-spacing: 0;
	padding-top: 2px;
}

.aem-public .aem-session-face {
	margin: 0;
}

.aem-public .aem-session-face img {
	aspect-ratio: 1;
	border-radius: 50%;
	display: block;
	height: 88px;
	object-fit: cover;
	object-position: center top;
	width: 88px;
}

.aem-public .aem-session-body {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-2);
	min-width: 0;
}

.aem-public.aem-agenda .aem-session-speakers {
	flex-direction: column;
	gap: var(--aem-space-1);
}

.aem-public .aem-session-speaker-name {
	font-weight: 600;
}

.aem-public.aem-agenda .aem-session-speaker {
	display: flex;
	flex-direction: column;
}

.aem-public .aem-session-support {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-2);
	text-align: right;
}

.aem-public .aem-session-support-label {
	color: var(--aem-muted);
	font-size: 0.75em;
	letter-spacing: 0.06em;
	margin: 0;
	text-transform: uppercase;
}

.aem-public .aem-session-support .aem-session-sponsors {
	border: 0;
	justify-content: flex-end;
	padding: 0;
}

.aem-public .aem-session {
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-3);
	padding: var(--aem-space-5);
	position: relative;
	transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

.aem-public .aem-session:hover,
.aem-public .aem-session:focus-within {
	border-color: var(--aem-primary-line);
	box-shadow: var(--aem-shadow-raised);
	transform: translateY(-2px);
}

.aem-public .aem-session-schedule {
	align-items: center;
	color: var(--aem-primary);
	display: flex;
	flex-wrap: wrap;
	font-size: 0.8125em;
	font-variant-numeric: tabular-nums;
	font-weight: 700;
	gap: var(--aem-space-2);
	letter-spacing: 0.06em;
	margin: 0;
	text-transform: uppercase;
}

.aem-public .aem-session-title {
	font-size: 1.1875em;
	line-height: 1.25;
	margin: 0;
}

.aem-public .aem-session-title a {
	color: inherit;
	text-decoration: none;
}

.aem-public .aem-session:hover .aem-session-title,
.aem-public .aem-session:focus-within .aem-session-title {
	color: var(--aem-primary);
}

.aem-public .aem-session-room {
	color: var(--aem-muted);
	font-size: 0.875em;
	margin: 0;
}

.aem-public .aem-session-excerpt {
	color: var(--aem-muted);
	margin: 0;
}

.aem-public .aem-session-speakers {
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2) var(--aem-space-4);
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-session-speaker {
	font-size: 0.9375em;
}

.aem-public .aem-session-speaker a {
	color: inherit;
	text-decoration: none;
}

.aem-public .aem-session-speaker a:hover,
.aem-public .aem-session-speaker a:focus-visible {
	text-decoration: underline;
}

.aem-public .aem-session-speaker-role {
	color: var(--aem-muted);
	font-size: 0.875em;
}

.aem-public .aem-session-sponsors {
	align-items: center;
	border-top: 1px solid var(--aem-border);
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-3) var(--aem-space-4);
	list-style: none;
	margin: 0;
	padding: var(--aem-space-3) 0 0;
}

.aem-public .aem-session-sponsor {
	align-items: center;
	display: flex;
	gap: var(--aem-space-2);
}

.aem-public .aem-session-sponsor-label {
	color: var(--aem-muted);
	font-size: 0.6875em;
	letter-spacing: 0.06em;
	text-transform: uppercase;
}

.aem-public .aem-session-sponsor-logo {
	display: block;
	height: auto;
	max-height: 28px;
	max-width: 100px;
	object-fit: contain;
	width: auto;
}

.aem-public .aem-session-sponsor-name {
	color: var(--aem-muted);
	font-size: 0.875em;
}

.aem-public .aem-session-pdf {
	margin: 0;
}

.aem-public .aem-session-pdf a {
	align-items: center;
	border: 1px solid var(--aem-border-strong);
	border-radius: var(--aem-radius-pill);
	color: inherit;
	display: inline-flex;
	font-size: 0.8125em;
	gap: var(--aem-space-2);
	padding: 0.35em 0.9em;
	text-decoration: none;
}

.aem-public .aem-session-pdf a::before {
	content: "\2193";
}

.aem-public .aem-session-pdf a:hover,
.aem-public .aem-session-pdf a:focus-visible {
	border-color: var(--aem-primary);
	color: var(--aem-primary);
}

.aem-public .aem-session-cta {
	color: var(--aem-primary);
	font-size: 0.9375em;
	font-weight: 600;
	margin: auto 0 0;
	padding-top: var(--aem-space-2);
}

.aem-public .aem-session-cta::after {
	content: "\2192";
	margin-left: var(--aem-space-2);
}

/* The compact list used inside a speaker single or an edition block. */
.aem-public .aem-session-list {
	border-top: 1px solid var(--aem-border);
}

.aem-public .aem-session-item {
	border-bottom: 1px solid var(--aem-border);
}

.aem-public .aem-session-item-link {
	align-items: baseline;
	color: inherit;
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2) var(--aem-space-4);
	padding: var(--aem-space-3) 0;
	text-decoration: none;
}

.aem-public .aem-session-item-link:hover .aem-session-item-title,
.aem-public .aem-session-item-link:focus-visible .aem-session-item-title {
	color: var(--aem-primary);
	text-decoration: underline;
}

.aem-public .aem-session-item-when {
	color: var(--aem-muted);
	flex: 0 0 auto;
	font-size: 0.875em;
	font-variant-numeric: tabular-nums;
	min-width: 9rem;
}

.aem-public .aem-session-item-title {
	flex: 1 1 14rem;
	min-width: 0;
}

/* -------------------------------------------------------- edition blocks */

.aem-public .aem-edition-block-head {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2) var(--aem-space-4);
	justify-content: space-between;
	margin-bottom: var(--aem-space-3);
}

.aem-public .aem-edition-block-title {
	font-size: 1.0625em;
	margin: 0;
}

.aem-public .aem-edition-block-empty {
	color: var(--aem-muted);
	margin: 0;
}

/* ---------------------------------------------------------------- sponsors */

.aem-public .aem-sponsor-tier-label {
	border-bottom: 1px solid var(--aem-border);
	font-size: 0.875em;
	letter-spacing: 0.1em;
	margin: 0 0 var(--aem-space-5);
	padding-bottom: var(--aem-space-2);
	text-transform: uppercase;
}

.aem-public .aem-sponsor-tier + .aem-sponsor-tier {
	margin-top: var(--aem-space-7);
}

.aem-public.aem-sponsors .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr));
}

/*
 * Logo size follows the tier: Fundador reads as Fundador without a label. Every
 * slot inside one tier is the same size, so no logo is ever stretched to fill
 * a box, and the grid is a grid of logos rather than a wall of white cards.
 */
.aem-public .aem-tier-rank-1 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
}

.aem-public .aem-tier-rank-2 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 220px), 1fr));
}

.aem-public .aem-tier-rank-3 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 180px), 1fr));
}

.aem-public .aem-tier-rank-4 .aem-list,
.aem-public .aem-tier-rank-5 .aem-list,
.aem-public .aem-tier-rank-6 .aem-list {
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr));
}

.aem-public .aem-sponsor {
	align-items: center;
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius-sm);
	display: flex;
	justify-content: center;
	min-height: 96px;
	padding: var(--aem-space-4);
	position: relative;
	transition: border-color 150ms ease;
}

.aem-public .aem-sponsor:hover,
.aem-public .aem-sponsor:focus-within {
	border-color: var(--aem-primary-line);
}

.aem-public .aem-tier-rank-1 .aem-sponsor {
	min-height: 148px;
}

.aem-public .aem-tier-rank-2 .aem-sponsor {
	min-height: 124px;
}

.aem-public .aem-tier-rank-3 .aem-sponsor {
	min-height: 104px;
}

.aem-public .aem-tier-rank-1 .aem-sponsor-logo {
	max-height: 104px;
}

.aem-public .aem-tier-rank-2 .aem-sponsor-logo {
	max-height: 84px;
}

.aem-public .aem-tier-rank-3 .aem-sponsor-logo {
	max-height: 64px;
}

.aem-public .aem-tier-rank-4 .aem-sponsor-logo,
.aem-public .aem-tier-rank-5 .aem-sponsor-logo,
.aem-public .aem-tier-rank-6 .aem-sponsor-logo {
	max-height: 52px;
}

.aem-public .aem-sponsor-link {
	align-items: center;
	color: inherit;
	display: flex;
	justify-content: center;
	text-decoration: none;
	width: 100%;
}

.aem-public .aem-sponsor-logo,
.aem-public .aem-sponsor-link img,
.aem-public .aem-sponsor-chip-logo {
	display: block;
	height: auto;
	max-height: 64px;
	max-width: 100%;
	object-fit: contain;
	width: auto;
}



.aem-public .aem-sponsor-strip {
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-4);
}

.aem-public .aem-sponsor-chip {
	align-items: flex-start;
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-2);
	padding: var(--aem-space-4);
}

.aem-public .aem-sponsor-chip-label {
	color: var(--aem-muted);
	font-size: 0.6875em;
	letter-spacing: 0.06em;
	margin: 0;
	text-transform: uppercase;
}

.aem-public .aem-sponsor-chip-link {
	align-items: center;
	color: inherit;
	display: flex;
	text-decoration: none;
}

/* -------------------------------------------------------------------- news */

.aem-public .aem-news-item {
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	display: flex;
	flex-direction: column;
	overflow: hidden;
	position: relative;
	transition: border-color 150ms ease, box-shadow 150ms ease, transform 150ms ease;
}

.aem-public .aem-news-item:hover,
.aem-public .aem-news-item:focus-within {
	border-color: var(--aem-primary-line);
	box-shadow: var(--aem-shadow-raised);
	transform: translateY(-2px);
}

.aem-public .aem-news-image {
	background: var(--aem-surface);
	margin: 0;
}

.aem-public .aem-news-image img {
	aspect-ratio: var(--aem-ratio-landscape);
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}

.aem-public .aem-news-body {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: var(--aem-space-2);
	padding: var(--aem-space-5);
}

.aem-public .aem-news-date {
	color: var(--aem-muted);
	font-size: 0.8125em;
	letter-spacing: 0.06em;
	margin: 0;
	text-transform: uppercase;
}

.aem-public .aem-news-title {
	font-size: 1.125em;
	line-height: 1.3;
	margin: 0;
}

.aem-public .aem-news-title a {
	color: inherit;
	text-decoration: none;
}

.aem-public .aem-news-item:hover .aem-news-title,
.aem-public .aem-news-item:focus-within .aem-news-title {
	color: var(--aem-primary);
}

.aem-public .aem-news-excerpt {
	color: var(--aem-muted);
	margin: 0;
}

.aem-public .aem-news-cta {
	color: var(--aem-primary);
	font-size: 0.9375em;
	font-weight: 600;
	margin: auto 0 0;
	padding-top: var(--aem-space-3);
}

.aem-public .aem-news-cta::after {
	content: "\2192";
	margin-left: var(--aem-space-2);
}

/* --------------------------------------------------------- social archive */

/*
 * The archive is the creative. Everything else lives on the single, and the
 * meta strip is revealed on hover and on keyboard focus so it is reachable
 * without a pointer.
 */
.aem-public .aem-social-grid {
	display: grid;
	gap: var(--aem-space-4);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-social-tile {
	height: 100%;
}

.aem-public .aem-social-tile-link {
	border-radius: var(--aem-radius);
	color: inherit;
	display: block;
	overflow: hidden;
	position: relative;
	text-decoration: none;
}

.aem-public .aem-social-tile-media {
	background: var(--aem-surface);
	display: block;
}

.aem-public .aem-social-tile-media img {
	aspect-ratio: 1 / 1;
	display: block;
	height: auto;
	object-fit: cover;
	transition: transform 200ms ease;
	width: 100%;
}

.aem-public .aem-social-tile-link:hover img,
.aem-public .aem-social-tile-link:focus-visible img {
	transform: scale(1.03);
}

.aem-public .aem-social-tile-fallback {
	aspect-ratio: 1 / 1;
	background: var(--aem-surface-raised);
	display: block;
	width: 100%;
}

.aem-public .aem-social-tile-meta {
	align-items: baseline;
	background: linear-gradient(transparent, rgba(0, 0, 0, 0.75));
	bottom: 0;
	color: #fff;
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2) var(--aem-space-3);
	left: 0;
	opacity: 0;
	padding: var(--aem-space-6) var(--aem-space-4) var(--aem-space-4);
	position: absolute;
	right: 0;
	transition: opacity 150ms ease;
}

.aem-public .aem-social-tile-link:hover .aem-social-tile-meta,
.aem-public .aem-social-tile-link:focus-visible .aem-social-tile-meta {
	opacity: 1;
}

.aem-public .aem-social-tile-date {
	font-size: 0.8125em;
	font-weight: 600;
}

.aem-public .aem-social-tile-networks {
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2);
}

.aem-public .aem-social-tile-network {
	font-size: 0.75em;
	opacity: 0.9;
}

.aem-public .aem-social-tile-cta {
	flex-basis: 100%;
	font-size: 0.8125em;
	font-weight: 600;
}

.aem-public .aem-social-tile-cta::after {
	content: "\2192";
	margin-left: var(--aem-space-2);
}

/* Without hover there is nothing to reveal, so the strip simply stays on. */
@media (hover: none) {
	.aem-public .aem-social-tile-meta {
		opacity: 1;
	}
}

/* ------------------------------------------------------------- social feed */

.aem-public .aem-social-feed {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-6);
}

/* Image left, content right on desktop; stacked on a narrow screen. */
.aem-public .aem-social-feed .aem-social-post {
	align-items: start;
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	display: grid;
	gap: var(--aem-space-5);
	grid-template-columns: minmax(0, 45fr) minmax(0, 55fr);
	overflow: hidden;
	padding: var(--aem-space-5);
}

.aem-public .aem-social-media {
	margin: 0;
}

.aem-public .aem-social-media img {
	border-radius: var(--aem-radius-sm);
	display: block;
	height: auto;
	width: 100%;
}

.aem-public .aem-social-body {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-3);
	min-width: 0;
}

.aem-public .aem-social-date {
	color: var(--aem-muted);
	font-size: 0.8125em;
	letter-spacing: 0.06em;
	margin: 0;
	text-transform: uppercase;
}

/* A social copy is full of hashtags and URLs: it wraps instead of scrolling. */
.aem-public .aem-social-copy {
	margin: 0;
	max-width: 62ch;
	overflow-wrap: anywhere;
}

.aem-public .aem-social-copy p {
	margin: 0 0 var(--aem-space-3);
}

.aem-public .aem-social-copy p:last-child {
	margin-bottom: 0;
}

.aem-public .aem-social-links {
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2);
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-social-link {
	align-items: center;
	border: 1px solid var(--aem-border-strong);
	border-radius: var(--aem-radius-pill);
	color: inherit;
	display: inline-flex;
	font-size: 0.875em;
	font-weight: 600;
	gap: var(--aem-space-2);
	padding: 0.45em 1em;
	text-decoration: none;
	transition: border-color 150ms ease, color 150ms ease;
}

.aem-public .aem-social-link:hover,
.aem-public .aem-social-link:focus-visible {
	border-color: var(--aem-primary);
	color: var(--aem-primary);
}

.aem-public .aem-social-more {
	margin: var(--aem-space-2) 0 0;
}

/* ----------------------------------------------------------- social single */

.aem-public .aem-social-single-layout {
	align-items: start;
	display: grid;
	gap: clamp(24px, 4vw, 56px);
	grid-template-columns: minmax(0, 45fr) minmax(0, 55fr);
}

.aem-public .aem-social-single-media {
	margin: 0;
}

.aem-public .aem-social-single-media img {
	border-radius: var(--aem-radius);
	display: block;
	height: auto;
	max-width: 100%;
}

.aem-public .aem-social-single-media figcaption {
	color: var(--aem-muted);
	font-size: 0.8125em;
	margin-top: var(--aem-space-2);
}

.aem-public .aem-social-single-content {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-5);
	min-width: 0;
}

.aem-public .aem-social-single-links .aem-section-title {
	font-size: 1.0625em;
	margin-bottom: var(--aem-space-3);
}

/* ----------------------------------------------------------------- gallery */

.aem-public .aem-gallery-grid {
	display: grid;
	gap: var(--aem-space-4);
	grid-template-columns: repeat(auto-fill, minmax(min(100%, 260px), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-gallery-figure {
	margin: 0;
}

/* The link wraps the image; the image itself carries .aem-gallery-image. */
.aem-public .aem-gallery-link {
	border-radius: var(--aem-radius-sm);
	display: block;
	overflow: hidden;
	text-decoration: none;
}

.aem-public .aem-gallery-image {
	aspect-ratio: 4 / 3;
	background: var(--aem-surface);
	border-radius: var(--aem-radius-sm);
	display: block;
	height: auto;
	object-fit: cover;
	transition: transform 200ms ease;
	width: 100%;
}

.aem-public .aem-gallery-link .aem-gallery-image {
	border-radius: 0;
}

.aem-public .aem-gallery-link:hover .aem-gallery-image,
.aem-public .aem-gallery-link:focus-visible .aem-gallery-image {
	transform: scale(1.03);
}

.aem-public .aem-gallery-caption {
	color: var(--aem-muted);
	font-size: 0.8125em;
	margin-top: var(--aem-space-2);
}

/* ----------------------------------------------------------------- tickets */

.aem-public .aem-ticket-grid {
	display: grid;
	gap: var(--aem-space-5);
	grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr));
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-ticket {
	background: var(--aem-card);
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius);
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-3);
	padding: clamp(24px, 3vw, 40px);
}

/* The recommended ticket is outlined and labelled: the outline alone would be
   colour as the only signal. */
.aem-public .aem-ticket-featured {
	border-color: var(--aem-primary);
	box-shadow: var(--aem-shadow-raised);
}

.aem-public .aem-ticket-inactive {
	opacity: 0.7;
}

.aem-public .aem-ticket-name {
	font-size: clamp(1.125rem, 1rem + 0.5vw, 1.5rem);
	letter-spacing: 0.02em;
	margin: 0;
	text-transform: uppercase;
}

.aem-public .aem-ticket-subtitle {
	color: var(--aem-muted);
	margin: var(--aem-space-2) 0 0;
}

.aem-public .aem-ticket-price {
	align-items: baseline;
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-3);
	margin: 0;
}

.aem-public .aem-ticket-amount {
	color: var(--aem-primary);
	font-size: clamp(2rem, 1.6rem + 1.6vw, 2.75rem);
	font-weight: 700;
	line-height: 1;
}

.aem-public .aem-ticket-old-price {
	color: var(--aem-muted);
	font-size: 1.125em;
}

.aem-public .aem-ticket-description,
.aem-public .aem-ticket-note {
	color: var(--aem-muted);
	margin: 0;
}

.aem-public .aem-ticket-note {
	font-size: 0.875em;
}

.aem-public .aem-ticket-action {
	margin: var(--aem-space-2) 0 0;
}

.aem-public .aem-ticket-button {
	justify-content: center;
	width: 100%;
}

.aem-public .aem-ticket-status {
	color: var(--aem-muted);
	font-weight: 600;
	margin: 0;
}

.aem-public .aem-ticket-includes {
	border-top: 1px solid var(--aem-border);
	margin-top: auto;
	padding-top: var(--aem-space-4);
}

.aem-public .aem-ticket-includes-title {
	font-size: 1em;
	margin: 0 0 var(--aem-space-3);
}

.aem-public .aem-ticket-inclusions {
	display: flex;
	flex-direction: column;
	gap: var(--aem-space-2);
	list-style: none;
	margin: 0;
	padding: 0;
}

.aem-public .aem-ticket-inclusions li {
	padding-left: 1.6em;
	position: relative;
}

.aem-public .aem-ticket-inclusions li::before {
	color: var(--aem-primary);
	content: "¹3";
	font-weight: 700;
	left: 0;
	position: absolute;
}

/* ----------------------------------------------------------- section intro */

.aem-public .aem-section-intro {
	color: var(--aem-muted);
	font-size: 1.0625em;
	margin: 0 0 var(--aem-space-6);
	max-width: 62ch;
}

/* -------------------------------------------------------- empty and footer */

.aem-public .aem-empty-message {
	background: var(--aem-surface);
	border: 1px dashed var(--aem-border-strong);
	border-radius: var(--aem-radius);
	color: var(--aem-muted);
	margin: 0;
	padding: clamp(28px, 5vw, 56px);
	text-align: center;
}

.aem-public .aem-single-back {
	border-top: 1px solid var(--aem-border);
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-4);
	justify-content: space-between;
	margin-top: var(--aem-space-7);
	padding-top: var(--aem-space-5);
}

.aem-public .aem-back-link {
	color: inherit;
	font-weight: 600;
	text-decoration: none;
}

.aem-public .aem-back-link:hover,
.aem-public .aem-back-link:focus-visible {
	color: var(--aem-primary);
	text-decoration: underline;
}

.aem-public .aem-back-prev::before {
	content: "\2190";
	margin-right: var(--aem-space-2);
}

.aem-public .aem-back-next::after {
	content: "\2192";
	margin-left: var(--aem-space-2);
}

/* -------------------------------------------------------------- pagination */

.aem-public .aem-pagination ul {
	display: flex;
	flex-wrap: wrap;
	gap: var(--aem-space-2);
	justify-content: center;
	list-style: none;
	margin: var(--aem-space-7) 0 0;
	padding: 0;
}

.aem-public .aem-pagination .page-numbers {
	align-items: center;
	border: 1px solid var(--aem-border);
	border-radius: var(--aem-radius-sm);
	color: inherit;
	display: inline-flex;
	font-size: 0.9375em;
	font-variant-numeric: tabular-nums;
	justify-content: center;
	min-height: 40px;
	min-width: 40px;
	padding: 0 0.7em;
	text-decoration: none;
	transition: border-color 150ms ease, background-color 150ms ease;
}

.aem-public .aem-pagination a.page-numbers:hover,
.aem-public .aem-pagination a.page-numbers:focus-visible {
	background: var(--aem-primary-soft);
	border-color: var(--aem-primary-line);
}

/* The current page is bold and outlined, not only tinted. */
.aem-public .aem-pagination .page-numbers.current {
	background: var(--aem-primary-soft);
	border-color: var(--aem-primary);
	font-weight: 700;
}

.aem-public .aem-pagination .page-numbers.dots {
	border-color: transparent;
}

/* ------------------------------------------------------------------ states */

.aem-public a:focus-visible,
.aem-public .aem-button:focus-visible,
.aem-public .aem-nav-link:focus-visible {
	outline: 2px solid var(--aem-primary);
	outline-offset: 2px;
}

/* A stretched card moves the focus ring to the card, because the link fills
   it: a ring around the invisible link would be a ring around nothing. */
.aem-public .aem-card:focus-within,
.aem-public .aem-speaker:focus-within,
.aem-public .aem-session:focus-within,
.aem-public .aem-news-item:focus-within {
	outline: 2px solid var(--aem-primary);
	outline-offset: 2px;
}

.aem-public .aem-card:focus-within .aem-stretch:focus-visible,
.aem-public .aem-speaker:focus-within .aem-stretch:focus-visible,
.aem-public .aem-session:focus-within .aem-stretch:focus-visible,
.aem-public .aem-news-item:focus-within .aem-stretch:focus-visible {
	outline: none;
}

/* -------------------------------------------------------------- responsive */

@media (max-width: 1024px) {
	.aem-public .aem-hero {
		grid-template-columns: minmax(0, 300px) minmax(0, 1fr);
	}

	.aem-public.aem-sessions .aem-list {
		grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
	}
}

@media (max-width: 900px) {
	.aem-public .aem-edition-hero {
		grid-template-columns: minmax(0, 1fr);
	}

	.aem-public .aem-edition-hero .aem-card-media img {
		aspect-ratio: var(--aem-ratio-landscape);
		min-height: 0;
	}

	.aem-public .aem-social-single-layout {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (max-width: 1024px) {
	.aem-public.aem-agenda .aem-session {
		grid-template-columns: 6rem 72px minmax(0, 1fr);
	}

	.aem-public .aem-session-support {
		grid-column: 2 / -1;
		text-align: left;
	}

	.aem-public .aem-session-support .aem-session-sponsors {
		justify-content: flex-start;
	}

	.aem-public .aem-session-face img {
		height: 72px;
		width: 72px;
	}
}

@media (max-width: 600px) {
	.aem-public.aem-agenda .aem-session {
		grid-template-columns: minmax(0, 1fr);
	}

	.aem-public .aem-session-support {
		grid-column: auto;
	}

	.aem-public.aem-agenda .aem-session-schedule {
		font-size: 0.9375rem;
	}
}

@media (max-width: 782px) {
	.aem-public .aem-hero {
		gap: var(--aem-space-5);
		grid-template-columns: minmax(0, 1fr);
	}

	.aem-public .aem-hero-media img {
		max-width: 260px;
	}

	.aem-public .aem-social-feed .aem-social-post {
		grid-template-columns: minmax(0, 1fr);
	}

	.aem-public .aem-session-item-when {
		min-width: 0;
	}

	.aem-public .aem-single-back {
		flex-direction: column;
	}
}

@media (max-width: 600px) {
	.aem-public.aem-speakers .aem-list,
	.aem-public .aem-social-grid {
		grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr));
	}

	.aem-public .aem-gallery-grid {
		grid-template-columns: repeat(auto-fill, minmax(min(100%, 140px), 1fr));
	}
}

@media (max-width: 480px) {
	.aem-public .aem-person-card {
		grid-template-columns: minmax(0, 1fr);
	}

	.aem-public .aem-person-photo img {
		height: 56px;
		width: 56px;
	}

	.aem-public .aem-speaker-name,
	.aem-public .aem-speaker-job-title,
	.aem-public .aem-speaker-company {
		padding-inline: var(--aem-space-4);
	}
}

@media (prefers-reduced-motion: reduce) {
	.aem-public .aem-card,
	.aem-public .aem-speaker,
	.aem-public .aem-session,
	.aem-public .aem-news-item,
	.aem-public .aem-nav-link,
	.aem-public .aem-social-tile-media img,
	.aem-public .aem-gallery-image {
		transition: none;
	}

	.aem-public .aem-card:hover,
	.aem-public .aem-speaker:hover,
	.aem-public .aem-session:hover,
	.aem-public .aem-news-item:hover {
		transform: none;
	}

	.aem-public .aem-social-tile-link:hover img,
	.aem-public .aem-gallery-link:hover .aem-gallery-image {
		transform: none;
	}
}
