/*
Theme Name: PodSearch Advertising
Version: 1.0
*/

/* --------------------------------------------------
   TYPOGRAPHY — GEIST
-------------------------------------------------- */

:root {
	--font-geist: 'Geist', sans-serif;
}

/* --- Font Family --- */
.geist {
	font-family: var(--font-geist);
	font-weight: 400;
}

/* --- Font Weights --- */
.thin        { font-weight: 100; }
.extra-light { font-weight: 200; }
.light       { font-weight: 300; }
.regular     { font-weight: 400; }
.medium      { font-weight: 500; }
.semi-bold   { font-weight: 600; }
.bold        { font-weight: 700; }
.extra-bold  { font-weight: 800; }
.black       { font-weight: 900; }

/* --- Font Sizes (mobile-first) --- */
/* Sizes will be added here — pattern: .font-{size} / .font-{breakpoint}-{size} */

/* --- Nav (design spec: Geist semi-bold 16px / 24px) --- */
.nav-link,
.navbar-nav .nav-link,
.navbar-nav .dropdown-item {
	font-family: var(--font-geist);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
}

/* --------------------------------------------------
   MODERN RESET
-------------------------------------------------- */

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

html {
	-webkit-text-size-adjust: 100%;
}

body {
	margin: 0;
}

img, picture, video, canvas, svg {
	display: block;
	max-width: 100%;
}

input, button, textarea, select {
	font: inherit;
}

a {
	text-decoration: none;
	color: inherit;
}

ul, ol {
	list-style: none;
}

.module-body-copy {
	margin-bottom: 20px;
}
@media (min-width: 992px) {
	.module-body-copy {
		margin-bottom: 40px;
	}
}
.module-column > .module-body-copy:last-child {
	margin-bottom: 0;
}

.module-body-copy ul {
	list-style: disc;
	padding-left: 0;
}

.module-body-copy ul.checklist,
.module-body-copy ul.checklist--blue {
	list-style: none;
	padding-left: 0;
}

.module-body-copy ol {
	list-style: decimal;
	padding-left: 1.5em;
}

/* --------------------------------------------------
   ROOT VARIABLES
-------------------------------------------------- */

:root {
	/* TODO: Set your brand colors */
	--color-primary: #000000;
	--color-accent: #000000;

	--color-grey-1: #404040;
	--color-grey-2: #5f5f5f;
	--color-grey-3: #a2a2a2;
	--color-grey-4: #cdcdcd;

	--color-white: #ffffff;

	/* Override Bootstrap primary color */
	--bs-primary: #000000;
	--bs-primary-rgb: 0, 0, 0;

	/* Site fonts — Bricolage Grotesque + Geist only.
	   --font-primary / --font-condensed are legacy variable names kept
	   so existing rules keep working; both now resolve to the two site fonts. */
	--font-bricolage: 'Bricolage Grotesque', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
	--font-sans:      'Geist', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
	--font-primary:   var(--font-bricolage);
	--font-condensed: var(--font-sans);

	--header-height-desktop: 100px;
	--header-height-mobile: 70px;

	--logo-width-desktop: 200px;
	--logo-height-desktop: 60px;

	--logo-width-mobile: 160px;
	--logo-height-mobile: 48px;

	--icon-size-desktop: 25px;
	--icon-size-mobile: 30px;
}

/* --------------------------------------------------
   BASE
-------------------------------------------------- */

body {
	font-family: var(--font-primary);
	color: var(--color-grey-1);
}

/* --------------------------------------------------
   TYPOGRAPHY UTILITIES
-------------------------------------------------- */

/* .font-condensed { font-family: var(--font-condensed); } */

/* --------------------------------------------------
   CHECKLIST
   Add class="checklist" to a <ul> to use the custom
   checkmark bullet. Icon lives at images/checkmark.svg
-------------------------------------------------- */

.checklist,
.checklist--blue {
	list-style: none;
	padding-left: 0;
	margin: 0;

	/* Default checkmark color — override with .checklist--blue etc. */
	--checklist-color: var(--color-accent, #ffbb00);
}

.checklist li,
.checklist--blue li {
	position: relative;
	padding-left: 48px; /* 32px icon + 16px gap */
	margin-bottom: 18px;
}

.checklist li:last-child,
.checklist--blue li:last-child {
	margin-bottom: 0;
}

.checklist li::before,
.checklist--blue li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.15em;
	width: 32px;
	height: 32px;
	background-color: var(--checklist-color);
	-webkit-mask: url("images/checkmark.svg") center / contain no-repeat;
	        mask: url("images/checkmark.svg") center / contain no-repeat;
}

/* Blue variant — TODO: update to brand color */
.checklist--blue {
	--checklist-color: #071049;
}

/* --------------------------------------------------
   IMAGE BLOCK
-------------------------------------------------- */

:where(.module-image-block--single) {
	margin-bottom: 0;
}

/* The wrapper is block + full width in inline mode (set in image-block.php)
   so the alignment utilities (text-start / text-center / text-end) have
   space to position the <img> within. For text-align to actually move
   the image, the <img> itself must be inline-level — many global stylesheets
   set "img { display: block }" so we force it back to inline-block here. */
.module-image-block:not(.module-image-block--bg) img {
	display: inline-block;
	vertical-align: top;
}

.module-image-block__single-inner {
	display: inline-block;
	max-width: var(--single-img-width-mobile, var(--single-img-width-desktop, 100%));
	width: 100%;
	line-height: 0;
	vertical-align: top;
}
@media (min-width: 992px) {
	.module-image-block__single-inner {
		max-width: var(--single-img-width-desktop, var(--single-img-width-mobile, 100%));
	}
}

/* Mobile-only: float left/right-aligned single image blocks so they sit in a row */
@media (max-width: 991.98px) {
	.module-image-block--single.text-start {
		width: auto !important;
		float: left;
	}
	.module-image-block--single.text-end {
		width: auto !important;
		float: right;
	}
	/* Self-clear the column that contains floated image blocks */
	.module-column::after {
		content: "";
		display: table;
		clear: both;
	}
}

/* --------------------------------------------------
   SPACING UTILITIES
-------------------------------------------------- */

/* Mobile (base) */
.pt-16  { padding-top: 16px; }
.pt-30  { padding-top: 30px; }
.pt-45  { padding-top: 45px; }
.pt-60  { padding-top: 60px; }
.pt-90  { padding-top: 90px; }
.pt-120 { padding-top: 120px; }
.pt-150 { padding-top: 150px; }
.pt-180 { padding-top: 180px; }
.pt-210 { padding-top: 210px; }

.pb-16  { padding-bottom: 16px; }
.pb-30  { padding-bottom: 30px; }
.pb-45  { padding-bottom: 45px; }
.pb-60  { padding-bottom: 60px; }
.pb-90  { padding-bottom: 90px; }
.pb-120 { padding-bottom: 120px; }
.pb-150 { padding-bottom: 150px; }
.pb-180 { padding-bottom: 180px; }
.pb-210 { padding-bottom: 210px; }

.py-16  { padding-top: 16px;  padding-bottom: 16px; }
.py-30  { padding-top: 30px;  padding-bottom: 30px; }
.py-45  { padding-top: 45px;  padding-bottom: 45px; }
.py-60  { padding-top: 60px;  padding-bottom: 60px; }
.py-90  { padding-top: 90px;  padding-bottom: 90px; }
.py-120 { padding-top: 120px; padding-bottom: 120px; }
.py-150 { padding-top: 150px; padding-bottom: 150px; }
.py-180 { padding-top: 180px; padding-bottom: 180px; }
.py-210 { padding-top: 210px; padding-bottom: 210px; }

.px-16  { padding-left: 16px;  padding-right: 16px; }
.px-30  { padding-left: 30px;  padding-right: 30px; }
.px-45  { padding-left: 45px;  padding-right: 45px; }
.px-60  { padding-left: 60px;  padding-right: 60px; }
.px-90  { padding-left: 90px;  padding-right: 90px; }
.px-120 { padding-left: 120px; padding-right: 120px; }
.px-150 { padding-left: 150px; padding-right: 150px; }
.px-180 { padding-left: 180px; padding-right: 180px; }
.px-210 { padding-left: 210px; padding-right: 210px; }

/* Desktop (lg+) */
@media (min-width: 992px) {
	.pt-lg-16  { padding-top: 16px; }
	.pt-lg-30  { padding-top: 30px; }
	.pt-lg-45  { padding-top: 45px; }
	.pt-lg-60  { padding-top: 60px; }
	.pt-lg-90  { padding-top: 90px; }
	.pt-lg-120 { padding-top: 120px; }
	.pt-lg-150 { padding-top: 150px; }
	.pt-lg-180 { padding-top: 180px; }
	.pt-lg-210 { padding-top: 210px; }

	.pb-lg-16  { padding-bottom: 16px; }
	.pb-lg-30  { padding-bottom: 30px; }
	.pb-lg-45  { padding-bottom: 45px; }
	.pb-lg-60  { padding-bottom: 60px; }
	.pb-lg-90  { padding-bottom: 90px; }
	.pb-lg-120 { padding-bottom: 120px; }
	.pb-lg-150 { padding-bottom: 150px; }
	.pb-lg-180 { padding-bottom: 180px; }
	.pb-lg-210 { padding-bottom: 210px; }

	.py-lg-16  { padding-top: 16px;  padding-bottom: 16px; }
	.py-lg-30  { padding-top: 30px;  padding-bottom: 30px; }
	.py-lg-45  { padding-top: 45px;  padding-bottom: 45px; }
	.py-lg-60  { padding-top: 60px;  padding-bottom: 60px; }
	.py-lg-90  { padding-top: 90px;  padding-bottom: 90px; }
	.py-lg-120 { padding-top: 120px; padding-bottom: 120px; }
	.py-lg-150 { padding-top: 150px; padding-bottom: 150px; }
	.py-lg-180 { padding-top: 180px; padding-bottom: 180px; }
	.py-lg-210 { padding-top: 210px; padding-bottom: 210px; }

	.px-lg-16  { padding-left: 16px;  padding-right: 16px; }
	.px-lg-30  { padding-left: 30px;  padding-right: 30px; }
	.px-lg-45  { padding-left: 45px;  padding-right: 45px; }
	.px-lg-60  { padding-left: 60px;  padding-right: 60px; }
	.px-lg-90  { padding-left: 90px;  padding-right: 90px; }
	.px-lg-120 { padding-left: 120px; padding-right: 120px; }
	.px-lg-150 { padding-left: 150px; padding-right: 150px; }
	.px-lg-180 { padding-left: 180px; padding-right: 180px; }
	.px-lg-210 { padding-left: 210px; padding-right: 210px; }
}

.light { font-weight: 300; }
.regular { font-weight: 400; }
.semi-bold { font-weight: 600; }
.bold { font-weight: 700; }

.font-56 { font-size: 56px; }
.font-50 { font-size: 50px; line-height: normal; }
.font-45 { font-size: 45px; line-height: normal; }
.font-42 { font-size: 42px; }
.font-40 { font-size: 40px; line-height: normal; }
.font-32 { font-size: 32px; line-height: normal; }
.font-30 { font-size: 30px; line-height: 45px; }
.font-25 { font-size: 25px; line-height: normal; }
.font-24 { font-size: 24px; }
.font-21 { font-size: 21px; line-height: 30px; }
.font-18 { font-size: 18px; }
.font-16 { font-size: 16px; line-height: 29px; }

.font-italic { font-style: italic; }

.font-300 { font-weight: 300; }
.font-400 { font-weight: 400; }
.font-600 { font-weight: 600; }
.font-700 { font-weight: 700; }

.h1 { line-height: 1.05; }
.h2 { line-height: 1.1; }
.h3 { line-height: 1.15; }
.h4 { line-height: 1.2; }

.nav-text {
	font-family: var(--font-condensed);
	font-size: 14px;
	letter-spacing: 0.16em;
	text-transform: uppercase;
}

.text-primary {
	color: var(--color-primary) ;
}

.text-white {
	color: #fff;
}

.text-black {
	color: #000;
}

.text-accent {
	color: var(--color-accent);
}

.text-muted {
	color: #666;
}

