/*
 * Nanopoulos Events — front-end layout.
 *
 * This file sets layout, spacing and sizing only. It loads no fonts and defines no palette:
 * text inherits the theme's typography and colour, and accents point at the theme's own
 * global colours. Cosmetic defaults sit inside :where() so they have zero specificity and
 * the theme, Elementor Site Settings and each widget's Style tab always win.
 */

.npe {
	--npe-accent: var(--ast-global-color-1, var(--wp--preset--color--primary, var(--e-global-color-accent, currentColor)));
	--npe-strong: var(--ast-global-color-0, var(--wp--preset--color--contrast, var(--e-global-color-primary, currentColor)));
	--npe-on-strong: var(--ast-global-color-5, #fff);
	--npe-on-accent: #fff;
	--npe-line: color-mix(in srgb, currentColor 16%, transparent);
	--npe-tint: color-mix(in srgb, currentColor 5%, transparent);
	--npe-solid: #fff;
	--npe-panel: #fbf8f4;
	--npe-gap: 30px;
	container-type: inline-size;
	position: relative;
}

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

:where(.npe) .screen-reader-text,
.npe-cal__dow,
.npe-cal__mon {
	position: absolute;
	width: 1px;
	height: 1px;
	margin: -1px;
	padding: 0;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}

:where(.npe) a:focus-visible,
:where(.npe) button:focus-visible,
:where(.npe) summary:focus-visible,
:where(.npe) select:focus-visible,
:where(.npe) input:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

.npe-icon {
	flex: none;
	width: 1.1em;
	height: 1.1em;
}

/* ---------- Text atoms ---------- */

.npe-meta {
	display: flex;
	flex-wrap: wrap;
	gap: 0.3em 1.4em;
	margin: 0;
	padding: 0;
	list-style: none;
}

.npe-meta li {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	margin: 0;
}

:where(.npe-meta) {
	font-size: 0.94em;
}

/* Date, time and place icons take the accent colour. */

.npe-meta .npe-icon,
.npe-when__label .npe-icon {
	color: var(--npe-accent);
}

.npe-badges {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 0.5em 0.9em;
}

.npe-badge {
	display: inline-flex;
	align-items: center;
	white-space: nowrap;
	line-height: 1.2;
}

:where(.npe-badge) {
	padding: 0.42em 0.8em;
	font-size: 0.72em;
	font-weight: 500;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	border: 1.5px solid currentColor;
}

:where(.npe-badge--label, .npe-badge--open, .npe-card__media .npe-badge) {
	background: var(--npe-strong);
	border-color: var(--npe-strong);
	color: var(--npe-on-strong);
}

:where(.npe-badge--recording, .npe-card__media .npe-badge--recording) {
	background: var(--npe-accent);
	border-color: var(--npe-accent);
	color: var(--npe-on-strong);
}

:where(.npe-badge--cancelled, .npe-badge--postponed) {
	text-decoration: line-through;
	text-decoration-thickness: 1px;
}

/* ---------- Buttons and links ---------- */

.npe-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.55em;
	text-decoration: none;
	cursor: pointer;
	max-width: 100%;
}

:where(.npe-btn) {
	padding: 0.85em 1.5em;
	line-height: 1.2;
	border: 1.5px solid transparent;
}

:where(.npe-btn--primary) {
	background: var(--npe-strong);
	color: var(--npe-on-strong);
}

:where(.npe-btn--ghost) {
	background: transparent;
	border-color: currentColor;
	color: inherit;
	font-weight: 500;
}

:where(.npe-btn--icon) {
	padding: 0.85em;
}

.npe-actions {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 12px;
}

:where(.npe-link) {
	text-decoration: underline;
	text-decoration-color: var(--npe-accent);
	text-decoration-thickness: 1.5px;
	text-underline-offset: 0.3em;
}

/* Live countdown: four quiet units, numbers of equal width so nothing jumps as they tick. */

.npe-countdown {
	display: inline-flex;
	align-items: stretch;
}

.npe-countdown[hidden] {
	display: none;
}

.npe-countdown__unit {
	display: flex;
	flex-direction: column;
	align-items: center;
	min-width: 3.1em;
	padding: 0 0.7em;
}

