/*
Theme Name:   Astra Child — ESAMI
Theme URI:    https://esami-africa.org/
Description:  Child theme of Astra for the ESAMI website. Holds presentation only — all business logic lives in the ESAMI Core plugin, so this theme can be replaced or restyled without breaking any functionality.
Author:       ESAMI web team
Template:     astra
Version:      1.0.0
License:      GNU General Public License v2 or later
Text Domain:  astra-child
*/

/* =========================================================================
   1. Brand tokens
   ========================================================================= */

:root {
	--esami-blue: #2b398c;
	--esami-blue-dark: #212c6e;
	--esami-green: #45ad45;
	--esami-ink: #1c2033;
	--esami-muted: #5f6579;
	--esami-line: #dfe2ec;

	/* Boxed layout */
	--esami-box-width: 1366px;
	--esami-box-ground: #eef0f7;
	--esami-box-surface: #ffffff;
	--esami-box-shadow: 0 20px 60px -20px rgba(43, 57, 140, .18);
	--esami-box-breakpoint: 1100px;
}

/* =========================================================================
   2. Boxed site layout
   -------------------------------------------------------------------------
   Astra Pro's own "Box Layout" site layout (body.ast-box-layout) does this
   natively. Everything below is scoped to :not(.ast-box-layout) so that the
   moment Astra Pro is licensed and Box Layout is switched on in the
   Customizer, this block stands down automatically and Astra takes over.
   Nothing has to be deleted, and there is never a period where both apply.
   ========================================================================= */

body:not(.ast-box-layout) {
	background-color: var(--esami-box-ground);
}

@media (min-width: 1100px) {

	body:not(.ast-box-layout) #page {
		max-width: var(--esami-box-width);
		margin-left: auto;
		margin-right: auto;
		background-color: var(--esami-box-surface);
		box-shadow: var(--esami-box-shadow);
		/* Square edges read as deliberate and institutional.
		   Rounded corners on a whole-site box read as a widget. */
		border-radius: 0;
		overflow-x: clip;
	}

	/* Sticky elements must pin at box width, never 100vw. */
	body:not(.ast-box-layout) .ast-sticky-active .ast-main-header-wrap,
	body:not(.ast-box-layout) #ast-fixed-header {
		max-width: var(--esami-box-width);
		margin-left: auto;
		margin-right: auto;
	}
}

/* -------------------------------------------------------------------------
   Full-bleed sections stretch to the edge of the BOX, not the viewport.
   This is the detail that makes a boxed site feel designed rather than
   shrunk: hero images and coloured bands still run edge to edge.
   ------------------------------------------------------------------------- */

body:not(.ast-box-layout) .elementor-section.elementor-section-stretched,
body:not(.ast-box-layout) .e-con.e-con-full,
body:not(.ast-box-layout) .esami-bleed {
	max-width: 100%;
	left: auto !important;
	width: 100% !important;
}

/* Max Mega Menu panels are constrained to the box too. */
body:not(.ast-box-layout) .mega-menu-wrap .mega-sub-menu {
	max-width: var(--esami-box-width);
}

/* Below the box breakpoint the box just wastes horizontal space. */
@media (max-width: 1099px) {

	body:not(.ast-box-layout) {
		background-color: var(--esami-box-surface);
	}

	body:not(.ast-box-layout) #page {
		max-width: none;
		box-shadow: none;
	}
}

/* =========================================================================
   3. Container widths
   -------------------------------------------------------------------------
   Held at 1200px to match the Elementor global kit exactly. Keeping the two
   in sync is what stops sections drifting apart from one another.
   ========================================================================= */

.ast-container,
.ast-container-fluid {
	max-width: 1200px;
}

@media (max-width: 1099px) {
	.ast-container,
	.ast-container-fluid {
		padding-left: 24px;
		padding-right: 24px;
	}
}

@media (max-width: 767px) {
	.ast-container,
	.ast-container-fluid {
		padding-left: 16px;
		padding-right: 16px;
	}
}

/* =========================================================================
   4. Vertical rhythm
   -------------------------------------------------------------------------
   Boxed layouts expose inconsistent section padding badly, so one scale is
   defined here and reused rather than set per section.
   ========================================================================= */

:root {
	--esami-space-lg: 96px;
	--esami-space-md: 64px;
	--esami-space-sm: 40px;
}

@media (max-width: 767px) {
	:root {
		--esami-space-lg: 64px;
		--esami-space-md: 40px;
		--esami-space-sm: 24px;
	}
}

.esami-section { padding-top: var(--esami-space-lg); padding-bottom: var(--esami-space-lg); }
.esami-section--md { padding-top: var(--esami-space-md); padding-bottom: var(--esami-space-md); }
.esami-section--sm { padding-top: var(--esami-space-sm); padding-bottom: var(--esami-space-sm); }

/* =========================================================================
   5. Hero banner (archives, taxonomies, CPT singles)
   ========================================================================= */

.esami-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: 320px;
	padding: 48px 0 40px;
	background-color: var(--esami-blue);
	background-size: cover;
	background-position: center;
	color: #fff;
}

.esami-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(to right, rgba(28, 32, 51, .78), rgba(28, 32, 51, .25));
}

.esami-hero > * {
	position: relative;
	z-index: 1;
}

.esami-hero__title {
	margin: 0;
	color: #fff;
	font-size: clamp(1.9rem, 4vw, 2.8rem);
	line-height: 1.15;
	text-wrap: balance;
}

@media (max-width: 767px) {
	.esami-hero {
		min-height: 220px;
		padding: 32px 0 28px;
	}
}

/* =========================================================================
   6. Small corrections
   ========================================================================= */

/* Astra's search results and 404 read better with the brand accent. */
.ast-search-menu-icon .search-field:focus,
.site .esami-btn:focus-visible {
	outline-color: var(--esami-green);
}

/* Never let a stray wide element scroll the page sideways inside the box. */
body:not(.ast-box-layout) {
	overflow-x: hidden;
}

/* == ESAMI CHROME CSS == header & footer ported from the original theme */

:root {
	--esami-navy: #050c31;
	--esami-logo-plate: 104px;
}

/* ---------- Header (Elementor native) ---------- */

#esami-nav {
	position: relative;
	z-index: 50;
	background: #ffffff;
}
#esami-nav > .elementor-container {
	max-width: 100%;
	align-items: stretch;
	flex-wrap: nowrap;
}

/* Logo plate */
#esami-nav-logocol {
	width: var(--esami-logo-plate);
	flex: 0 0 var(--esami-logo-plate);
	max-width: var(--esami-logo-plate);
	border-right: 1px solid var(--esami-border);
	border-bottom: 1px solid var(--esami-border);
}
#esami-nav-logocol > .elementor-widget-wrap {
	align-content: center;
	justify-content: center;
	padding: 0;
}
.esami-nav__logo { width: 100%; margin: 0 !important; }
.esami-nav__logo img { max-height: 86px; width: auto; object-fit: contain; }

/* Right stack */
#esami-nav-right {
	flex: 1 1 auto;
	width: calc(100% - var(--esami-logo-plate));
	max-width: calc(100% - var(--esami-logo-plate));
}
#esami-nav-right > .elementor-widget-wrap { align-content: flex-start; padding: 0; }
#esami-nav-right > .elementor-widget-wrap > .elementor-section { width: 100%; }

/* Utility row */
#esami-nav-top > .elementor-container { max-width: 100%; }
#esami-nav-topcol > .elementor-widget-wrap {
	display: flex;
	flex-direction: row;
	flex-wrap: wrap;
	align-items: center;
	justify-content: flex-end;
	gap: 4px 16px;
	padding: 0;
}
#esami-nav-topcol > .elementor-widget-wrap > .elementor-widget {
	width: auto;
	max-width: none;
	margin: 0 !important;
}

/* Primary row */
#esami-nav-bottom > .elementor-container { max-width: 100%; }
#esami-nav-bottomcol > .elementor-widget-wrap {
	display: flex;
	flex-direction: row;
	flex-wrap: nowrap;
	align-items: center;
	justify-content: flex-end;
	gap: 4px;
	min-height: 55px;
	padding: 0;
}
#esami-nav-bottomcol > .elementor-widget-wrap > .elementor-widget {
	width: auto;
	max-width: none;
	margin: 0 !important;
}

/* ---- Menus ---- */

.esami-nav__menu-a .elementor-nav-menu,
.esami-nav__menu-b .elementor-nav-menu,
.esami-nav__menu-main .elementor-nav-menu {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	margin: 0;
	padding: 0;
	list-style: none;
}
.esami-nav__menu-a .elementor-nav-menu > li,
.esami-nav__menu-b .elementor-nav-menu > li,
.esami-nav__menu-main .elementor-nav-menu > li { margin: 0; }

/* Utility links */
.esami-nav__menu-b .elementor-nav-menu { gap: 0 12px; }
.esami-nav__menu-b .elementor-item {
	padding: 4px 2px;
	color: var(--esami-ink-muted);
	font-size: 13px;
	font-weight: 600;
	line-height: 1.35;
	white-space: nowrap;
	fill: currentColor;
}
.esami-nav__menu-b .elementor-item:hover,
.esami-nav__menu-b .elementor-item.elementor-item-active { color: var(--esami-blue); background: transparent; }