/* Responsive text color overrides (lg+) */
@media (min-width: 992px) {
	.text-lg-primary { color: var(--color-primary) !important; }
	.text-lg-white { color: #fff !important; }
	.text-lg-black { color: #000; }
	.text-lg-accent { color: var(--color-accent); }
	.text-lg-muted { color: #666; }
}

/* ==================================================
   SITE HEADER
================================================== */

/* ---- Shell ---- */
.site-header {
	position: sticky;
	top: 0;
	z-index: 1030;
	background: #fff;
	border-bottom: 1px solid #e5e5e5;
}

/* When WP admin bar is present, offset the sticky header so it
   sits below the bar rather than underneath it. */
.admin-bar .site-header {
	top: 32px;
}
@media (max-width: 782px) {
	.admin-bar .site-header {
		top: 46px;
	}
}

/* Inner wrapper: max 1140px, holds logo + nav + right cluster */
.site-header__inner {
	max-width: 1140px;
	margin-inline: auto;
	padding-inline: 15px;
	height: 72px;
	display: flex;
	align-items: center;
	flex-wrap: nowrap;
}

/* ---- Logo ---- */
.site-header__logo-link {
	display: inline-flex;
	align-items: center;
	flex-shrink: 0;
	text-decoration: none;
	padding-right: 30px;
}

.site-header__logo {
	display: block;
	max-width: 116px;
	width: auto;
	height: auto;
}

/* ---- Vertical divider between logo and nav ---- */
.site-header__divider {
	flex: 0 0 1px;
	width: 1px;
	height: 24px;
	background: #E5E5E5;
}

/* ---- Desktop nav ---- */
.site-header__nav {
	padding-inline: 15px;
}

.site-header__nav .navbar-nav {
	column-gap: 0;
}

.site-header__nav .nav-item {
	position: relative;
}

.site-header__nav .nav-link {
	font-family: var(--font-geist);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
	letter-spacing: 0;
	color: #222222;
	padding: 8px 15px;
	white-space: nowrap;
	display: inline-flex;
	align-items: center;
	gap: 6px;
	border-radius: 8px;
	transition: color 0.15s ease, background-color 0.15s ease;
}

.site-header__nav .nav-link:hover,
.site-header__nav .nav-link:focus {
	color: var(--color-accent, #222222);
}

.site-header__nav .nav-link.active,
.site-header__nav .nav-item.active > .nav-link {
	color: #2e6aea;
}

/* Dropdown caret -- replace Bootstrap's default triangle with a
   chevron SVG that rotates when the dropdown is open. */
.site-header__nav .nav-link.dropdown-toggle::after {
	content: "";
	display: inline-block;
	width: 12px;
	height: 12px;
	margin: 0;
	border: 0;
	background: currentColor;
	mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
	-webkit-mask: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'><path d='M2 4l4 4 4-4' fill='none' stroke='black' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'/></svg>") center / contain no-repeat;
	transform: rotate(0deg);
	transition: transform 0.2s ease;
}

/* Open-state styling on the parent nav item: light-blue pill +
   accent text color + flipped chevron. Bootstrap adds .show to the
   <li> and to the toggle when the menu opens. */
.site-header__nav .nav-item.dropdown.show > .nav-link,
.site-header__nav .nav-link.dropdown-toggle.show {
	background-color: #EFF3FE;
	color: #2E6AEA;
}
.site-header__nav .nav-item.dropdown.show > .nav-link.dropdown-toggle::after,
.site-header__nav .nav-link.dropdown-toggle.show::after {
	transform: rotate(180deg);
}

/* Dropdown menu — sits directly below the parent nav item. */
.site-header__nav .dropdown-menu {
	margin-top: 8px;
	min-width: 200px;
	border: 1px solid #E5E5E5;
	border-radius: 12px;
	box-shadow: 0 12px 28px rgba(0,0,0,.10);
	padding: 8px;
	background-color: #ffffff;
}

.site-header__nav .dropdown-item {
	font-family: var(--font-geist);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
	color: #222222;
	padding: 10px 16px;
	border-radius: 8px;
	transition: background 0.12s ease, color 0.12s ease;
}

.site-header__nav .dropdown-item:hover,
.site-header__nav .dropdown-item:focus,
.site-header__nav .dropdown-item.active,
.site-header__nav .dropdown-item:active {
	background-color: #EFF3FE;
	color: #2E6AEA;
}

/* ---- Right cluster (login + CTA + hamburger) ---- */
.site-header__right {
	margin-left: auto;
	display: flex;
	align-items: center;
	gap: 20px;
	flex-shrink: 0;
}

/* ---- Login link ---- */
.site-header__login {
	font-family: var(--font-sans, sans-serif);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
	color: #222222;
	text-decoration: none;
	white-space: nowrap;
	transition: color 0.15s ease;
}

.site-header__login:hover,
.site-header__login:focus {
	color: var(--color-accent, #222222);
	text-decoration: underline;
}

/* ---- CTA button (asymmetric two-pill split) ----
 *
 * Markup:
 *   <button class="btn-split">
 *     <span class="btn-split__label">…</span>   ← left pill
 *     <span class="btn-split__arrow">…</span>   ← right pill (icon)
 *   </button>
 *
 * Each pill is built from two pseudo-elements:
 *   ::before  →  main rounded rect (occupies most of the pill)
 *   ::after   →  skewed rounded cap on the inner side (provides the angle)
 * Both pseudos share the pill's background color so the overlap seam is
 * invisible. The pseudos stay inside the pill's bounds, so the 4 px gap
 * between the two pills is preserved.
 */
.btn-split {
	--cta-bg:        #2E6AEA;
	--cta-bg-hover:  #1F58D6;
	--cta-fg:        #fff;
	--cta-radius:    8px;       /* corner roundness (all 4 corners of each pill) */
	--cta-skew:      -14deg;    /* angle of the inner cap */
	--cta-gap:       4px;       /* visible gap between pills */
	--cta-height:    40px;
	--cta-label-w:   230px;
	--cta-arrow-w:   50px;
	--cta-cap-w:     44px;      /* width of the skewed cap */
	--cta-cap-inset: 24px;      /* how far the cap overlaps the main rect */

	position: relative;
	isolation: isolate;          /* contain pseudo z-index:-1 */
	display: inline-flex;
	align-items: stretch;
	gap: var(--cta-gap);
	height: var(--cta-height);
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--cta-fg);
	cursor: pointer;
	font-family: var(--font-sans, sans-serif);
	font-weight: 600;
	font-size: 15px;
	line-height: 1;
	white-space: nowrap;
	flex-shrink: 0;
}

.btn-split:focus-visible {
	outline: 2px solid var(--cta-bg);
	outline-offset: 3px;
	border-radius: var(--cta-radius);
}

/* WPForms — make medium-sized inputs/selects span the full field
   container width so dropdowns line up with text inputs above. */
div.wpforms-container-full .wpforms-field .wpforms-field-medium,
div.wpforms-container-full .wpforms-field select.wpforms-field-medium,
div.wpforms-container-full .wpforms-field input.wpforms-field-medium,
div.wpforms-container-full .wpforms-field textarea.wpforms-field-medium {
	width: 100% !important;
	max-width: 100% !important;
}

/* WPForms — round all input/select/textarea fields to 8px. */
div.wpforms-container-full .wpforms-field input[type="text"],
div.wpforms-container-full .wpforms-field input[type="email"],
div.wpforms-container-full .wpforms-field input[type="tel"],
div.wpforms-container-full .wpforms-field input[type="url"],
div.wpforms-container-full .wpforms-field input[type="number"],
div.wpforms-container-full .wpforms-field input[type="password"],
div.wpforms-container-full .wpforms-field input[type="search"],
div.wpforms-container-full .wpforms-field input[type="date"],
div.wpforms-container-full .wpforms-field input[type="datetime-local"],
div.wpforms-container-full .wpforms-field input[type="month"],
div.wpforms-container-full .wpforms-field input[type="time"],
div.wpforms-container-full .wpforms-field input[type="week"],
div.wpforms-container-full .wpforms-field select,
div.wpforms-container-full .wpforms-field textarea {
	border-radius: 8px !important;
}

/* When .btn-split is applied to a real <button> (e.g. WPForms submit,
   or any button that ships with its own background / border / padding
   from a plugin or utility class like .btn-black-pill), neutralize
   those styles so our pseudo-pills aren't hidden behind the button's
   own background. The high-specificity selectors are needed to beat
   WPForms' own `div.wpforms-container-full button[type="submit"]`. */
button.btn-split,
input[type="submit"].btn-split,
div.wpforms-container-full button.btn-split[type="submit"],
div.wpforms-container-full input.btn-split[type="submit"] {
	display: inline-flex !important;
	align-items: stretch !important;
	gap: var(--cta-gap) !important;
	height: var(--cta-height) !important;
	min-height: 0 !important;
	min-width: 0 !important;
	width: auto !important;
	max-width: none !important;
	line-height: 1 !important;
	background: transparent !important;
	background-color: transparent !important;
	border: 0 !important;
	box-shadow: none !important;
	padding: 0 !important;
	margin: 0 0 0 0;
	-webkit-appearance: none;
	        appearance: none;
}

/* Restore Bootstrap responsive display utilities on .btn-split buttons,
   since the rule above forces `display: inline-flex !important`. Without
   these, `.d-none` / `.d-lg-inline-flex` are ignored and the desktop
   header CTA leaks onto mobile, overlapping the hamburger. */
button.btn-split.d-none,
input[type="submit"].btn-split.d-none {
	display: none !important;
}
@media (min-width: 992px) {
	button.btn-split.d-lg-inline-flex,
	input[type="submit"].btn-split.d-lg-inline-flex {
		display: inline-flex !important;
	}
	button.btn-split.d-lg-none,
	input[type="submit"].btn-split.d-lg-none {
		display: none !important;
	}
}

div.wpforms-container-full .wpforms-confirmation-container-full,
div[submit-success] > .wpforms-confirmation-container-full:not(.wpforms-redirection-message) {
    background: #ffffff !important;
    border: 1px solid #2E6AEA !important;
    border-radius: 16px !important;
    box-sizing: border-box !important;
    color: inherit !important;
}

/* Pill wrappers (no background — pseudos draw the shape) */
.btn-split .btn-split__label,
.btn-split .btn-split__arrow {
	position: relative !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	height: 100% !important;
	overflow: visible !important;
	color: var(--cta-fg);
}

.btn-split .btn-split__label {
	width: var(--cta-label-w);
	padding: 0 18px;
}

.btn-split .btn-split__arrow {
	width: var(--cta-arrow-w) !important;
	padding-left: 8px;
}

/* Main rounded rect — sits inside the pill, short on the inner side */
.btn-split .btn-split__label::before,
.btn-split .btn-split__arrow::before {
	content: "" !important;
	position: absolute !important;
	top: 0 !important;
	bottom: 0 !important;
	background: var(--cta-bg) !important;
	border-radius: var(--cta-radius) !important;
	z-index: -1 !important;
	transition: background 0.15s ease, transform 0.15s ease;
}
.btn-split .btn-split__label::before {
	left: 0 !important;
	right: var(--cta-cap-inset) !important;
}
.btn-split .btn-split__arrow::before {
	left: var(--cta-cap-inset) !important;
	right: 0 !important;
}

/* Skewed rounded cap — provides the angled rounded corner on the inner side */
.btn-split .btn-split__label::after,
.btn-split .btn-split__arrow::after {
	content: "" !important;
	position: absolute !important;
	top: 0 !important;
	width: var(--cta-cap-w) !important;
	height: 100% !important;
	background: var(--cta-bg) !important;
	border-radius: var(--cta-radius) !important;
	transform: skewX(var(--cta-skew)) !important;
	z-index: -1 !important;
	transition: background 0.15s ease, transform 0.15s ease;
}
.btn-split .btn-split__label::after { right: 0 !important; left: auto !important; }
.btn-split .btn-split__arrow::after { left: 0 !important; right: auto !important; }

/* Hover — recolor every layer */
.btn-split:hover .btn-split__label::before,
.btn-split:hover .btn-split__label::after,
.btn-split:hover .btn-split__arrow::before,
.btn-split:hover .btn-split__arrow::after {
	background: var(--cta-bg-hover);
}

/* Arrow icon */
.btn-split__arrow svg {
	position: relative;
	z-index: 1;
	width: 16px;
	height: 16px;
	fill: currentColor;
	transition: transform 0.15s ease;
}
.btn-split:hover .btn-split__arrow svg {
	transform: translateX(2px);
}

/* Hover — shift arrow pill background 2px left to mirror the icon's right shift */
.btn-split:hover .btn-split__arrow::before {
	transform: translateX(-2px);
}
.btn-split:hover .btn-split__arrow::after {
	transform: translateX(-2px) skewX(var(--cta-skew));
}

/* Animate.css hook — animation runs on the arrow pill only */
.btn-split__arrow.animate__animated {
	--animate-duration: 0.4s;
}

/* ----------------------------------------------------------
   .btn-split modifiers used by the page-builder CTA block.
   These are scoped — the header CTA (.btn-split alone) is
   unaffected by everything below.
   ---------------------------------------------------------- */

/* Fluid label width: pill hugs text content (CTA block only) */
.btn-split.btn-split--fluid .btn-split__label {
	width: auto;
}

/* Color variants for the split CTA (default base is blue already) */
.btn-split.btn-split-blue {
	--cta-bg:       #2E6AEA;
	--cta-bg-hover: #1F58D6;
	--cta-fg:       #ffffff;
}
.btn-split.btn-split-grey {
	--cta-bg:       #303a3b;
	--cta-bg-hover: #1f2728;
	--cta-fg:       #ffffff;
}
.btn-split.btn-split-white {
	--cta-bg:       #ffffff;
	--cta-bg-hover: #f1f1f1;
	--cta-fg:       #222222;
}

/* Mobile: scale the split CTA down so long labels fit the viewport */
@media (max-width: 575.98px) {
	.btn-split {
		--cta-height:    36px;
		--cta-arrow-w:   38px;
		--cta-cap-w:     32px;
		--cta-cap-inset: 16px;
		font-size: 13px;
	}
	.btn-split__label {
		padding: 0 12px;
	}
	.btn-split__arrow {
		padding-left: 4px;
	}
	.btn-split__arrow svg {
		width: 14px;
		height: 14px;
	}
}

/* ==================================================
   ICON SHAPE — reusable single-pill angled rectangle
   ==================================================
 * Same blue background + angled inner cap as the arrow side of .btn-split.
 * Use as a wrapper on any icon button: <button class="icon-shape">…<svg/>…</button>
 * Cap angles outward on the LEFT (mirror of the right cap on .btn-split__arrow).
 */
.icon-shape {
	--cta-bg:        #2E6AEA;
	--cta-bg-hover:  #1F58D6;
	--cta-fg:        #fff;
	--cta-radius:    8px;
	--cta-skew:      -14deg;
	--cta-height:    40px;
	--cta-width:     50px;
	--cta-cap-w:     44px;
	--cta-cap-inset: 24px;

	position: relative;
	isolation: isolate;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: var(--cta-width);
	height: var(--cta-height);
	padding: 0;
	border: 0;
	background: transparent;
	color: var(--cta-fg);
	cursor: pointer;
}

.icon-shape::before {
	content: "";
	position: absolute;
	top: 0;
	bottom: 0;
	left: var(--cta-cap-inset);
	right: 0;
	background: var(--cta-bg);
	border-radius: var(--cta-radius);
	z-index: -1;
	transition: background 0.15s ease;
}

.icon-shape::after {
	content: "";
	position: absolute;
	top: 0;
	left: 0;
	width: var(--cta-cap-w);
	height: 100%;
	background: var(--cta-bg);
	border-radius: var(--cta-radius);
	transform: skewX(var(--cta-skew));
	z-index: -1;
	transition: background 0.15s ease;
}

.icon-shape:hover::before,
.icon-shape:hover::after {
	background: var(--cta-bg-hover);
}

.icon-shape:focus-visible {
	outline: 2px solid var(--cta-bg);
	outline-offset: 3px;
	border-radius: var(--cta-radius);
}

/* ---- Hamburger / Close toggle (mobile) ----
 * Uses .icon-shape for the blue angled background.
 * The flex container inside is built from the bars themselves.
 */
.site-header__hamburger {
	flex-direction: column;
	justify-content: center;
	gap: 5px;
}

.site-header__hamburger-bar {
	display: block;
	width: 18px;
	height: 2px;
	background: #ffffff;
	border-radius: 2px;
	transition: transform 0.25s ease, opacity 0.25s ease;
	transform-origin: center;
}

/* Animate bars into an X when menu is open */
.site-header__hamburger[aria-expanded="true"] .site-header__hamburger-bar:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.site-header__hamburger[aria-expanded="true"] .site-header__hamburger-bar:nth-child(2) {
	opacity: 0;
	transform: scaleX(0);
}
.site-header__hamburger[aria-expanded="true"] .site-header__hamburger-bar:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}

/* ---- Mobile Nav Panel ---- */
.mobile-nav {
	position: fixed;
	top: 72px; /* matches header height */
	left: 0;
	right: 0;
	z-index: 1025;
	background: #fff;
	border-top: 1px solid #e5e5e5;
	box-shadow: 0 8px 24px rgba(0,0,0,.10);
	max-height: 0;
	overflow: hidden;
	visibility: hidden;
	pointer-events: none;
	transition: max-height 0.35s ease, visibility 0s linear 0.35s;
}

.mobile-nav.is-open {
	max-height: calc(100vh - 72px);
	visibility: visible;
	pointer-events: auto;
	transition: max-height 0.35s ease, visibility 0s linear 0s;
	overflow-y: auto;
}

@media (min-width: 992px) {
	.mobile-nav {
		display: none !important;
	}
}

.mobile-nav__inner {
	padding: 0px 20px 32px;
	max-width: 600px;
	margin-inline: auto;
}

/* Nav links */
.mobile-nav__menu .nav-item {
	border-bottom: 1px solid #f0f0f0;
}

.mobile-nav__menu .nav-link {
	font-family: var(--font-geist);
	font-weight: 600;
	font-size: 16px;
	line-height: 24px;
	color: #222222;
	padding: 14px 0;
	display: block;
}

.mobile-nav__menu .nav-link:hover,
.mobile-nav__menu .nav-link:focus {
	color: var(--color-accent, #222);
}

/* Dropdown sub-menu (accordion style) */
.mobile-nav__menu .dropdown-menu {
	position: static !important;
	transform: none !important;
	border: none;
	box-shadow: none;
	padding: 0 0 8px 16px;
	margin: 0;
	background: transparent;
}

.mobile-nav__menu .dropdown-item {
	font-family: var(--font-geist);
	font-weight: 400;
	font-size: 15px;
	color: #555;
	padding: 8px 0;
}

.mobile-nav__menu .dropdown-item:hover,
.mobile-nav__menu .dropdown-item:focus {
	background: transparent;
	color: var(--color-accent, #222);
}

/* Dropdown caret for mobile */
.mobile-nav__menu .dropdown-toggle::after {
	float: right;
	margin-top: 6px;
}

/* Login link */
.mobile-nav__login {
	display: block;
	font-family: var(--font-geist);
	font-weight: 600;
	font-size: 16px;
	color: #222222;
	text-decoration: none;
	padding: 14px 0;
	border-bottom: 1px solid #f0f0f0;
}

.mobile-nav__login:hover {
	color: var(--color-accent, #222);
}

/* CTA in mobile menu */
.mobile-nav__cta {
	padding-top: 28px;
}

/* ---- Schedule modal ---- */
.site-header__schedule-modal .modal-content {
	border-radius: 12px;
}

/* --------------------------------------------------
   HERO
-------------------------------------------------- */

.hero {
	position: relative;
	min-height: 100vh;
}

/* ==================================================
   HERO BLOCK
================================================== */

.hero-block {
	position: relative;
	width: 100%;
}

.hero-block__media {
	position: relative;
	z-index: 1;
	width: 100%;
}

.hero-block__picture {
	display: block;
	width: 100%;
}

.hero-block__image {
	display: block;
	width: 100%;
	height: auto;
}

.hero-block__content-wrap {
	position: absolute;
	z-index: 11;
	top: var(--hero-d-top, 40%);
	left: var(--hero-d-left, 60%);
	width: var(--hero-d-width, 400px);
	text-align: var(--hero-d-align, left);
	display: block;
	transform: none;
}

.hero-block__content {
	position: relative;
	display: block;
	height: auto;
	pointer-events: auto;
	color: inherit;
}

.hero-block__headline {
	margin-bottom: 0px;
}

.hero-block__sub-heading {
	margin-bottom: 0px;
}

.hero-block__bodycopy {
	max-width: 100%;
}

.hero-block__bodycopy p + p {
	margin-top: 1em;
}

.hero-block__cta-group {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 16px;
	margin-top: 32px;
}

/* ==================================================
   CTA BUTTON SYSTEM
================================================== */

.btn-cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: auto;
	min-width: 0;
	border: 1px solid transparent;
	border-radius: 999px;
	text-align: center;
	text-transform: uppercase;
	text-decoration: none;
	white-space: nowrap;
	cursor: pointer;
	transition:
		background-color 0.2s ease,
		border-color 0.2s ease,
		color 0.2s ease,
		opacity 0.2s ease;
	font-family: var(--font-condensed);
	font-weight: 700;
	letter-spacing: 0.16em;
	line-height: 1;
}

/* Non-clickable CTA variant (link_type = "none" renders a <span>).
   Disable hover styles and the pointer cursor so the button reads
   as decorative/static, not interactive. */
span.btn-cta,
span.btn-split {
	cursor: default;
	pointer-events: none;
}

.btn-cta:hover {
	text-decoration: none;
}

.btn-cta:focus-visible {
	outline: 2px solid currentColor;
	outline-offset: 2px;
}

.btn-lg {
	min-height: 44px;
	padding: 12px 28px;
	font-size: 15px;
}

.btn-sm {
	min-height: 32px;
	padding: 8px 18px;
	font-size: 12px;
}

/* Default (no mode / accent) */
.btn-cta {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-primary);
}

.btn-cta:hover {
	background-color: var(--color-white);
	border-color: var(--color-white);
	color: var(--color-primary);
}

.btn-cta:active {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-primary);
}

.btn-cta[aria-disabled="true"],
.btn-cta.disabled,
.btn-cta:disabled {
	background-color: var(--color-grey-4);
	border-color: var(--color-grey-4);
	color: var(--color-white);
	cursor: not-allowed;
	pointer-events: none;
}

/* Manual overrides */
.btn-cta.btn-dark {
	background-color: var(--color-primary);
	border-color: var(--color-primary);
	color: var(--color-white);
}

.btn-cta.btn-dark:hover {
	background-color: var(--color-white);
	border-color: var(--color-primary);
	color: var(--color-primary);
}

.btn-cta.btn-dark:active {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-primary);
}

.btn-cta.btn-dark[aria-disabled="true"],
.btn-cta.btn-dark.disabled,
.btn-cta.btn-dark:disabled {
	background-color: var(--color-grey-3);
	border-color: var(--color-grey-3);
	color: var(--color-white);
	cursor: not-allowed;
	pointer-events: none;
}

.btn-cta.btn-white {
	background-color: var(--color-white);
	border-color: var(--color-white);
	color: var(--color-primary);
}

.btn-cta.btn-white:hover {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-primary);
}

.btn-cta.btn-white:active {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-primary);
}