.npe-countdown__unit + .npe-countdown__unit {
	border-left: 1px solid var(--npe-line);
}

.npe-countdown__num {
	font-variant-numeric: tabular-nums;
	line-height: 1.2;
}

:where(.npe-countdown__num) {
	font-size: 1.25em;
}

:where(.npe-countdown__label) {
	font-size: 0.68em;
	letter-spacing: 0.08em;
	text-transform: uppercase;
	opacity: 0.75;
}

:where(.npe-note) {
	margin: 0;
	padding: 0.9em 1.1em;
	border: 1.5px solid var(--npe-line);
}

:where(.npe-empty) {
	margin: 0;
	text-align: left;
}

/* ---------- Images ---------- */

.npe-img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.npe-img--empty {
	display: grid;
	place-items: center;
	background: var(--npe-tint);
	color: var(--npe-line);
}

.npe-img--empty .npe-icon {
	width: 44px;
	height: 44px;
}

/* ---------- Featured ---------- */

.npe-featured {
	display: grid;
	grid-template-columns: minmax(0, 46fr) minmax(0, 54fr);
}

:where(.npe-featured) {
	margin: 0 0 clamp(36px, 5cqi, 64px);
	background: var(--npe-tint);
}

.npe-featured__media {
	display: block;
	min-height: 340px;
	overflow: hidden;
}

.npe-featured--noimage {
	grid-template-columns: minmax(0, 1fr);
}

/* Square and portrait images are shown whole in a narrower column instead of being cropped. */

.npe-featured--1-1 {
	grid-template-columns: minmax(0, 40fr) minmax(0, 60fr);
}

.npe-featured--4-5,
.npe-featured--3-4,
.npe-featured--2-3 {
	grid-template-columns: minmax(0, 34fr) minmax(0, 66fr);
}

.npe-featured--1-1 .npe-featured__media,
.npe-featured--4-5 .npe-featured__media,
.npe-featured--3-4 .npe-featured__media,
.npe-featured--2-3 .npe-featured__media {
	align-self: center;
	min-height: 0;
}

.npe-featured--1-1 .npe-img,
.npe-featured--4-5 .npe-img,
.npe-featured--3-4 .npe-img,
.npe-featured--2-3 .npe-img {
	height: auto;
}

.npe-featured__body {
	display: flex;
	flex-direction: column;
	gap: 16px;
	justify-content: center;
	padding: clamp(24px, 4cqi, 48px);
	min-width: 0;
}

.npe .npe-featured__title,
.npe .npe-card__title,
.npe .npe-highlight__title,
.npe .npe-header__title,
.npe .npe-section__title,
.npe .npe-cal__title,
.npe .npe-year__title,
.npe .npe-hub__heading {
	margin-top: 0;
}

.npe .npe-featured__title,
.npe .npe-card__title,
.npe .npe-highlight__title {
	margin-bottom: 0;
}

.npe .npe-featured__title a,
.npe .npe-card__title a,
.npe .npe-highlight__title a {
	font: inherit;
	letter-spacing: inherit;
	text-transform: inherit;
	color: inherit;
	text-decoration: none;
}

:where(.npe-featured__title) {
	font-size: clamp(1.7rem, 4cqi, 2.75rem);
	line-height: 1.15;
}

:where(.npe-featured__summary) {
	margin: 0;
}

/* ---------- People ---------- */

.npe-people {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
	gap: 16px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.npe-people--compact {
	display: flex;
	flex-wrap: wrap;
	gap: 12px 24px;
}

.npe-person {
	display: flex;
	align-items: center;
	gap: 14px;
	margin: 0;
	min-width: 0;
}

:where(.npe-people:not(.npe-people--compact) .npe-person) {
	background: var(--npe-tint);
}

.npe-avatar {
	flex: none;
	width: 64px;
	height: 64px;
	border-radius: 50%;
	object-fit: cover;
}

.npe-people--compact .npe-avatar {
	width: 42px;
	height: 42px;
}

.npe-avatar--initials {
	display: grid;
	place-items: center;
	background: var(--npe-line);
	font-weight: 500;
	line-height: 1;
}

.npe-person__text {
	display: flex;
	flex-direction: column;
	min-width: 0;
	line-height: 1.35;
}

:where(.npe-person__role) {
	font-size: 0.7em;
	font-weight: 500;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--npe-accent);
}