/* eLearning pill */
.esami-nav__menu-a .elementor-item {
	padding: 5px 13px;
	background: var(--esami-green);
	color: #ffffff;
	border-radius: var(--esami-r-sm);
	font-size: 13px;
	font-weight: 700;
	line-height: 1.35;
	white-space: nowrap;
}
.esami-nav__menu-a .elementor-item:hover { background: var(--esami-green-dark); color: #ffffff; }

/* Primary links — the metrics the Max Mega Menu bar used */
.esami-nav__menu-main .elementor-nav-menu { gap: 0; }
.esami-nav__menu-main .elementor-item {
	padding: 17px 10px;
	color: #ffffff;
	font-size: 16px;
	font-weight: 400;
	line-height: 21px;
	white-space: nowrap;
	fill: #ffffff;
}
.esami-nav__menu-main .elementor-item:hover,
.esami-nav__menu-main .elementor-item.highlighted,
.esami-nav__menu-main .elementor-item:focus {
	color: #ffffff;
	background: rgba(255, 255, 255, .12);
}
.esami-nav__menu-main .elementor-item.elementor-item-active { color: #ffffff; background: rgba(255, 255, 255, .16); }
.esami-nav__menu-main .elementor-nav-menu--main .sub-arrow { margin-left: 4px; }
.esami-nav__menu-main .elementor-nav-menu--main .sub-arrow i { font-size: 11px; opacity: .85; }

/* Dropdown panels */
.esami-nav__menu-main .elementor-nav-menu--dropdown,
.esami-nav__menu-b .elementor-nav-menu--dropdown {
	background: #ffffff;
	border: 1px solid var(--esami-border);
	border-radius: var(--esami-r-sm);
	box-shadow: var(--esami-shadow-3);
	padding: 6px;
	min-width: 200px;
}
.esami-nav__menu-main .elementor-nav-menu--dropdown a,
.esami-nav__menu-b .elementor-nav-menu--dropdown a {
	padding: 8px 10px;
	color: var(--esami-ink);
	font-size: 14px;
	font-weight: 500;
	line-height: 1.4;
	border-radius: 3px;
	white-space: normal;
}
.esami-nav__menu-main .elementor-nav-menu--dropdown a:hover,
.esami-nav__menu-b .elementor-nav-menu--dropdown a:hover {
	background: var(--esami-blue-soft);
	color: var(--esami-blue);
}

/* Search */
.esami-nav__search { flex: 0 0 auto; }
.esami-nav__search .elementor-search-form__toggle {
	--e-search-form-toggle-size: 38px;
	--e-search-form-toggle-color: #ffffff;
	--e-search-form-toggle-background-color: transparent;
	--e-search-form-toggle-icon-size: 17px;
	border-radius: 3px;
}
.esami-nav__search .elementor-search-form__toggle:hover { --e-search-form-toggle-background-color: rgba(255,255,255,.14); }
.esami-nav__search .elementor-search-form__container.elementor-lightbox { background: rgba(5, 12, 49, .94); }

/* Mobile */
@media (max-width: 880px) {
	#esami-nav > .elementor-container { flex-wrap: wrap; }
	#esami-nav-logocol { --esami-logo-plate: 84px; }
	#esami-nav-topcol > .elementor-widget-wrap { justify-content: center; gap: 4px 12px; }
	#esami-nav-bottomcol > .elementor-widget-wrap { justify-content: center; min-height: 48px; }
	.esami-nav__menu-main .elementor-nav-menu { justify-content: center; }
	.esami-nav__menu-main .elementor-item { padding: 12px 8px; font-size: 15px; }
	.esami-nav__menu-b .elementor-nav-menu { justify-content: center; }
}

/* The footer chrome is now the Elementor template; see ESAMI FOOTER NATIVE. */

/* == ESAMI PROGRAMME SINGLE CSS == */

.esami-hero__inner {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 1200px;
	margin: 0 auto;
	padding: 0 var(--esami-gutter);
}

.esami-hero__excerpt {
	margin: 12px 0 0;
	max-width: 68ch;
	color: rgba(255, 255, 255, .88);
	font-size: 1.05rem;
}

.esami-prog {
	padding: 0 var(--esami-gutter);
}

.esami-prog__sessions {
	display: grid;
	gap: 0;
	margin: 0 0 28px;
	border: 1px solid var(--esami-line);
	border-radius: 4px;
	overflow: hidden;
}

.esami-prog__session {
	display: flex;
	flex-wrap: wrap;
	gap: 6px 32px;
	padding: 12px 18px;
	font-size: .95rem;
	color: var(--esami-muted);
	border-bottom: 1px solid var(--esami-line);
	background: #fff;
}

.esami-prog__session:last-child { border-bottom: 0; }
.esami-prog__session:nth-child(even) { background: var(--esami-surface-alt); }
.esami-prog__session strong { color: var(--esami-ink); font-weight: 700; }

.esami-prog__body {
	display: grid;
	grid-template-columns: minmax(0, 3fr) minmax(240px, 1fr);
	gap: 40px;
	align-items: start;
	padding-bottom: 64px;
}

.esami-prog__main {
	display: grid;
	gap: 32px;
	min-width: 0;
}

.esami-prog__label {
	display: block;
	margin-bottom: 10px;
	padding-bottom: 8px;
	font-size: .82rem;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--esami-blue);
	border-bottom: 2px solid var(--esami-green);
}

.esami-prog__block :is(p, ul, ol) { margin-bottom: 1em; }
.esami-prog__block ul, .esami-prog__block ol { padding-left: 22px; }
.esami-prog__block li { margin-bottom: 6px; }
.esami-prog__block table { width: 100%; border-collapse: collapse; }
.esami-prog__block td, .esami-prog__block th { border: 1px solid var(--esami-line); padding: 8px 10px; }

.esami-prog__aside {
	position: sticky;
	top: 24px;
	display: grid;
	gap: 16px;
	padding: 20px;
	background: var(--esami-surface-alt);
	border: 1px solid var(--esami-line);
	border-radius: 4px;
}

.esami-prog__apply { width: 100%; }

.esami-prog__brochure {
	padding-top: 16px;
	border-top: 1px solid var(--esami-line);
}

.esami-prog__brochure h5 {
	margin: 0 0 10px;
	font-size: 1rem;
}

.esami-btn--outline {
	color: var(--esami-blue);
	background: #fff;
	border-color: var(--esami-blue);
	width: 100%;
	word-break: break-word;
	text-align: center;
}

.esami-btn--outline:hover { color: #fff; background: var(--esami-blue); }

@media (max-width: 921px) {
	.esami-prog__body { grid-template-columns: 1fr; gap: 28px; }
	.esami-prog__aside { position: static; }
}

/* == ESAMI CARDS & PROFILES == */

.esami-grid {
	display: grid;
	gap: 24px;
	padding: 0 var(--esami-gutter) 64px;
}

.esami-grid--programme { grid-template-columns: repeat(auto-fill, minmax(270px, 1fr)); }
.esami-grid--simple    { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }

.esami-card {
	display: flex;
	flex-direction: column;
	overflow: hidden;
	text-decoration: none;
	background: #fff;
	border: 1px solid var(--esami-line);
	border-radius: 4px;
	transition: border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.esami-card:hover {
	border-color: var(--esami-blue);
	box-shadow: 0 12px 28px -16px rgba(43, 57, 140, .45);
	transform: translateY(-2px);
}

.esami-card__img { display: block; line-height: 0; background: var(--esami-surface-alt); }
.esami-card__img img { width: 100%; height: 220px; object-fit: cover; }

.esami-card__body {
	display: flex;
	flex-direction: column;
	gap: 10px;
	flex: 1;
	padding: 18px 18px 16px;
}

.esami-card__title {
	margin: 0;
	font-size: 1.05rem;
	line-height: 1.3;
	color: var(--esami-blue);
	text-wrap: balance;
}

.esami-card__role { font-size: .9rem; color: var(--esami-muted); }

.esami-card__clusters { display: flex; flex-wrap: wrap; gap: 6px; }

.esami-card__cluster {
	padding: 2px 8px;
	font-size: .68rem;
	font-weight: 700;
	letter-spacing: .06em;
	color: #fff;
	background: var(--esami-green);
	border-radius: 2px;
}

.esami-card__meta {
	display: grid;
	gap: 3px;
	font-size: .86rem;
	line-height: 1.45;
	color: var(--esami-muted);
}

.esami-card__meta strong { color: var(--esami-ink); font-weight: 700; }

.esami-card__more {
	margin-top: auto;
	padding-top: 8px;
	font-size: .8rem;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--esami-green);
}

/* ---------- Profile single ---------- */

.esami-profile {
	display: grid;
	grid-template-columns: minmax(220px, 340px) minmax(0, 1fr);
	gap: 48px;
	padding: 40px var(--esami-gutter) 64px;
	align-items: start;
}

.esami-profile__photo {
	width: 100%;
	height: auto;
	border-radius: 4px;
	border: 1px solid var(--esami-line);
}

.esami-profile__photo--empty {
	aspect-ratio: 4 / 5;
	background:
		linear-gradient(135deg, var(--esami-surface-alt) 0%, #e6eaf5 100%);
}

.esami-profile__head {
	padding-bottom: 18px;
	margin-bottom: 24px;
	border-bottom: 1px solid var(--esami-line);
}

.esami-profile__name {
	margin: 0;
	font-size: clamp(1.6rem, 3vw, 2.1rem);
	line-height: 1.15;
	color: var(--esami-ink);
	text-wrap: balance;
}

.esami-profile__role {
	margin: 8px 0 0;
	font-size: 1.05rem;
	color: var(--esami-blue);
	font-weight: 600;
}

.esami-profile__body > .esami-prog__block + .esami-prog__block { margin-top: 32px; }

.esami-profile__contacts {
	margin: 0;
	padding: 0;
	list-style: none;
	display: grid;
	gap: 6px;
}

.esami-profile__contacts a { color: var(--esami-blue); }

.esami-prog__body--single { grid-template-columns: minmax(0, 1fr); }

@media (max-width: 921px) {
	.esami-profile { grid-template-columns: 1fr; gap: 28px; padding-top: 28px; }
	.esami-profile__media { max-width: 320px; }
}

/* == ESAMI LANDING CSS == */

.esami-lead {
	display: grid;
	gap: 56px;
	padding: 48px var(--esami-gutter) 72px;
}

.esami-lead__intro h3 {
	margin: 0 0 14px;
	font-size: 1.5rem;
	color: var(--esami-blue);
}

.esami-lead__intro p { max-width: 82ch; }

.esami-lead__intro ul {
	max-width: 82ch;
	padding-left: 20px;
	margin-bottom: 24px;
}

.esami-lead__intro li { margin-bottom: 8px; }

.esami-clusters { border-top: 1px solid var(--esami-line); padding-top: 40px; }

.esami-clusters__heading {
	margin: 0 0 22px;
	font-size: 1.35rem;
	color: var(--esami-ink);
}

.esami-clusters__grid {
	display: grid;
	grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
	gap: 14px;
}

.esami-clusters__item {
	display: flex;
	flex-direction: column;
	gap: 4px;
	padding: 14px 16px;
	text-decoration: none;
	background: var(--esami-surface-alt);
	border: 1px solid var(--esami-line);
	border-left: 3px solid var(--esami-green);
	border-radius: 3px;
	transition: background .15s ease, border-color .15s ease;
}

.esami-clusters__item:hover {
	background: #fff;
	border-color: var(--esami-blue);
	border-left-color: var(--esami-blue);
}

.esami-clusters__item span {
	font-weight: 600;
	color: var(--esami-blue);
	line-height: 1.3;
}

.esami-clusters__item small { color: var(--esami-muted); font-size: .82rem; }

/* Calendar page: the tables carry the page gutter. */
.esami-calendar { padding: 40px var(--esami-gutter) 72px; }

@media (max-width: 767px) {
	.esami-lead { gap: 36px; padding-top: 32px; }
}

/* == ESAMI DESIGN SYSTEM == */
/* ------------------------------------------------------------------
 * A single normalising layer for typography, rhythm, colour and the
 * shared components. Everything below is scoped so that deliberate
 * per-widget Elementor styling still wins; what it replaces is the
 * accumulated default drift (h3 at seven different sizes, headings at
 * weight 400, buttons with no vertical padding, cards with no state).
 *
 * To revert the typeface only: change --esami-font back to
 * "Trebuchet MS", sans-serif. Everything else is independent of it.
 * ------------------------------------------------------------------ */

/* ---------- 1. Tokens ---------- */

:root {
	--esami-blue:        #2b398c;
	--esami-blue-dark:   #212c6e;
	--esami-blue-soft:   #eef1fa;
	--esami-green:       #3f9c3f;
	--esami-green-dark:  #348134;
	--esami-green-soft:  #edf7ed;
	--esami-navy:        #050c31;

	--esami-ink:         #171b2e;
	--esami-ink-muted:   #4d5470;
	--esami-ink-subtle:  #767d97;

	--esami-surface:     #ffffff;
	--esami-surface-2:   #f7f8fc;
	--esami-ground:      #eef0f7;

	--esami-border:      #e3e6f0;
	--esami-border-2:    #ccd2e4;

	--esami-r-sm: 4px;
	--esami-r:    8px;
	--esami-r-lg: 14px;

	--esami-shadow-1: 0 1px 2px rgba(16, 22, 54, .05), 0 1px 3px rgba(16, 22, 54, .05);
	--esami-shadow-2: 0 2px 4px rgba(16, 22, 54, .05), 0 8px 20px rgba(16, 22, 54, .07);
	--esami-shadow-3: 0 4px 8px rgba(16, 22, 54, .06), 0 16px 40px rgba(16, 22, 54, .10);

	--esami-s1: 4px;
	--esami-s2: 8px;
	--esami-s3: 12px;
	--esami-s4: 16px;
	--esami-s5: 24px;
	--esami-s6: 32px;
	--esami-s7: 48px;
	--esami-s8: 64px;
	--esami-s9: 80px;

	--esami-font: "Outfit", "Trebuchet MS", "Segoe UI", system-ui, -apple-system, sans-serif;

	--esami-ease: cubic-bezier(.4, 0, .2, 1);
}

/* ---------- 2. Typeface ---------- */

body,
button, input, select, textarea,
.ast-button, .ast-custom-button,
.site-title, .site-title a,
[class*="elementor-kit-"],
[class*="elementor-kit-"] a,
[class*="elementor-kit-"] h1,
[class*="elementor-kit-"] h2,
[class*="elementor-kit-"] h3,
[class*="elementor-kit-"] h4,
[class*="elementor-kit-"] h5,
[class*="elementor-kit-"] h6,
.elementor-widget-heading .elementor-heading-title,
.elementor-widget-text-editor,
.elementor-widget-button .elementor-button {
	font-family: var(--esami-font);
}

body {
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/* ---------- 3. Type scale ---------- */

.site-content h1,
.site-content h2,
.site-content h3,
.site-content h4,
.site-content h5,
.site-content h6 {
	color: var(--esami-ink);
	text-wrap: balance;
}

.site-content h6 {
	font-size: 13px;
	line-height: 1.4;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	color: var(--esami-ink-muted);
}

.site-content .elementor-widget-heading h1.elementor-heading-title,
.site-content .elementor-widget-heading h2.elementor-heading-title,
.site-content .elementor-widget-heading h3.elementor-heading-title { font-weight: 700; }
.site-content .elementor-widget-heading h4.elementor-heading-title,
.site-content .elementor-widget-heading h5.elementor-heading-title { font-weight: 600; }


.site-content,
.site-content p,
.site-content li { color: var(--esami-ink); }
.site-content p { font-size: 1.0625rem; line-height: 1.65; }
.site-content li { line-height: 1.6; }

/* ---------- 4. Vertical rhythm ---------- */

.site-content h1 { margin: 0 0 var(--esami-s5); }
.site-content h2 { margin: var(--esami-s7) 0 var(--esami-s4); }
.site-content h3 { margin: var(--esami-s6) 0 var(--esami-s3); }
.site-content h4,
.site-content h5,
.site-content h6 { margin: var(--esami-s5) 0 var(--esami-s2); }

.site-content h1:first-child,
.site-content h2:first-child,
.site-content h3:first-child,
.site-content h4:first-child,
.site-content h5:first-child,
.site-content h6:first-child,
.elementor-widget-heading .elementor-heading-title { margin-top: 0; }

.site-content h2 + h3,
.site-content h3 + h4 { margin-top: var(--esami-s4); }

.site-content p  { margin: 0 0 var(--esami-s4); }
.site-content p:last-child { margin-bottom: 0; }
.site-content ul,
.site-content ol { margin: 0 0 var(--esami-s4); padding-left: 1.35em; }
.site-content li + li { margin-top: var(--esami-s2); }

.site-content .elementor-widget-text-editor > .elementor-widget-container > *:last-child { margin-bottom: 0; }

.site-content figure,
.site-content .elementor-widget-image { margin-block: 0; }
.site-content .elementor-widget-image img { border-radius: var(--esami-r-sm); display: block; }

.site-content .elementor-widget:not(:last-child) { margin-bottom: var(--esami-s5); }
.site-content .elementor-widget-spacer:not(:last-child),
.site-content .elementor-widget-divider:not(:last-child) { margin-bottom: 0; }

/* ---------- 5. Links ---------- */

.site-content a:not(.elementor-button):not(.esami-btn):not(.menu-link):not(.esami-card):not(.esami-nav__logo) {
	color: var(--esami-blue);
	text-decoration-color: rgba(43, 57, 140, .3);
	text-underline-offset: .18em;
	text-decoration-thickness: 1px;
	transition: color .15s var(--esami-ease), text-decoration-color .15s var(--esami-ease);
}
.site-content a:not(.elementor-button):not(.esami-btn):not(.menu-link):not(.esami-card):hover {
	color: var(--esami-blue-dark);
	text-decoration-color: currentColor;
}

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
	outline: 2px solid var(--esami-blue);
	outline-offset: 2px;
	border-radius: 2px;
}

::selection { background: rgba(43, 57, 140, .16); }

/* ---------- 6. Buttons ---------- */

.site-content .elementor-button,
.site-content .wp-block-button__link,
.esami-btn,
.site-content input[type="submit"],
.site-content button[type="submit"] {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: var(--esami-s2);
	min-height: 44px;
	padding: 11px 22px;
	border: 1px solid transparent;
	border-radius: var(--esami-r-sm);
	font-family: var(--esami-font);
	font-size: 15px;
	font-weight: 600;
	line-height: 1.2;
	letter-spacing: .012em;
	text-align: center;
	text-decoration: none;
	cursor: pointer;
	transition: background-color .16s var(--esami-ease),
	            border-color .16s var(--esami-ease),
	            color .16s var(--esami-ease),
	            box-shadow .16s var(--esami-ease),
	            transform .16s var(--esami-ease);
}

.site-content .elementor-button:hover,
.site-content .wp-block-button__link:hover,
.esami-btn:hover,
.site-content input[type="submit"]:hover,
.site-content button[type="submit"]:hover {
	box-shadow: var(--esami-shadow-2);
	transform: translateY(-1px);
}

.site-content .elementor-button:active,
.esami-btn:active { transform: translateY(0); box-shadow: var(--esami-shadow-1); }

.esami-btn--primary,
.site-content input[type="submit"],
.site-content button[type="submit"] {
	background: var(--esami-blue);
	border-color: var(--esami-blue);
	color: #fff;
}
.esami-btn--primary:hover,
.site-content input[type="submit"]:hover,
.site-content button[type="submit"]:hover {
	background: var(--esami-blue-dark);
	border-color: var(--esami-blue-dark);
	color: #fff;
}

.esami-btn--accent { background: var(--esami-green); border-color: var(--esami-green); color: #fff; }
.esami-btn--accent:hover { background: var(--esami-green-dark); border-color: var(--esami-green-dark); color: #fff; }

.esami-btn--ghost { background: transparent; border-color: var(--esami-border-2); color: var(--esami-blue); }
.esami-btn--ghost:hover { background: var(--esami-blue-soft); border-color: var(--esami-blue); }

.esami-btn--block { width: 100%; }

/* ---------- 7. Hero ---------- */

.esami-hero {
	position: relative;
	display: flex;
	align-items: flex-end;
	min-height: clamp(200px, 26vw, 320px);
	padding: var(--esami-s9) var(--esami-gutter, 48px) var(--esami-s7);
	background-color: var(--esami-navy);
	background-size: cover;
	background-position: center;
	overflow: hidden;
}

.esami-hero::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(5, 12, 49, .18) 0%, rgba(5, 12, 49, .42) 45%, rgba(5, 12, 49, .78) 100%);
	pointer-events: none;
}

.esami-hero__inner,
.esami-hero > .ast-container {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 100%;
	padding: 0;
	margin: 0;
}

.esami-hero__title {
	margin: 0;
	color: #fff;
	font-size: clamp(28px, 3.6vw, 46px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.022em;
	text-shadow: 0 1px 24px rgba(5, 12, 49, .4);
	max-width: 20ch;
	text-wrap: balance;
}

.esami-hero::before {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 4px;
	background: var(--esami-green);
	z-index: 2;
}

/* ---------- 8. Section heading ---------- */

.esami-sec-head { margin-bottom: var(--esami-s6); }
.esami-sec-head__eyebrow {
	display: block;
	margin-bottom: var(--esami-s2);
	color: var(--esami-green-dark);
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
}

/* ---------- 9. Cards ---------- */

.esami-grid { display: grid; gap: var(--esami-s5); align-items: stretch; }

.esami-card {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-radius: var(--esami-r);
	box-shadow: var(--esami-shadow-1);
	overflow: hidden;
	text-decoration: none;
	transition: box-shadow .18s var(--esami-ease), border-color .18s var(--esami-ease), transform .18s var(--esami-ease);
}

.esami-card:hover {
	border-color: var(--esami-border-2);
	box-shadow: var(--esami-shadow-3);
	transform: translateY(-2px);
}

.esami-card:focus-visible { outline: 2px solid var(--esami-blue); outline-offset: 2px; }

.esami-card::before {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: 3px;
	background: var(--esami-green);
	transform: scaleY(0);
	transform-origin: top;
	transition: transform .22s var(--esami-ease);
	z-index: 2;
}
.esami-card:hover::before { transform: scaleY(1); }

.esami-card__body {
	display: flex;
	flex-direction: column;
	flex: 1 1 auto;
	gap: var(--esami-s3);
	padding: var(--esami-s5);
}

.esami-card__title {
	margin: 0;
	color: var(--esami-blue);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -.008em;
}
.esami-card:hover .esami-card__title { color: var(--esami-blue-dark); }

.esami-card__role,
.esami-card__excerpt {
	margin: 0;
	color: var(--esami-ink-muted);
	font-size: .9375rem;
	line-height: 1.55;
}

.esami-card__meta {
	display: grid;
	grid-template-columns: auto 1fr;
	gap: var(--esami-s1) var(--esami-s3);
	margin: 0;
	font-size: .875rem;
	line-height: 1.5;
}
.esami-card__meta span { display: contents; }
.esami-card__meta strong {
	color: var(--esami-ink-subtle);
	font-weight: 600;
	font-size: .8125rem;
	letter-spacing: .02em;
	text-transform: uppercase;
	padding-top: 1px;
}

.esami-card__clusters { display: flex; flex-wrap: wrap; gap: var(--esami-s2); margin: 0; }

.esami-card__cluster,
.esami-tag {
	display: inline-block;
	padding: 3px 9px;
	border-radius: 999px;
	background: var(--esami-green-soft);
	color: var(--esami-green-dark);
	border: 1px solid rgba(63, 156, 63, .22);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	line-height: 1.5;
}

.esami-card__more {
	margin-top: auto;
	padding-top: var(--esami-s4);
	color: var(--esami-green-dark);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	display: inline-flex;
	align-items: center;
	gap: 6px;
}

/* ---------- 10. Profile cards ---------- */

.esami-card__img {
	position: relative;
	display: block;
	background: var(--esami-blue-soft);
	overflow: hidden;
}
.esami-card__img img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center top;
	display: block;
	transition: transform .35s var(--esami-ease);
}
.esami-card:hover .esami-card__img img { transform: scale(1.03); }

.esami-card--profile .esami-card__img { aspect-ratio: 4 / 5; }
.esami-card--profile .esami-card__body { gap: var(--esami-s2); }

.esami-card__img--monogram {
	display: flex;
	align-items: center;
	justify-content: center;
	background: radial-gradient(120% 90% at 50% 0%, #3a4aa6 0%, var(--esami-blue) 58%, var(--esami-blue-dark) 100%);
	color: rgba(255, 255, 255, .93);
	font-size: clamp(28px, 3.2vw, 40px);
	font-weight: 700;
	letter-spacing: .05em;
	line-height: 1;
	user-select: none;
}
.esami-card__img--monogram::after {
	content: "";
	position: absolute;
	inset: auto 0 0 0;
	height: 3px;
	background: rgba(255, 255, 255, .22);
}

/* ---------- 11. Archive grids ---------- */

.esami-grid--simple,
.esami-grid--profile { grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.esami-grid--programme,
.esami-grid--archive { grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }

@media (max-width: 767px) {
	.esami-grid--simple,
	.esami-grid--profile { grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: var(--esami-s4); }
	.esami-grid--programme,
	.esami-grid--archive { grid-template-columns: 1fr; gap: var(--esami-s4); }
}

.esami-archive { padding-block: var(--esami-s7); }
.esami-archive__count {
	margin: 0 0 var(--esami-s5);
	color: var(--esami-ink-subtle);
	font-size: .875rem;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}

/* ---------- 12. Programme single ---------- */

.esami-prog { padding-block: var(--esami-s7); }

.esami-prog__body {
	display: grid;
	grid-template-columns: minmax(0, 1fr) 340px;
	gap: var(--esami-s7);
	align-items: start;
}


@media (max-width: 1023px) {
	.esami-prog__body { grid-template-columns: minmax(0, 1fr); gap: var(--esami-s6); }
}

.esami-prog__main > *:first-child { margin-top: 0; }

.esami-prog__block { margin-bottom: var(--esami-s6); }
.esami-prog__block:last-child { margin-bottom: 0; }
.esami-prog__label {
	display: block;
	margin-bottom: var(--esami-s3);
	padding-bottom: var(--esami-s2);
	border-bottom: 2px solid var(--esami-blue-soft);
	color: var(--esami-ink);
	font-size: 1.0625rem;
	font-weight: 700;
	letter-spacing: -.005em;
}

.esami-prog__aside {
	position: sticky;
	top: var(--esami-s5);
	display: flex;
	flex-direction: column;
	gap: var(--esami-s4);
	padding: var(--esami-s5);
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-top: 3px solid var(--esami-blue);
	border-radius: var(--esami-r);
	box-shadow: var(--esami-shadow-2);
}
@media (max-width: 1023px) { .esami-prog__aside { position: static; } }

.esami-prog__aside-title {
	margin: 0;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--esami-ink-subtle);
}

.esami-prog__apply { width: 100%; }

.esami-prog__sessions {
	margin-bottom: var(--esami-s6);
	display: flex;
	flex-direction: column;
	gap: var(--esami-s2);
}

.esami-prog__session {
	display: flex;
	flex-wrap: wrap;
	gap: var(--esami-s2) var(--esami-s5);
	padding: var(--esami-s4) var(--esami-s5);
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-left: 3px solid var(--esami-green);
	border-radius: var(--esami-r-sm);
	font-size: .9375rem;
	line-height: 1.5;
}
.esami-prog__session span { display: inline-flex; align-items: baseline; gap: 6px; color: var(--esami-ink); }
.esami-prog__session strong {
	color: var(--esami-ink-subtle);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
}

.esami-facts { margin: 0; display: grid; gap: var(--esami-s3); }
.esami-facts > div {
	display: grid;
	gap: 2px;
	padding-bottom: var(--esami-s3);
	border-bottom: 1px solid var(--esami-border);
}
.esami-facts > div:last-child { border-bottom: 0; padding-bottom: 0; }
.esami-facts dt {
	color: var(--esami-ink-subtle);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .07em;
	text-transform: uppercase;
}
.esami-facts dd { margin: 0; color: var(--esami-ink); font-size: .9375rem; font-weight: 600; line-height: 1.45; }

/* ---------- 13. Profile single ---------- */

.esami-profile {
	display: grid;
	grid-template-columns: 260px minmax(0, 1fr);
	gap: var(--esami-s7);
	align-items: start;
	padding-block: var(--esami-s7);
}
.esami-profile:not(:has(.esami-profile__media)) { grid-template-columns: minmax(0, 1fr); }
@media (max-width: 767px) {
	.esami-profile { grid-template-columns: 1fr; gap: var(--esami-s5); }
}

.esami-profile__media {
	border-radius: var(--esami-r);
	overflow: hidden;
	box-shadow: var(--esami-shadow-2);
	background: var(--esami-blue-soft);
}
.esami-profile__media img { width: 100%; height: auto; display: block; }

.esami-profile__name { margin: 0 0 var(--esami-s2); }
.esami-profile__role {
	margin: 0 0 var(--esami-s5);
	color: var(--esami-ink-muted);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.4;
}

.elementor-location-single .esami-profile__name {
	font-size: clamp(22px, 2vw, 28px);
	font-weight: 700;
}

.esami-profile__block { margin-bottom: var(--esami-s6); }
.esami-profile__block:last-child { margin-bottom: 0; }
.esami-profile__block-title,
.esami-profile__label {
	display: block;
	margin: 0 0 var(--esami-s3);
	padding-bottom: var(--esami-s2);
	border-bottom: 2px solid var(--esami-blue-soft);
	font-size: 1.0625rem;
	font-weight: 700;
	letter-spacing: -.005em;
	color: var(--esami-ink);
}

/* ---------- 14. Tables ---------- */

.site-content table {
	width: 100%;
	border-collapse: collapse;
	margin-bottom: var(--esami-s5);
	font-size: .9375rem;
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-radius: var(--esami-r);
	overflow: hidden;
}
.site-content th,
.site-content td {
	padding: var(--esami-s3) var(--esami-s4);
	text-align: left;
	border-bottom: 1px solid var(--esami-border);
	vertical-align: top;
}
.site-content thead th {
	background: var(--esami-surface-2);
	color: var(--esami-ink-subtle);
	font-size: .75rem;
	font-weight: 700;
	letter-spacing: .06em;
	text-transform: uppercase;
	white-space: nowrap;
}
.site-content tbody tr:last-child td { border-bottom: 0; }
.site-content tbody tr:hover td { background: var(--esami-surface-2); }
.site-content figure.wp-block-table { overflow-x: auto; }

/* ---------- 15. Forms ---------- */

.site-content input[type="text"],
.site-content input[type="email"],
.site-content input[type="tel"],
.site-content input[type="url"],
.site-content input[type="number"],
.site-content input[type="search"],
.site-content input[type="date"],
.site-content select,
.site-content textarea,
.wpforms-container input[type="text"],
.wpforms-container input[type="email"],
.wpforms-container input[type="tel"],
.wpforms-container input[type="number"],
.wpforms-container select,
.wpforms-container textarea {
	width: 100%;
	min-height: 44px;
	padding: 10px 13px;
	background: var(--esami-surface);
	border: 1px solid var(--esami-border-2);
	border-radius: var(--esami-r-sm);
	color: var(--esami-ink);
	font-family: var(--esami-font);
	font-size: .9375rem;
	line-height: 1.4;
	transition: border-color .15s var(--esami-ease), box-shadow .15s var(--esami-ease);
	box-shadow: none;
}
.site-content textarea,
.wpforms-container textarea { min-height: 120px; }

.site-content input:focus,
.site-content select:focus,
.site-content textarea:focus,
.wpforms-container input:focus,
.wpforms-container select:focus,
.wpforms-container textarea:focus {
	border-color: var(--esami-blue);
	box-shadow: 0 0 0 3px rgba(43, 57, 140, .13);
	outline: none;
}

.wpforms-container .wpforms-field { padding: 0 0 var(--esami-s4); }
.wpforms-container .wpforms-field-label {
	margin-bottom: var(--esami-s2);
	color: var(--esami-ink);
	font-family: var(--esami-font);
	font-size: .875rem;
	font-weight: 600;
}
.wpforms-container .wpforms-required-label { color: #c0392b; }
.wpforms-container .wpforms-field-description {
	margin-top: 5px;
	color: var(--esami-ink-subtle);
	font-size: .8125rem;
}
.wpforms-container .wpforms-submit {
	background: var(--esami-blue) !important;
	border-color: var(--esami-blue) !important;
	color: #fff !important;
	border-radius: var(--esami-r-sm) !important;
	font-family: var(--esami-font) !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	padding: 12px 26px !important;
}
.wpforms-container .wpforms-submit:hover {
	background: var(--esami-blue-dark) !important;
	border-color: var(--esami-blue-dark) !important;
}

/* ---------- 16. Application modal ---------- */

.esami-modal__dialog {
	border-radius: var(--esami-r-lg);
	box-shadow: var(--esami-shadow-3);
	border: 0;
	overflow: hidden;
}
.esami-modal__header {
	padding: var(--esami-s5) var(--esami-s6);
	background: var(--esami-blue);
	color: #fff;
	border-bottom: 3px solid var(--esami-green);
}
.esami-modal__title { margin: 0; color: #fff; font-size: 1.25rem; font-weight: 700; }
.esami-modal__body { padding: var(--esami-s6); }

/* ---------- 17. Header and footer polish ---------- */

.esami-nav__top {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: var(--esami-s2) var(--esami-s5);
	padding-block: var(--esami-s2);
}
.esami-nav__top .menu {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 2px var(--esami-s4);
	margin: 0;
	padding: 0;
	list-style: none;
}
.esami-nav__top .menu-link {
	display: inline-block;
	padding: 5px 2px;
	color: var(--esami-ink-muted);
	font-size: .8125rem;
	font-weight: 600;
	line-height: 1.35;
	text-decoration: none;
	white-space: nowrap;
	transition: color .15s var(--esami-ease);
}
.esami-nav__top .menu-link:hover { color: var(--esami-blue); }

.esami-nav__menu-a .menu-link {
	padding: 5px 13px;
	background: var(--esami-green);
	color: #fff;
	border-radius: var(--esami-r-sm);
	font-weight: 700;
}
.esami-nav__menu-a .menu-link:hover { background: var(--esami-green-dark); color: #fff; }

.esami-nav__logo img { display: block; height: auto; }

.esami-footer h2,
.esami-footer h3,
.esami-footer .esami-footer__title {
	margin: 0 0 var(--esami-s4);
	padding-bottom: var(--esami-s3);
	border-bottom: 1px solid rgba(255, 255, 255, .14);
	color: #fff;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
}
.esami-footer li { margin: 0 0 var(--esami-s3); }
.esami-footer li:last-child { margin-bottom: 0; }
.esami-footer a {
	font-size: .9375rem;
	line-height: 1.5;
	text-decoration: none;
	transition: color .15s var(--esami-ease);
}

/* ---------- 18. Motion ---------- */

@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		animation-duration: .001ms !important;
		animation-iteration-count: 1 !important;
		transition-duration: .001ms !important;
		scroll-behavior: auto !important;
	}
	.esami-card:hover,
	.site-content .elementor-button:hover,
	.esami-btn:hover { transform: none; }
}

/* ---------- 19. Print ---------- */

@media print {
	.esami-nav, .esami-footer, .esami-hero::after, .esami-prog__apply { display: none !important; }
	body { background: #fff; }
}


/* == ESAMI COMPONENT PRIORITY == */
/* The type scale above is scoped to .site-content, which outranks a
 * single component class. Doubling the class lifts each component back
 * over it without resorting to !important. */

.esami-hero__title.esami-hero__title {
	margin: 0;
	color: #fff;
	font-size: clamp(28px, 3.6vw, 46px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.022em;
	max-width: 22ch;
}

.esami-card__title.esami-card__title {
	margin: 0;
	color: var(--esami-blue);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -.008em;
}
.esami-card:hover .esami-card__title.esami-card__title { color: var(--esami-blue-dark); }

.esami-card__role.esami-card__role,
.esami-card__excerpt.esami-card__excerpt {
	margin: 0;
	color: var(--esami-ink-muted);
	font-size: .9375rem;
	line-height: 1.55;
}

.esami-archive__count.esami-archive__count {
	margin: 0 0 var(--esami-s5);
	color: var(--esami-ink-subtle);
	font-size: .875rem;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: uppercase;
}

.esami-prog__aside-title.esami-prog__aside-title {
	margin: 0;
	font-size: 13px;
	font-weight: 700;
	letter-spacing: .09em;
	text-transform: uppercase;
	color: var(--esami-ink-subtle);
}

.esami-facts dd.esami-facts dd,
.esami-facts > div > dd { margin: 0; font-size: .9375rem; font-weight: 600; line-height: 1.45; color: var(--esami-ink); }

.esami-profile__name.esami-profile__name {
	margin: 0 0 var(--esami-s2);
	font-size: clamp(22px, 2vw, 28px);
	font-weight: 700;
	line-height: 1.2;
}
.esami-profile__role.esami-profile__role {
	margin: 0 0 var(--esami-s5);
	color: var(--esami-ink-muted);
	font-size: 1.0625rem;
	font-weight: 600;
	line-height: 1.4;
}
.esami-profile__block-title.esami-profile__block-title {
	margin: 0 0 var(--esami-s3);
	padding-bottom: var(--esami-s2);
	border-bottom: 2px solid var(--esami-blue-soft);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -.005em;
	color: var(--esami-ink);
}

.esami-modal__title.esami-modal__title {
	margin: 0;
	color: #fff;
	font-size: 1.25rem;
	font-weight: 700;
	line-height: 1.3;
}

/* == ESAMI UTILITY BAR == */
/* Tighter, and the one menu item that has children becomes a proper
 * dropdown instead of spilling its child onto a second line. */

.esami-nav__top { gap: var(--esami-s1) var(--esami-s4); padding-block: 6px; }
.esami-nav__top .menu { gap: 0 var(--esami-s3); }
.esami-nav__top .menu-link { padding: 4px 2px; font-size: 13px; }

.esami-nav__top .menu-item-has-children { position: relative; }

.esami-nav__top .menu-item-has-children > .menu-link::after {
	content: "";
	display: inline-block;
	width: 0; height: 0;
	margin-left: 5px;
	vertical-align: 2px;
	border-left: 3.5px solid transparent;
	border-right: 3.5px solid transparent;
	border-top: 4px solid currentColor;
	opacity: .55;
}

.esami-nav__top .sub-menu {
	position: absolute;
	top: 100%;
	left: 0;
	z-index: 60;
	display: block;
	min-width: 190px;
	margin: 0;
	padding: 6px;
	list-style: none;
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-radius: var(--esami-r-sm);
	box-shadow: var(--esami-shadow-3);
	opacity: 0;
	visibility: hidden;
	transform: translateY(-4px);
	transition: opacity .14s var(--esami-ease), transform .14s var(--esami-ease), visibility .14s;
}
.esami-nav__top .menu-item-has-children:hover > .sub-menu,
.esami-nav__top .menu-item-has-children:focus-within > .sub-menu {
	opacity: 1;
	visibility: visible;
	transform: translateY(0);
}
.esami-nav__top .sub-menu li { display: block; width: 100%; }
.esami-nav__top .sub-menu .menu-link {
	display: block;
	width: 100%;
	padding: 7px 10px;
	border-radius: 3px;
	white-space: normal;
}
.esami-nav__top .sub-menu .menu-link:hover { background: var(--esami-blue-soft); color: var(--esami-blue); }


/* == ESAMI LAYOUT FIXES == */
/* :empty fails on a PHP-rendered element because of the whitespace the
 * template leaves behind; "has no element children" is the real test. */

/* Profile-with-no-photo handling lives in ESAMI PROFILE POLISH below. */


/* == ESAMI FINAL FIXES == */

/* The utility bar's earlier rule gives every ul height:100%, which
 * collapsed the dropdown panel to a single row and spilled the rest of
 * the links over the blue bar underneath. */
.esami-nav__top .sub-menu {
	height: auto;
	left: auto;
	right: 0;
	padding: 6px;
}
.esami-nav__top .menu-item-has-children:hover,
.esami-nav__top .menu-item-has-children:focus-within { z-index: 70; }
.esami-nav__top .sub-menu li { float: none; height: auto; }
.esami-nav__top .sub-menu .menu-link { font-size: 13.5px; color: var(--esami-ink); }

/* A section heading set at body weight is drift; unify to the scale. */
.site-content .elementor-widget-heading h1.elementor-heading-title,
.site-content .elementor-widget-heading h2.elementor-heading-title { font-weight: 700 !important; }
.site-content .elementor-widget-heading h3.elementor-heading-title,
.site-content .elementor-widget-heading h4.elementor-heading-title { font-weight: 600 !important; }

/* Post-listing titles were rendering as h3 at body size. */
.site-content .elementor-post__title,
.site-content .elementor-post__title a,
.site-content .elementor-widget-posts h3 {
	font-size: 1.125rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -.008em;
}
.site-content .elementor-post__excerpt p { font-size: .9375rem; line-height: 1.55; color: var(--esami-ink-muted); }
.site-content .elementor-post__meta-data { font-size: .8125rem; color: var(--esami-ink-subtle); }

/* Astra's own list markers inside Elementor text blocks were inheriting
 * the theme bullet at a different size to the rest of the copy. */
.site-content .elementor-widget-text-editor ul { list-style-position: outside; }
.site-content .elementor-widget-text-editor li::marker { color: var(--esami-green-dark); }


/* == ESAMI CONTRAST == */
/* White on the original #45AD45 is 2.9:1 - below the 4.5:1 that WCAG AA
 * asks for body-size text. These are every button on the site that was
 * using it; the green is deepened just enough to pass (4.9:1) while
 * staying recognisably the ESAMI green. */
.elementor-element-d8206be .elementor-button,
.elementor-element-3f76424 .elementor-button,
.elementor-element-5590cc7 .elementor-button,
.elementor-element-be86a08 .elementor-button,
.elementor-element-693dcd4 .elementor-button,
.elementor-element-b23b106 .elementor-button,
.elementor-element-ddab813 .elementor-button,
.elementor-element-a5cec99 .elementor-button,
.elementor-element-bade1ac .elementor-button,
.elementor-element-5c46f83 .elementor-button,
.elementor-element-3e43086 .elementor-button,
.elementor-element-a5e13ec .elementor-button,
.elementor-element-04caeb9 .elementor-button,
.elementor-element-30c16cd .elementor-button,
.elementor-element-882f6e7 .elementor-button,
.elementor-element-9d4d439 .elementor-button,
.elementor-element-5774d2f .elementor-button,
.elementor-element-1373f4c .elementor-button,
.elementor-element-47ea07c .elementor-button,
.elementor-element-505b474 .elementor-button,
.elementor-element-d299cf8 .elementor-button,
.elementor-element-d2459cc .elementor-button,
.elementor-element-9349e57 .elementor-button,
.elementor-element-bd66cef .elementor-button {
	background-color: #2f8033 !important;
	border-color: #2f8033 !important;
	color: #ffffff !important;
}
.elementor-element-d8206be .elementor-button:hover,
.elementor-element-3f76424 .elementor-button:hover,
.elementor-element-5590cc7 .elementor-button:hover,
.elementor-element-be86a08 .elementor-button:hover,
.elementor-element-693dcd4 .elementor-button:hover,
.elementor-element-b23b106 .elementor-button:hover,
.elementor-element-ddab813 .elementor-button:hover,
.elementor-element-a5cec99 .elementor-button:hover,
.elementor-element-bade1ac .elementor-button:hover,
.elementor-element-5c46f83 .elementor-button:hover,
.elementor-element-3e43086 .elementor-button:hover,
.elementor-element-a5e13ec .elementor-button:hover,
.elementor-element-04caeb9 .elementor-button:hover,
.elementor-element-30c16cd .elementor-button:hover,
.elementor-element-882f6e7 .elementor-button:hover,
.elementor-element-9d4d439 .elementor-button:hover,
.elementor-element-5774d2f .elementor-button:hover,
.elementor-element-1373f4c .elementor-button:hover,
.elementor-element-47ea07c .elementor-button:hover,
.elementor-element-505b474 .elementor-button:hover,
.elementor-element-d299cf8 .elementor-button:hover,
.elementor-element-d2459cc .elementor-button:hover,
.elementor-element-9349e57 .elementor-button:hover,
.elementor-element-bd66cef .elementor-button:hover {
	background-color: #26682a !important;
	border-color: #26682a !important;
	color: #ffffff !important;
}

/* The vacancy strip on the home page ran brand-blue link text over pure
 * red (2.5:1, and pure red is not a colour this brand uses anywhere
 * else). Softened to a considered red with white text. */
.elementor-element-8ef6926 { background-color: #c62828 !important; }
.elementor-element-8ef6926 a:not(.elementor-button) { color: #ffffff !important; text-decoration-color: rgba(255,255,255,.5) !important; }
.elementor-element-8ef6926 a:not(.elementor-button):hover { color: #ffffff !important; text-decoration-color: #fff !important; }

/* Monogram plate for a profile with no photograph. */
.esami-profile__photo--monogram {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 4 / 5;
	background: radial-gradient(120% 90% at 50% 0%, #3a4aa6 0%, var(--esami-blue) 58%, var(--esami-blue-dark) 100%);
	color: rgba(255, 255, 255, .93);
	font-size: clamp(44px, 5vw, 64px);
	font-weight: 700;
	letter-spacing: .05em;
	line-height: 1;
}
.esami-profile:has(.esami-profile__photo--monogram) { grid-template-columns: 260px minmax(0, 1fr); }
@media (max-width: 767px) {
	.esami-profile:has(.esami-profile__photo--monogram) { grid-template-columns: 1fr; }
	.esami-profile__photo--monogram { aspect-ratio: 16 / 9; }
}

/* The screen-reader-only front page heading. */
.screen-reader-text {
	position: absolute !important;
	width: 1px; height: 1px;
	padding: 0; margin: -1px;
	overflow: hidden;
	clip: rect(0, 0, 0, 0);
	white-space: nowrap;
	border: 0;
}


/* == ESAMI PROFILE POLISH == */
/* Only collapse the portrait column when there is genuinely nothing to
 * show there — a monogram plate counts. */
.esami-profile:not(:has(.esami-profile__media img)):not(:has(.esami-profile__photo--monogram)) {
	grid-template-columns: minmax(0, 1fr);
}
.esami-profile:not(:has(.esami-profile__media img)):not(:has(.esami-profile__photo--monogram)) .esami-profile__media {
	display: none;
}
.esami-profile:has(.esami-profile__photo--monogram) .esami-profile__media { display: block; }

/* A bio running the full width of a 1440px box is ~150 characters a
 * line. Cap the measure so it stays readable. */
.esami-profile__body p,
.esami-profile__body li { max-width: 74ch; }


/* == ESAMI MEASURE == */
/* Keep the section rules the same width as the copy beneath them, so the
 * capped measure reads as a decision rather than a truncation. */
.esami-profile__body .esami-profile__block-title,
.esami-profile__body .esami-profile__label,
.esami-profile__body h2,
.esami-profile__body h3 { max-width: 74ch; }
.esami-prog__main p,
.esami-prog__main li,
.esami-prog__main .esami-prog__label { max-width: 74ch; }


/* == ESAMI SOLO PROG == */
/* Chrome rejects :has() nested inside :not(), so the "no description"
 * case is flagged in PHP instead. */
.esami-prog__body--solo {
	grid-template-columns: minmax(0, 560px);
	justify-content: center;
}
.esami-prog__body--solo .esami-prog__aside {
	position: static;
	padding: var(--esami-s6);
}

/* == ESAMI NAV FIT == */
/* Menu metrics live on the widgets themselves; these are the states
 * Elementor gives no control for. */
.esami-nav__menu-main .elementor-nav-menu--main .elementor-item:hover,
.esami-nav__menu-main .elementor-nav-menu--main .elementor-item:focus { background: rgba(255, 255, 255, .12); }
.esami-nav__menu-main .elementor-nav-menu--main .elementor-item.elementor-item-active { background: transparent; }
.esami-nav__menu-main .elementor-nav-menu--main .sub-arrow { margin-left: 3px; padding: 0; }
.esami-nav__menu-main .elementor-nav-menu--main .sub-arrow i,
.esami-nav__menu-main .elementor-nav-menu--main .sub-arrow svg { font-size: 10px; width: 10px; height: 10px; opacity: .8; }
.esami-nav__menu-main .elementor-nav-menu--main { flex-wrap: nowrap; }
.esami-nav__menu-b .elementor-nav-menu--main .elementor-item:hover { background: transparent; }

/* eLearning pill */
.esami-nav__menu-a .elementor-nav-menu--main .elementor-item {
	background: var(--esami-green);
	border-radius: var(--esami-r-sm);
}
.esami-nav__menu-a .elementor-nav-menu--main .elementor-item:hover { background: var(--esami-green-dark); }

@media (max-width: 1150px) {
	.esami-nav__menu-main .elementor-nav-menu--main { flex-wrap: wrap; justify-content: center; }
}

/* == ESAMI FOOTER NATIVE == */

#esami-footer,
#esami-footer-bottom {
	position: relative;
	color: #ffffff;
	overflow: hidden;
}
#esami-footer { border-top: 5px solid var(--esami-green); }

/* The watermark the old markup carried as an <img>. */
#esami-footer::before {
	content: "";
	position: absolute;
	inset: 0;
	background: url("https://esami.funout.co.ke/wp-content/uploads/esami-logo.png") no-repeat 88% 40%;
	background-size: auto 128%;
	opacity: .06;
	pointer-events: none;
}
#esami-footer > .elementor-container,
#esami-footer-bottom > .elementor-container {
	position: relative;
	z-index: 1;
	max-width: 100%;
	padding-inline: var(--esami-gutter);
	gap: 40px;
}
#esami-footer > .elementor-container { align-items: flex-start; }

/* The 5px brand rule that closed the old footer. */
#esami-footer-bottom::after {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 5px;
	opacity: .96;
	background: linear-gradient(269.77deg, var(--esami-green) 46.74%, var(--esami-blue) 53.11%);
}
#esami-footer-bottom > .elementor-container { border-top: 1px solid rgba(255, 255, 255, .16); padding-top: 28px; }

/* Column headings */
.esami-footer__title .elementor-heading-title {
	margin: 0;
	padding-bottom: 12px;
	border-bottom: 1px solid rgba(255, 255, 255, .14);
	color: #ffffff;
	font-size: 13px;
	font-weight: 700;
	line-height: 1.4;
	letter-spacing: .09em;
	text-transform: uppercase;
}
.esami-footer__title { margin-bottom: 16px !important; }
.esami-footer__title--spaced { margin-top: 32px !important; }

/* Menus — bullets and rhythm as the original */
.esami-footer__menu .elementor-nav-menu { margin: 0; padding: 0 0 0 18px; list-style: disc; }
.esami-footer__menu .elementor-nav-menu > li { display: list-item; margin: 0 0 12px; }
.esami-footer__menu .elementor-nav-menu > li:last-child { margin-bottom: 0; }
.esami-footer__menu .elementor-nav-menu > li::marker { color: rgba(255, 255, 255, .5); }
.esami-footer__menu .elementor-item {
	display: inline;
	padding: 0 !important;
	color: rgba(255, 255, 255, .88);
	font-size: 15px;
	line-height: 22px;
	background: transparent !important;
}
.esami-footer__menu .elementor-item:hover { color: #ffffff; text-decoration: underline; }
.esami-footer__menu .elementor-nav-menu--dropdown { display: none !important; }

/* Bottom bar */
.esami-footer__copy p { margin: 0; color: rgba(255, 255, 255, .85); font-size: 14px; line-height: 1.5; }
.esami-footer__copy a { color: #ffffff; text-decoration: none; }
.esami-footer__copy a:hover { text-decoration: underline; }
.esami-footer__totop .elementor-button {
	min-height: 0;
	padding: 6px 14px;
	background: transparent;
	border: 1px solid rgba(255, 255, 255, .35);
	border-radius: 999px;
	color: rgba(255, 255, 255, .85);
	font-size: 13px;
	font-weight: 600;
	letter-spacing: .04em;
	text-transform: lowercase;
}
.esami-footer__totop .elementor-button:hover {
	background: rgba(255, 255, 255, .12);
	border-color: rgba(255, 255, 255, .6);
	color: #ffffff;
	transform: none;
	box-shadow: none;
}

@media (max-width: 1023px) {
	#esami-footer > .elementor-container { gap: 32px; }
	#esami-footer > .elementor-container > .elementor-column { width: 50%; }
}
@media (max-width: 600px) {
	#esami-footer > .elementor-container > .elementor-column { width: 100%; }
	#esami-footer-bottom > .elementor-container { flex-direction: column; gap: 16px; }
	#esami-footer-bottom .elementor-column { width: 100%; }
	.esami-footer__totop .elementor-button-wrapper { text-align: left; }
}

/* == ESAMI FOOTER BULLETS == */
/* Elementor strips list markers from menu items; the original footer had
 * them, so they go back on at a specificity Elementor does not beat. */
.esami-footer__menu .elementor-nav-menu--main .elementor-nav-menu {
	padding-left: 18px;
}
.esami-footer__menu .elementor-nav-menu--main .elementor-nav-menu > li {
	display: list-item;
	list-style: disc outside;
	margin: 0 0 12px;
}
.esami-footer__menu .elementor-nav-menu--main .elementor-nav-menu > li:last-child { margin-bottom: 0; }
.esami-footer__menu .elementor-nav-menu--main .elementor-nav-menu > li::marker { color: rgba(255, 255, 255, .45); }
.esami-footer__menu .elementor-nav-menu--main .elementor-item {
	display: inline;
	padding: 0 !important;
	background: transparent !important;
}

/* == ESAMI LOOP CARDS == */
/* Elementor does not put a section's custom class in the markup, so the
 * loop card is styled through the loop item wrapper instead. */

.elementor-widget-loop-grid .elementor-grid { align-items: stretch; }

.e-loop-item > .elementor-section {
	position: relative;
	display: flex;
	flex-direction: column;
	height: 100%;
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-radius: var(--esami-r);
	box-shadow: var(--esami-shadow-1);
	overflow: hidden;
	transition: box-shadow .18s var(--esami-ease), border-color .18s var(--esami-ease), transform .18s var(--esami-ease);
}
.e-loop-item > .elementor-section > .elementor-container { max-width: 100%; height: 100%; }
.e-loop-item > .elementor-section > .elementor-container > .elementor-column > .elementor-widget-wrap { height: 100%; align-content: flex-start; }

.e-loop-item:hover > .elementor-section {
	border-color: var(--esami-border-2);
	box-shadow: var(--esami-shadow-3);
	transform: translateY(-2px);
}
.e-loop-item > .elementor-section::before {
	content: "";
	position: absolute;
	inset: 0 auto 0 0;
	width: 3px;
	background: var(--esami-green);
	transform: scaleY(0);
	transform-origin: top;
	transition: transform .22s var(--esami-ease);
	z-index: 2;
}
.e-loop-item:hover > .elementor-section::before { transform: scaleY(1); }

/* Title */
.e-loop-item .esami-card__title .elementor-heading-title,
.e-loop-item .esami-card__title .elementor-heading-title a {
	color: var(--esami-blue);
	font-size: 1.0625rem;
	font-weight: 700;
	line-height: 1.35;
	letter-spacing: -.008em;
	text-decoration: none;
}
.e-loop-item:hover .esami-card__title .elementor-heading-title a { color: var(--esami-blue-dark); }
.e-loop-item .esami-card__title { margin-bottom: 10px !important; }

/* Cluster pills */
.e-loop-item .esami-card__clusters { margin-bottom: 12px !important; }
.e-loop-item .esami-card__clusters .elementor-post-info__terms-list-item,
.e-loop-item .esami-card__clusters a {
	display: inline-block;
	margin: 0 6px 6px 0;
	padding: 3px 9px;
	border-radius: 999px;
	background: var(--esami-green-soft);
	color: var(--esami-green-dark);
	border: 1px solid rgba(63, 156, 63, .22);
	font-size: 11px;
	font-weight: 700;
	letter-spacing: .05em;
	text-transform: uppercase;
	line-height: 1.5;
	text-decoration: none;
}

/* Meta list */
.e-loop-item .esami-card__meta { margin-bottom: 0 !important; }
.e-loop-item .esami-card__meta .elementor-icon-list-items { margin: 0; padding: 0; }
.e-loop-item .esami-card__meta .elementor-icon-list-item {
	align-items: baseline;
	font-size: .875rem;
	line-height: 1.5;
	color: var(--esami-ink);
}
.e-loop-item .esami-card__meta .elementor-icon-list-icon { color: var(--esami-ink-subtle); }
.e-loop-item .esami-card__meta .elementor-icon-list-icon svg,
.e-loop-item .esami-card__meta .elementor-icon-list-icon i { font-size: 11px; width: 13px; }

/* CTA */
.e-loop-item .esami-card__more { margin-top: auto !important; padding-top: 16px; }
.e-loop-item .esami-card__more .elementor-button {
	min-height: 0;
	padding: 0;
	background: transparent;
	border: 0;
	color: var(--esami-green-dark);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
}
.e-loop-item .esami-card__more .elementor-button:hover { background: transparent; box-shadow: none; transform: none; color: var(--esami-green-dark); }

/* Whole card clickable, without leaving the markup */
.e-loop-item .esami-card__more .elementor-button-wrapper { position: static; }

/* == ESAMI LOOP EXTRAS == */
/* Elementor omits a section's custom class from the markup, so the hero
 * section is hooked by its CSS ID instead. */
#esami-hero-sec {
	position: relative;
	background-color: var(--esami-navy);
	background-size: cover;
	background-position: center;
	overflow: hidden;
}
#esami-hero-sec::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(5,12,49,.18) 0%, rgba(5,12,49,.42) 45%, rgba(5,12,49,.78) 100%);
	pointer-events: none;
	z-index: 1;
}
#esami-hero-sec::before {
	content: "";
	position: absolute;
	left: 0; right: 0; bottom: 0;
	height: 4px;
	background: var(--esami-green);
	z-index: 3;
}
#esami-hero-sec > .elementor-container {
	position: relative;
	z-index: 2;
	max-width: 100%;
	padding-inline: var(--esami-gutter);
	min-height: clamp(180px, 22vw, 260px);
	align-items: flex-end;
}
#esami-hero-sec .elementor-heading-title {
	margin: 0;
	color: #ffffff !important;
	font-size: clamp(28px, 3.6vw, 46px);
	font-weight: 700;
	line-height: 1.1;
	letter-spacing: -.022em;
	max-width: 22ch;
	text-shadow: 0 1px 24px rgba(5, 12, 49, .4);
}

/* Card facts */
.e-loop-item .esami-card__fact .elementor-heading-title {
	margin: 0;
	font-size: .875rem;
	line-height: 1.55;
	font-weight: 400;
	color: var(--esami-ink);
	letter-spacing: 0;
}
.e-loop-item .esami-card__fact { margin-bottom: 2px !important; }

/* One arrow only. */
.e-loop-item .esami-card__more .elementor-button::after,
.e-loop-item .esami-card__more .elementor-button-text::after { content: none; }
.e-loop-item .esami-card__more .elementor-button-content-wrapper::after {
	content: "\2192";
	margin-left: 6px;
	font-size: 14px;
	letter-spacing: 0;
	display: inline-block;
	transition: transform .18s var(--esami-ease);
}
.e-loop-item:hover .esami-card__more .elementor-button-content-wrapper::after { transform: translateX(3px); }

/* == ESAMI PROFILE LOOP == */
/* Elementor's featured-image widget falls back to its own placeholder, so
 * the monogram plate shows whenever that placeholder is what came back. */

.e-loop-item .esami-card__img { margin: 0 !important; }
.e-loop-item .esami-card__img img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center top;
}
.e-loop-item .esami-card__img:has(img[src*="/elementor/assets/images/placeholder"]) { display: none; }

.e-loop-item .esami-card__mono { margin: 0 !important; }
.e-loop-item .esami-card__mono .elementor-heading-title {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 4 / 5;
	margin: 0;
	background: radial-gradient(120% 90% at 50% 0%, #3a4aa6 0%, var(--esami-blue) 58%, var(--esami-blue-dark) 100%);
	color: rgba(255, 255, 255, .93);
	font-size: clamp(28px, 3.2vw, 40px);
	font-weight: 700;
	letter-spacing: .05em;
	line-height: 1;
}
.e-loop-item:has(.esami-card__img img:not([src*="/elementor/assets/images/placeholder"])) .esami-card__mono { display: none; }

.e-loop-item .esami-card__role .elementor-heading-title {
	margin: 0;
	color: var(--esami-ink-muted);
	font-size: .9375rem;
	font-weight: 400;
	line-height: 1.5;
	letter-spacing: 0;
}
.e-loop-item .esami-card__role { margin-bottom: 0 !important; }
.e-loop-item .esami-card__excerpt { color: var(--esami-ink-muted); font-size: .9375rem; line-height: 1.55; }


/* == ESAMI TYPE SOURCE == */
/* One source of truth for type: the Elementor global kit. The child theme
 * keeps rhythm, colour and weight floors, and stops setting sizes so the
 * kit governs every heading on every page. */
.site-content h1, .site-content h2, .site-content h3,
.site-content h4, .site-content h5, .site-content h6 { color: var(--esami-ink); }

/* Inline font-family left in old text-editor markup breaks the stack. */
.site-content [style*="font-family"],
.site-content [style*="font-family"] * { font-family: var(--esami-font) !important; }

/* A heading lighter than body copy is drift wherever it comes from. */
.site-content .elementor-widget-heading h1.elementor-heading-title,
.site-content .elementor-widget-heading h2.elementor-heading-title { font-weight: 700; }
.site-content .elementor-widget-heading h3.elementor-heading-title,
.site-content .elementor-widget-heading h4.elementor-heading-title { font-weight: 600; }

/* == ESAMI TYPE LOCK == */
/* Two sources still argued with the kit: Astra's own page-title rule, and a
 * stray font-family left on a few headings. Both are pinned to the scale. */

.site-content .entry-title,
header.entry-header .entry-title,
.ast-single-post .entry-title {
	font-family: var(--esami-font);
	font-size: 42px;
	font-weight: 700;
	line-height: 1.15;
	letter-spacing: -.021em;
}
@media (max-width: 921px) { .site-content .entry-title, header.entry-header .entry-title { font-size: 34px; } }
@media (max-width: 544px) { .site-content .entry-title, header.entry-header .entry-title { font-size: 30px; } }

/* One family for every heading, wherever the declaration came from. */
.site-content h1, .site-content h2, .site-content h3,
.site-content h4, .site-content h5, .site-content h6,
.site-content .elementor-heading-title,
.esami-footer h1, .esami-footer h2, .esami-footer h3 {
	font-family: var(--esami-font) !important;
}

/* == ESAMI CALENDAR ROWS == */
/* The calendar is one row per session: month and title, dates, place, CTA. */
.esami-cal .e-loop-item > .elementor-section > .elementor-container { align-items: center; }
.esami-cal .esami-cal__month .elementor-heading-title {
	margin: 0 0 4px;
	color: var(--esami-green-dark);
	font-size: 12px;
	font-weight: 700;
	letter-spacing: .08em;
	text-transform: uppercase;
	line-height: 1.4;
}
.esami-cal .esami-cal__month { margin-bottom: 0 !important; }
.esami-cal .esami-card__title { margin-bottom: 0 !important; }
.esami-cal .esami-card__fact { margin-bottom: 2px !important; }
.esami-cal .esami-card__more { margin-top: 0 !important; padding-top: 0; }
.esami-cal .e-loop-item > .elementor-section { border-left: 3px solid transparent; }
.esami-cal .e-loop-item:hover > .elementor-section { border-left-color: var(--esami-green); }
.esami-cal .e-loop-item > .elementor-section::before { content: none; }

@media (max-width: 767px) {
	.esami-cal .e-loop-item > .elementor-section > .elementor-container { flex-wrap: wrap; }
	.esami-cal .e-loop-item .elementor-column { width: 100% !important; }
	.esami-cal .esami-card__more .elementor-button-wrapper { text-align: left; }
}

/* == ESAMI SPACING SYSTEM == */
/* The only thing this layer owns is the horizontal inset. Each section keeps
 * the vertical padding its author gave it — the bars are meant to be tight
 * and the content sections roomy, and that distinction is worth keeping.
 *
 *   box     1366px, centred
 *   band    a row with one column runs edge to edge inside the box; the
 *           gutter moves inside it so the background stays full-bleed
 *   grid    a row of two or more columns is inset by the gutter, and each
 *           column carries 24px of its own so nothing touches an edge */

:root {
	--esami-gutter: 44px;
	--esami-col-pad: 24px;
}
@media (max-width: 1099px) { :root { --esami-gutter: 24px; --esami-col-pad: 20px; } }
@media (max-width: 767px)  { :root { --esami-gutter: 16px; --esami-col-pad: 16px; } }

/* The page wrapper stops narrowing anything. */
body .site-content .ast-container,
body .site-content > .ast-container,
.site-content .content-area,
.site-content .content-area.primary,
.site-content .site-main {
	max-width: 100%;
	width: 100%;
	padding: 0 !important;
	margin: 0 !important;
}
.site-content .elementor-location-single,
.site-content .elementor-location-archive { padding: 0 !important; max-width: 100%; }

/* Sections fill the box. Vertical padding is left to the section itself. */
.site-content .elementor-section.elementor-top-section {
	width: 100%;
	max-width: 100%;
	margin-left: 0;
	margin-right: 0;
	padding-left: 0;
	padding-right: 0;
}
.site-content .elementor-section.elementor-top-section > .elementor-container {
	max-width: 100%;
	width: 100%;
	padding-inline: var(--esami-gutter);
}

/* One column = a band: background edge to edge, gutter inside it. */
.site-content .elementor-top-section > .elementor-container > .elementor-column:only-child {
	margin-inline: calc(var(--esami-gutter) * -1);
	width: calc(100% + (var(--esami-gutter) * 2));
	max-width: none;
}
.site-content .elementor-top-section > .elementor-container > .elementor-column:only-child > .elementor-widget-wrap.elementor-element-populated {
	padding-inline: var(--esami-gutter);
}

/* Two or more columns = a grid: gutter outside, 24px inside each column. */
.site-content .elementor-top-section > .elementor-container > .elementor-column:not(:only-child) > .elementor-widget-wrap.elementor-element-populated {
	padding: var(--esami-col-pad);
}

/* Media fills its column edge to edge. */
.site-content .elementor-element-populated:has(> .elementor-widget-image:only-child),
.site-content .elementor-element-populated:has(> .elementor-widget-video:only-child),
.site-content .elementor-element-populated:has(> .elementor-widget-slides:only-child),
.site-content .elementor-element-populated:has(> .elementor-widget-media-carousel:only-child),
.site-content .elementor-element-populated:has(> .elementor-widget-image-carousel:only-child),
.site-content .elementor-element-populated:has(> .elementor-widget-template:only-child) {
	padding-inline: 0 !important;
}

/* Nested sections and loop cards must not gutter twice. */
.site-content .elementor-section.elementor-inner-section > .elementor-container,
.e-loop-item .elementor-section > .elementor-container {
	padding-inline: 0;
	max-width: 100%;
}
.e-loop-item .elementor-widget-wrap.elementor-element-populated { padding: 0; }

/* The hero carries its own padding. */
#esami-hero-sec > .elementor-container { padding-inline: var(--esami-gutter); }
#esami-hero-sec > .elementor-container > .elementor-column:only-child {
	margin-inline: 0;
	width: 100%;
}
#esami-hero-sec > .elementor-container > .elementor-column:only-child > .elementor-widget-wrap.elementor-element-populated { padding: 0; }

@media (max-width: 767px) {
	.site-content .elementor-top-section > .elementor-container > .elementor-column { width: 100% !important; }
}

/* == ESAMI ARTICLE INSET == */
/* Astra pads the <article> wrapper, which pushed every section 30px in from
 * the edge of the box. The gutter belongs to the section container, not here. */
.site-content .site-main > article,
.site-content .ast-article-single,
.site-content .ast-article-post,
.site-content article.page,
.site-content article.post,
.site-content .entry-content.clear {
	padding-left: 0 !important;
	padding-right: 0 !important;
	margin-left: 0 !important;
	margin-right: 0 !important;
}

/* == ESAMI EMPTY SECTIONS == */
/* The old header template left behind sections with no widgets in them.
 * They reserved height and read as a gap under the nav. */
.site-content .elementor-section:not(:has(.elementor-widget)) { display: none !important; }
.site-content .elementor-column:not(:has(.elementor-widget)) > .elementor-widget-wrap:empty { display: none; }

/* == ESAMI SITEWIDE POLISH == */

/* 1. No gap between the header and the first section, on every page. */
.site-content .site-main > article,
.site-content .ast-article-single,
.site-content article.page,
.site-content article.post,
.site-content .entry-content.clear {
	padding: 0 !important;
	margin: 0 !important;
}
.site-content .elementor > .elementor-section.elementor-top-section:first-child { padding-top: 0 !important; }

/* Astra gives the Elementor wrapper a side margin on some templates. */
.site-content .entry-content > .elementor,
.site-content .site-main .elementor {
	margin-left: 0 !important;
	margin-right: 0 !important;
	width: 100%;
	max-width: 100%;
}

/* 2. Inner sections get the same column padding as top-level ones, so a
 *    card built as a nested row is padded like every other card. A column
 *    that only wraps an inner section steps aside so nothing doubles up. */
.site-content .elementor-section.elementor-inner-section > .elementor-container > .elementor-column > .elementor-widget-wrap.elementor-element-populated {
	padding: var(--esami-col-pad);
}
.site-content .elementor-element-populated:has(> .elementor-section.elementor-inner-section:only-child) { padding: 0 !important; }
.site-content .elementor-section.elementor-inner-section > .elementor-container > .elementor-column > .elementor-element-populated:has(> .elementor-widget-image:only-child),
.site-content .elementor-section.elementor-inner-section > .elementor-container > .elementor-column > .elementor-element-populated:has(> .elementor-widget-loop-grid:only-child) {
	padding: 0;
}

/* 3. One arrow on a card CTA, never two. */
.e-loop-item .esami-card__more .elementor-button::after,
.e-loop-item .esami-card__more .elementor-button-text::after { content: none !important; }
.e-loop-item .esami-card__more .elementor-button-content-wrapper::after {
	content: "\2192";
	margin-left: 6px;
	font-size: 14px;
	letter-spacing: 0;
	display: inline-block;
	transition: transform .18s var(--esami-ease);
}
.e-loop-item:hover .esami-card__more .elementor-button-content-wrapper::after { transform: translateX(3px); }

/* == ESAMI LOOP ITEM RESET == */
/* Elementor renders each loop item's root as a top-level section, so the box
 * gutter landed inside every card. The gutter is removed there and the card's
 * own padding is applied to the container instead, where nothing fights it. */
.site-content .e-loop-item .elementor-section > .elementor-container {
	padding-inline: 0;
	max-width: 100%;
}
.site-content .e-loop-item .elementor-section > .elementor-container > .elementor-column:only-child {
	margin-inline: 0 !important;
	width: 100% !important;
}
.site-content .e-loop-item .elementor-widget-wrap.elementor-element-populated { padding: 0 !important; }

/* Card padding */
.esami-loopgrid .e-loop-item > .elementor-section > .elementor-container { padding: 24px; }
.esami-cal .e-loop-item > .elementor-section > .elementor-container { padding: 16px 20px; }

/* Profile cards: the image is flush and only the text block is padded. */
.esami-loopgrid .e-loop-item > .elementor-section > .elementor-container:has(.esami-card__img),
.esami-loopgrid .e-loop-item > .elementor-section > .elementor-container:has(.esami-card__mono) { padding: 0; }
.esami-loopgrid .e-loop-item .elementor-inner-section > .elementor-container { padding: 20px; }

/* == ESAMI COURSE PAGE == */
#esami-prog-main .esami-block p,
#esami-prog-main .esami-block li,
#esami-prog-main .esami-block td,
#esami-prog-main .elementor-widget-text-editor p,
#esami-prog-main .elementor-widget-text-editor li {
	text-align: justify;
	text-justify: inter-word;
	-webkit-hyphens: auto;
	hyphens: auto;
	overflow-wrap: break-word;
}
#esami-prog-main .esami-block p:last-child { margin-bottom: 0; }
#esami-prog-main .esami-block h1,
#esami-prog-main .esami-block h2,
#esami-prog-main .esami-block h3,
#esami-prog-main .esami-block h4,
#esami-prog-main .esami-block__label { text-align: left; }

/* the divider now lives on the programme template, on the body column, so
   it stays full height while the sidebar sticks */

#esami-prog-aside > .elementor-widget-wrap.elementor-element-populated {
	align-self: flex-start;
	width: calc(100% - var(--esami-col-pad));
	margin-left: var(--esami-col-pad);
	padding: 26px 24px 28px;
	background: var(--esami-surface-2, #f7f8fc);
	border: 1px solid var(--esami-border, #e3e6f0);
	border-radius: var(--esami-r-lg, 14px);
	box-shadow: var(--esami-shadow-1);
}
#esami-prog-aside .esami-aside__title { margin-top: 0; }
#esami-prog-aside .esami-prog__apply { margin-bottom: 0; }
#esami-prog-aside .esami-prog__apply .elementor-button { width: 100%; }

@media (max-width: 767px) {
	#esami-prog-main .esami-block p,
	#esami-prog-main .esami-block li,
	#esami-prog-main .esami-block td,
	#esami-prog-main .elementor-widget-text-editor p,
	#esami-prog-main .elementor-widget-text-editor li {
		text-align: left;
		-webkit-hyphens: manual;
		hyphens: manual;
	}
	#esami-prog-aside > .elementor-widget-wrap.elementor-element-populated {
		width: 100%;
		margin-left: 0;
	}
}

/* panel heading rule */
#esami-prog-aside .esami-aside__title {
	margin: 0 0 18px !important;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--esami-border-2, #ccd2e4);
}
#esami-prog-aside .esami-fact { margin-bottom: 14px; }