.btn-cta.btn-white[aria-disabled="true"],
.btn-cta.btn-white.disabled,
.btn-cta.btn-white:disabled {
	background-color: var(--color-grey-2);
	border-color: var(--color-grey-2);
	color: var(--color-white);
	cursor: not-allowed;
	pointer-events: none;
}

.btn-cta.btn-primary-blue {
	background-color: #071049;
	border-color: #071049;
	color: var(--color-white);
}

.btn-cta.btn-primary-blue:hover {
	background-color: var(--color-white);
	border-color: #071049;
	color: #071049;
}

.btn-cta.btn-primary-blue:active {
	background-color: var(--color-accent);
	border-color: var(--color-accent);
	color: var(--color-primary);
}


.btn-cta.btn-highlight,
.btn-cta.highlight {
	background-color: #FFBB00;
	border-color: #FFBB00;
	color: var(--color-primary);
}

.btn-cta.btn-highlight:hover,
.btn-cta.highlight:hover {
	background-color: var(--color-white);
	border-color: #FFBB00;
	color: #FFBB00;
}

.btn-cta.btn-highlight:active,
.btn-cta.highlight:active {
	background-color: #FFBB00;
	border-color: #FFBB00;
	color: var(--color-primary);
}

.btn-cta.btn-highlight[aria-disabled="true"],
.btn-cta.btn-highlight.disabled,
.btn-cta.btn-highlight:disabled,
.btn-cta.highlight[aria-disabled="true"],
.btn-cta.highlight.disabled,
.btn-cta.highlight:disabled {
	background-color: var(--color-grey-3);
	border-color: var(--color-grey-3);
	color: var(--color-white);
	cursor: not-allowed;
	pointer-events: none;
}

/* ==================================================
   OUTLINE BOX LINKS
================================================== */

.outline-box-links {
	align-items: center;
	justify-content: center;
	padding-top: 45px;
	padding-bottom: 45px;
	--outline-box-border: #cdcdcd;
}
@media (min-width: 992px) {
	.outline-box-links {
		padding-top: 90px;
		padding-bottom: 90px;
	}
}
.outline-box-links.cols-1,
.outline-box-links.cols-2,
.outline-box-links.cols-3 {
	padding-top: 0;
	padding-bottom: 0;
}

.outline-box-item {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	min-height: 110px;
}

.outline-box-item::after {
	content: "";
	position: absolute;
	right: 0;
	top: 50%;
	transform: translateY(-50%);
	width: 1px;
	height: 110px;
	background-color: var(--outline-box-border);
}

.outline-box-item:last-child::after {
	display: none;
}

/* Border style variants */
.outline-box-links.no-border .outline-box-item::after {
	display: none;
}

.outline-box-links.all-borders {
	flex-wrap: wrap;
}

.outline-box-links.all-borders .outline-box-item {
	min-height: 0;
	justify-content: flex-end;
}

.outline-box-links.all-borders .outline-box-item:nth-child(even) {
	justify-content: flex-start;
}

.outline-box-links.all-borders .outline-box-link {
	border: 1px solid var(--outline-box-border);
	padding: 25px;
	margin: 0 0 20px;
	flex: 1;
}

.outline-box-links.all-borders .outline-box-item::after {
	display: none;
}

/* Mobile layout for 4-column divider-only: 2x2 grid with vertical + horizontal dividers */
@media (max-width: 991.98px) {
	.outline-box-links.cols-4:not(.cols-4-stacked).divider-only .outline-box-item:nth-child(even)::after {
		display: none;
	}
	.outline-box-links.cols-4:not(.cols-4-stacked).divider-only .outline-box-item:nth-last-child(n+3) {
		border-bottom: 1px solid var(--outline-box-border);
	}
	/* 4-stacked on mobile: full-width stack with horizontal dividers between items (not after last) */
	.outline-box-links.cols-4-stacked.divider-only .outline-box-item::after {
		display: none;
	}
	.outline-box-links.cols-4-stacked.divider-only .outline-box-item:not(:last-child) {
		border-bottom: 1px solid var(--outline-box-border);
	}
	/* all-borders: center each box when items stack full-width */
	.outline-box-links.all-borders .outline-box-item,
	.outline-box-links.all-borders .outline-box-item:nth-child(even) {
		justify-content: center;
	}
	/* all-borders: on mobile only use bottom margin between stacked boxes */
	.outline-box-links.all-borders .outline-box-link {
		margin: 0 0 20px;
	}
}