:where(.npe-person__name) {
	font-weight: 500;
}

:where(.npe-person__sub) {
	font-size: 0.88em;
	opacity: 0.85;
}

:where(.npe-person__bio) {
	margin: 0.5em 0 0;
	font-size: 0.9em;
}

/* ---------- Toolbar ---------- */

.npe-toolbar {
	display: flex;
	flex-wrap: wrap;
	align-items: stretch;
	gap: 12px;
}

:where(.npe-toolbar) {
	margin: 0 0 28px;
	padding: 14px;
	border: 1px solid var(--npe-line);
}

.npe-field {
	position: relative;
	flex: 1 1 170px;
	min-width: 0;
}

.npe-field--search {
	flex: 2 1 220px;
}

.npe-field select,
.npe-field input[type="search"] {
	width: 100%;
	height: 100%;
	min-height: 46px;
	margin: 0;
}

.npe-field--search .npe-icon {
	position: absolute;
	top: 50%;
	left: 14px;
	transform: translateY(-50%);
	pointer-events: none;
	opacity: 0.7;
}

.npe-field--search input[type="search"] {
	padding-left: 42px;
}

/* Dropdowns use the plugin's own arrow, inset like the search icon, instead of the browser's. */

.npe-field--select .npe-icon {
	position: absolute;
	top: 50%;
	right: 14px;
	transform: translateY(-50%);
	pointer-events: none;
	opacity: 0.7;
}

.npe .npe-field--select select {
	padding-right: 42px;
	background-image: none;
	-webkit-appearance: none;
	appearance: none;
}

.npe-js .npe-toolbar__apply {
	position: absolute;
	width: 1px;
	height: 1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
}

.npe-views {
	display: inline-flex;
	margin-left: auto;
}

:where(.npe-views) {
	border: 1.5px solid var(--npe-strong);
}

.npe-views__item {
	display: inline-flex;
	align-items: center;
	gap: 0.5em;
	text-decoration: none;
}

:where(.npe-views__item) {
	padding: 0.7em 1.15em;
	font-size: 0.9em;
	font-weight: 500;
	color: inherit;
}

.npe-active {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 10px;
}

:where(.npe-active) {
	margin: -12px 0 26px;
	font-size: 0.9em;
}

:where(.npe-chip) {
	padding: 0.25em 0.75em;
	background: var(--npe-line);
}

.npe-hub__results {
	transition: opacity 0.15s ease;
}

.npe-hub.is-loading .npe-hub__results {
	opacity: 0.45;
}

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

.npe-grid {
	display: grid;
	grid-template-columns: repeat(var(--npe-cols, 3), minmax(0, 1fr));
	gap: var(--npe-gap);
}

.npe-grid--1 {
	--npe-cols: 1;
}

.npe-grid--2 {
	--npe-cols: 2;
}

.npe-grid--4 {
	--npe-cols: 4;
}

.npe-card {
	display: flex;
	flex-direction: column;
	min-width: 0;
	overflow: hidden;
}

:where(.npe-card) {
	background: var(--npe-tint);
}

.npe-card__media {
	position: relative;
	display: block;
	aspect-ratio: 16 / 9;
	overflow: hidden;
}

/* The frame takes the shape of the image: wide, square or portrait. */

.npe-ratio--4-3 {
	aspect-ratio: 4 / 3;
}

.npe-ratio--1-1 {
	aspect-ratio: 1 / 1;
}

.npe-ratio--4-5 {
	aspect-ratio: 4 / 5;
}

.npe-ratio--3-4 {
	aspect-ratio: 3 / 4;
}

.npe-ratio--2-3 {
	aspect-ratio: 2 / 3;
}

.npe-card__media .npe-badge {
	position: absolute;
	top: 14px;
	left: 14px;
}

.npe-datechip {
	position: absolute;
	top: 14px;
	right: 14px;
	display: flex;
	flex-direction: column;
	align-items: center;
	line-height: 1.1;
	text-align: center;
}