/* no body copy: centre the panel, drop the divider */
body.esami-prog-no-body #esami-prog-body > .elementor-container > #esami-prog-main { display: none; }
body.esami-prog-no-body #esami-prog-body > .elementor-container > #esami-prog-aside {
	width: 100%;
	max-width: 560px;
	margin-left: auto;
	margin-right: auto;
	border-left: 0;
}
body.esami-prog-no-body #esami-prog-aside > .elementor-widget-wrap.elementor-element-populated {
	width: 100%;
	margin-left: 0;
}
/* == END ESAMI COURSE PAGE == */

/* == ESAMI PAGE BANNER == */
/* A section embedded through a template widget is the first child of its own
   .elementor wrapper, so the "no gap under the header" rule was stripping the
   page banner's top padding. Restore it for embedded templates only. */
.site-content .elementor-widget-template .elementor > .elementor-section.elementor-top-section:first-child {
	padding-top: 60px !important;
}
@media (max-width: 767px) {
	.site-content .elementor-widget-template .elementor > .elementor-section.elementor-top-section:first-child {
		padding-top: 40px !important;
	}
}
.site-content .elementor-13695 .elementor-element-8e74a2c > .elementor-container {
	align-items: center;
}

/* The theme-template banner is itself the first top-level section, so the
   same rule was flattening it. Its padding sits inside a coloured band, so
   there is no gap to remove. */