/* Border color variants */
.outline-box-links.border-grey      { --outline-box-border: #cdcdcd; }
.outline-box-links.border-black     { --outline-box-border: #000; }
.outline-box-links.border-white     { --outline-box-border: #fff; }
.outline-box-links.border-blue      { --outline-box-border: rgb(7, 16, 73); }
.outline-box-links.border-highlight { --outline-box-border: var(--color-accent); }

/* Text color variants */
.outline-box-links.text-white .outline-box-link {
	color: #fff;
}
.outline-box-links.text-primary .outline-box-link {
	color: var(--color-primary);
}
.outline-box-links.text-accent .outline-box-link {
	color: var(--color-accent);
}
.outline-box-links.text-black .outline-box-link {
	color: #000;
}

:where(.outline-box-link) {
	display: block;
	text-align: center;
	text-transform: uppercase;
	text-decoration: none;
	font-family: var(--font-condensed);
	font-size: 25px;
	font-weight: 400;
	letter-spacing: 0.16em;
	line-height: 1.4;
	color: var(--color-primary);
	padding: 24px 16px;
}

.outline-box-links.cols-2 .outline-box-link {
	text-transform: none;
}

a.outline-box-link:hover {
	color: var(--color-accent);
}

/* ==================================================
   FAQ BLOCK
================================================== */

.faq-block {
	max-width: 300px;
	margin-left: auto;
	margin-right: auto;
}
@media (min-width: 992px) {
	.faq-block {
		max-width: 938px;
	}
}

.faq-col {
	display: flex;
	flex-direction: column;
	gap: 40px;
}

.faq-col-left {
	border-right: 1px solid #cdcdcd;
	padding-right: 40px;
}

.faq-col-right {
	padding-left: 40px;
}

.faq-item {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 12px;
}

.faq-icon {
	flex-shrink: 0;
	width: 32px;
	height: 32px;
}

.faq-icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}

.faq-question {
	font-family: var(--font-primary);
	font-size: 21px;
	font-weight: 700;
	line-height: 1.3;
	color: var(--color-primary);
	margin-bottom: 0;
}

.faq-answer {
	font-family: var(--font-primary);
	font-size: 21px;
	font-weight: 400;
	line-height: 1.6;
	color: var(--color-grey-1);
}

/* Icon text link style – no background */
.btn-icon-link {
	display: inline-flex;
	align-items: center;
	gap: 8px;
	background: none;
	border: none;
	padding: 0;
	color: var(--color-accent);
	text-decoration: none;
	text-transform: uppercase;
	font-family: var(--font-condensed);
	font-weight: 400;
	letter-spacing: 0.16em;
	font-size: 21px;
	line-height: 30px;
	cursor: pointer;
	transition: color 0.2s ease, opacity 0.2s ease;
}

.btn-icon-link:hover {
	color: var(--color-white);
	text-decoration: none;
}

.btn-icon-link:active {
	color: var(--color-accent);
}

.btn-icon-link .btn-icon {
	width: 40px;
	height: 40px;
	flex-shrink: 0;
	line-height: 0;
	overflow: visible;
}

.btn-icon-link .btn-icon svg {
	width: 40px;
	height: 40px;
	fill: currentColor;
	display: block;
}

.btn-icon-link.icon-right {
	flex-direction: row-reverse;
}

/* --------------------------------------------------
   MODULES
-------------------------------------------------- */

.container-ap .module-column {
	position: absolute;
	z-index: 11;
}

.module-column.col-border-right {
	border-right: none;
	border-bottom: 1px solid #cdcdcd;
	margin-bottom: 48px;
}

.module-column.col-border-right:last-child {
	border-right: none;
	border-bottom: none;
	margin-bottom: 0;
}

@media (min-width: 992px) {
	.module-column.col-border-right {
		border-right: 1px solid #cdcdcd;
		border-bottom: none;
		margin-bottom: 0;
	}
	.module-column.col-border-right:last-child {
		border-right: none;
		border-bottom: none;
		margin-bottom: 0;
	}
}

.module-column.col-outline-white {
	border: 1px solid #fff;
}

/*
 * Inline image mode: the container's <picture> establishes the height.
 * The .module-container__inner overlay is absolutely positioned to fill
 * that height (top:0, bottom:0). Force the .row inside to fill the inner
 * too so columns can stretch full-height instead of collapsing to their
 * content. Inline style on .row (max-width:1440px) is preserved.
 *
 * width: 100% is required because the parent is display:flex /
 * flex-direction:column, and the row uses mx-auto. In a column-flex
 * parent, auto cross-axis margins (margin-inline: auto) cause the flex
 * item to shrink to content width instead of stretching. Forcing
 * width:100% (capped by the inline max-width) restores the expected
 * full-bleed-then-centered behavior so col-12 children actually fill
 * the row.
 */
.module-container__inner.position-absolute {
	display: flex;
	flex-direction: column;
}
.module-container__inner.position-absolute > .row {
	flex: 1 1 auto;
	min-height: 100%;
	width: 100%;
}

/*
 * Hero pin-to-viewport.
 * When the first .module-container in <main> has an inline background
 * image, its natural aspect can push content below the fold on short or
 * wide viewports. Honor the designer's intent (full-bleed image) by
 * pinning the hero to one screen and cropping the image via object-fit.
 *
 * --site-header-height: override on <body> or :root to match the actual
 * sticky header height (default 80px).
 */
main > .module-container:first-child:has(.module-container__bg-img) {
	height: calc(100svh - var(--site-header-height, 80px));
}
main > .module-container:first-child > .module-container__bg-img {
	display: block;
	width: 100%;
	height: 100%;
}
main > .module-container:first-child > .module-container__bg-img > img {
	width: 100%;
	/* Beat Bootstrap's .h-auto (which is height:auto !important) so the
	   hero image cover-fills the pinned viewport box on mobile. */
	height: 100% !important;
	object-fit: cover;
	object-position: center;
	display: block;
}

/* Hero row packing: on mobile the two columns wrap to separate flex
   lines and stretch by default, so .align-items-end has no visible
   effect. align-content:end packs both wrapped lines to the bottom of
   the absolutely-positioned inner, matching the desktop intent. */
@media (max-width: 991.98px) {
	main > .module-container:first-child .module-container__inner > .row.align-items-end {
		align-content: end;
	}
}

.module-column {
	/* Width is controlled by Bootstrap col-* classes; don't override here. */
	top: var(--col-top-mobile, auto);
	bottom: var(--col-bottom-mobile, auto);
	left: var(--col-left-mobile, auto);
	right: var(--col-right-mobile, auto);
	transform: translateY(var(--col-shift-mobile, 0));
}
/* Auto-center absolute-positioned columns on mobile only */
@media (max-width: 991.98px) {
	.module-column.position-absolute {
		left: 0;
		right: 0;
		margin-left: auto;
		margin-right: auto;
	}
	/* Also center relative columns that have a fixed mobile width */
	.module-column.position-relative {
		margin-left: auto;
		margin-right: auto;
	}
}
.module-heading-block {
	width: var(--heading-width-mobile, auto);
	/* Let modern browsers auto-balance multi-line headlines so each
	   breakpoint gets a sensible wrap without manual <br> tags. Falls
	   back to normal wrapping in older browsers. */
	text-wrap: balance;
}
@media (max-width: 991.98px) {
	.module-heading-block.text-center {
		margin-left: auto;
		margin-right: auto;
	}
	.module-heading-block.text-end {
		margin-left: auto;
		margin-right: 0;
	}
	.module-heading-block.text-start {
		margin-left: 0;
		margin-right: auto;
	}
}
.module-body-copy {
	width: var(--body-width-mobile, auto);
	top: var(--body-top-mobile, auto);
	bottom: var(--body-bottom-mobile, auto);
	left: var(--body-left-mobile, auto);
	right: var(--body-right-mobile, auto);
}
@media (max-width: 991.98px) {
	.module-body-copy.text-center {
		margin-left: auto;
		margin-right: auto;
	}
	.module-body-copy.text-end {
		margin-left: auto;
		margin-right: 0;
	}
	.module-body-copy.text-start {
		margin-left: 0;
		margin-right: auto;
	}
}

/* Four Photo Gallery - 5-column desktop support */
.col-lg-5ths {
	flex: 0 0 auto;
}
@media (min-width: 992px) {
	.col-lg-5ths {
		width: 20%;
	}
	.module-four-photo-gallery > .col-lg-5ths {
		width: 20%;
	}
}
@media (min-width: 992px) {
	.position-lg-absolute {
		position: absolute !important;
	}
	.module-column {
		/* Width is controlled by Bootstrap col-{bp}-* classes; don't override here. */
		top: var(--col-top-desktop, var(--col-top-mobile, auto));
		bottom: var(--col-bottom-desktop, var(--col-bottom-mobile, auto));
		left: var(--col-left-desktop, var(--col-left-mobile-fallback, var(--col-left-mobile, auto)));
		right: var(--col-right-desktop, var(--col-right-mobile-fallback, var(--col-right-mobile, auto)));
		transform: translateY(var(--col-shift-desktop, var(--col-shift-mobile, 0)));
	}
	.module-column.position-absolute.col-center-x {
		left: 0;
		right: 0;
		margin-left: auto;
		margin-right: auto;
	}
	.module-heading-block {
		width: var(--heading-width-desktop, var(--heading-width-mobile, auto));
	}
	.module-heading-block.text-lg-center {
		margin-left: auto;
		margin-right: auto;
	}
	.module-heading-block.text-lg-end {
		margin-left: auto;
		margin-right: 0;
	}
	.module-heading-block.text-lg-start {
		margin-left: 0;
		margin-right: auto;
	}
	.module-body-copy {
		width: var(--body-width-desktop, var(--body-width-mobile, auto));
		top: var(--body-top-desktop, var(--body-top-mobile, auto));
		bottom: var(--body-bottom-desktop, var(--body-bottom-mobile, auto));
		left: var(--body-left-desktop, var(--body-left-mobile, auto));
		right: var(--body-right-desktop, var(--body-right-mobile, auto));
	}
	.module-body-copy.text-lg-center {
		margin-left: auto;
		margin-right: auto;
	}
	.module-body-copy.text-lg-end {
		margin-left: auto;
		margin-right: 0;
	}
	.module-body-copy.text-lg-start {
		margin-left: 0;
		margin-right: auto;
	}
	/* ® and ™ auto-wrapped in <sup class="legal-mark"> via functions.php */
	sup.legal-mark {
		font-size: 0.55em;
		vertical-align: super;
		line-height: 0;
	}

	.font-lg-50 { font-size: 50px; line-height: normal; }
zzzzzz	.font-lg-40 { font-size: 40px; line-height: normal; }
	.font-lg-30 { font-size: 30px; line-height: 45px; }
	.font-lg-25 { font-size: 25px; line-height: normal; }
	.font-lg-24 { font-size: 24px; line-height: normal; }
	.font-lg-21 { font-size: 21px; line-height: 30px; }
	.font-lg-16 { font-size: 16px; line-height: 29px; }

	.font-lg-300 { font-weight: 300; }
	.font-lg-400 { font-weight: 400; }
	.font-lg-600 { font-weight: 600; }
	.font-lg-700 { font-weight: 700; }

	.font-lg-italic { font-style: italic; }

	.barlow { font-family: var(--font-primary); }

	/* --------------------------------------------------
	   RESPONSIVE HERO FONT SCALING
	   Scales Barlow font sizes fluidly in the first
	   .module-container of <main> (hero banner area),
	   limited to absolute-positioned columns.
	   Design reference: 1440px wide.
	   Formula: vw = design_px / 14.4
	   Clamp range: 992px (min) → 2560px (max)
	-------------------------------------------------- */
	main > .module-container:first-child .module-column.position-absolute .barlow.font-lg-50,
	main > .module-container:first-child .module-column.position-lg-absolute .barlow.font-lg-50 {
		font-size: clamp(34px, 3.47vw, 89px); /* overridden below if .no-responsive-text */
		line-height: 1.1;
	}
	main > .module-container:first-child .module-column.position-absolute .barlow.font-lg-40,
	main > .module-container:first-child .module-column.position-lg-absolute .barlow.font-lg-40 {
		font-size: clamp(28px, 2.78vw, 71px);
		line-height: 1.1;
	}
	main > .module-container:first-child .module-column.position-absolute .barlow.font-lg-30,
	main > .module-container:first-child .module-column.position-lg-absolute .barlow.font-lg-30 {
		font-size: clamp(22px, 2.08vw, 53px);
		line-height: 1.5;
	}
	main > .module-container:first-child .module-column.position-absolute .barlow.font-lg-25,
	main > .module-container:first-child .module-column.position-lg-absolute .barlow.font-lg-25 {
		font-size: clamp(18px, 1.74vw, 44px);
		line-height: 1.2;
	}
	main > .module-container:first-child .module-column.position-absolute .barlow.font-lg-21,
	main > .module-container:first-child .module-column.position-lg-absolute .barlow.font-lg-21 {
		font-size: clamp(16px, 1.46vw, 37px);
		line-height: 1.43;
	}

	/* Opt-out: column has disable_responsive_text checked — restore fixed sizes */
	main > .module-container:first-child .module-column.no-responsive-text .barlow.font-lg-50 { font-size: 50px; line-height: normal; }
	main > .module-container:first-child .module-column.no-responsive-text .barlow.font-lg-40 { font-size: 40px; line-height: normal; }
	main > .module-container:first-child .module-column.no-responsive-text .barlow.font-lg-30 { font-size: 30px; line-height: 45px; }
	main > .module-container:first-child .module-column.no-responsive-text .barlow.font-lg-25 { font-size: 25px; line-height: normal; }
	main > .module-container:first-child .module-column.no-responsive-text .barlow.font-lg-21 { font-size: 21px; line-height: 30px; }
}

/* --------------------------------------------------
   FADING SLIDES BLOCK
-------------------------------------------------- */

/* Prevent Owl from collapsing to 0 height during fade transitions */
.podsearch-fading-slides.owl-carousel .owl-stage-outer {
	overflow: visible;
}
/* Clip overflow at the carousel wrapper so the visible stage-outer doesn't
   cause a horizontal scrollbar on the page */
.podsearch-fading-slides.owl-carousel {
	overflow: hidden;
}
.podsearch-fading-slides.owl-carousel .owl-item {
	/* Items stack via Owl's own absolute positioning during animation */
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden;
}
.podsearch-fading-slides .fading-slide {
	width: 100%;
}

/* Carousel variation: mobile 1-up, desktop 3-up with optional arrows */
.podsearch-fading-slides--cards .owl-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 22px;
	margin-top: 18px;
}
.podsearch-fading-slides--cards .owl-nav button.owl-prev,
.podsearch-fading-slides--cards .owl-nav button.owl-next {
	background: transparent !important;
	color: #fff !important;
	font-size: 64px !important;
	line-height: 1;
	padding: 0 6px !important;
	margin: 0;
	opacity: 0.95;
	transition: opacity 0.2s ease;
}
.podsearch-fading-slides--cards .owl-nav button.owl-prev:hover,
.podsearch-fading-slides--cards .owl-nav button.owl-next:hover {
	opacity: 1;
}
.podsearch-fading-slides--cards .podsearch-fading-slides__nav-label {
	display: inline-block;
	font-family: var(--font-condensed);
	font-size: 54px;
	font-weight: 500;
	letter-spacing: 0.04em;
	line-height: 1;
	text-transform: uppercase;
	color: #fff;
	white-space: nowrap;
}

@media (max-width: 1199.98px) {
	.podsearch-fading-slides--cards .owl-nav button.owl-prev,
	.podsearch-fading-slides--cards .owl-nav button.owl-next {
		font-size: 48px !important;
	}
	.podsearch-fading-slides--cards .podsearch-fading-slides__nav-label {
		font-size: 38px;
	}
}

@media (max-width: 767.98px) {
	.podsearch-fading-slides--cards .owl-nav {
		gap: 10px;
		margin-top: 12px;
	}
	.podsearch-fading-slides--cards .owl-nav button.owl-prev,
	.podsearch-fading-slides--cards .owl-nav button.owl-next {
		font-size: 34px !important;
	}
	.podsearch-fading-slides--cards .podsearch-fading-slides__nav-label {
		font-size: 16px;
		letter-spacing: 0.07em;
	}
}

/* --------------------------------------------------
   INLINE ANCHOR HIGHLIGHT
   Applies only to anchors inside body copy / rich text
   (not nav, buttons, or CTAs). Resting state: accent
   underline. Hover/focus: accent wipes behind text.
-------------------------------------------------- */
.module-body-copy a:not(.btn):not(.btn-cta):not(.button),
.entry-content a:not(.btn):not(.btn-cta):not(.button) {
	color: inherit;
	text-decoration: underline;
}


/* --------------------------------------------------
   POST PAGINATION (single.php)
-------------------------------------------------- */

.post-pagination {
	padding: 60px 20px;
	border-top: 1px solid rgba(0, 0, 0, 0.15);
	color: var(--color-primary);
}

.post-pagination__inner {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	gap: 30px;
	max-width: 1200px;
	margin: 0 auto;
}

.post-pagination__item--prev {
	justify-self: start;
}

.post-pagination__item--next {
	justify-self: end;
}

.post-pagination__link {
	display: inline-flex;
	align-items: center;
	gap: 16px;
	text-decoration: none;
	color: var(--color-primary);
	font-family: var(--font-primary);
}

.post-pagination__icon {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 36px;
	height: 36px;
	flex-shrink: 0;
	transition: transform 0.2s ease;
}

.post-pagination__icon svg {
	width: 100%;
	height: 100%;
	display: block;
}

.post-pagination__link:hover .post-pagination__icon {
	transform: translateX(-4px);
}

.post-pagination__link--next:hover .post-pagination__icon {
	transform: translateX(4px);
}

.post-pagination__text {
	display: flex;
	flex-direction: column;
	line-height: 1.3;
}

.post-pagination__link--next .post-pagination__text {
	text-align: right;
}

.post-pagination__label {
	font-size: 14px;
	font-weight: 400;
	opacity: 0.7;
	margin-bottom: 2px;
}

.post-pagination__title {
	font-size: 18px;
	font-weight: 600;
}

@media (max-width: 767.98px) {
	.post-pagination__inner {
		gap: 16px;
	}
	.post-pagination__title {
		display: none;
	}
	.post-pagination__label {
		font-size: 13px;
	}
}

/* --------------------------------------------------
   MEDIA QUERIES (BOOTSTRAP 5)
-------------------------------------------------- */

@media (max-width: 991.98px) {
	.faq-col-left {
		border-right: none;
		padding-right: 0;
		padding-bottom: 40px;
	}

	.faq-col-right {
		padding-left: 0;
	}

	.faq-question {
		font-family: var(--font-condensed);
	}

	.faq-answer {
		font-family: var(--font-condensed);
	}

	.hero-block__content-wrap {
		top: var(--hero-m-top, 20%);
		left: var(--hero-m-left, 50%);
		width: var(--hero-m-width, 90%);
		text-align: var(--hero-m-align, center);
		transform: translateX(-50%);
	}

	.hero-block__cta-group {
		gap: 12px;
		margin-top: 24px;
	}

	.btn-lg {
		min-height: 32px;
		padding: 8px 18px;
		font-size: 11px;
	}

	.btn-sm {
		min-height: 32px;
		padding: 8px 18px;
		font-size: 11px;
	}
}

/* --------------------------------------------------
   PRINT (MODERNIZED)
-------------------------------------------------- */

@media print {
	body {
		background: #fff !important;
		color: #000 !important;
	}

	.site-header,
	.hero,
	.site-header__nav,
	.site-header__menu-toggle,
	.site-header__search-toggle {
		display: none !important;
	}

	a::after {
		content: " (" attr(href) ")";
		font-size: 12px;
	}

	img {
		max-width: 100% !important;
		height: auto !important;
	}
}

/* ==================================================
   SPACER (divider block in spacer mode)
================================================== */

.module-spacer {
	width: 100%;
	flex-shrink: 0;
	height: var(--spacer-h-mobile, 0);
}
@media (min-width: 992px) {
	.module-spacer {
		height: var(--spacer-h-desktop, 0);
	}
}

/* A column that only contains a spacer should always span the full row width */
.module-column:has(> .module-spacer:only-child) {
	width: 100%;
	flex: 0 0 100%;
	max-width: 100%;
}

/* CTA GROUP FLEX LAYOUTS */
.cta-group {
	display: flex;
	flex-wrap: wrap;
	gap: 16px;
	align-items: center;
	margin-bottom: 32px;
}
@media (max-width: 991.98px) {
	.cta-group {
		margin-bottom: 16px;
	}
}
.cta-group-inline {
	flex-direction: row;
	justify-content: flex-start;
}
.cta-group-stacked {
	flex-direction: column;
	align-items: stretch;
}
.cta-group > div {
	/* Each CTA wrapper spans the full row so its `text-start | text-center |
	   text-end` utility (and any inherited text-align from the parent
	   column) actually positions the inline button. */
	width: 100%;
	margin: 0 !important;
}
/* Inline variant: keep wrappers shrink-to-fit and let the group control
   horizontal placement via justify-content. */
.cta-group-inline > div {
	width: auto;
}
@media (max-width: 600px) {
	.cta-group-inline {
		flex-direction: column;
		align-items: center;
	}
}
/* ==================================================
   SITE HEADER � MAIN NAV DROPDOWN PANEL
================================================== */
.site-header__panel {
position: absolute;
top: calc(100% + 18px);
right: 0;
width: 280px;
background: #071049;
color: #fff;
padding: 24px 28px 20px;
z-index: 1001;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.25);
border: solid 1px #ffffff;
border-radius: 10px;
}

.site-header__panel .menu {
list-style: none;
margin: 0;
padding: 0;
display: flex;
flex-direction: column;
align-items: flex-end;
text-align: right;
}

.site-header__panel .menu li {
margin: 0;
padding: 0;
}

.site-header__panel .menu a {
display: inline-block;
padding: 8px 0;
font-family: var(--font-condensed);
font-size: 14px;
font-weight: 400;
letter-spacing: 0.16em;
text-transform: uppercase;
color: #fff;
line-height: 1.2;
transition: color 0.15s ease;
}