:where(.npe-datechip) {
	padding: 8px 12px;
	background: var(--npe-strong);
	color: var(--npe-on-strong);
}

:where(.npe-datechip b) {
	font-size: 1.6em;
	font-weight: 500;
}

:where(.npe-datechip small) {
	font-size: 0.7em;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.npe-card__body {
	display: flex;
	flex: 1;
	flex-direction: column;
	gap: 10px;
	min-width: 0;
}

:where(.npe-card__body) {
	padding: 22px 24px 24px;
}

:where(.npe-card__title) {
	font-size: clamp(1.3rem, 2.4cqi, 1.7rem);
	line-height: 1.2;
}

:where(.npe-card__summary) {
	margin: 0;
	font-size: 0.94em;
}

:where(.npe-card .npe-meta) {
	font-size: 0.88em;
}

.npe-card__foot {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-top: auto;
}

:where(.npe-card__foot) {
	padding-top: 14px;
	font-size: 0.88em;
	border-top: 1px solid var(--npe-line);
}

.npe-pagination {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 18px;
}

:where(.npe-pagination) {
	margin-top: 36px;
}

/* ---------- Subscribe band ---------- */

/* ---------- Past events slider: one row of cards that scrolls sideways ---------- */

.npe-slider {
	margin-top: calc(var(--npe-gap) * 2);
}

.npe-slider__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 16px;
}

.npe-slider__nav {
	display: flex;
	gap: 8px;
}

.npe-slider__nav[hidden] {
	display: none;
}

.npe-slider__btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
}

.npe-slider__btn[disabled] {
	opacity: 0.35;
	cursor: default;
}

.npe-slider__track {
	position: relative;
	display: flex;
	gap: var(--npe-gap);
	overflow-x: auto;
	overscroll-behavior-x: contain;
	scroll-snap-type: x mandatory;
	scroll-behavior: smooth;
	scrollbar-width: none;
	list-style: none;
}

.npe-slider__track::-webkit-scrollbar {
	display: none;
}

.npe-slider__slide {
	display: flex;
	flex: 0 0 calc((100% - var(--npe-gap) * (var(--npe-slides, 4) - 1)) / var(--npe-slides, 4));
	min-width: 0;
	scroll-snap-align: start;
}

.npe-slider--2 {
	--npe-slides: 2;
}

.npe-slider--3 {
	--npe-slides: 3;
}

.npe-slider--5 {
	--npe-slides: 5;
}

/* Square frames crop tall posters from the bottom, keeping the title area at the top. */

.npe-slider .npe-img {
	object-position: top center;
}

.npe-slider__slide > .npe-card {
	width: 100%;
}

@media (prefers-reduced-motion: reduce) {
	.npe-slider__track {
		scroll-behavior: auto;
	}
}

.npe-subscribe {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 18px 30px;
}

:where(.npe-subscribe) {
	margin-top: 44px;
	padding: 28px clamp(20px, 3cqi, 36px);
	background: var(--npe-tint);
	border: 1px solid var(--npe-line);
}

.npe-subscribe__lead {
	display: flex;
	flex: 1 1 320px;
	align-items: center;
	gap: 20px;
	min-width: 0;
}

.npe-subscribe__icon {
	display: flex;
	flex: none;
	line-height: 1;
}

/* The icon is sized in em, so its font size sets how large it is drawn. */

:where(.npe-subscribe__icon) {
	font-size: 2.2em;
	color: var(--npe-accent);
}

:where(.npe-subscribe p) {
	margin: 0;
}

:where(.npe-subscribe__title) {
	font-size: 1.3em;
}

/* ---------- Calendar ---------- */

.npe-cal__head {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	gap: 12px;
	margin-bottom: 16px;
}

.npe .npe-cal__title {
	margin-bottom: 0;
}

.npe-cal__nav {
	display: flex;
	gap: 8px;
}

.npe-cal__weekdays,
.npe-cal__grid {
	display: grid;
	grid-template-columns: repeat(7, minmax(0, 1fr));
}

.npe-cal__grid {
	margin: 0;
	padding: 0;
	list-style: none;
}

:where(.npe-cal__weekdays) {
	border: 1px solid var(--npe-line);
	border-bottom: 0;
}