.site-content #esami-page-banner { padding-top: 60px !important; }
@media (max-width: 767px) {
	.site-content #esami-page-banner { padding-top: 40px !important; }
}
/* == END ESAMI PAGE BANNER == */

/* == ESAMI PROFILE MONOGRAM == */
/* The monogram fallback was only styled inside loop cards, so a profile with
   no photo showed two bare initials on the single page. */
#esami-profile-media .esami-card__mono { margin: 0 !important; }
#esami-profile-media .esami-card__mono .elementor-heading-title {
	display: flex;
	align-items: center;
	justify-content: center;
	aspect-ratio: 4 / 5;
	margin: 0;
	background: radial-gradient(120% 90% at 50% 0%, #3a4aa6 0%, var(--esami-blue) 58%, var(--esami-blue-dark) 100%);
	color: rgba(255, 255, 255, .93);
	font-size: clamp(28px, 3.2vw, 40px);
	font-weight: 700;
	letter-spacing: .05em;
	line-height: 1;
	border-radius: var(--esami-r);
	overflow: hidden;
}

/* A profile with a photo renders both the photo and the monogram; the loop
   cards hid one, the single page never did. */
#esami-profile-media:has(.esami-card__img img) .esami-card__mono { display: none; }
#esami-profile-media .esami-card__img img {
	display: block;
	width: 100%;
	aspect-ratio: 4 / 5;
	object-fit: cover;
	object-position: center top;
	border-radius: var(--esami-r);
}
/* == END ESAMI PROFILE MONOGRAM == */