.site-header__panel .menu a:hover,
.site-header__panel .menu a:focus,
.site-header__panel .menu .current-menu-item > a,
.site-header__panel .menu .current_page_item > a {
color: var(--color-accent, #ffbb00);
}

.site-header__panel-cta {
display: block;
width: 100%;
background: transparent;
border: 0;
padding: 4px 0 10px;
text-align: right;
font-family: var(--font-condensed);
font-size: 14px;
font-weight: 700;
letter-spacing: 0.16em;
text-transform: uppercase;
color: var(--color-accent, #ffbb00);
line-height: 1.2;
cursor: pointer;
}
.site-header__panel-cta:hover,
.site-header__panel-cta:focus {
color: #fff;
outline: 0;
}

.site-header__panel-phone {
display: block;
padding: 6px 0 14px;
text-align: right;
font-family: var(--font-condensed);
font-size: 14px;
font-weight: 700;
letter-spacing: 0.16em;
color: var(--color-accent, #ffbb00);
border-bottom: 1px solid rgba(255, 255, 255, 0.2);
margin-bottom: 8px;
}
.site-header__panel-phone:hover,
.site-header__panel-phone:focus {
color: #fff;
}

.site-header__panel-close {
display: block;
margin: 12px 0 0 auto;
width: 32px;
height: 32px;
padding: 0;
background: transparent;
border: 0;
color: #fff;
cursor: pointer;
}
.site-header__panel-close:hover,
.site-header__panel-close:focus {
color: var(--color-accent, #ffbb00);
outline: 0;
}
.site-header__panel-close svg {
width: 100%;
height: 100%;
display: block;
}

@media (max-width: 991px) {
.site-header__panel {
left: 50%;
right: auto;
transform: translateX(-50%);
width: min(92vw, 320px);
}
.site-header__panel-close {
margin-left: auto;
margin-right: 0;
}
}

/* Light search panel variant */
.site-header__panel--search {
width: 420px;
background: #fff;
color: #071049;
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.15);
border: 1px solid rgba(7, 16, 73, 0.08);
}
.site-header__panel--search .site-header__panel-inner {
display: flex;
flex-direction: column;
gap: 12px;
}
.site-header__panel--search .site-header__panel-close {
color: #071049;
}
.site-header__panel--search .site-header__panel-close:hover,
.site-header__panel--search .site-header__panel-close:focus {
color: var(--color-accent, #ffbb00);
}
.site-header__panel--search form {
display: flex;
gap: 8px;
align-items: center;
width: 100%;
}
.site-header__panel--search input[type="text"],
.site-header__panel--search input[type="search"] {
flex: 1 1 auto;
min-width: 0;
padding: 10px 14px;
border: 1px solid rgba(7, 16, 73, 0.2);
border-radius: 4px;
font-family: var(--font-primary);
font-size: 15px;
color: #071049;
background: #fff;
}
.site-header__panel--search input[type="text"]:focus,
.site-header__panel--search input[type="search"]:focus {
outline: none;
border-color: var(--color-accent, #ffbb00);
}
.site-header__panel--search button[type="submit"] {
flex: 0 0 auto;
background: var(--color-accent, #ffbb00);
color: #071049;
border: 0;
border-radius: 4px;
padding: 10px 14px;
font-family: var(--font-condensed);
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
cursor: pointer;
}
.site-header__panel--search .sr-only {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}

@media (max-width: 991px) {
.site-header__panel--search {
width: min(92vw, 420px);
}
}

/* ==================================================
   SEARCH RESULTS PAGE
================================================== */
.search-results-page {
padding-top: 200px;
}
.search-results-eyebrow {
font-family: var(--font-condensed);
font-size: 13px;
letter-spacing: 0.18em;
color: #071049;
opacity: 0.7;
}
.search-results-query {
font-family: var(--font-condensed);
font-weight: 700;
font-size: clamp(28px, 4vw, 44px);
color: #071049;
text-transform: uppercase;
letter-spacing: 0.04em;
}
.search-results-form {
max-width: 560px;
}
.search-results-form form {
display: flex;
gap: 8px;
align-items: center;
}
.search-results-form input[type="text"],
.search-results-form input[type="search"] {
flex: 1 1 auto;
min-width: 0;
padding: 12px 16px;
border: 1px solid rgba(7, 16, 73, 0.2);
border-radius: 4px;
font-family: var(--font-primary);
font-size: 16px;
color: #071049;
background: #fff;
}
.search-results-form input[type="text"]:focus,
.search-results-form input[type="search"]:focus {
outline: none;
border-color: var(--color-accent, #ffbb00);
}
.search-results-form button[type="submit"] {
flex: 0 0 auto;
background: var(--color-accent, #ffbb00);
color: #071049;
border: 0;
border-radius: 4px;
padding: 12px 18px;
font-family: var(--font-condensed);
font-weight: 700;
letter-spacing: 0.12em;
text-transform: uppercase;
cursor: pointer;
}
.search-results-count {
font-family: var(--font-condensed);
letter-spacing: 0.16em;
font-size: 13px;
color: #071049;
opacity: 0.7;
}
.search-result-card {
background: #fff;
border: 1px solid rgba(7, 16, 73, 0.08);
border-radius: 4px;
color: #071049;
text-decoration: none;
overflow: hidden;
transition: box-shadow 0.2s ease, transform 0.2s ease;
}
.search-result-card:hover,
.search-result-card:focus {
box-shadow: 0 10px 28px rgba(7, 16, 73, 0.12);
transform: translateY(-2px);
color: #071049;
}
.search-result-card__media {
display: block;
overflow: hidden;
aspect-ratio: 4 / 3;
background: #f5f5f5;
}
.search-result-card__media img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.search-result-card__body {
padding: 20px 22px 24px;
flex: 1 1 auto;
display: flex;
flex-direction: column;
}
.search-result-card__type {
font-family: var(--font-condensed);
font-size: 12px;
letter-spacing: 0.18em;
color: var(--color-accent, #ffbb00);
margin: 0;
}
.search-result-card__title {
font-family: var(--font-condensed);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
color: #071049;
}
.search-result-card:hover .search-result-card__title {
color: var(--color-accent, #ffbb00);
}
.search-result-card__excerpt {
font-family: var(--font-primary);
font-size: 15px;
line-height: 1.55;
color: #333;
}
.search-results-pagination {
display: flex;
justify-content: center;
}
.search-results-pagination .page-numbers {
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 38px;
height: 38px;
padding: 0 10px;
margin: 0 4px;
border: 1px solid rgba(7, 16, 73, 0.2);
border-radius: 4px;
font-family: var(--font-condensed);
font-weight: 700;
letter-spacing: 0.08em;
text-transform: uppercase;
color: #071049;
text-decoration: none;
}
.search-results-pagination .page-numbers.current,
.search-results-pagination .page-numbers:hover {
background: var(--color-accent, #ffbb00);
border-color: var(--color-accent, #ffbb00);
color: #071049;
}
.search-results-empty {
color: #071049;
}
.search-results-empty h2 {
font-family: var(--font-condensed);
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.04em;
}

@media (max-width: 991px) {
.search-results-page {
padding-top: 200px;
}
}

/* ==================================================
   ARCHIVE PAGES (blog / story / category / tag / etc.)
   Bootstrap grid: col-12 col-lg-3 standard, col-lg-6 featured
   Container target: 1275px + 24px (gutter allowance) = 1299px max
   ================================================== */
.archive-page {
padding: 64px 15px;
background: #ffffff;
}
.archive-container {
max-width: 1299px;
width: 100%;
margin-left: auto;
margin-right: auto;
}

/* Page title */
.archive-header {
margin-bottom: 40px;
}
.archive-title {
width: 100%;
max-width: 770px;
margin: 0 auto;
color: #000;
text-align: center;
font-family: var(--font-bricolage);
font-size: 50px;
font-weight: 400;
line-height: normal;
}

/* Grid row � Bootstrap gx-4 gy-4 already provides 24px gutters both axes */
.archive-row {
margin-bottom: 0;
}

/* -------- Archive card (standard, col-lg-3) -------- */
.archive-card {
margin-bottom: 24px;
}
.archive-card__inner {
background: #FFF;
padding: 24px 10px;
display: flex !important;
flex-direction: column;
align-items: center;
text-align: center;
height: 100%;
}

/* Category link at the top */
.archive-card__category {
display: block;
max-width: 100%;
color: var(--color-grey-2, #5F5F5F);
text-align: center;
font-family: var(--font-sans);
font-size: 15px;
font-weight: 400;
line-height: normal;
text-transform: uppercase;
text-decoration: none;
}
.archive-card__category:hover {
color: #000;
}

/* Divider */
.archive-card__divider {
width: 100%;
max-width: 220px;
height: 1px;
background: var(--color-grey-4, #CDCDCD);
border: 0;
opacity: 1;
margin: 10px auto;
}

/* Title */
.archive-card__title {
width: 100%;
max-width: 246px;
margin: 0 auto;
color: #000;
text-align: center;
font-family: var(--font-sans);
font-size: 35px;
font-weight: 300;
line-height: 37px;
text-transform: none;
}
.archive-card__title a {
color: inherit;
text-decoration: none;
}
.archive-card__title a:hover {
color: var(--color-accent, #FFBB00);
}

/* Attribution */
.archive-card__attribution {
width: 100%;
max-width: 280px;
margin: 10px auto 16px;
color: var(--color-grey-2, #5F5F5F);
text-align: center;
font-family: var(--font-sans);
font-size: 15px;
font-style: italic;
font-weight: 300;
line-height: normal;
}

/* Feature image � pinned to bottom of flex card so all cards align evenly */
.archive-card__image {
position: relative;
display: block;
width: 100%;
max-width: 300px;
height: 260px;
margin: auto auto 0; /* push to bottom of card */
background: #FFF;
overflow: hidden;
text-decoration: none;
}
.archive-card__image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}

/* Badge (Popular / New / etc.) � tab-shape at bottom center of image */
.archive-card__badge {
position: absolute;
bottom: 0;
left: 50%;
transform: translateX(-50%);
width: 101px;
height: 19px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: 15px 15px 0 0;
background: var(--color-accent, #FFBB00);
color: #000;
font-family: var(--font-sans);
font-size: 10px;
font-weight: 500;
line-height: normal;
text-transform: uppercase;
letter-spacing: 0.04em;
z-index: 2;
}

/* -------- Featured card (col-lg-6) — two nested columns -------- */
.archive-card--featured .archive-card__inner {
display: flex !important;
flex-direction: row;
align-items: stretch;
padding: 0;
background: #FFF;
min-height: 500px;
}
.archive-card--featured .archive-card__media {
flex: 0 0 50%;
max-width: 50%;
display: block;
background: #D9D9D9;
position: relative;
}
.archive-card--featured .archive-card__media .archive-card__image {
display: block;
width: 100%;
height: 100%;
max-width: 100%;
margin: 0;
}
.archive-card--featured .archive-card__media .archive-card__image img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
}
.archive-card--featured .archive-card__body {
flex: 1 1 50%;
max-width: 50%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: flex-start;
text-align: center;
padding: 24px 16px;
gap: 6px;
}
.archive-card--featured .archive-card__body > * {
width: 100%;
max-width: 280px;
margin-left: auto;
margin-right: auto;
padding-left: 0;
padding-right: 0;
}
.archive-card--featured .archive-card__divider { max-width: 220px; }
.archive-card--featured .archive-card__title { max-width: 100%; }

/* Featured card's post tag color — red variant */
.archive-card--featured .archive-card__badge {
background: var(--color-warning, #F00);
color: #fff;
}

/* Excerpt */
.archive-card__excerpt {
width: 100%;
max-width: 268px;
margin: 14px auto 0;
color: #000;
text-align: center;
font-family: var(--font-sans);
font-size: 21px;
font-weight: 400;
line-height: 26px;
}
.archive-card__excerpt p { margin: 0 0 8px; }
.archive-card__excerpt p:last-child { margin-bottom: 0; }

/* Read more link */
.archive-card__readmore {
display: inline-block;
width: 100%;
max-width: 280px;
margin: 10px auto 0;
color: #000;
text-align: center;
font-family: var(--font-sans);
font-size: 15px;
font-style: italic;
font-weight: 300;
line-height: normal;
text-decoration: underline;
}
.archive-card__readmore:hover {
color: var(--color-accent, #FFBB00);
}

/* -------- Custom search block placeholder (col-lg-6) -------- */
.archive-custom-search {
margin-bottom: 24px;
}
.archive-custom-search__inner {
background: #FFF;
min-height: 500px;
}

/* -------- Load More -------- */
.archive-loadmore {
margin-top: 30px;
}
.archive-loadmore__btn {
display: inline-flex;
flex-direction: column;
align-items: center;
gap: 6px;
background: transparent;
border: 0;
padding: 10px 20px;
cursor: pointer;
color: #000;
font-family: var(--font-sans);
font-size: 21px;
font-weight: 400;
line-height: 30px;
text-align: center;
}
.archive-loadmore__btn:hover {
color: var(--color-accent, #FFBB00);
}
.archive-loadmore__icon {
display: inline-flex;
width: 32px;
height: 32px;
aspect-ratio: 1 / 1;
line-height: 0;
}
.archive-loadmore__icon svg {
width: 100%;
height: 100%;
display: block;
}
.archive-loadmore__btn.is-loading {
opacity: 0.5;
cursor: wait;
}

/* -------- Responsive: mobile/tablet -------- */
@media (max-width: 991.98px) {
.archive-card__inner { min-height: 0; }
	.archive-card--featured .archive-card__inner {
		display: flex !important;
		flex-direction: column;
		min-height: 0;
	}
	.archive-card--featured .archive-card__media,
	.archive-card--featured .archive-card__body {
		flex: 0 0 auto;
		max-width: 100%;
		width: 100%;
	}
	.archive-card--featured .archive-card__media .archive-card__image {
		height: 260px;
	}
	.archive-card--featured .archive-card__body {
		padding: 16px 16px 24px;
	}
	.archive-title { font-size: 36px; }
}

/* Edge-to-edge feature images (no card padding around the image) */
.archive-card__inner { padding: 24px 0 0; }
.archive-card__image {
	max-width: 100%;
	width: 100%;
}
.archive-card__category,
.archive-card__divider,
.archive-card__title,
.archive-card__attribution,
.archive-card__excerpt,
.archive-card__readmore {
	padding-left: 10px;
	padding-right: 10px;
}

/* First row: standard cards match featured card height; image fills remainder */
@media (min-width: 992px) {
.archive-row > .archive-card:nth-child(2) .archive-card__inner,
.archive-row > .archive-card:nth-child(3) .archive-card__inner {
min-height: 500px;
}
.archive-row > .archive-card:nth-child(2) .archive-card__image,
.archive-row > .archive-card:nth-child(3) .archive-card__image {
flex: 1 1 auto;
height: auto;
min-height: 260px;
align-self: stretch;
max-width: 100%;
}
}


/* ==================================================================
   CTA Button Block — pill variants
   Style values map to (set in modules/cta-button-block.php):
     pill-icon-grey/blue/white  -> .btn-cta.btn-cta-icon.btn-cta-{color}
     pill-grey/blue/white       -> .btn-cta.btn-cta-pill.btn-cta-{color}
   Base .btn-cta rules above still apply for any legacy buttons.
================================================================== */

/* Pill shape (no icon) */
.btn-cta.btn-cta-pill {
display: inline-flex;
align-items: center;
justify-content: center;
padding: 8px 16px;
min-height: 32px;
border-radius: 999px;
border: 1px solid transparent;
font-family: 'Geist', sans-serif;
font-size: 12px;
font-weight: 600;
line-height: 1.33;
text-decoration: none;
transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

/* Pill with icon */
.btn-cta.btn-cta-icon {
display: inline-flex;
align-items: center;
padding: 8px 16px;
min-height: 32px;
border-radius: 999px;
border: 1px solid transparent;
font-family: 'Geist', sans-serif;
font-size: 12px;
font-weight: 600;
line-height: 1.33;
text-decoration: none;
transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}

.btn-cta.btn-cta-icon .btn-cta__icon {
flex: 0 0 auto;
display: inline-flex;
align-items: center;
justify-content: center;
padding-right: 16px;
}

.btn-cta.btn-cta-icon .btn-cta__icon img {
display: block;
height: 16px;
width: auto;
}

.btn-cta .btn-cta__label {
display: inline-block;
}

/* Color variants -- shared across pill and pill-icon */
.btn-cta.btn-cta-grey {
background-color: #303a3b;
border-color: #303a3b;
color: #ffffff;
}
.btn-cta.btn-cta-grey:hover,
.btn-cta.btn-cta-grey:focus-visible {
background-color: #1f2728;
border-color: #1f2728;
color: #ffffff;
}

.btn-cta.btn-cta-blue {
background-color: #2E6AEA;
border-color: #2E6AEA;
color: #ffffff;
}
.btn-cta.btn-cta-blue:hover,
.btn-cta.btn-cta-blue:focus-visible {
background-color: #1F58D6;
border-color: #1F58D6;
color: #ffffff;
}

.btn-cta.btn-cta-white {
background-color: #ffffff;
border-color: #e5e5e5;
color: #222222;
}
.btn-cta.btn-cta-white:hover,
.btn-cta.btn-cta-white:focus-visible {
background-color: #f1f1f1;
border-color: #e5e5e5;
color: #222222;
}

/* Light Blue pill (and pill-with-icon).
   Uses Geist semibold 12px #0A0A0A on a soft blue tint. */
.btn-cta.btn-cta-blue-light {
    background-color: #EFF3FE;
    border-color: #EFF3FE;
    color: #0A0A0A;
    font-family: 'Geist', sans-serif;
    font-weight: 600;
    font-size: 12px;
}
.btn-cta.btn-cta-blue-light:hover,
.btn-cta.btn-cta-blue-light:focus-visible {
    background-color: #E0E8FC;
    border-color: #E0E8FC;
    color: #0A0A0A;
}

/* Semi-transparent pill (and pill-with-icon).
   White at 16% opacity bg on any background; white Geist semibold 12px.
   Use a white SVG for the icon. */
.btn-cta.btn-cta-semi {
    background-color: rgba(255, 255, 255, 0.16);
    border-color: transparent;
    color: #ffffff;
    font-family: 'Geist', sans-serif;
    font-weight: 600;
    font-size: 12px;
}
.btn-cta.btn-cta-semi:hover,
.btn-cta.btn-cta-semi:focus-visible {
    background-color: rgba(255, 255, 255, 0.24);
    border-color: transparent;
    color: #ffffff;
}

/* Mobile: tighten pills so long labels fit the viewport */
@media (max-width: 575.98px) {
    .btn-cta.btn-cta-pill,
    .btn-cta.btn-cta-icon {
        max-width: 100%;
        padding: 6px 12px;
    }
    .btn-cta.btn-cta-icon .btn-cta__icon {
        padding-right: 8px;
    }
    .btn-cta.btn-cta-icon .btn-cta__icon img {
        height: 14px;
    }
    /* No-link CTA (rendered as <span role="presentation">): use 10px on mobile */
    span.btn-cta.btn-cta-pill,
    span.btn-cta.btn-cta-icon {
        font-size: 10px;
    }
}

/* ==================================================================
   Accordion Block
   - Repeater of items. First item open on load. One open at a time.
   - Closed item: white bg, black icon + title.
   - Open item: #eff3fe bg, blue (#2e6aea) icon + title, body shown.
   - Icons use mask-image so the SVG is tinted by currentColor.
   - Open/close: body slides via max-height; bg-color fades AFTER the
     slide when opening (delay), fades immediately when closing.
================================================================== */

.accordion-block {
    width: 100%;
}

.accordion-item {
    background-color: #ffffff;
    border-radius: 0;
    overflow: hidden;
    color: #000000;
    /* Closing: bg fades out immediately (no delay). */
    transition: background-color 250ms ease;
}

.accordion-item:first-child {
    border-top-left-radius: 16px;
    border-top-right-radius: 16px;
}

.accordion-item:last-child {
    border-bottom-left-radius: 16px;
    border-bottom-right-radius: 16px;
}

.accordion-item + .accordion-item {
    margin-top: 16px;
}

.accordion-item.is-open {
    background-color: #EFF3FE;
    color: #2E6AEA;
    /* Opening: bg fades in AFTER the body slides down. */
    transition: background-color 250ms ease 250ms;
}

.accordion-item__header {
    display: flex;
    align-items: center;
    gap: 12px;
    width: 100%;
    padding: 20px 24px;
    background: transparent;
    border: 0;
    text-align: left;
    cursor: pointer;
    color: inherit;
    font-family: 'Bricolage Grotesque', sans-serif;
    font-weight: 600;
    font-size: 24px;
    line-height: 1.2;
}

.accordion-item__header:focus-visible {
    outline: 2px solid #2E6AEA;
    outline-offset: -2px;
}

.accordion-item__icon {
    display: inline-block;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    background-color: currentColor;
    -webkit-mask-image: var(--accordion-icon);
            mask-image: var(--accordion-icon);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: contain;
            mask-size: contain;
}

.accordion-item__title {
    color: inherit;
}

.accordion-item__body {
    overflow: hidden;
    max-height: 0;
    transition: max-height 250ms ease;
}

.accordion-item.is-open .accordion-item__body {
    /* JS sets an explicit max-height for the slide, then clears it
       after the transition so content can reflow at any size.
       Empty placeholder kept for documentation purposes. */
    max-height: none;
}

.accordion-item__body-inner {
    padding: 0 24px 20px 24px;
    font-family: 'Geist', sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.5;
    color: #777777;
    text-align: left;
}

/* ==================================================================
   Accordion + side image layout
   Used when the accordion block has an Image set. Stacks on mobile;
   at lg+ the accordion takes ~40% on the left and the image fills
   the remaining space with a 48px gap.
================================================================== */

.accordion-with-image {
    width: 100%;
}

.accordion-with-image > .angled-image,
.accordion-with-image > .angled-image-stack {
    margin-top: 32px;
}

@media (min-width: 992px) {
    .accordion-with-image {
        display: flex;
        align-items: flex-start;
    }
    .accordion-with-image > .accordion-block {
        flex: 0 0 40%;
        max-width: 40%;
    }
    .accordion-with-image > .angled-image,
    .accordion-with-image > .angled-image-stack {
        flex: 1 1 auto;
        min-width: 0;
        margin-top: 0;
        margin-left: 48px;
    }
}

/* ==================================================================
   Angled Image Block
   Two layouts share the same markup:
     1) Unbordered (left/right/bottom/left_tall/right_tall):
        Outer container is mask-clipped to an SVG shape and filled
        white. Inner image is mask-clipped to the SAME shape; CSS
        padding (16/24px) makes the inner box smaller, creating a
        constant-width white frame that follows the angled edge.
     2) Bordered (left_border, right_border):
        Outer container is NOT masked. Instead the bordered SVG
        (white fill + #e5e5e5 1px stroke) is drawn as the background.
        Inner image is mask-clipped to a SEPARATE "inner" SVG path so
        only the image area shows, sitting inside the stroked frame.
   CSS variables (--shape-mask / --shape-mask-inner / --shape-bg-image
   etc.) are set per shape modifier. LG variants (.angled-image--lg-*)
   re-assign the same variables inside a media query so the user can
   choose a different shape per breakpoint.
================================================================== */

.angled-image {
    --shape-mask: none;
    --shape-mask-inner: var(--shape-mask);
    --shape-aspect: 1 / 1;
    --shape-padding: 16px;
    --shape-bg-color: #ffffff;
    --shape-bg-image: none;

    width: 100%;
    background-color: var(--shape-bg-color);
    background-image: var(--shape-bg-image);
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center;
    padding: var(--shape-padding);
    box-sizing: border-box;
    aspect-ratio: var(--shape-aspect);
    -webkit-mask-image: var(--shape-mask);
            mask-image: var(--shape-mask);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: 100% 100%;
            mask-size: 100% 100%;
}

.angled-image__media {
    width: 100%;
    height: 100%;
    background-repeat: no-repeat;
    background-size: cover;
    background-position: var(--ai-pos, center center);
    -webkit-mask-image: var(--shape-mask-inner);
            mask-image: var(--shape-mask-inner);
    -webkit-mask-repeat: no-repeat;
            mask-repeat: no-repeat;
    -webkit-mask-position: center;
            mask-position: center;
    -webkit-mask-size: 100% 100%;
            mask-size: 100% 100%;
}

/* --- Stacked variant: multiple .angled-image instances cross-fade
   inside .angled-image-stack. Used by the Accordion Block so each
   item has its own image AND its own shape/position. All layers share
   the same grid cell; the active layer is opaque, the rest fade out.
   The stack's height grows to the tallest aspect-ratio in the set. -- */
.angled-image-stack {
    display: grid;
    grid-template-areas: "stack";
    width: 100%;
}

.angled-image-stack > .angled-image {
    grid-area: stack;
    opacity: 0;
    transition: opacity 400ms ease;
    pointer-events: none;
}

.angled-image-stack > .angled-image.is-active {
    opacity: 1;
}

/* --- Unbordered shape modifiers (mobile / base) --- */
.angled-image--left {
    --shape-mask: url('images/shapes/left-angle.svg');
    --shape-aspect: 604.87 / 493.01;
}
.angled-image--right {
    --shape-mask: url('images/shapes/right-angle.svg');
    --shape-aspect: 604.87 / 493.01;
}
.angled-image--bottom {
    --shape-mask: url('images/shapes/bottom-angle.svg');
    --shape-aspect: 751.99 / 458.83;
}
.angled-image--left-tall {
    --shape-mask: url('images/shapes/left-angle-tall.svg');
    --shape-aspect: 385.49 / 492;
}
.angled-image--right-tall {
    --shape-mask: url('images/shapes/right-angle-tall.svg');
    --shape-aspect: 386.84 / 492;
}

/* --- Bordered shape modifiers (mobile / base) --- */
.angled-image--left-border {
    --shape-mask: none;
    --shape-mask-inner: url('images/shapes/left-angle-border-inner.svg');
    --shape-bg-image: url('images/shapes/left-angle-border.svg');
    --shape-bg-color: transparent;
    --shape-padding: 0;
    --shape-aspect: 604.87 / 493.01;
}
.angled-image--right-border {
    --shape-mask: none;
    --shape-mask-inner: url('images/shapes/right-angle-border-inner.svg');
    --shape-bg-image: url('images/shapes/right-angle-border.svg');
    --shape-bg-color: transparent;
    --shape-padding: 0;
    --shape-aspect: 604.87 / 493.01;
}

@media (min-width: 992px) {
    /* Unbordered frame grows from 16px to 24px on lg. */
    .angled-image--left,
    .angled-image--right,
    .angled-image--bottom,
    .angled-image--left-tall,
    .angled-image--right-tall {
        --shape-padding: 24px;
    }

    /* --- LG overrides: same vars, different shape --- */
    .angled-image--lg-left {
        --shape-mask: url('images/shapes/left-angle.svg');
        --shape-mask-inner: var(--shape-mask);
        --shape-bg-image: none;
        --shape-bg-color: #ffffff;
        --shape-padding: 24px;
        --shape-aspect: 604.87 / 493.01;
    }
    .angled-image--lg-right {
        --shape-mask: url('images/shapes/right-angle.svg');
        --shape-mask-inner: var(--shape-mask);
        --shape-bg-image: none;
        --shape-bg-color: #ffffff;
        --shape-padding: 24px;
        --shape-aspect: 604.87 / 493.01;
    }
    .angled-image--lg-bottom {
        --shape-mask: url('images/shapes/bottom-angle.svg');
        --shape-mask-inner: var(--shape-mask);
        --shape-bg-image: none;
        --shape-bg-color: #ffffff;
        --shape-padding: 24px;
        --shape-aspect: 751.99 / 458.83;
    }
    .angled-image--lg-left-tall {
        --shape-mask: url('images/shapes/left-angle-tall.svg');
        --shape-mask-inner: var(--shape-mask);
        --shape-bg-image: none;
        --shape-bg-color: #ffffff;
        --shape-padding: 24px;
        --shape-aspect: 385.49 / 492;
    }
    .angled-image--lg-right-tall {
        --shape-mask: url('images/shapes/right-angle-tall.svg');
        --shape-mask-inner: var(--shape-mask);
        --shape-bg-image: none;
        --shape-bg-color: #ffffff;
        --shape-padding: 24px;
        --shape-aspect: 386.84 / 492;
    }
    .angled-image--lg-left-border {
        --shape-mask: none;
        --shape-mask-inner: url('images/shapes/left-angle-border-inner.svg');
        --shape-bg-image: url('images/shapes/left-angle-border.svg');
        --shape-bg-color: transparent;
        --shape-padding: 0;
        --shape-aspect: 604.87 / 493.01;
    }
    .angled-image--lg-right-border {
        --shape-mask: none;
        --shape-mask-inner: url('images/shapes/right-angle-border-inner.svg');
        --shape-bg-image: url('images/shapes/right-angle-border.svg');
        --shape-bg-color: transparent;
        --shape-padding: 0;
        --shape-aspect: 604.87 / 493.01;
    }

    /* LG image position override */
    .angled-image__media {
        background-position: var(--ai-pos-lg, var(--ai-pos, center center));
    }
}

/* ==================================================================
   Scrolling Pills Block
   Two horizontal marquee rows of non-clickable pills (icon + text).
   Row 1 scrolls left, Row 2 scrolls right. Tracks are duplicated in
   markup so the loop is seamless when we translate by -50% / +50%.

   Per-row tunables exposed via inline style on .scrolling-pills__row:
     --sp-duration        : seconds per full loop on >=768px (set from ACF)
     --sp-duration-mobile : seconds per full loop on <768px  (set from ACF;
                            falls back to --sp-duration when ACF field blank)
================================================================== */

.scrolling-pills {
    width: 100%;
    overflow: hidden;
}

.scrolling-pills__row {
    position: relative;
    width: 100%;
    overflow: hidden;
    padding: 8px 0;
    /* Soft fade on both edges */
    -webkit-mask-image: linear-gradient(to right, transparent 0, #000 64px, #000 calc(100% - 64px), transparent 100%);
            mask-image: linear-gradient(to right, transparent 0, #000 64px, #000 calc(100% - 64px), transparent 100%);
}

.scrolling-pills__row + .scrolling-pills__row {
    margin-top: 12px;
}

.scrolling-pills__track {
    display: flex;
    flex-wrap: nowrap;
    width: max-content;
    will-change: transform;
}

.scrolling-pills__group {
    display: flex;
    flex-wrap: nowrap;
    flex: 0 0 auto;
}

/* Left-scrolling row: translate the track from 0 to -50% (the second
   group is an exact copy, so the wrap is invisible). */
.scrolling-pills__row--left .scrolling-pills__track {
    animation: scrolling-pills-left var(--sp-duration, 60s) linear infinite;
}

/* Right-scrolling row: start at -50% and animate to 0. */
.scrolling-pills__row--right .scrolling-pills__track {
    animation: scrolling-pills-right var(--sp-duration, 60s) linear infinite;
}

.scrolling-pills__row.is-pause-on-hover:hover .scrolling-pills__track {
    animation-play-state: paused;
}

/* Mobile speed override (<768px). Uses --sp-duration-mobile when present;
   the PHP renderer falls back to --sp-duration when the ACF field is empty,
   so this rule is safe even on rows that don't define a mobile speed. */
@media (max-width: 767.98px) {
    .scrolling-pills__row--left .scrolling-pills__track,
    .scrolling-pills__row--right .scrolling-pills__track {
        animation-duration: var(--sp-duration-mobile, var(--sp-duration, 60s));
    }
}

@keyframes scrolling-pills-left {
    from { transform: translate3d(0, 0, 0); }
    to   { transform: translate3d(-50%, 0, 0); }
}

@keyframes scrolling-pills-right {
    from { transform: translate3d(-50%, 0, 0); }
    to   { transform: translate3d(0, 0, 0); }
}

@media (prefers-reduced-motion: reduce) {
    .scrolling-pills__row .scrolling-pills__track {
        animation: none;
        transform: translate3d(0, 0, 0);
    }
}

/* -------- Pill -------- */
.scrolling-pills__pill {
    display: inline-flex;
    align-items: center;
    flex: 0 0 auto;
    margin-right: 12px;
    padding: 20px;
    border: 1px solid #e5e5e5;
    border-radius: 999px;
    background-color: #ffffff;
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 500;
    line-height: 1;
    color: #222222;
    white-space: nowrap;
    user-select: none;
}

.scrolling-pills__icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    /* Same icon-to-text gap used on the CTA pill-icon button */
    padding-right: 16px;
    box-sizing: content-box;
    color: #2e6aea;
}

.scrolling-pills__icon img {
    display: block;
    width: 24px;
    height: 24px;
}

.scrolling-pills__label {
    display: inline-block;
}

/* ==================================================================
   Icon List Block
   Vertical bordered list rendered as a single rounded card.
================================================================== */
.icon-list {
    list-style: none;
    margin: 0;
    padding: 0;
    width: 100%;
}

.icon-list__item {
    display: flex;
    align-items: center;
    padding: 20px;
    border-left: 1px solid #e5e5e5;
    border-right: 1px solid #e5e5e5;
    border-bottom: 1px solid #e5e5e5;
    background-color: #ffffff;
}

.icon-list__item:first-child {
    border-top: 1px solid #e5e5e5;
    border-top-left-radius: 16px;
    border-top-right-radius: 16px;
}

.icon-list__item:last-child {
    border-bottom-left-radius: 16px;
    border-bottom-right-radius: 16px;
}

.icon-list__icon {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    /* Same icon-to-text gap as the pills / CTA pill-icon */
    padding-right: 16px;
    box-sizing: content-box;
    color: #2e6aea;
}

.icon-list__icon img {
    display: block;
    width: 24px;
    height: 24px;
}

.icon-list__label {
    font-family: 'Bricolage Grotesque', 'Bricolage', sans-serif;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.3;
    color: #222222;
}

/* ==================================================================
   Image Card Grid Block
   Bordered card with a centered title, a responsive image grid, and
   a tagline at the bottom. Grid is 2 columns on mobile and 3 from
   md (>=768px) up. A partial last row is centered automatically via
   flex-wrap + justify-content:center.
================================================================== */

.image-card-grid {
    padding: 24px;
    border: 1px solid #e5e5e5;
    border-radius: 24px;
    background-color: #ffffff;
}

.image-card-grid__title {
    margin: 0 0 16px;
    font-family: 'Bricolage Grotesque', 'Bricolage', sans-serif;
    font-size: 24px;
    font-weight: 700;
    line-height: 1.2;
    color: #222222;
    text-align: center;
}

.image-card-grid__items {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 16px;
}

/* 2 columns on mobile */
.image-card-grid__item {
    flex: 0 0 calc((100% - 16px) / 2);
    max-width: calc((100% - 16px) / 2);
    border: 1px solid #e5e5e5;
    border-radius: 16px;
    overflow: hidden;
    background-color: #ffffff;
}

/* When the item is rendered as an anchor (image_link set),
   keep the visual identical to the div variant. */
a.image-card-grid__item,
a.image-card-grid__item:hover,
/* --------------------------------------------------
   PROCESS STEPS BLOCK
   ----------------------------------------------------
   Two-column sticky-sidebar process layout.
   - Sidebar (col-lg-3) sticks at top: 100px and releases
     when its parent .row ends, so the next page block
     scrolls into view normally.
   - Each step card has a 1px border, 24px radius, 24px
     padding, with a full-bleed angled-bottom image at
     the top (escapes padding via negative margins,
     clipped by overflow: hidden on the card).
   - White pill CTA pulled up 24px (8px mobile) so it
     overlaps the angled bottom of the image.
-------------------------------------------------- */

.process-steps {
    margin: 0 auto;
    width: 100%;
}

/* 48px gap between sidebar and main content at >= lg.
   Bootstrap row gutters are split half on each side, so --bs-gutter-x: 96px
   yields 48px between the two columns. */
@media (min-width: 992px) {
    .process-steps__layout {
        --bs-gutter-x: 96px;
    }
}

/* Sidebar -------------------------------------------- */
/* .process-steps__sidebar-inner sticky activates at >= lg in the media query below. */

.process-steps__heading {
    font-family: 'Bricolage Grotesque', system-ui, sans-serif;
    font-weight: 700;
    font-size: 24px;
    line-height: 1.25;
    color: #222;
    margin: 0 0 16px;
}

.process-steps__nav {
    list-style: none;
    padding: 0;
    margin: 0;
}

.process-steps__nav-item {
    margin-bottom: 16px;
}
.process-steps__nav-item:last-child {
    margin-bottom: 0;
}

.process-steps__nav-link {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 16px 24px;
    border-radius: 16px;
    text-decoration: none;
    color: inherit;
    background-color: transparent;
    transition: background-color 0.15s ease, color 0.15s ease;
}

.process-steps__nav-icon {
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    margin-top: 2px;
}

.process-steps__nav-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}

.process-steps__nav-num {
    font-family: 'Geist', system-ui, sans-serif;
    font-weight: 600;
    font-size: 16px;
    line-height: 1.4;
    color: #222;
}

.process-steps__nav-label {
    font-family: 'Geist', system-ui, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.4;
    color: #222;
}

.process-steps__nav-link.is-active {
    background-color: #EFF3FE;
}
.process-steps__nav-link.is-active .process-steps__nav-num,
.process-steps__nav-link.is-active .process-steps__nav-label {
    color: #2E6AEA;
}

/* Sticky at desktop only. Hidden on mobile via d-none d-lg-block on the column. */
@media (min-width: 992px) {
    .process-steps__sidebar-inner {
        position: sticky;
        top: 100px;
    }
}

/* Main column / step cards --------------------------- */
/* .process-steps__main is a Bootstrap col; spacing handled by .process-step margin-bottom. */

.process-step {
    position: relative;
    border: 1px solid #E5E5E5;
    border-radius: 24px;
    padding: 24px;
    margin-bottom: 24px;
    overflow: hidden; /* clip angled-image top corners to card radius */
    background-color: #ffffff;
    scroll-margin-top: 100px; /* matches sticky offset */
}
.process-step:last-child {
    margin-bottom: 0;
}

/* Angled-bottom image at top of card, full-bleed. */
.process-step__media {
    margin: -24px -24px 0;
    width: auto;
}

/* CTA pulled up to overlap the angled bottom. */
.process-step__cta {
    margin-top: -24px;
    margin-bottom: 16px;
    align-self: flex-start;
    scroll-margin-top: 100px;
}
@media (max-width: 767.98px) {
    .process-step__cta {
        margin-top: -8px;
    }
}

/* Card headline. */
.process-step__title {
    font-family: 'Bricolage Grotesque', system-ui, sans-serif;
    font-weight: 700;
    font-size: 28px;
    line-height: 1.2;
    color: #222;
    margin: 0 0 16px;
}
@media (min-width: 768px) {
    .process-step__title {
        font-size: 32px;
    }
}

/* Sub-items list. */
.process-step__items {
    list-style: none;
    padding: 0;
    margin: 0;
}

.process-step__item {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    margin-bottom: 24px;
}
.process-step__item:last-child {
    margin-bottom: 0;
}

.process-step__item-icon {
    width: 24px;
    height: 24px;
    flex: 0 0 24px;
    margin-top: 4px;
}

.process-step__item-text {
    min-width: 0;
}

.process-step__item-title {
    font-family: 'Bricolage Grotesque', system-ui, sans-serif;
    font-weight: 700;
    font-size: 20px;
    line-height: 1.3;
    color: #222;
    margin: 0 0 4px;
}

.process-step__item-body {
    font-family: 'Geist', system-ui, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.5;
    color: #777;
}
.process-step__item-body :last-child {
    margin-bottom: 0;
}

/* --------------------------------------------------
   FAQ STEPS BLOCK
   ----------------------------------------------------
   Two-column sticky-sidebar FAQ layout. Sidebar reuses
   all .process-steps__sidebar* / .process-steps__nav*
   classes from the PROCESS STEPS BLOCK section above.
   The .process-steps__nav-link--single modifier removes
   the two-line "Step N + label" layout so the sidebar
   shows just the icon + a single label line.
-------------------------------------------------- */

.faq-steps {
    margin: 0 auto;
    width: 100%;
}

/* 48px gap between sidebar and main content at >= lg
   (matches process-steps). */
@media (min-width: 992px) {
    .faq-steps .process-steps__layout {
        --bs-gutter-x: 96px;
    }
}

/* Sidebar single-line variant: hide the "Step N" line if any
   slipped in (this block doesn't render it) and let the label
   sit beside the icon naturally. The base styles already match. */
.process-steps__nav-link--single .process-steps__nav-text {
    justify-content: center;
}

/* Main column / FAQ sections ------------------------- */

.faq-step {
    margin-bottom: 48px;
    scroll-margin-top: 100px;
}
.faq-step:last-child {
    margin-bottom: 0;
}

.faq-step__header {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 16px;
}

.faq-step__number {
    flex: 0 0 28px;
    width: 28px;
    height: 28px;
    border-radius: 50%;
    background-color: #2E6AEA;
    color: #ffffff;
    font-family: 'Bricolage Grotesque', system-ui, sans-serif;
    font-weight: 600;
    font-size: 16px;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.faq-step__title {
    font-family: 'Bricolage Grotesque', system-ui, sans-serif;
    font-weight: 600;
    font-size: 24px;
    line-height: 1.25;
    color: #0a0a0a;
    margin: 0;
}

/* Accordion ------------------------------------------ */

.faq-accordion {
    margin: 0;
}

.faq-accordion__item {
    border: 1px solid #E5E5E5;
    border-radius: 16px;
    padding: 24px;
    margin-bottom: 16px;
    background-color: #ffffff;
}
.faq-accordion__item:last-child {
    margin-bottom: 0;
}

.faq-accordion__question {
    /* Button reset. */
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    width: 100%;
    padding: 0;
    margin: 0;
    border: 0;
    background: transparent;
    text-align: left;
    cursor: pointer;
    color: #0a0a0a;
    font-family: 'Bricolage Grotesque', system-ui, sans-serif;
    font-weight: 600;
    font-size: 18px;
    line-height: 1.4;
}

.faq-accordion__q-text {
    flex: 1 1 auto;
    min-width: 0;
}

/* Pure-CSS chevron. Down by default, flips up when open. */
.faq-accordion__chevron {
    flex: 0 0 12px;
    width: 12px;
    height: 12px;
    border-right: 2px solid #0a0a0a;
    border-bottom: 2px solid #0a0a0a;
    transform: rotate(45deg);
    transform-origin: 50% 50%;
    transition: transform 0.2s ease;
    margin-top: -4px; /* visual centering offset */
}
.faq-accordion__item.is-open .faq-accordion__chevron {
    transform: rotate(-135deg);
    margin-top: 4px;
}

/* Active (open) question gets a bottom border + spacing
   to separate it from the answer. Border-color animates so
   the divider fades in rather than snapping. */
.faq-accordion__question {
    border-bottom: 1px solid transparent;
    transition: padding-bottom 0.3s ease,
                margin-bottom 0.3s ease,
                border-bottom-color 0.3s ease;
}
.faq-accordion__item.is-open .faq-accordion__question {
    padding-bottom: 16px;
    border-bottom-color: #E5E5E5;
    margin-bottom: 16px;
}

/* Answer slides open/closed.
   - No-JS fallback: PHP renders [hidden] on closed answers so
     they stay collapsed without script.
   - JS removes [hidden] on init and toggles .is-open on the
     parent item; CSS animates max-height + opacity. */
.faq-accordion__answer {
    font-family: 'Geist', system-ui, sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.6;
    color: #777;
    overflow: hidden;
    max-height: 0;
    opacity: 0;
    transition: max-height 0.3s ease, opacity 0.2s ease;
    will-change: max-height;
}
.faq-accordion__item.is-open .faq-accordion__answer {
    opacity: 1;
    /* max-height is set inline by JS to the measured scrollHeight
       so it animates smoothly; falls back to a large value if JS
       hasn't run yet. */
    max-height: 2000px;
}
.faq-accordion__answer :last-child {
    margin-bottom: 0;
}
.faq-accordion__answer p {
    margin: 0 0 12px;
}


a.image-card-grid__item:focus,
a.image-card-grid__item:visited {
    display: block;
    color: inherit;
    text-decoration: none;
}
a.image-card-grid__item:hover,
a.image-card-grid__item:focus-visible {
    border-color: #cfcfcf;
}

/* 3 columns from md up. With gap 16px and 3 items per row,
   total gap = 32px -> each item = (100% - 32px) / 3. */
@media (min-width: 768px) {
    .image-card-grid__item {
        flex: 0 0 calc((100% - 32px) / 3);
        max-width: calc((100% - 32px) / 3);
    }
}

.image-card-grid__media {
    width: 100%;
    aspect-ratio: 169 / 144;
    background-size: cover;
    background-position: center center;
    background-repeat: no-repeat;
}

.image-card-grid__caption {
    padding: 16px 8px;
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.3;
    color: #0A0A0A;
    text-align: center;
}

.image-card-grid__tagline {
    margin: 16px 0 0;
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.4;
    color: #777777;
    text-align: center;
}

/* ==================================================================
   Blue Checkmarks list (WYSIWYG "Blue Checkmarks" style)
   Adds a blue double-check SVG bullet to each <li>. The icon sits
   flush left inside the <ul> (no outdent); text is offset 8px to
   the right of the icon via padding-left = icon width (24px) + 8px.
================================================================== */
ul.ul-blue-checks {
    list-style: none;
    padding-left: 0;
    margin-left: 0;
}
ul.ul-blue-checks > li {
    position: relative;
    padding-left: 32px;
    margin-bottom: 12px;
    background-image: url('images/blue-double-check.svg');
    background-repeat: no-repeat;
    background-position: 0 0.25em;
    background-size: 24px auto;
    list-style: none;
}

/* ==================================================================
   Stat Cards Block
   White wrapper with 1px #e5e5e5 border + 24px radius + 24px padding.
   3 columns on desktop (>=768px), 1 column on mobile (16px gap).
   Each card has its own 1px #e5e5e5 border and 16px radius.
================================================================== */

.stat-cards {
    padding: 24px;
    background-color: #ffffff;
    border: 1px solid #e5e5e5;
    border-radius: 24px;
    margin-bottom: 24px;
}

@media (min-width: 992px) {
    .stat-cards {
        margin-bottom: 48px;
    }
}

.stat-cards__items {
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
}

@media (min-width: 768px) {
    .stat-cards__items {
        grid-template-columns: repeat(3, 1fr);
        gap: 24px;
    }
}

.stat-card {
    padding: 24px;
    border: 1px solid #e5e5e5;
    border-radius: 16px;
    background-color: #ffffff;
}

.stat-card__icon {
    margin-bottom: 24px;
    line-height: 0;
}

.stat-card__icon img {
    display: block;
    width: 40px;
    height: 40px;
    object-fit: contain;
}

.stat-card__number {
    display: flex;
    align-items: baseline;
    gap: 2px;
    font-family: 'Bricolage Grotesque', 'Bricolage', sans-serif;
    font-weight: 700;
    font-size: 64px;
    line-height: 1;
    color: #000000;
    margin-bottom: 8px;
}

.stat-card__number-value,
.stat-card__number-suffix {
    font: inherit;
    color: inherit;
}

.stat-card__title {
    font-family: 'Geist', sans-serif;
    font-size: 16px;
    font-weight: 600;
    line-height: 1.3;
    color: #777777;
}

.stat-cards__body {
    margin: 24px 0 0;
    padding: 0 16px;
    font-family: 'Geist', sans-serif;
    font-size: 14px;
    font-weight: 400;
    line-height: 1.5;
    color: #777777;
    text-align: center;
}



/* ==================================================================
   Icon Title Boxes Block
   - Static repeater. White card, 1px border, 16px rounded corners,
     24px padding, selectable aspect-ratio.
   - Icon 40x40 at top; title aligned to bottom (Bricolage 700 24px).
   - Mobile: 1 column full width.
   - >= 768px: 2, 3, or 4 per row via .icon-title-boxes--cols-{2|3|4}
     (default 4), fluid to container width.
   - Height (aspect-ratio) is responsive via multi-select. Each
     selected value emits a class on the wrapper:
        .icon-title-boxes--h-tall     -> 271 / 216 (base)
        .icon-title-boxes--h-medium   -> 271 / 196 (base)
        .icon-title-boxes--h-short    -> 271 / 176 (base)
        .icon-title-boxes--h-md-*     -> applies at >= 768px
        .icon-title-boxes--h-lg-*     -> applies at >= 1024px
     Default is tall.
================================================================== */
.icon-title-boxes {
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
    width: 100%;
}
@media (min-width: 768px) {
    .icon-title-boxes--cols-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .icon-title-boxes--cols-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
    .icon-title-boxes--cols-4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.icon-title-box {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    background-color: #ffffff;
    border: 1px solid #E5E5E5;
    border-radius: 16px;
    padding: 24px;
    aspect-ratio: 271 / 216;
    width: 100%;
}

/* Base (mobile-first) height variants. */
.icon-title-boxes--h-tall   > .icon-title-box { aspect-ratio: 271 / 216; }
.icon-title-boxes--h-medium > .icon-title-box { aspect-ratio: 271 / 170; }
.icon-title-boxes--h-short  > .icon-title-box { aspect-ratio: 271 / 150; }

/* >= 768px overrides. */
@media (min-width: 768px) {
    .icon-title-boxes--h-md-tall   > .icon-title-box { aspect-ratio: 271 / 216; }
    .icon-title-boxes--h-md-medium > .icon-title-box { aspect-ratio: 271 / 170; }
    .icon-title-boxes--h-md-short  > .icon-title-box { aspect-ratio: 271 / 150; }
}

/* >= 1024px overrides. */
@media (min-width: 1024px) {
    .icon-title-boxes--h-lg-tall   > .icon-title-box { aspect-ratio: 271 / 216; }
    .icon-title-boxes--h-lg-medium > .icon-title-box { aspect-ratio: 271 / 170; }
    .icon-title-boxes--h-lg-short  > .icon-title-box { aspect-ratio: 271 / 150; }
}

.icon-title-box__icon {
    display: block;
    width: 40px;
    height: 40px;
    object-fit: contain;
    margin-bottom: 16px;
}

.icon-title-box__title {
    margin: 0;
    align-self: center;
    font-family: 'Bricolage Grotesque', sans-serif;
    font-weight: 700;
    font-size: 24px;
    line-height: 1.15;
    color: #222222;
    width: 100%;
	text-align: center;
}

/* ==================================================================
   Icon Title Text Grid Block
   - Static repeater grid (no border, no bg, no animation).
   - Each item: <img> icon (24x24) + title on the same row, body
     copy below indented to align under the title.
   - Mobile: 1 column. >= 768px: .icon-text-grid--cols-{1|2|3|4}
     (default 2).
   - Typography mirrors the accordion (Bricolage 600 24px title,
     Geist 400 16px body), but title color is locked to #222 since
     this block has no open/closed state.
================================================================== */
.icon-text-grid {
    display: grid;
    grid-template-columns: 1fr;
    row-gap: 32px;
    column-gap: 24px;
    width: 100%;
}
@media (min-width: 768px) {
    .icon-text-grid--cols-1 {
        grid-template-columns: 1fr;
    }
    .icon-text-grid--cols-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .icon-text-grid--cols-3 {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
    .icon-text-grid--cols-4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

.icon-text-item {
    display: block;
}

.icon-text-item__header {
    display: flex;
    align-items: center;
    gap: 12px;
}

.icon-text-item__icon {
    display: block;
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
    object-fit: contain;
}

.icon-text-item__title {
    margin: 0;
    font-family: 'Bricolage Grotesque', sans-serif;
    font-weight: 600;
    font-size: 24px;
    line-height: 1.2;
    color: #222222;
    text-align: left;
}

/* Body aligns under the title (indent past icon width + header gap). */
.icon-text-item__body {
    margin-top: 8px;
    padding-left: 36px; /* 24px icon + 12px gap */
    font-family: 'Geist', sans-serif;
    font-weight: 400;
    font-size: 16px;
    line-height: 1.5;
    color: #777777;
    text-align: left;
}

/* If an item has no icon, drop the indent so body aligns flush left. */
.icon-text-item__header:not(:has(.icon-text-item__icon)) + .icon-text-item__body {
    padding-left: 0;
}

/* ==================================================================
   Column / Row / Container — Optional Border
   - Opt-in 1px border with 24px rounded corners + 16px padding.
   - On a column: applied to a nested .col-border-inner element so the
     column itself keeps its Bootstrap gutter padding (preserves the
     24px row gutter between bordered columns).
   - On a row / container auto-row: applied to an outer wrapper around
     the .row so the border defines the visible edge of the row.
   - col-border-light: 1px Grey  Border (#E5E5E5) — for light backgrounds.
   - col-border-dark:  1px White Border (#FFFFFF) — for dark backgrounds.
   - col-border-blue:  4px Blue  Border (#2E6AEA) — accent emphasis.
================================================================== */
.col-border-light,
.col-border-dark,
.col-border-blue {
    border-style: solid;
    border-width: 1px;
    border-radius: 24px;
    padding: 16px;
	margin-bottom: 48px;
}
.col-border-inner.col-border-light,
.col-border-inner.col-border-dark,
.col-border-inner.col-border-blue {
    /* Inside a column the inner element should fill the column's
       available height so adjacent bordered columns visually align. */
    height: 100%;
}
.col-border-light {
    border-color: #E5E5E5;
}
.col-border-dark {
    border-color: #FFFFFF;
}
.col-border-blue {
    border-color: #2E6AEA;
    border-width: 4px;
}

/* ==================================================================
   Angled Image - Overlap Next Block
   - Pulls the IMMEDIATELY following sibling up by N pixels. Because the
     sibling and any blocks after it sit in normal flow, the whole stack
     (heading + body + CTA) shifts up together.
   - Use only with bottom-angled shapes (left, right, bottom, *_tall,
     *_border) where the angle creates an empty triangle to fill.
================================================================== */
.angled-image.overlap-1 + *,
.angled-image.overlap-2 + *,
.angled-image.overlap-3 + *,
.angled-image.overlap-4 + * {
    position: relative;
    z-index: 1;
}
.angled-image.overlap-1 + * { margin-top: -8px;  }
.angled-image.overlap-2 + * { margin-top: -16px; }
.angled-image.overlap-3 + * { margin-top: -32px; }
.angled-image.overlap-4 + * { margin-top: -48px; }

@media (min-width: 992px) {
    .angled-image.overlap-lg-0 + *,
    .angled-image.overlap-lg-1 + *,
    .angled-image.overlap-lg-2 + *,
    .angled-image.overlap-lg-3 + *,
    .angled-image.overlap-lg-4 + * {
        position: relative;
        z-index: 1;
    }
    .angled-image.overlap-lg-0 + * { margin-top: 0;     }
    .angled-image.overlap-lg-1 + * { margin-top: -8px;  }
    .angled-image.overlap-lg-2 + * { margin-top: -16px; }
    .angled-image.overlap-lg-3 + * { margin-top: -32px; }
    .angled-image.overlap-lg-4 + * { margin-top: -48px; }
}

/* ==================================================================
   Scrolling Pills - Image Variant
   - Same marquee mechanics as the pill variant; items are 120x120
     images with an 8px rounded corner and 1px #E5E5E5 border.
   - 24px gap between items (margin-right replaces the pill 12px gap).
================================================================== */
.scrolling-pills--image .scrolling-pills__pill--image {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 120px;
    height: 120px;
    margin-right: 24px;
    padding: 0;
    border: 1px solid #E5E5E5;
    border-radius: 8px;
    background-color: transparent;
    overflow: hidden;
}
.scrolling-pills--image .scrolling-pills__pill--image img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}


/* ==================================================
   SINGLE POST (interim — standard the_content layout)
================================================== */
.single-post {
width: 100%;
margin: 0 auto;
padding: 40px 15px 80px;
}
.single-post__container {
max-width: 800px;
margin: 0 auto;
}
.single-post__feature-image {
margin-bottom: 32px;
border-radius: 16px;
overflow: hidden;
}
.single-post__feature-image img {
display: block;
width: 100%;
height: auto;
border-radius: 16px;
}
.single-post__header {
margin-bottom: 32px;
}
.single-post__category {
display: inline-block;
font-family: 'Geist', sans-serif;
font-weight: 600;
font-size: 12px;
color: #222;
text-decoration: none;
text-transform: uppercase;
letter-spacing: 0.04em;
margin-bottom: 12px;
}
.single-post__category:hover,
.single-post__category:focus-visible {
color: #2E6AEA;
}
.single-post__title {
font-family: 'Bricolage Grotesque', serif;
font-weight: 700;
font-size: 40px;
line-height: 1.2;
color: #222;
margin: 0 0 12px;
}
.single-post__meta {
font-family: 'Geist', sans-serif;
font-size: 14px;
color: #777;
margin: 0;
}
.single-post__content {
font-family: 'Geist', sans-serif;
font-size: 17px;
line-height: 1.7;
color: #222;
}
.single-post__content p { margin: 0 0 1.25em; }
.single-post__content h2,
.single-post__content h3,
.single-post__content h4 {
font-family: 'Bricolage Grotesque', serif;
font-weight: 700;
color: #222;
margin: 2em 0 0.75em;
line-height: 1.25;
}
.single-post__content h2 { font-size: 28px; }
.single-post__content h3 { font-size: 22px; }
.single-post__content h4 { font-size: 18px; }
.single-post__content img {
max-width: 100%;
height: auto;
border-radius: 8px;
margin: 1em 0;
}
.single-post__content ul,
.single-post__content ol {
margin: 0 0 1.25em 1.25em;
}

@media (max-width: 767.98px) {
.single-post { padding: 24px 15px 60px; }
.single-post__title { font-size: 30px; }
.single-post__content { font-size: 16px; }
}

/* ==================================================
   RELATED ARTICLES (after single post)
================================================== */
.related-articles {
padding: 0 15px 80px;
}
.related-articles__container {
max-width: 1140px;
margin: 0 auto;
}
.related-articles__title {
font-family: 'Bricolage Grotesque', serif;
font-weight: 700;
font-size: 32px;
color: #222;
margin: 0 0 32px;
}
.related-articles__grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 32px;
}
@media (max-width: 991.98px) {
.related-articles__grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 575.98px) {
.related-articles__grid { grid-template-columns: 1fr; }
}

.related-card {
border: 1px solid #E5E5E5;
border-radius: 16px;
padding: 24px;
background: #fff;
display: flex;
flex-direction: column;
}
.related-card__image {
display: block;
border-radius: 16px;
overflow: hidden;
margin-bottom: 24px;
line-height: 0;
}
.related-card__image img {
display: block;
width: 100%;
height: auto;
border-radius: 16px;
aspect-ratio: 16 / 10;
object-fit: cover;
}
.related-card__meta {
display: flex;
align-items: center;
font-family: 'Geist', sans-serif;
font-size: 12px;
color: #222;
margin-bottom: 12px;
}
.related-card__category {
display: inline-flex;
align-items: center;
padding: 0 8px 0 0;
font-weight: 600;
border-right: 1px solid #E5E5E5;
color: inherit;
text-decoration: none;
}
.related-card__category:hover .related-card__category-name,
.related-card__category:focus-visible .related-card__category-name {
color: #2E6AEA;
}
.related-card__icon {
display: inline-block;
width: 16px;
height: 16px;
margin-right: 8px;
flex-shrink: 0;
}
.related-card__category-name {
font-family: 'Geist', sans-serif;
font-weight: 600;
font-size: 12px;
color: #222;
}
.related-card__date {
font-family: 'Geist', sans-serif;
font-weight: 400;
font-size: 12px;
color: #222;
padding-left: 8px;
}
.related-card__date--no-category {
padding-left: 0;
}
.related-card__title {
font-family: 'Bricolage Grotesque', serif;
font-weight: 700;
font-size: 20px;
line-height: 1.3;
color: #222;
margin: 0 0 8px;
}
.related-card__excerpt {
font-family: 'Geist', sans-serif;
font-weight: 400;
font-size: 14px;
line-height: 1.5;
color: #777;
margin: 0 0 24px;
}
.related-card__cta {
align-self: flex-start;
margin-top: auto;
text-decoration: none;
}
.related-card__cta:hover,
.related-card__cta:focus { text-decoration: none; }

/* ==================================================
   BLOG ARCHIVE — title / tagline / graphic CTA (Blog Options)
================================================== */
.archive-header .archive-title {
font-family: 'Bricolage Grotesque', serif;
font-weight: 700;
font-size: 48px;
line-height: 1.15;
color: #222;
max-width: none;
}
.archive-tagline {
font-family: 'Geist', sans-serif;
font-weight: 400;
font-size: 16px;
line-height: 1.6;
color: #777;
max-width: 770px;
margin: 12px auto 0;
}
.archive-graphic-cta {
margin: 0 0 16px;
}

/* --------------------------------------------------
   Archive page — simple 3-col placeholder layout
-------------------------------------------------- */
.archive-page .archive-container {
max-width: 1140px;
padding: 0 20px;
}
.archive-page .archive-header {
margin-bottom: 48px;
}
.archive-page .archive-grid-section {
margin-top: 0;
padding-top: 0;
border-top: 0;
}
.archive-empty {
grid-column: 1 / -1;
text-align: center;
color: #777;
font-family: var(--font-sans);
}
.archive-loadmore {
margin-top: 40px;
}
.archive-loadmore__link {
display: inline-block;
font-family: var(--font-sans);
font-size: 16px;
font-weight: 500;
color: #2E6AEA;
text-decoration: underline;
text-underline-offset: 4px;
}
/* When the loadmore is the split-pill CTA, undo the simple-link styles
   above so the two pills align as a single button. */
.archive-loadmore__link.btn-split {
display: inline-flex;
align-items: stretch;
font-size: inherit;
font-weight: inherit;
color: inherit;
text-decoration: none;
text-underline-offset: 0;
}
.archive-loadmore__link.btn-split:hover,
.archive-loadmore__link.btn-split:focus {
text-decoration: none;
}
.archive-loadmore__link.is-loading {
pointer-events: none;
}
/* Loading state: hide the arrow icon and show a spinner in its place,
   inside the right pill of the split button. */
.archive-loadmore__link.is-loading .btn-split__arrow > svg {
visibility: hidden;
}
.archive-loadmore__link.is-loading .btn-split__arrow {
position: relative;
}
.archive-loadmore__link.is-loading .btn-split__arrow::after {
content: "";
position: absolute;
top: 50%;
left: 50%;
width: 16px;
height: 16px;
margin: -8px 0 0 -8px;
border: 2px solid currentColor;
border-top-color: transparent;
border-radius: 50%;
animation: podsearch-loadmore-spin 0.7s linear infinite;
}
@keyframes podsearch-loadmore-spin {
to { transform: rotate(360deg); }
}


/* ==================================================================
   ARCHIVE — blog cards (.blog-card / .blog-card--featured)
   Replaces the legacy .archive-card layout. Featured card sits above
   the 3-col grid; both use the angled-image shape system and a
   blue split-pill Read More CTA wrapped in a single anchor.
================================================================== */

/* Featured card sits as a full-width row above the grid. */
.blog-card--featured {
display: block;
max-width: 100%;
margin: 0 0 48px;
border: 1px solid #E5E5E5;
border-radius: 16px;
padding: 0;
background: #fff;
overflow: hidden;
}

.blog-card--featured .blog-card__media-col {
padding: 0;
}
.blog-card--featured .blog-card__media-link {
display: block;
width: 100%;
height: 100%;
text-decoration: none;
}
.blog-card--featured .blog-card__angled {
width: 100%;
height: 100%;
}

.blog-card--featured .blog-card__body {
display: flex;
flex-direction: column;
justify-content: center;
padding: 24px 24px 24px 32px;
}

@media (max-width: 991.98px) {
.blog-card--featured .blog-card__body {
padding: 24px;
}
}


.blog-card--featured .blog-card__title--lg {
font-family: var(--font-bricolage);
font-weight: 700;
font-size: 32px;
line-height: 1.2;
color: #222;
margin: 0 0 16px;
}
.blog-card--featured .blog-card__title--lg a {
color: inherit;
text-decoration: none;
}

/* 3-column grid (responsive). Each card matches the related-card visual style. */
.blog-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 32px;
}
@media (max-width: 575.98px) {
.blog-grid { grid-template-columns: 1fr; }
}

.blog-card {
border: 1px solid #E5E5E5;
border-radius: 16px;
padding: 0;
background: #fff;
display: flex;
flex-direction: column;
overflow: hidden;
}

/* Image - flush to card edge, shape provides the visible bounds */
.blog-card > .blog-card__media-link {
display: block;
margin: 0;
text-decoration: none;
}
.blog-card .blog-card__angled {
width: 100%;
}

.blog-card > .blog-card__body {
padding: 24px;
}

/* Meta row (category + pipe + date) — same pattern as related-card */
.blog-card__meta {
display: flex;
align-items: center;
margin-bottom: 12px;
}
.blog-card__category {
display: inline-flex;
align-items: center;
font-family: var(--font-sans);
font-weight: 600;
font-size: 12px;
color: #222;
padding-right: 8px;
border-right: 1px solid #E5E5E5;
text-decoration: none;
}
.blog-card__category:hover .blog-card__category-name,
.blog-card__category:focus-visible .blog-card__category-name {
color: #2E6AEA;
}
.blog-card__icon {
width: 16px;
height: 16px;
margin-right: 8px;
flex-shrink: 0;
}
.blog-card__date {
font-family: var(--font-sans);
font-weight: 400;
font-size: 12px;
color: #222;
padding-left: 8px;
}
.blog-card__date--no-category {
padding-left: 0;
}

/* Title (default — used on grid cards) */
.blog-card__title {
font-family: var(--font-bricolage);
font-weight: 700;
font-size: 20px;
line-height: 1.3;
color: #222;
margin: 0 0 12px;
}
.blog-card__title a {
color: inherit;
text-decoration: none;
}

/* Excerpt */
.blog-card__excerpt {
font-family: var(--font-sans);
font-weight: 400;
font-size: 14px;
line-height: 1.5;
color: #777;
margin: 0 0 24px;
}

/* CTA — single <a> wrapping both pills of the split button.
   Keeps the label hugging its text content. */
.blog-card__cta {
align-self: flex-start;
text-decoration: none;
}
.blog-card__cta:hover,
.blog-card__cta:focus { text-decoration: none; }

/* Hide the "Show more" loadmore container's old fancy SVG button styling
   when used inside .blog-grid-section — we just want the simple link. */
.blog-grid-section .archive-loadmore { margin-top: 40px; }

/* Show more CTA: grey at rest, blue on hover. Both pills swap together via
   the existing .btn-split:hover rule which uses --cta-bg-hover. */
.archive-loadmore__link.btn-split-grey:hover,
.archive-loadmore__link.btn-split-grey:focus-visible {
--cta-bg-hover: #2E6AEA;
}

/* ==================================================================
   FOOTER BANNER
   Pre-footer full-width CTA strip above site-footer.
================================================================== */
.footer-banner {
background-color: #eff3fe;
}
.site-footer {
background-color: #2E6AEA;
padding:0 16px;
}
.site-footer > .container-fluid {
max-width: 1140px;
margin-left: auto;
margin-right: auto;
}
.footer__logo {
max-width: 120px;
}
@media (min-width: 992px) {
.py-lg-64 { padding-top: 96px !important; padding-bottom: 96px !important; }
}
.footer-banner__inner {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
}
.footer-banner__icon {
margin-bottom: 24px;
}
.footer-banner__icon img {
display: block;
width: 64px;
height: 64px;
object-fit: contain;
}
.footer-banner__headline {
font-family: var(--font-bricolage);
font-weight: 700;
font-size: 32px;
line-height: 1.2;
color: #222;
margin: 0 0 16px;
}
.footer-banner__tagline {
font-family: var(--font-sans);
font-weight: 400;
font-size: 16px;
line-height: 1.5;
color: #292929;
margin: 0 0 32px;
}
.footer-banner__cta {
text-decoration: none;
}
.footer-banner__cta:hover,
.footer-banner__cta:focus { text-decoration: none; }