:where(.npe-cal__weekdays span) {
	padding: 10px 12px;
	font-size: 0.74em;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

:where(.npe-cal__grid) {
	border-top: 1px solid var(--npe-line);
	border-left: 1px solid var(--npe-line);
}

.npe-cal__day {
	position: relative;
	min-width: 0;
	min-height: 124px;
	margin: 0;
}

:where(.npe-cal__day) {
	border-right: 1px solid var(--npe-line);
	border-bottom: 1px solid var(--npe-line);
}

:where(.npe-cal__day.is-out) {
	background: var(--npe-tint);
}

:where(.npe-cal__day.is-out .npe-cal__num) {
	opacity: 0.45;
}

.npe-cal__num {
	display: inline-grid;
	place-items: center;
	min-width: 30px;
	height: 30px;
	margin-bottom: 6px;
	line-height: 1;
}

:where(.npe-cal__day.is-today .npe-cal__num) {
	background: var(--npe-strong);
	color: var(--npe-on-strong);
	border-radius: 50%;
}

.npe-cal__item {
	position: relative;
	margin-bottom: 6px;
}

.npe .npe-cal__ev {
	display: block;
	font-weight: inherit;
	color: inherit;
	text-decoration: none;
	overflow-wrap: anywhere;
}

:where(.npe-cal__ev) {
	padding: 6px 8px;
	font-size: 0.8em;
	line-height: 1.3;
	border-left: 3px solid var(--npe-accent);
}

:where(.npe-cal__item--cancelled .npe-cal__name, .npe-cal__item--postponed .npe-cal__name) {
	text-decoration: line-through;
}

.npe-cal__time {
	display: block;
}

:where(.npe-cal__time) {
	font-size: 0.92em;
	opacity: 0.8;
}

.npe-pop {
	position: absolute;
	z-index: 30;
	top: 100%;
	left: 0;
	display: none;
	flex-direction: column;
	gap: 10px;
	width: min(320px, 80vw);
}

:where(.npe-pop) {
	padding: 18px 20px;
	background: var(--npe-solid);
	box-shadow: 0 18px 44px color-mix(in srgb, currentColor 22%, transparent);
}

.npe-cal__item:hover .npe-pop,
.npe-cal__item:focus-within .npe-pop {
	display: flex;
}

.npe-cal__day:nth-child(7n) .npe-pop,
.npe-cal__day:nth-child(7n-1) .npe-pop {
	right: 0;
	left: auto;
}

:where(.npe-pop__title) {
	margin: 0;
	font-size: 1.15em;
	font-weight: 500;
	line-height: 1.25;
}

:where(.npe-cal__note) {
	margin: 14px 0 0;
	font-size: 0.84em;
	opacity: 0.8;
}

/* ---------- Past events ---------- */

.npe-year {
	display: flex;
	align-items: center;
	gap: 18px;
}

:where(.npe-year) {
	margin: 34px 0 20px;
}

.npe .npe-year__title {
	margin-bottom: 0;
}

.npe-year__rule {
	flex: 1;
	height: 1px;
	background: var(--npe-line);
}

.npe-highlight {
	display: grid;
	grid-template-columns: minmax(0, 55fr) minmax(0, 45fr);
}

:where(.npe-highlight) {
	margin-bottom: 30px;
	background: var(--npe-tint);
}

.npe-highlight .npe-recording {
	margin: 0;
}

.npe-highlight__body {
	display: flex;
	flex-direction: column;
	gap: 14px;
	justify-content: center;
	padding: clamp(22px, 3.5cqi, 40px);
	min-width: 0;
}

:where(.npe-highlight__body p) {
	margin: 0;
}

:where(.npe-highlight__title) {
	font-size: clamp(1.4rem, 3cqi, 2.1rem);
	line-height: 1.2;
}

/* ---------- Video (click to load) ---------- */

.npe-video {
	position: relative;
	aspect-ratio: 16 / 9;
	overflow: hidden;
	background: var(--npe-strong);
}

.npe-video iframe {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border: 0;
}

.npe-video__play {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
}

.npe-video__play span {
	display: grid;
	place-items: center;
	width: 84px;
	height: 84px;
	border-radius: 50%;
	transition: transform 0.15s ease;
}

:where(.npe-video__play span) {
	background: var(--npe-on-strong);
	color: var(--npe-strong);
}

.npe-video__play:hover span,
.npe-video__play:focus-visible span {
	transform: scale(1.06);
}

.npe-video__play .npe-icon {
	width: 30px;
	height: 30px;
	margin-left: 4px;
	fill: currentColor;
}

.npe-video__note {
	position: absolute;
	right: 12px;
	bottom: 10px;
	left: 12px;
	text-align: right;
	pointer-events: none;
}

:where(.npe-video__note) {
	font-size: 0.74em;
	color: var(--npe-on-strong);
	text-shadow: 0 1px 2px rgba(0, 0, 0, 0.5);
}

/* ---------- Event page ---------- */

.npe-header {
	display: flex;
	flex-direction: column;
	gap: 16px;
}

:where(.npe-back) {
	margin: 0;
	font-size: 0.9em;
}

.npe-back a {
	display: inline-flex;
	align-items: center;
	gap: 0.4em;
}

.npe .npe-header__title {
	margin-bottom: 0;
}

:where(.npe-header__title) {
	line-height: 1.12;
}

.npe-single {
	--npe-single-pad: clamp(24px, 5cqi, 56px);
}

.npe-single > .npe-header {
	padding: var(--npe-single-pad);
	background: var(--npe-strong);
	color: var(--npe-on-strong);
}

.npe-single > .npe-header .npe-header__title,
.npe-single > .npe-header a {
	color: inherit;
}

.npe-single > .npe-header .npe-header__title {
	font-size: clamp(2rem, 5cqi, 3.5rem);
}

.npe-single > .npe-header .npe-badge {
	background: transparent;
	border-color: currentColor;
	color: inherit;
}

.npe-single__grid {
	display: grid;
	grid-template-columns: minmax(0, 1fr) minmax(280px, 380px);
	gap: clamp(24px, 4cqi, 48px);
	align-items: start;
	margin-top: clamp(24px, 4cqi, 48px);
}

/* Content panel: ivory white, with the same inner padding as the header above it. */

.npe-single__main {
	display: flex;
	flex-direction: column;
	gap: clamp(28px, 4cqi, 44px);
	min-width: 0;
	padding: var(--npe-single-pad);
	background: var(--npe-panel);
}

.npe-single__side {
	min-width: 0;
}

.npe-figure {
	margin: 0;
}

.npe-figure .npe-img {
	height: auto;
}

.npe-section {
	min-width: 0;
}

:where(.npe-section__title) {
	margin-bottom: 0.5em;
	font-size: clamp(1.5rem, 3cqi, 2.1rem);
}

:where(.npe-prose > :last-child) {
	margin-bottom: 0;
}

.npe-topics__list,
.npe-materials__list {
	display: grid;
	gap: 10px;
	margin: 0;
	padding: 0;
	list-style: none;
}

.npe-topics__list li {
	display: flex;
	gap: 12px;
	margin: 0;
}

:where(.npe-topics__list li) {
	background: var(--npe-tint);
}

.npe-topics__list li::before {
	content: "";
	flex: none;
	width: 8px;
	height: 8px;
	margin-top: 0.6em;
	background: var(--npe-accent);
}

.npe-materials__list {
	display: flex;
	flex-wrap: wrap;
}

.npe-materials__list li {
	margin: 0;
}

.npe-materials__list a {
	display: inline-flex;
	align-items: center;
	gap: 0.55em;
	text-decoration: none;
}

:where(.npe-materials__list a) {
	padding: 0.6em 1em;
	font-size: 0.92em;
	font-weight: 500;
	border: 1px solid var(--npe-line);
}

/* Event image above the booking box: the whole image, a plain border, no background, no inner padding. */

.npe-sideimage {
	margin: 0 0 24px;
	padding: 0;
	background: none;
	overflow: hidden;
}

:where(.npe-sideimage) {
	border: 1px solid var(--npe-line);
}

.npe-sideimage a {
	display: block;
}

.npe-sideimage__img {
	display: block;
	width: 100%;
	height: auto;
}

.npe-box {
	--npe-box-pad: clamp(20px, 3cqi, 30px);
	display: flex;
	flex-direction: column;
	gap: 16px;
}

:where(.npe-box) {
	padding: var(--npe-box-pad);
	background: var(--npe-tint);
	border: 1px solid var(--npe-line);
}

/* Date and time block: a label and one line for each time (the visitor's own, then the official one). */

.npe-when {
	display: flex;
	flex-direction: column;
	gap: 14px;
}

.npe-when__block {
	display: flex;
	flex-direction: column;
	gap: 2px;
	min-width: 0;
}

.npe-when__block[hidden] {
	display: none;
}

.npe-when__label {
	display: flex;
	align-items: center;
	gap: 0.5em;
}

/* Once the visitor's own time is shown, a line separates it from the official time. */

.npe-when--local .npe-when__block--official {
	padding-top: 14px;
	border-top: 1px solid var(--npe-line);
}

.npe-when__deadline {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 0.6em;
	text-align: center;
}

:where(.npe-when__deadline) {
	padding: 0.8em 1em;
	background: var(--npe-line);
}

.npe-register .npe-btn,
.npe-box .npe-addcal > summary {
	width: 100%;
}

/* A registration form inside the booking box uses the full width; its look comes from the form plugin. */

.npe-register--form {
	min-width: 0;
}

#npe-register {
	scroll-margin-top: clamp(24px, 14vh, 150px);
}