/* == ESAMI DOCUMENT LIST == */
/* Downloadable documents (procurement notices, newsletters): one card per
   row, the download icon as an affordance rather than decoration. */
#esami-doc-list .elementor-widget-icon-box { margin-bottom: 16px; }
#esami-doc-list .elementor-widget-icon-box:last-child { margin-bottom: 0; }
#esami-doc-list .elementor-icon-box-wrapper {
	display: flex;
	align-items: flex-start;
	gap: 18px;
	padding: 20px 22px;
	background: var(--esami-surface);
	border: 1px solid var(--esami-border);
	border-radius: var(--esami-r-lg);
	box-shadow: var(--esami-shadow-1);
	transition: border-color .18s var(--esami-ease), box-shadow .18s var(--esami-ease), transform .18s var(--esami-ease);
}
#esami-doc-list .elementor-widget-icon-box:hover .elementor-icon-box-wrapper {
	border-color: var(--esami-border-2);
	box-shadow: var(--esami-shadow-2);
	transform: translateY(-1px);
}
#esami-doc-list .elementor-icon-box-icon { margin: 0; flex: 0 0 auto; }
#esami-doc-list .elementor-icon {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 46px;
	height: 46px;
	border-radius: 50%;
	background: var(--esami-blue-soft);
	color: var(--esami-blue);
	font-size: 19px;
}
#esami-doc-list .elementor-icon-box-content { text-align: left; }
#esami-doc-list .elementor-icon-box-title { margin: 0 0 6px; }
#esami-doc-list .elementor-icon-box-title a {
	color: var(--esami-blue);
	font-size: 19px;
	font-weight: 600;
	line-height: 1.35;
	text-decoration: none;
}
#esami-doc-list .elementor-widget-icon-box:hover .elementor-icon-box-title a { text-decoration: underline; }
#esami-doc-list .elementor-icon-box-description {
	margin: 0;
	color: var(--esami-ink-muted);
	font-size: 15px;
	line-height: 1.6;
}
#esami-doc-list .esami-doc__due {
	display: table;
	margin-top: 10px;
	padding: 3px 10px;
	border-radius: 999px;
	background: var(--esami-surface-2);
	border: 1px solid var(--esami-border);
	color: var(--esami-ink);
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
}
@media (max-width: 600px) {
	#esami-doc-list .elementor-icon-box-wrapper { gap: 14px; padding: 16px; }
	#esami-doc-list .elementor-icon { width: 38px; height: 38px; font-size: 16px; }
	#esami-doc-list .elementor-icon-box-title a { font-size: 17px; }
}
/* == END ESAMI DOCUMENT LIST == */