.npe-register--form form {
	margin: 0;
}

.npe-addcal {
	position: relative;
}

.npe-addcal > summary {
	list-style: none;
}

.npe-addcal > summary::-webkit-details-marker {
	display: none;
}

.npe-addcal__list {
	position: absolute;
	z-index: 20;
	top: calc(100% + 6px);
	right: 0;
	left: 0;
	min-width: 220px;
	margin: 0;
	padding: 0;
	list-style: none;
}

:where(.npe-addcal__list) {
	background: var(--npe-solid);
	border: 1px solid var(--npe-line);
	box-shadow: 0 14px 34px color-mix(in srgb, currentColor 18%, transparent);
}

.npe-addcal__list li {
	margin: 0;
}

.npe-addcal__list a {
	display: flex;
	align-items: center;
	gap: 0.6em;
	text-decoration: none;
}

:where(.npe-addcal__list a) {
	padding: 0.7em 1em;
	font-weight: 400;
}

:where(.npe-addcal__list li + li) {
	border-top: 1px solid var(--npe-line);
}

.npe-facts {
	display: grid;
	gap: 10px;
	margin: 0;
}

.npe-facts > div {
	display: grid;
	grid-template-columns: 110px minmax(0, 1fr);
	gap: 10px;
}

.npe-facts dt,
.npe-facts dd {
	margin: 0;
}

:where(.npe-facts) {
	font-size: 0.92em;
}

:where(.npe-facts dt) {
	font-weight: 400;
	opacity: 0.8;
}

/* ---------- Resets that must beat generic theme rules for p and a ---------- */

.npe .npe-card__summary,
.npe .npe-featured__summary,
.npe .npe-note,
.npe .npe-empty,
.npe .npe-pop__title,
.npe .npe-back,
.npe .npe-subscribe p,
.npe .npe-highlight__body p,
.npe .npe-when p,
.npe .npe-person__bio {
	margin-top: 0;
	margin-bottom: 0;
}

.npe .npe-person__bio {
	margin-top: 0.5em;
}

.npe .npe-cal__note {
	margin: 14px 0 0;
}

.npe .npe-active {
	margin: -12px 0 26px;
}

.npe .npe-views__item,
.npe .npe-btn--ghost,
.npe .npe-addcal__list a,
.npe .npe-materials__list a,
.npe .npe-back a {
	color: inherit;
}

/* Featured card: space between the text above and the buttons row. */

.npe .npe-featured .npe-actions {
	margin-top: 22px;
}

/* Slider list and arrows: themes style "ul", "li" and "button", so these are set with real weight. */

.npe .npe-slider__track {
	margin: 0;
	padding: 0;
}

.npe .npe-slider__slide {
	margin: 0;
	padding: 0;
}