/* == ESAMI MEGA MENU == */
/* A dropdown with seven or more children (Executive Training has twelve, and
   seven of those have their own lists) ran past the bottom of the window. It
   now opens as one panel the width of the menu row, laid out in columns, with
   the third level flattened in place — nothing is hidden behind a flyout and
   nothing falls off the screen. Type size is unchanged. */
#esami-nav-bottomcol .elementor-nav-menu { position: relative; }
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega { position: static !important; }

#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu {
	column-count: 5;
	column-gap: 26px;
	left: 0 !important;
	right: 0 !important;
	margin-left: 0 !important;
	transform: none !important;
	width: 100% !important;
	max-width: none !important;
	min-width: 0 !important;
	padding: 22px 26px 16px !important;
	border-radius: 0 0 var(--esami-r) var(--esami-r);
	box-shadow: var(--esami-shadow-3);
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li {
	display: block;
	width: 100%;
	margin: 0 0 16px;
	break-inside: avoid;
	-webkit-column-break-inside: avoid;
}

/* group heading */
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li > a {
	padding: 0 0 6px !important;
	color: var(--esami-blue) !important;
	font-size: 15px !important;
	font-weight: 700 !important;
	line-height: 1.2;
	border-bottom: 1px solid var(--esami-border);
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li > a:hover { color: var(--esami-blue-dark) !important; }
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li > a .sub-arrow { display: none !important; }

/* third level, flattened under its heading */
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu ul.sub-menu {
	display: block !important;
	position: static !important;
	left: auto !important;
	top: auto !important;
	margin: 6px 0 0 !important;
	width: auto !important;
	min-width: 0 !important;
	max-width: none !important;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	opacity: 1 !important;
	visibility: visible !important;
	transform: none !important;
}
/* A drawn marker rather than list-style, because the gap a ::marker leaves
   before the text is not settable. */
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu ul.sub-menu li {
	display: block;
	position: relative;
	list-style: none;
	margin: 0 !important;
	padding-left: 10px !important;
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu ul.sub-menu li::before {
	content: "";
	position: absolute;
	top: .66em;
	left: 0;
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background: var(--esami-border-2);
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu ul.sub-menu {
	padding-left: 2px !important;
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu ul.sub-menu a {
	padding: 2px 0 !important;
	color: var(--esami-ink-muted) !important;
	font-size: 14px !important;
	font-weight: 400 !important;
	line-height: 1.3;
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu ul.sub-menu a:hover { color: var(--esami-blue) !important; }

/* The panel only exists above 1025px (below that the header switches to the
   hamburger), and one column is reserved for the ungrouped links, so the count
   stays at five and only the gap tightens. */
@media (max-width: 1200px) {
	#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu { column-gap: 20px; padding-inline: 20px !important; }
}

/* Any submenu that is still collapsed says so with a chevron. */
#esami-nav-bottomcol .elementor-nav-menu ul.sub-menu > li.menu-item-has-children > a > .sub-arrow {
	display: inline-flex !important;
	align-items: center;
	margin-left: auto;
	padding-left: 10px;
	transform: rotate(-90deg);
	transform-origin: center;
	opacity: .75;
}
#esami-nav-bottomcol .elementor-nav-menu ul.sub-menu > li.menu-item-has-children > a {
	display: flex !important;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li > a { display: block !important; }

/* a group with no courses under it needs no rule */
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li:not(.menu-item-has-children) > a { border-bottom: 0; }

/* a short window gets more columns so the panel still ends above the fold */
@media (max-height: 820px) {
	#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu { column-count: 6; column-gap: 22px; }
}


/* Clusters that are a single link with nothing under them are moved to the end
   by the menu filter and then given a column of their own, so they read as a
   list instead of being scattered between the grouped clusters. */
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li.esami-mega-solo--first {
	break-before: column;
	-webkit-column-break-before: always;
}
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu > li.esami-mega-solo { margin-bottom: 12px; }
#esami-nav-bottomcol .elementor-nav-menu > li.esami-mega > ul.sub-menu { column-rule: 1px solid var(--esami-border); }

/* Ordinary dropdowns sat at whatever width SmartMenus measured, which wrapped
   labels like "The Executive Committee" onto two lines. One standard width. */
#esami-nav-bottomcol .elementor-nav-menu > li:not(.esami-mega) > ul.sub-menu {
	width: 280px !important;
	min-width: 280px !important;
	max-width: 280px !important;
}
#esami-nav-bottomcol .elementor-nav-menu > li:not(.esami-mega) > ul.sub-menu a {
	line-height: 1.3;
	white-space: normal;
}
/* == END ESAMI MEGA MENU == */

/* == ESAMI APPLY POPUP == */
/* The application form opens in an Elementor popup from the Apply button on a
   course page; the course fields are filled from that course and locked. */
#esami-apply-pop .esami-apply__title .elementor-heading-title {
	margin: 0 0 4px;
	padding-bottom: 14px;
	border-bottom: 1px solid var(--esami-border);
	color: var(--esami-blue);
	font-size: 22px;
	font-weight: 700;
}
#esami-apply-pop .wpforms-container { margin: 0; }
#esami-apply-pop .wpforms-field { padding: 10px 0; }
#esami-apply-pop .wpforms-field-label {
	color: var(--esami-ink);
	font-size: 14px;
	font-weight: 600;
}
#esami-apply-pop input[type="text"],
#esami-apply-pop input[type="email"],
#esami-apply-pop input[type="tel"],
#esami-apply-pop input[type="number"],
#esami-apply-pop select,
#esami-apply-pop textarea {
	border: 1px solid var(--esami-border-2) !important;
	border-radius: var(--esami-r-sm) !important;
	font-size: 15px;
}
#esami-apply-pop input:focus,
#esami-apply-pop select:focus,
#esami-apply-pop textarea:focus {
	border-color: var(--esami-blue) !important;
	box-shadow: 0 0 0 3px rgba(43, 57, 140, .12) !important;
	outline: none;
}
#esami-apply-pop .esami-apply__locked {
	background: var(--esami-surface-2) !important;
	color: var(--esami-ink) !important;
	-webkit-text-fill-color: var(--esami-ink);
	font-weight: 600;
	cursor: default;
}
#esami-apply-pop .wpforms-submit {
	background: var(--esami-blue) !important;
	border: 0 !important;
	border-radius: 4px !important;
	color: #fff !important;
	font-size: 15px !important;
	font-weight: 600 !important;
	padding: 12px 26px !important;
}
#esami-apply-pop .wpforms-submit:hover { background: var(--esami-blue-dark) !important; }
/* == END ESAMI APPLY POPUP == */

/* == ESAMI STICKY SUPPORT == */
/* Astra sets overflow-x: hidden on the body, which computes overflow-y to
   auto and turns the body into a scroll container - and a scroll container
   silently kills every position: sticky on the page. clip does the same job
   for horizontal overflow without creating one. */
body {
	overflow-x: clip !important;
	overflow-y: visible !important;
}
/* == END ESAMI STICKY SUPPORT == */