.npe .npe-slider__btn {
	padding: 0.7em;
	color: var(--npe-strong);
	background-color: transparent;
	border: 1.5px solid var(--npe-strong);
	border-radius: 0;
	box-shadow: none;
}

.npe .npe-slider__btn:not([disabled]):hover,
.npe .npe-slider__btn:focus-visible {
	color: var(--npe-accent);
	background-color: transparent;
	border-color: var(--npe-accent);
}

/* Inner padding of list items is set here, not in :where(): themes reset "li { padding: 0 }". */

.npe .npe-speakers .npe-person {
	padding: 18px;
}

.npe .npe-topics__list li {
	padding: 14px 18px;
}

.npe .npe-cal__grid .npe-cal__day {
	padding: 8px;
}

/* Backgrounds on links are set here, not in :where(): themes reset "a { background-color: transparent }". */

.npe .npe-cal__ev,
.npe .npe-btn--ghost:hover,
.npe .npe-btn--ghost:focus-visible {
	background-color: var(--npe-tint);
}

/* View switch: the label of the selected view, and of the one under the pointer, takes the accent colour. */

.npe .npe-views__item.is-current,
.npe .npe-views__item:hover,
.npe .npe-views__item:focus-visible {
	color: var(--npe-accent);
}

.npe .npe-video__play span {
	color: var(--npe-strong);
}

/* ---------- Responsive (by the width of the block, not the screen) ---------- */

@container (max-width: 1000px) {
	.npe-slider {
		--npe-slides: 2;
	}

	.npe-grid {
		--npe-cols: 2;
	}

	.npe-grid--1 {
		--npe-cols: 1;
	}

	.npe-single__grid {
		grid-template-columns: minmax(0, 1fr);
	}

	.npe-single__side {
		order: -1;
	}
}

@container (max-width: 780px) {
	.npe-featured,
	.npe-highlight {
		grid-template-columns: minmax(0, 1fr);
	}

	.npe-featured__media {
		min-height: 0;
		aspect-ratio: 16 / 9;
	}

	.npe-featured--1-1 .npe-featured__media,
	.npe-featured--4-5 .npe-featured__media,
	.npe-featured--3-4 .npe-featured__media,
	.npe-featured--2-3 .npe-featured__media {
		aspect-ratio: auto;
	}

	.npe-views {
		width: 100%;
		margin-left: 0;
	}

	.npe-views__item {
		flex: 1;
		justify-content: center;
	}

	/* The grid becomes an agenda: only days that have events, with their full date. */
	.npe-cal__weekdays {
		display: none;
	}

	.npe-cal__grid {
		display: block;
		border: 0;
	}

	.npe-cal__day {
		min-height: 0;
		border-right: 0;
	}

	.npe .npe-cal__grid .npe-cal__day {
		padding: 14px 0;
	}

	.npe-cal__day.is-empty,
	.npe-cal .npe-cal__day.is-out {
		display: none;
	}

	.npe-cal__num {
		display: block;
		height: auto;
		margin-bottom: 10px;
		font-weight: 500;
	}

	.npe-cal__dow,
	.npe-cal__mon {
		position: static;
		width: auto;
		height: auto;
		margin: 0;
		overflow: visible;
		clip: auto;
	}

	:where(.npe-cal__day.is-today .npe-cal__num) {
		background: none;
		color: inherit;
		border-radius: 0;
	}

	:where(.npe-cal__ev) {
		padding: 10px 12px;
		font-size: 0.95em;
	}

	.npe-pop {
		display: none !important;
	}
}

@container (max-width: 620px) {
	.npe-slider {
		--npe-slides: 1.15;
	}

	.npe-grid,
	.npe-grid--2,
	.npe-grid--4 {
		--npe-cols: 1;
	}

	.npe-field,
	.npe-field--search {
		flex-basis: 100%;
	}

	.npe-people {
		grid-template-columns: minmax(0, 1fr);
	}
}

@media (prefers-reduced-motion: reduce) {
	.npe-hub__results,
	.npe-video__play span {
		transition: none;
	}
}

@media print {
	.npe-toolbar,
	.npe-subscribe,
	.npe-addcal,
	.npe-pop,
	.npe-pagination {
		display: none !important;
	}
}
