/*
Theme Name: Cabinet Abalo
Description: A custom block theme scaffolded by Studio Code.
Requires at least: 6.7
Tested up to: 6.9
Requires PHP: 7.2
Version: 0.5.3
License: GNU General Public License v2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
Text Domain: cabinet-abalo-theme
Tags: full-site-editing, block-patterns, block-styles, wide-blocks, accessibility-ready, style-variations
*/

/* WordPress inserts margin-block-start: var(--wp--style--block-gap) between the
   template's top-level sections (header part, main, footer part) — a gap that
   exists even when no markup asks for it. Zero it so sections butt edge-to-edge
   and own their vertical rhythm via padding; this does not affect block gaps
   inside nested layouts. */
.wp-site-blocks > * + * {
	margin-block-start: 0;
}

/* With that gap gone, main carries its own vertical padding so templates this
   theme does not author (WooCommerce shop, product, cart…) still clear the
   header and footer. A descendant selector, not a child one: WooCommerce wraps
   the single-product main in an extra group. Templates built from full-bleed
   sections opt out with is-flush and let the sections own the rhythm. */
.wp-site-blocks main {
	padding-block: var(--wp--preset--spacing--60) var(--wp--preset--spacing--70);
}
.wp-site-blocks main.is-flush {
	padding-block: 0;
}

/* === header === */
:root {
	--site-header-height: 104px;
}

.wp-site-blocks {
	padding-top: var(--site-header-height);
}

.site-header {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	width: 100%;
	z-index: 1000;
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border-bottom: 1px solid var(--wp--preset--color--accent);
	isolation: isolate;
}

.site-header__banner {
	--banner-tile-width: 57px;
	position: absolute;
	top: calc(100% - 24px);
	left: 50vw;
	width: 100vw;
	max-width: none !important;
	transform: translateX(-50%);
	height: 12px;
	overflow: hidden;
	background: var(--wp--preset--color--contrast);
	border-bottom: 1px solid var(--wp--preset--color--accent);
}

.site-header__banner-track {
	width: 100%;
	height: 100%;
	background-image: url("/wp-content/uploads/2026/09/banba.png");
	background-repeat: repeat-x;
	background-size: var(--banner-tile-width) 12px;
	background-position: 0 0;
	animation: site-banner-scroll 12s linear infinite;
}

@keyframes site-banner-scroll {
	from { transform: translateX(0); }
	to { background-position-x: calc(-1 * var(--banner-tile-width)); }
}

@media (prefers-reduced-motion: reduce) {
	.site-header__banner-track { animation: none; }
}

.site-header__brand {
	gap: 0.65rem;
}

.site-header__brand img {
	display: block;
}

.site-header__brand,
.site-header__brand .wp-block-site-logo {
	flex-shrink: 0;
}

.site-header__brand .wp-block-site-logo img {
	width: 42px;
	height: 42px;
	max-width: 42px;
	object-fit: contain;
}

.site-header__title a,
.site-header__title {
	font-family: var(--wp--preset--font-family--heading);
	font-size: var(--wp--preset--font-size--medium);
	letter-spacing: 0.01em;
	white-space: nowrap;
	color: var(--wp--preset--color--base);
	text-decoration: none;
}

.site-header__right {
	column-gap: var(--wp--preset--spacing--50, 2rem);
	row-gap: 0.5rem;
}

.site-header__actions {
	column-gap: 1.25rem;
	align-items: center;
}

/* === nav === */
.site-header__nav .wp-block-navigation__container {
	column-gap: 1.6rem;
	row-gap: 0.4rem;
}

.site-header__nav a.wp-block-navigation-item__content {
	font-family: var(--wp--preset--font-family--body);
	font-size: 0.95rem;
	font-weight: 500;
	color: var(--wp--preset--color--contrast);
	padding: 0.3rem 0;
}

.site-header__nav a.wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--accent);
}

.lang-switch a.wp-block-navigation-item__content {
	font-size: 0.85rem;
	font-weight: 600;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--base);
	opacity: 0.75;
}

.lang-switch a.wp-block-navigation-item__content:hover {
	color: var(--wp--preset--color--accent);
}

/* Hamburger toggle sits on the navy header bar — it needs to read against
   that background, not the panel it opens, so it stays cream/base, not navy. */
.wp-block-navigation__responsive-container-open {
	color: var(--wp--preset--color--base);
}

/* Mobile overlay menu panel: navy background with gold text, matching the
   site's hero/header brand treatment — and make sure it actually covers
   the viewport when open. */
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open {
	background-color: var(--wp--preset--color--contrast) !important;
	position: fixed;
	inset: 0;
	z-index: 1100;
	overflow-y: auto;
}

/* WP adds "is-content-justification-right"/"items-justified-right" to this
   nav because the desktop layout is right-aligned — that utility class
   right-aligns every nested flex container it touches (including this
   overlay), which is what scattered the items instead of listing them
   top-to-bottom, left-aligned. Everything below forces flex-start on every
   level explicitly rather than relying on one override to cascade. */
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open,
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content,
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container,
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	justify-content: flex-start !important;
	align-items: flex-start !important;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-content {
	padding: 4.5rem 1.5rem 2rem;
	display: flex !important;
	flex-direction: column !important;
	gap: 0 !important;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__container {
	display: flex !important;
	flex-direction: column !important;
	width: 100%;
	gap: 0 !important;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-item {
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	width: 100%;
	text-align: left !important;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open a.wp-block-navigation-item__content {
	display: block !important;
	flex: 1 1 auto;
	min-width: 0;
	text-align: left !important;
	color: var(--wp--preset--color--accent) !important;
	font-size: 1.1rem;
	padding: 0.75rem 0;
	border-bottom: 1px solid rgba(242, 181, 37, 0.25);
}

/* Core hides this chevron entirely in the mobile overlay (it expects
   submenus to always show flat, no toggle) — since we're driving our own
   accordion instead, the button needs to actually be visible and big
   enough to tap. Sits in the same flex row as the link (space-between)
   rather than being absolutely positioned over it, so it can't throw off
   the link's own box sizing/alignment. */
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle {
	display: flex !important;
	flex: 0 0 auto;
	align-items: center;
	justify-content: center;
	width: 2.75rem;
	height: 2.75rem;
	background: none;
	border: none;
	color: var(--wp--preset--color--accent) !important;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle svg {
	width: 14px;
	height: 14px;
}

/* submenus (Services, Notre Approche) render as an indented, nested list —
   without this they inherit the top-level item styling and read as
   un-indented, randomly-aligned siblings instead of children. Collapsed by
   default; WP's own toggle button already flips aria-expanded on open/close,
   so showing it off that attribute reuses the existing tap behavior instead
   of needing separate accordion JS.
   Core's own overlay stylesheet (`.is-menu-open ... .has-child
   .wp-block-navigation__submenu-container`) unconditionally forces these
   open (height:auto/visibility:visible/opacity:1) regardless of
   aria-expanded — every property that rule touches has to be beaten here
   with !important too, not just display, or the core rule wins on those
   individual properties and the "collapsed" state never actually collapses. */
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container {
	position: static !important;
	display: none !important;
	height: 0 !important;
	width: 100% !important;
	visibility: hidden !important;
	opacity: 0 !important;
	overflow: hidden !important;
	flex-direction: column !important;
	padding-left: 1.25rem;
	padding-top: 0 !important;
	margin: 0;
	background: none !important;
	border: none !important;
	box-shadow: none !important;
}

/* Core's Interactivity API binds every has-child item's aria-expanded to a
   state that turns out to stay true for the whole time the mobile overlay
   is open (it's not actually a true per-item accordion state), so gating
   on [aria-expanded="true"] never collapses anything here. A small script
   (mobile-menu.js) toggles this class directly instead, independent of
   core's own state. */
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .is-submenu-expanded > .wp-block-navigation__submenu-container {
	display: flex !important;
	height: auto !important;
	visibility: visible !important;
	opacity: 1 !important;
	overflow: visible !important;
}

/* Services has 7 links — a single column of them eats the whole screen.
   Lay them out as a compact 2-column grid instead, mirroring the desktop
   mega-menu grid, so opening it doesn't push the rest of the nav offscreen. */
.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .has-services-mega.is-submenu-expanded > .wp-block-navigation__submenu-container {
	display: grid !important;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 1rem;
	row-gap: 0;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .has-services-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content {
	font-size: 0.85rem;
	line-height: 1.3;
	padding: 0.5rem 0;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle {
	color: var(--wp--preset--color--accent) !important;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation-submenu__toggle svg {
	transition: transform 180ms ease;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .is-submenu-expanded > .wp-block-navigation-submenu__toggle svg {
	transform: rotate(180deg);
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container .wp-block-navigation-item {
	width: 100%;
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__submenu-container a.wp-block-navigation-item__content {
	display: block !important;
	width: 100%;
	text-align: left !important;
	font-size: 0.95rem;
	color: var(--wp--preset--color--accent-2) !important;
	padding: 0.6rem 0;
	border-bottom: 1px dashed rgba(242, 181, 37, 0.2);
}

.site-header__nav .wp-block-navigation__responsive-container.is-menu-open .wp-block-navigation__responsive-container-close {
	color: var(--wp--preset--color--base);
	position: absolute;
	top: 1.25rem;
	right: 1.25rem;
	z-index: 1;
}

main h1.has-base-color {
	color: var(--wp--preset--color--accent) !important;
}

/* === Services mega-menu (desktop) === */
@media (min-width: 601px) {
	.site-header__nav .has-services-mega,
	.site-header__nav .has-approach-mega {
		position: static;
	}

	.site-header__nav .has-services-mega > .wp-block-navigation__submenu-icon,
	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-icon {
		display: inline-flex;
	}

	.site-header__nav .has-services-mega > .wp-block-navigation__submenu-container,
	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-container {
		display: none;
		position: absolute;
		top: 100%;
		left: 50%;
		transform: translateX(-50%);
		width: min(920px, calc(100vw - 2rem));
		margin: 0;
		padding: 1.25rem 1.5rem;
		background: var(--wp--preset--color--contrast);
		border: 1px solid var(--wp--preset--color--accent);
		border-radius: 0 0 4px 4px;
		box-shadow: 0 18px 40px rgba(7, 17, 38, 0.28);
		grid-template-columns: 1fr 1fr;
		column-gap: 1.25rem;
		row-gap: 0.15rem;
		z-index: 1100;
	}

	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-container {
		grid-template-columns: 1fr;
	}

	.site-header__nav .has-services-mega:hover > .wp-block-navigation__submenu-container,
	.site-header__nav .has-services-mega:focus-within > .wp-block-navigation__submenu-container,
	.site-header__nav .has-services-mega.wp-block-navigation-submenu.is-open > .wp-block-navigation__submenu-container,
	.site-header__nav .has-approach-mega:hover > .wp-block-navigation__submenu-container,
	.site-header__nav .has-approach-mega:focus-within > .wp-block-navigation__submenu-container,
	.site-header__nav .has-approach-mega.wp-block-navigation-submenu.is-open > .wp-block-navigation__submenu-container {
		display: grid;
	}

	.site-header__nav .has-services-mega > .wp-block-navigation__submenu-container .wp-block-navigation-item,
	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-container .wp-block-navigation-item {
		width: 100%;
	}

	.site-header__nav .has-services-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content,
	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content {
		color: var(--wp--preset--color--base);
		font-size: 0.82rem;
		font-weight: 500;
		line-height: 1.35;
		padding: 0.55rem 0.4rem;
		opacity: 0.9;
	}

	.site-header__nav .has-services-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content::after,
	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content::after {
		display: none;
	}

	.site-header__nav .has-services-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content:hover,
	.site-header__nav .has-approach-mega > .wp-block-navigation__submenu-container a.wp-block-navigation-item__content:hover {
		color: var(--wp--preset--color--accent);
		opacity: 1;
	}
}

/* Pole / project card grids */
.service-diagnostic-title {
	color: var(--wp--preset--color--accent) !important;
	margin-top: 0;
	white-space: nowrap !important;
}

.poles-grid,
.projects-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 24px;
	align-items: stretch;
	margin-top: 1.75rem;
}

@media (min-width: 900px) {
	.poles-grid {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}
}

.pole-card,
.project-card,
.projects-grid > .wp-block-group.is-style-card,
.poles-grid > .wp-block-group.is-style-card {
	display: flex;
	flex: 1 1 0;
	flex-direction: column;
	height: 100%;
	min-height: 260px;
	margin: 0;
	position: static;
	top: auto;
	transform: none;
	align-self: stretch;
}

.pole-card > *,
.project-card > *,
.projects-grid > .wp-block-group.is-style-card > *,
.poles-grid > .wp-block-group.is-style-card > * {
	width: 100%;
}

.pole-card p:last-child,
.project-card p:last-child,
.projects-grid > .wp-block-group.is-style-card p:last-child,
.poles-grid > .wp-block-group.is-style-card p:last-child {
	margin-bottom: 0;
}

.pole-card .wp-block-heading,
.project-card .wp-block-heading,
.poles-grid > .wp-block-group.is-style-card .wp-block-heading,
.projects-grid > .wp-block-group.is-style-card .wp-block-heading,
.pole-card p,
.project-card p,
.poles-grid > .wp-block-group.is-style-card p,
.projects-grid > .wp-block-group.is-style-card p {
	margin-top: 0;
}

.pole-card .pole-num,
.project-card .pole-num {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 0.85rem;
	letter-spacing: 0.06em;
	color: var(--accent-ink);
	margin-bottom: 0.35rem;
}

.pole-card a.pole-card-link,
.project-card a.project-card-link {
	text-decoration: none;
	color: inherit;
}

.pole-card a.pole-card-link:hover h3,
.project-card a.project-card-link:hover h3 {
	color: var(--accent-ink);
}

.related-chips {
	display: flex;
	flex-wrap: wrap;
	gap: 0.5rem;
	margin-top: 0.75rem;
}

.related-chips a {
	display: inline-block;
	padding: 0.25rem 0.65rem;
	border: 1px solid var(--wp--preset--color--accent);
	font-size: 0.8rem;
	text-decoration: none;
}

/* === project cards with a featured image === */
.project-card.project-card--media {
	background-color: #fffdf8;
	border: 1px solid var(--cabinet-border);
	border-radius: 2px;
	box-shadow: var(--cabinet-shadow);
	overflow: hidden;
	padding: 0;
	transition: transform 180ms ease, box-shadow 180ms ease;
}

.project-card.project-card--media:hover {
	transform: translateY(-4px);
	box-shadow: 0 24px 50px rgba(11, 27, 58, 0.16);
}

.project-card--media .project-visual {
	position: relative;
	width: 100%;
	height: 0;
	padding-top: 56.25%;
	overflow: hidden;
	background-color: var(--wp--preset--color--contrast);
}

.project-card--media .project-visual img {
	display: block;
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	max-width: none;
	object-fit: cover;
}

.project-card--media .project-visual::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(180deg, rgba(11, 27, 58, 0) 45%, rgba(11, 27, 58, 0.75) 100%);
}

.project-card--media .project-eyebrow {
	position: absolute;
	left: 1.25rem;
	bottom: 0.9rem;
	z-index: 1;
	color: var(--wp--preset--color--base);
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.08em;
}

.project-card--media .project-body {
	padding: 1.6rem;
	display: flex;
	flex-direction: column;
	gap: 0.6rem;
}

.project-card--media .project-body > * {
	margin: 0 !important;
}

.project-status {
	display: inline-flex;
	align-self: flex-start;
	font-size: 0.72rem;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.05em;
	padding: 0.25rem 0.6rem;
	border-radius: 100px;
	background-color: var(--wp--preset--color--accent-2);
	color: var(--wp--preset--color--contrast-2);
}

.project-card--media .related-label {
	font-size: 0.78rem;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--contrast-2);
	margin-top: 0.5rem !important;
}

.project-card--media .related-chips {
	margin-top: 0.4rem;
}

.project-card--media .related-chips a {
	display: inline-flex;
	align-items: center;
	font-size: 0.78rem;
	font-weight: 600;
	padding: 0.3rem 0.7rem;
	border-radius: 100px;
	background-color: rgba(242, 181, 37, 0.14);
	border: 1px solid rgba(242, 181, 37, 0.4);
	color: #9a6c0a;
}

.canada-banner {
	border-top: 1px solid rgba(242, 181, 37, 0.45);
	border-bottom: 1px solid rgba(242, 181, 37, 0.45);
}

@media (max-width: 768px) {
	.service-diagnostic-title {
		white-space: normal !important;
	}

	.poles-grid,
	.projects-grid {
		grid-template-columns: 1fr;
	}
}

/* === hero === */

.hero-carousel {
	position: relative;
	min-height: 85vh;
	overflow: hidden;
	display: flex;
	align-items: center;
}

.hero-carousel::after {
	content: "";
	position: absolute;
	inset: 0;
	z-index: 1;
	background-color: var(--wp--preset--color--contrast);
	opacity: 0.55;
}

.hero-carousel__slides {
	position: absolute;
	inset: 0;
	z-index: 0;
	margin: 0;
}

.hero-carousel__slide {
	position: absolute;
	inset: 0;
	margin: 0;
	opacity: 0;
	transition: opacity 1.8s ease;
}

.hero-carousel__slide.is-active {
	opacity: 1;
}

.hero-carousel__slide img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.hero-carousel__content {
	position: relative;
	z-index: 2;
	max-width: 920px;
	row-gap: 1.25rem;
	display: flex;
	flex-direction: column;
	padding-inline: var(--wp--style--root--padding-left, 2rem);
	color: var(--wp--preset--color--base);
}

.hero-carousel__content .wp-block-buttons {
	flex-wrap: nowrap;
}

@media (max-width: 780px) {
	.hero-carousel__content .wp-block-buttons {
		flex-wrap: wrap;
	}
}

.hero-carousel__content .is-style-outline .wp-element-button {
	color: var(--wp--preset--color--base);
	border-color: var(--wp--preset--color--base);
}

.hero-carousel__content .wp-block-buttons {
	margin-top: 0.5rem;
	row-gap: 0.75rem;
}

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

.hero-carousel__ticker {
	overflow: hidden;
	background-color: var(--wp--preset--color--accent);
	padding-block: 0.85rem;
	margin-top: 0;
}

.hero-carousel__ticker-track {
	display: flex;
	flex-wrap: nowrap;
	white-space: nowrap;
	animation: hero-ticker-scroll 32s linear infinite;
}

.hero-carousel__ticker-track p {
	margin: 0;
	color: var(--wp--preset--color--contrast);
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.04em;
	font-size: var(--wp--preset--font-size--small);
}

.hero-carousel__ticker-track p::after {
	content: "\2022";
	margin-inline: 1.5rem;
	opacity: 0.6;
}

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

@media (prefers-reduced-motion: reduce) {
	.hero-carousel__ticker-track {
		animation: none;
	}
}

/* === sections === */
.section {
	padding-block: clamp(3rem, 7vw, 5.5rem);
}

.section-light {
	background-color: var(--wp--preset--color--base);
}

.section-navy {
	background-color: var(--wp--preset--color--contrast);
}

.section-sand {
	background-color: var(--wp--preset--color--accent-2);
}

.section-lead {
	max-width: 56ch;
}

.section-navy .mission-title,
.section-navy .mission-tagline {
	margin-inline: auto;
	text-align: center;
}

.section-navy .mission-title {
	color: var(--wp--preset--color--accent) !important;
}

.section-navy .mission-tagline {
	max-width: none;
}

.hero-cover.wp-block-cover::before {
	z-index: 1;
}

.hero-cover {
	background-color: #0b1b3a;
}

#video-banner {
	filter: brightness(0.9);
	height: 100%;
	left: 0;
	max-width: none;
	object-fit: cover;
	position: absolute;
	top: 0;
	width: 100%;
	z-index: 0;
}

.hero-cover > .wp-block-cover__background {
	opacity: 0.2 !important;
}

.hero-cover__motion {
	inset: 0;
	position: absolute;
	z-index: 0;
}

.hero-cover__slide {
	height: 100%;
	inset: 0;
	object-fit: cover;
	opacity: 0;
	position: absolute;
	transition: opacity 1.8s ease-in-out;
	width: 100%;
}

.hero-cover__slide.is-active {
	opacity: 1;
}

.hero-cover .wp-block-cover__inner-container {
	max-width: 720px;
	margin-inline: auto;
	position: relative;
	row-gap: 1.25rem;
	text-align: center;
	z-index: 2;
}

.hero-title {
	line-height: 1.1;
}

.hero-cover .hero-title {
	font-size: clamp(1.75rem, 3.6vw, 3.25rem) !important;
	max-width: none;
	margin-inline: auto;
	text-align: center;
	text-wrap: initial;
	transform: translateY(-0.75rem);
}

.hero-lead {
	max-width: 58ch;
	opacity: 0.92;
}

.hero-cover .wp-block-buttons {
	flex-wrap: nowrap;
	justify-content: center;
	margin-top: 0.5rem;
	row-gap: 0.75rem;
}

.hero-cover .wp-block-button.is-style-outline .wp-block-button__link {
	border-color: var(--wp--preset--color--base);
	color: var(--wp--preset--color--base);
	font-size: 0.8rem;
	font-weight: 700;
	line-height: 1.4;
	padding: 0.75rem 1rem;
}

@media (max-width: 780px) {
	.hero-cover .wp-block-buttons {
		flex-wrap: wrap;
	}
}

.section-image img {
	border-radius: 2px;
}

.mission-bleed {
	position: relative;
	z-index: 2;
	aspect-ratio: 3 / 4;
	overflow: hidden;
	border-radius: 4px;
	margin-block: clamp(-2.5rem, -6vw, -4.5rem);
	box-shadow: 0 30px 55px -12px rgba(11, 27, 58, 0.55), 0 12px 22px rgba(11, 27, 58, 0.35);
}

.mission-bleed img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border-radius: 4px;
}

@media (max-width: 780px) {
	.mission-bleed {
		margin-block: -1.25rem;
		aspect-ratio: 4 / 3;
	}
}

.check-list {
	list-style: none;
	padding-left: 0;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 1.5rem;
	row-gap: 0.85rem;
}

.check-list li {
	padding-left: 1.6rem;
	position: relative;
}

.check-list li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.45em;
	width: 0.6rem;
	height: 0.6rem;
	background-color: var(--wp--preset--color--accent);
	border-radius: 1px;
	transform: rotate(45deg);
}

.cta-section {
	text-align: center;
}

.related-publications-list {
	display: grid;
	gap: 1.5rem;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	margin-top: 1.5rem;
}

.related-publications-list .pub-category {
	color: var(--accent-ink);
	font-weight: 700;
	text-transform: uppercase;
}

@media (max-width: 780px) {
	.related-publications-list {
		grid-template-columns: 1fr;
	}
}

.page-hero .wp-block-cover__inner-container {
	max-width: 760px;
	row-gap: 1rem;
}

.eyebrow {
	text-transform: uppercase;
	letter-spacing: 0.08em;
	font-weight: 600;
}

.check-list--single {
	grid-template-columns: 1fr;
}

.check-list--single li::before {
	background-color: var(--wp--preset--color--accent);
}

.check-list--row {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	column-gap: 2rem;
	row-gap: 0.75rem;
	margin-block: 1.75rem 2.5rem;
	text-align: left;
}

.check-list--row li {
	font-weight: 600;
}

@media (max-width: 600px) {
	/* Centered flex-wrap staggers unevenly once items wrap to their own
	   lines at phone widths — stack them as a plain left-aligned list. */
	.check-list--row {
		display: block;
		text-align: left;
	}

	.check-list--row li {
		margin-block: 0.5rem;
	}
}

.page-hero-text {
	padding-block: clamp(3.5rem, 9vw, 6rem) clamp(2.5rem, 6vw, 4rem);
	row-gap: 1rem;
}

.step-card {
	border-top: 3px solid var(--wp--preset--color--accent);
	padding-top: 1.25rem;
	row-gap: 0.4rem;
	height: 100%;
}

.step-number {
	font-family: var(--wp--preset--font-family--heading);
	font-size: 2.25rem;
	color: var(--wp--preset--color--accent);
	line-height: 1;
	margin: 0;
}

.disclaimer {
	font-style: italic;
	color: var(--wp--preset--color--contrast-2);
	margin-bottom: 2rem;
	max-width: 70ch;
}

.pub-filters {
	padding-bottom: 1.5rem;
	border-bottom: 1px solid var(--wp--preset--color--accent-2);
	margin-bottom: 2.5rem;
	column-gap: 1.5rem;
}

.pub-filters .filter-tabs {
	column-gap: 0.4rem;
	row-gap: 0.4rem;
}

.filter-tab {
	font-weight: 600;
	font-size: 0.85rem;
	text-decoration: none;
	padding: 0.4rem 0.85rem;
	border-radius: 100px;
	color: var(--wp--preset--color--contrast-2);
}

.filter-tab.is-active {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

.pub-search .wp-block-search__inside-wrapper {
	border: 1px solid var(--wp--preset--color--contrast-2);
	border-radius: 100px;
	overflow: hidden;
}

.pub-search .wp-block-search__input {
	padding-inline-start: 1rem;
}

.pub-search .wp-block-search__button {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	border-radius: 0;
}

.publication-item {
	padding-block: 1.75rem;
	border-bottom: 1px solid var(--wp--preset--color--accent-2);
	row-gap: 0.5rem;
}

.publication-list {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 1.5rem;
	align-items: stretch;
}

/* === spotlight card === */
.spotlight-list > .wp-block-post {
	margin-block-start: 0;
}

.spotlight {
	border: 1px solid var(--cabinet-border);
	border-radius: 2px;
	overflow: hidden;
	box-shadow: var(--cabinet-shadow);
	margin-bottom: 2.5rem;
}

.spotlight .wp-block-columns {
	margin-bottom: 0;
}

.spotlight-visual {
	background-color: var(--wp--preset--color--contrast);
	min-height: 240px;
	position: relative;
	overflow: hidden;
	padding: 0 !important;
}

.spotlight-visual .wp-block-post-featured-image,
.spotlight-visual .wp-block-post-featured-image a {
	position: absolute;
	inset: 0;
	margin: 0;
}

.spotlight-visual img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.spotlight-body {
	background-color: #fffdf8;
	padding: 2rem !important;
	row-gap: 0.6rem;
}

.spotlight-body h2 {
	font-size: clamp(1.4rem, 2.2vw, 1.85rem) !important;
	line-height: 1.25;
}

.spotlight-body h2 a {
	text-decoration: none;
}

.spotlight-body h2 a:hover {
	color: var(--wp--preset--color--accent-3);
}

.spotlight-body .wp-block-post-excerpt__excerpt {
	font-size: 1rem;
	color: var(--wp--preset--color--contrast-2);
}

/* === category color coding === */
.cat-strategie a {
	color: var(--accent-ink);
}

.cat-socioeco a {
	color: var(--wp--preset--color--accent-3);
}

.cat-gouvernance a {
	color: var(--wp--preset--color--contrast);
}

.cat-culture a {
	color: var(--wp--preset--color--contrast-2);
}

.cat-opportunites a {
	color: var(--wp--preset--color--accent-3);
}

.publication-list > .wp-block-post {
	margin-block-start: 0;
}

.publication-list .publication-item {
	min-width: 0;
	height: 100%;
	box-sizing: border-box;
	overflow: hidden;
	padding: 0 0 1.75rem;
	border: 1px solid var(--cabinet-border);
	background: #fffdf8;
	box-shadow: var(--cabinet-shadow);
	display: flex;
	flex-direction: column;
	transition: transform 180ms ease, box-shadow 180ms ease;
}

.publication-item > :not(.pub-card-img) {
	margin-inline: 1.75rem !important;
}

.publication-item > .pub-category {
	margin-top: 1rem !important;
}

.publication-item .pub-card-img {
	aspect-ratio: 16 / 9;
	object-fit: cover;
	width: 100%;
	max-width: none;
	margin: 0 0 1rem;
	border-top: 3px solid var(--wp--preset--color--accent);
}

.publication-list .publication-item:hover {
	transform: translateY(-4px);
	box-shadow: 0 24px 50px rgba(11, 27, 58, 0.16);
}

.publication-list .publication-item h3 {
	margin-block: 0.35rem 0.65rem;
	font-size: clamp(1.35rem, 1.8vw, 1.55rem) !important;
	line-height: 1.25;
}

.publication-list .publication-item h3 a {
	text-decoration: none;
}

.publication-list .publication-item h3 a:hover {
	color: var(--wp--preset--color--accent-3);
}

.publication-list .publication-item .wp-block-post-excerpt__excerpt {
	display: -webkit-box;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 4;
	overflow: hidden;
	font-size: 1.05rem;
	line-height: 1.65;
	min-height: calc(1.65em * 4);
	margin-block: 0;
}

.publication-read-more {
	margin-top: 1rem;
	padding-top: 0;
}

.publication-list .publication-item .publication-read-more {
	margin-top: auto !important;
	font-size: 0.82rem;
	font-weight: 700;
	letter-spacing: 0.03em;
	text-transform: uppercase;
}

.publication-read-more a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
}

.publication-read-more a::after {
	content: "  →";
	color: var(--wp--preset--color--accent-3);
}

.publication-read-more a:hover {
	color: var(--wp--preset--color--accent-3);
}

.publication-list .publication-item .pub-date {
	margin-top: 1rem;
}

.pub-category {
	text-transform: uppercase;
	letter-spacing: 0.06em;
	font-weight: 600;
	color: var(--wp--preset--color--accent-3);
}

.pub-category a {
	color: inherit;
}

.pub-date {
	color: var(--wp--preset--color--contrast-2);
}

.faq-item {
	max-width: 760px;
	padding-block: 1.5rem;
	border-bottom: 1px solid var(--wp--preset--color--accent-2);
	row-gap: 0.5rem;
}

.faq-item:first-child {
	padding-top: 0;
}

.faq-item h3 {
	color: var(--wp--preset--color--contrast);
}

/* === FAQ accordion (native <details>) === */
details.faq-item {
	display: block;
	padding-block: 1.5rem;
}

details.faq-item summary {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	list-style: none;
	cursor: pointer;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.125rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

details.faq-item summary::-webkit-details-marker {
	display: none;
}

details.faq-item summary::after {
	content: "+";
	flex: none;
	width: 1.75rem;
	height: 1.75rem;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent-2);
	color: var(--wp--preset--color--contrast);
	font-size: 1.1rem;
	line-height: 1;
	transition: transform 180ms ease, background-color 180ms ease;
}

details.faq-item[open] summary::after {
	content: "+";
	transform: rotate(45deg);
	background-color: var(--wp--preset--color--accent);
}

details.faq-item p {
	margin-block: 0.75rem 0;
	color: var(--wp--preset--color--contrast-2);
}

.service-faq-section .wp-block-details {
	max-width: 960px;
	margin-inline: auto;
	padding-block: 1rem;
	border-bottom: 1px solid var(--wp--preset--color--accent-2);
}

.service-faq-section .wp-block-details summary {
	color: var(--wp--preset--color--contrast);
	cursor: pointer;
	font-weight: 600;
}

.service-faq-section .wp-block-details summary::marker {
	color: var(--accent-ink);
}

.service-faq-section .wp-block-details p {
	margin-block: 0.75rem 0;
}

.step-card--dark {
	border-top-color: var(--wp--preset--color--accent);
}

.step-card--dark .step-number {
	color: var(--wp--preset--color--accent-2);
}

.wp-block-jetpack-contact-form {
	row-gap: 1.25rem;
}

.contact-notice {
	padding: 0.9rem 1.1rem;
	margin-bottom: 1.25rem;
	border-radius: 2px;
	font-size: 0.92rem;
	font-weight: 600;
}

.contact-notice--success {
	background-color: rgba(34, 139, 34, 0.12);
	color: #1e5e1e;
	border-left: 3px solid #1e5e1e;
}

.contact-notice--error {
	background-color: rgba(214, 40, 40, 0.1);
	color: var(--wp--preset--color--accent-3);
	border-left: 3px solid var(--wp--preset--color--accent-3);
}

.wp-block-jetpack-contact-form label {
	font-weight: 600;
	font-size: 0.9rem;
	margin-bottom: 0.35rem;
	display: inline-block;
}

.wp-block-jetpack-contact-form input[type="text"],
.wp-block-jetpack-contact-form input[type="email"],
.wp-block-jetpack-contact-form input[type="tel"],
.wp-block-jetpack-contact-form select,
.wp-block-jetpack-contact-form textarea {
	border: 1px solid var(--wp--preset--color--contrast-2);
	border-radius: 2px;
	padding: 0.6rem 0.75rem;
	width: 100%;
	font-family: var(--wp--preset--font-family--body);
}

.wp-block-jetpack-contact-form input:focus,
.wp-block-jetpack-contact-form select:focus,
.wp-block-jetpack-contact-form textarea:focus {
	border-color: var(--wp--preset--color--accent);
	outline: none;
}

.contact-info h3:not(:first-child) {
	margin-top: 1.75rem;
}

.publication-content {
	max-width: 760px;
	padding-block: clamp(2rem, 5vw, 3.5rem) 1rem;
}

.publication-content h2 {
	margin-top: 2rem;
}

.back-link {
	max-width: 760px;
	padding-top: 1.5rem;
	border-top: 1px solid var(--wp--preset--color--accent-2);
}

/* === cards === */
.is-style-card {
	background-color: var(--wp--preset--color--base);
	padding: 1.75rem;
	border-radius: 2px;
	border-top: 3px solid var(--wp--preset--color--accent);
	height: 100%;
	row-gap: 0.6rem;
}

.client-card__image {
	aspect-ratio: 16 / 9;
	align-self: stretch;
	display: block;
	height: auto;
	margin: 0 0 1rem !important;
	max-width: none;
	object-fit: cover;
	width: 100%;
}

.is-style-card:has(> .client-card__image) {
	overflow: hidden;
	padding: 0;
}

.is-style-card:has(> .client-card__image) > :not(.client-card__image) {
	margin-inline: 1.75rem;
	padding-inline: 1.5rem !important;
}

.is-style-card h3 {
	font-size: 1.05rem;
	line-height: 1.35;
	hyphens: auto;
}

.section-navy .is-style-card,
.section-sand .is-style-card {
	background-color: var(--wp--preset--color--base);
}

.expertise-marquee {
	display: block !important;
	overflow: hidden;
	touch-action: pan-y;
	width: 100%;
}

.expertise-marquee__track,
.expertise-marquee__group {
	display: flex;
	width: max-content;
}

.expertise-marquee__track {
	animation: expertise-marquee-scroll 36s linear infinite;
}

.expertise-marquee__group {
	align-items: stretch;
	gap: 1.5rem;
	padding-inline-end: 1.5rem;
}

.expertise-marquee__group > .wp-block-column {
	flex: 0 0 clamp(260px, 28vw, 340px) !important;
	max-width: none !important;
	width: clamp(260px, 28vw, 340px) !important;
}

.expertise-marquee .expertise-card__icon {
	background-color: var(--wp--preset--color--accent);
	border-radius: 50%;
	box-sizing: border-box;
	color: var(--wp--preset--color--contrast);
	display: block;
	height: 3rem;
	margin-block-end: 1rem;
	padding: 0.65rem;
	width: 3rem;
}


.expertise-3d {
	max-width: 100%;
	width: 100%;
}

.expertise-3d__scene {
	width: 100%;
}

.expertise-3d__ring {
	display: flex;
	gap: 1.1rem;
	width: 100%;
}

.expertise-3d__item {
	background: var(--wp--preset--color--base);
	border: 1px solid var(--wp--preset--color--accent-2);
	border-radius: 10px;
	box-shadow: 0 10px 24px rgba(11, 27, 58, 0.12);
	flex: 1 1 0;
	margin: 0;
	min-width: 0;
	overflow: hidden;
	transition: transform 220ms ease, box-shadow 220ms ease, border-color 220ms ease;
}

.expertise-3d__item img {
	aspect-ratio: 4 / 3;
	display: block;
	height: auto;
	object-fit: cover;
	width: 100%;
}

.expertise-3d__caption {
	box-sizing: border-box;
	color: var(--wp--preset--color--contrast);
	display: block;
	font-size: 0.85rem;
	font-weight: 700;
	line-height: 1.3;
	margin: 0;
	padding: 0.85rem 0.9rem;
	text-align: center;
}

.expertise-3d__item:hover,
.expertise-3d__item:focus-within {
	border-color: var(--wp--preset--color--accent);
	box-shadow: 0 16px 32px rgba(11, 27, 58, 0.2);
	transform: translateY(-4px);
}

@media (max-width: 780px) {
	/* A five-wide row has nothing to shrink into on a phone screen — swap it
	   for a swipeable, scroll-snapped strip of the same cards instead. */
	.expertise-3d__ring {
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		gap: 1rem;
		padding: 0.5rem 1.25rem 1rem;
		margin-inline: -1.25rem;
		-webkit-overflow-scrolling: touch;
		scrollbar-width: none;
	}

	.expertise-3d__ring::-webkit-scrollbar {
		display: none;
	}

	.expertise-3d__item {
		flex: 0 0 68vw;
		max-width: 260px;
		scroll-snap-align: center;
	}

	.expertise-3d__item:hover {
		transform: none;
	}
}

@media (prefers-reduced-motion: reduce) {
	.expertise-3d__item img {
		transition: none;
	}
}

.page-id-215 .clients-section > .wp-block-columns {
	box-sizing: border-box;
	gap: 1.5rem;
	padding-inline: clamp(1rem, 3.8vw, 3rem);
}

.page-id-215 .clients-section .is-style-card > * {
	margin-block: 0;
}

.page-id-215 .clients-section .is-style-card > p {
	margin-block-start: 1.5rem;
}

.expertise-marquee:hover .expertise-marquee__track,
.expertise-marquee:focus-within .expertise-marquee__track,
.expertise-marquee.is-dragging .expertise-marquee__track {
	animation-play-state: paused;
}

.expertise-marquee.is-dragging {
	cursor: grabbing;
	user-select: none;
}

@media (min-width: 1001px) {
	.expertise-marquee {
		left: 50%;
		margin-left: 0 !important;
		max-width: none !important;
		position: relative;
		transform: translateX(-50%);
		width: var(--expertise-marquee-width) !important;
	}

	.expertise-marquee__group > .wp-block-column {
		flex-basis: calc((var(--expertise-marquee-width) - 6rem) / 4) !important;
		width: calc((var(--expertise-marquee-width) - 6rem) / 4) !important;
	}
}

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

@media (prefers-reduced-motion: reduce) {
	.expertise-marquee__track {
		animation: none;
	}
}

/* === buttons === */
.cta-consult .wp-element-button,
.faq-bridge-button .wp-element-button {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--base);
	border-radius: 2px;
	font-size: 0.9rem;
	font-weight: 600;
	padding: 0.7rem 1.4rem;
	white-space: nowrap;
}

.cta-consult .wp-element-button:hover,
.faq-bridge-button .wp-element-button:hover {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

/* === faq === */

/* === footer === */
.site-footer {
	background-color: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
	padding-block: var(--wp--preset--spacing--70, 4rem) var(--wp--preset--spacing--50, 2rem);
	margin-top: 0;
}

.site-footer .footer-col {
	min-width: 220px;
	row-gap: 0.75rem;
}

.site-footer h3 {
	color: var(--wp--preset--color--base);
	font-size: var(--wp--preset--font-size--medium);
}

.site-footer p,
.site-footer a {
	color: var(--wp--preset--color--base);
	opacity: 0.9;
}

.site-footer .footer-tagline {
	opacity: 0.75;
	max-width: 26ch;
}

.site-footer a:hover {
	color: var(--wp--preset--color--accent);
	opacity: 1;
}

.footer-nav .wp-block-navigation__container,
.footer-legal-nav .wp-block-navigation__container {
	row-gap: 0.5rem;
	column-gap: 1.5rem;
}

.footer-nav a.wp-block-navigation-item__content,
.footer-legal-nav a.wp-block-navigation-item__content {
	font-size: 0.9rem;
	padding: 0.15rem 0;
	color: var(--wp--preset--color--base);
	opacity: 0.85;
}

.footer-bottom {
	margin-top: 3rem;
	padding-top: 1.5rem;
	border-top: 1px solid rgba(247, 244, 238, 0.2);
}

.footer-bottom p {
	opacity: 0.7;
}

/* === responsive === */
@media (max-width: 560px) {
	.check-list {
		grid-template-columns: 1fr;
	}
}

@media (max-width: 600px) {
	/* Page-hero titles (Contact, Projets, Services…) use the fixed
	   xx-large preset (3.25rem) meant for desktop — on a phone a two-line
	   heading at that size can fill the entire screen. Scale it down and
	   let section headings sit tighter too. */
	.has-xx-large-font-size {
		font-size: 1.85rem !important;
		line-height: 1.2 !important;
	}

	/* Page-hero lead paragraphs (the sentence under the big title, e.g.
	   "Dix pôles complémentaires pour…") use the medium preset (1.125rem) —
	   comfortable on desktop but, combined with the now-smaller title above
	   it, it reads oversized on a phone. */
	.page-hero-text .hero-lead {
		font-size: 0.95rem !important;
		line-height: 1.5;
	}

	.section h2 {
		font-size: clamp(1.5rem, 7vw, 2rem);
	}

	.site-header .wp-block-group {
		flex-wrap: wrap;
		row-gap: 0.5rem;
	}

	.site-header__right {
		flex-wrap: nowrap;
	}

	.cta-consult .wp-element-button {
		font-size: 0.78rem;
		padding: 0.6rem 0.9rem;
	}

	.site-footer .wp-block-group.alignwide {
		row-gap: 2.5rem;
	}
}

/* === professional polish === */
:root {
	--site-header-height: 104px;
	--cabinet-shadow: 0 18px 40px rgba(11, 27, 58, 0.12);
	--cabinet-border: rgba(11, 27, 58, 0.12);
	/* Darker reading of the gold accent, used only where accent-colored TEXT
	   sits on a light background — the raw accent (#F2B525) fails WCAG AA
	   contrast there (~1.6:1). Keep using the preset accent everywhere the
	   background is navy or the color is decorative (borders, fills). */
	--accent-ink: #805f00;
}

.site-header {
	padding: 0.8rem clamp(1.25rem, 4vw, 3.5rem);
	box-shadow: 0 8px 24px rgba(7, 17, 38, 0.14);
}

.site-header > .wp-block-group {
	width: 100%;
	max-width: 1320px;
	margin-inline: auto;
}

.site-header__nav .wp-block-navigation__container {
	column-gap: clamp(0.8rem, 1.7vw, 1.45rem);
}

.site-header__nav a.wp-block-navigation-item__content {
	font-size: 0.86rem;
	font-weight: 600;
	letter-spacing: 0.01em;
}

.site-header__nav a.wp-block-navigation-item__content::after {
	content: "";
	display: block;
	width: 0;
	height: 2px;
	margin-top: 0.25rem;
	background: var(--wp--preset--color--accent);
	transition: width 180ms ease;
}

.site-header__nav a.wp-block-navigation-item__content:hover::after,
.site-header__nav a.wp-block-navigation-item__content:focus-visible::after {
	width: 100%;
}

.hero-carousel {
	min-height: min(760px, calc(100vh - var(--site-header-height)));
	background: var(--wp--preset--color--contrast);
}

.hero-carousel::after {
	background: linear-gradient(90deg, rgba(5, 16, 36, 0.88) 0%, rgba(5, 16, 36, 0.62) 48%, rgba(5, 16, 36, 0.25) 100%);
	opacity: 1;
}

.hero-carousel__content {
	max-width: none !important;
	padding-block: clamp(4rem, 9vw, 7rem);
	width: 100vw;
	margin-left: calc(50% - 50vw);
	margin-right: 0;
	align-items: center;
	text-align: center;
}

.hero-carousel__content h1 {
	max-width: none !important;
	width: auto;
	font-size: clamp(3rem, 6.2vw, 5.8rem);
	letter-spacing: -0.02em;
	text-wrap: balance;
	white-space: nowrap;
}

.hero-carousel__content > p {
	max-width: 58ch;
	font-size: clamp(1rem, 1.5vw, 1.25rem);
	line-height: 1.7;
	color: rgba(245, 241, 232, 0.9);
}

.hero-carousel__content .wp-block-buttons {
	margin-top: 1rem;
	gap: 0.75rem;
	justify-content: center;
}

.hero-carousel__content .wp-element-button,
.cta-consult .wp-element-button {
	border: 1px solid var(--wp--preset--color--accent);
	border-radius: 0;
	padding: 0.85rem 1.35rem;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	text-transform: uppercase;
	transition: transform 180ms ease, background-color 180ms ease, color 180ms ease;
}

.hero-carousel__content .wp-element-button:hover,
.cta-consult .wp-element-button:hover {
	transform: translateY(-2px);
}

.section {
	margin-block-start: 0;
	padding-block: clamp(2rem, 4vw, 3.25rem);
}

.section > .wp-block-group,
.section > .wp-block-columns {
	position: relative;
}

.section h2 {
	max-width: 18ch;
	font-size: clamp(2rem, 4vw, 3.5rem);
	letter-spacing: -0.015em;
	text-wrap: balance;
}

/* Homepage intro statement: a full sentence, not a short section title —
   the shared .section h2 sizing (meant for 2-4 word headings) reads as
   oversized here, so it gets its own smaller scale and no max-width clamp. */
.section h2.intro-statement {
	max-width: none;
	font-size: clamp(1.35rem, 2.4vw, 2rem);
	letter-spacing: -0.005em;
}

.section h2.has-text-align-center {
	margin-inline: auto;
}

.section-navy:not(.cta-section) > h2 {
	color: var(--wp--preset--color--accent) !important;
	margin-inline: auto;
	text-align: center;
}

.section-navy:not(.cta-section) > p {
	margin-inline: auto;
	max-width: 72ch;
	text-align: center;
}

.section-lead,
.section p {
	text-wrap: pretty;
}

.section-navy {
	background: linear-gradient(135deg, var(--wp--preset--color--contrast) 0%, #122b56 100%);
}

.section-sand {
	background: linear-gradient(135deg, var(--wp--preset--color--accent-2) 0%, #f5f1e8 100%);
}

.is-style-card {
	border: 1px solid var(--cabinet-border);
	border-top: 3px solid var(--wp--preset--color--accent);
	border-radius: 0;
	box-shadow: var(--cabinet-shadow);
	padding: clamp(1.5rem, 3vw, 2.25rem);
	height: 100%;
	display: flex;
	flex-direction: column;
	margin: 0;
	position: static;
	transform: none;
	transition: transform 180ms ease, box-shadow 180ms ease;
}

.is-style-card:hover {
	transform: translateY(-5px);
	box-shadow: 0 24px 50px rgba(11, 27, 58, 0.18);
}

.is-style-card h3 {
	font-size: 1.2rem;
	line-height: 1.25;
}

.check-list li::before {
	width: 0.7rem;
	height: 0.7rem;
	box-shadow: 0 0 0 4px rgba(242, 181, 37, 0.16);
}

.site-footer {
	border-top: 4px solid var(--wp--preset--color--accent);
	padding-block: clamp(3.5rem, 7vw, 6rem) 2rem;
}

.site-footer .footer-col:first-child {
	max-width: 29ch;
}

.site-footer h3 {
	font-size: 0.78rem;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--accent-2);
}

@media (max-width: 900px) and (min-width: 601px) {
	.site-header__title a,
	.site-header__title {
		font-size: 1rem;
	}

	.site-header__nav .wp-block-navigation__container {
		column-gap: 0.65rem;
	}

	.site-header__nav a.wp-block-navigation-item__content {
		font-size: 0.75rem;
	}
}

@media (max-width: 600px) {
	:root {
		--site-header-height: 96px;
	}

	.site-header {
		padding-block: 0.65rem;
	}

	.site-header__banner,
	.site-header__banner-track {
		--banner-tile-width: 47.5px;
		height: 10px;
		background-size: var(--banner-tile-width) 10px;
	}

	.hero-carousel {
		min-height: 680px;
	}

	/* Homepage hero: on phones it was taking the full viewport height,
	   pushing the intro heading + image below the fold entirely. Cap it to
	   about half the screen so that next section peeks into view. */
	.hero-cover.wp-block-cover {
		min-height: 34vh !important;
	}

	.hero-cover .wp-block-cover__inner-container {
		row-gap: 0.75rem;
	}

	.hero-cover .hero-title {
		font-size: clamp(1.25rem, 5.2vw, 1.75rem) !important;
		transform: none;
	}

	.hero-cover .wp-block-buttons {
		row-gap: 0.4rem;
	}

	.hero-cover .wp-block-button.is-style-outline .wp-block-button__link {
		padding: 0.5rem 0.75rem;
		font-size: 0.7rem;
	}

	/* Single column on mobile: heading full-width on top, photo below —
	   this is core columns' default stacking behavior, just with the
	   heading sized to read comfortably at full width. */
	.intro-columns > .wp-block-column {
		flex-basis: 100% !important;
	}

	.intro-columns .intro-statement {
		font-size: 1.5rem !important;
		line-height: 1.3;
	}

	.hero-cover .hero-lead {
		font-size: 0.9rem;
	}

	.hero-carousel::after {
		background: linear-gradient(180deg, rgba(5, 16, 36, 0.7), rgba(5, 16, 36, 0.88));
	}

	.hero-carousel__content h1 {
		font-size: clamp(2rem, 9vw, 3.2rem) !important;
		max-width: none !important;
		width: auto;
		white-space: nowrap;
	}

	.publication-list {
		grid-template-columns: 1fr;
	}

	.publication-list .publication-item h3 {
		font-size: 1.35rem !important;
	}

	.section {
		padding-block: 2.25rem;
	}
}

@media (min-width: 601px) and (max-width: 1000px) {
	.publication-list {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

/* === compact reference-inspired footer === */
.site-footer {
	border-top: 4px solid var(--wp--preset--color--accent);
	padding-block: 2.5rem 0;
}

.site-footer__main {
	align-items: start;
	column-gap: clamp(1.5rem, 3vw, 3rem);
	display: grid !important;
	grid-template-columns: minmax(190px, 1.15fr) minmax(250px, 1.5fr) minmax(190px, 1.1fr) minmax(190px, 1fr);
	row-gap: 1.5rem;
}

.site-footer .footer-col {
	min-width: 0;
	row-gap: 0.4rem;
}

.site-footer .footer-col:first-child,
.site-footer .footer-tagline {
	max-width: 34ch;
}

.site-footer h3 {
	color: var(--wp--preset--color--accent-2);
	font-size: 0.78rem;
	letter-spacing: 0;
	margin-bottom: 0.7rem;
	text-transform: uppercase;
}

.site-footer .footer-col p {
	margin-block: 0.35rem;
}

.footer-col .footer-nav .wp-block-navigation__container {
	align-items: start;
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	column-gap: 1rem;
	row-gap: 0.25rem;
}

.footer-col .footer-services-nav .wp-block-navigation__container {
	grid-template-columns: 1fr;
}

.site-footer .footer-contact .footer-social-label {
	color: var(--wp--preset--color--accent-2);
	font-size: 0.78rem;
	font-weight: 700;
	margin-top: 0.8rem;
}

.site-footer .footer-bottom {
	background-color: rgba(0, 0, 0, 0.16);
	border-top: 1px solid rgba(247, 244, 238, 0.18);
	margin-top: 1.75rem;
	padding: 0.7rem 1.5rem;
}

.footer-bottom__inner {
	align-items: center;
}

.footer-bottom__inner > * {
	margin-block: 0;
}

@media (max-width: 900px) {
	.site-footer__main {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media (max-width: 600px) {
	.site-footer__main {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		row-gap: 1rem;
	}

	.site-footer__main > .footer-col:first-child,
	.site-footer__main > .footer-contact {
		grid-column: 1 / -1;
	}

	.site-footer__main .footer-col .footer-nav .wp-block-navigation__container {
		grid-template-columns: repeat(2, minmax(0, 1fr));
		column-gap: 0.5rem;
		row-gap: 0.15rem;
	}

	.site-footer .footer-nav a.wp-block-navigation-item__content {
		font-size: 0.78rem;
		line-height: 1.3;
	}

	.site-footer .footer-col p {
		margin-block: 0.2rem;
	}

	.site-footer .footer-bottom {
		margin-top: 1.25rem;
		padding: 0.65rem 1rem;
	}

	.site-footer .footer-bottom .footer-bottom__inner {
		align-items: flex-start;
		gap: 0.35rem 1rem !important;
	}

	.site-footer {
		padding-block: 1.5rem 0;
	}

	.site-footer .footer-brand {
		margin-bottom: 0.5rem;
	}

	.site-footer .footer-brand .wp-block-site-logo {
		flex-basis: 36px;
	}

	.site-footer .footer-brand .wp-block-site-logo img {
		height: 36px;
		width: 36px;
	}

	.site-footer .footer-brand .wp-block-site-title {
		font-size: 0.82rem;
	}

	.site-footer .footer-tagline {
		font-size: 0.78rem;
		margin-block: 0.3rem 0;
	}

	.site-footer h3 {
		font-size: 0.7rem;
		margin-bottom: 0.4rem;
	}

	.site-footer .footer-contact .footer-social-label {
		font-size: 0.7rem;
		margin-top: 0.5rem;
	}
}

.site-footer .footer-brand {
	align-items: center;
	column-gap: 0.75rem;
	margin-bottom: 0.85rem;
}

.site-footer .footer-brand .wp-block-site-logo {
	flex: 0 0 48px;
}

.site-footer .footer-brand .wp-block-site-logo img {
	display: block;
	height: 48px;
	object-fit: contain;
	width: 48px;
}

.site-footer .footer-brand .wp-block-site-title {
	color: var(--wp--preset--color--accent) !important;
	font-size: 0.95rem;
	line-height: 1.2;
	margin: 0;
	text-transform: uppercase;
}

.site-footer .i18n-sitemap,
.site-footer .i18n-services,
.site-footer .i18n-coords,
.site-footer .footer-brand .wp-block-site-title {
	color: var(--wp--preset--color--accent) !important;
}

/* === contact page === */
.contact-columns.wp-block-columns {
	align-items: stretch !important;
}

.contact-columns .wp-block-column {
	display: flex !important;
	flex-direction: column;
}

.contact-side {
	height: 100%;
}

.contact-side .wp-block-spacer {
	flex: 1 1 auto;
	height: auto !important;
	min-height: 0.9rem;
}

.contact-hero {
	padding-block: clamp(1.75rem, 3.5vw, 2.25rem) clamp(1.5rem, 3vw, 1.9rem) !important;
	row-gap: 0.65rem !important;
}

.contact-hero .hero-lead {
	max-width: 52ch;
}

.trust-row {
	display: flex;
	flex-wrap: wrap;
	gap: 0.6rem;
	margin-top: 0.75rem;
}

.trust-pill {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	padding: 0.45rem 0.9rem;
	border-radius: 100px;
	background-color: var(--wp--preset--color--contrast);
	border: 1px solid var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
	font-size: 0.82rem;
	font-weight: 600;
	letter-spacing: 0.01em;
}

.trust-pill::before {
	content: "";
	width: 0.45rem;
	height: 0.45rem;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	flex: none;
}

.contact-form-card .form-sub {
	color: var(--wp--preset--color--contrast-2);
	font-size: 0.92rem;
	margin-top: -0.4rem;
}

.contact-form-card .privacy-note {
	font-size: 0.78rem;
	color: var(--wp--preset--color--contrast-2);
	margin-top: 0.4rem;
}

.contact-form-card .wp-block-jetpack-contact-form {
	row-gap: 0.75rem !important;
}

/* side-column cards read tall mostly from the default .is-style-card padding —
   tighten just the contact page's cards rather than the shared card style */
.contact-side .is-style-card {
	padding: 1.1rem 1.4rem;
	row-gap: 0.35rem;
}

.response-card {
	background-color: var(--wp--preset--color--accent-2);
}

.response-card h3 {
	margin-bottom: 0.25rem;
}

.response-card p {
	margin: 0;
	color: var(--wp--preset--color--contrast-2);
	font-size: 0.9rem;
}

.info-list {
	list-style: none;
	padding: 0;
	margin: 0;
	display: grid;
	row-gap: 0.55rem;
}

.info-list li {
	display: flex;
	gap: 0.75rem;
	align-items: flex-start;
	font-size: 0.92rem;
}

.info-list svg {
	flex: none;
	width: 1.1rem;
	height: 1.1rem;
	margin-top: 0.15rem;
	color: var(--accent-ink);
}

.info-list a {
	color: var(--wp--preset--color--contrast);
	text-decoration: none;
	border-bottom: 1px solid var(--wp--preset--color--accent-2);
}

.info-list a:hover {
	color: var(--accent-ink);
	border-color: var(--accent-ink);
}

.map-card {
	border-radius: 2px;
	overflow: hidden;
	width: 100%;
	height: 0;
	padding-top: 37.5%;
	position: relative;
	background-color: var(--wp--preset--color--contrast);
}

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

.map-card .map-label {
	position: absolute;
	left: 1.1rem;
	bottom: 1rem;
	color: var(--wp--preset--color--base);
	font-size: 0.8rem;
	font-weight: 600;
	letter-spacing: 0.02em;
}

/* === Chat widget (rule-based FAQ assistant, no API) === */
.cabinet-chat {
	bottom: 1.5rem;
	right: 1.5rem;
	position: fixed;
	z-index: 1200;
}

.cabinet-chat__toggle {
	align-items: center;
	background: var(--wp--preset--color--contrast);
	border: none;
	border-radius: 50%;
	box-shadow: 0 10px 28px rgba(11, 27, 58, 0.3);
	color: var(--wp--preset--color--accent);
	cursor: pointer;
	display: flex;
	height: 3.5rem;
	justify-content: center;
	width: 3.5rem;
}

.cabinet-chat__toggle svg {
	height: 1.5rem;
	width: 1.5rem;
}

.cabinet-chat__icon-close {
	display: none;
}

.cabinet-chat.is-open .cabinet-chat__icon-chat {
	display: none;
}

.cabinet-chat.is-open .cabinet-chat__icon-close {
	display: block;
}

.cabinet-chat__panel {
	background: var(--wp--preset--color--base);
	border-radius: 12px;
	bottom: 4.25rem;
	box-shadow: 0 20px 48px rgba(11, 27, 58, 0.32);
	display: flex;
	flex-direction: column;
	height: min(26rem, calc(100vh - 7rem));
	overflow: hidden;
	position: absolute;
	right: 0;
	width: min(22rem, calc(100vw - 2rem));
}

/* The [hidden] attribute and this class's own `display: flex` are the same
   specificity (one attribute selector, one class selector) — without this,
   the later-loaded `display: flex` above wins the cascade regardless of
   whether the element is actually hidden, so the panel rendered open by
   default instead of needing a click to appear. */
.cabinet-chat__panel[hidden] {
	display: none !important;
}

.cabinet-chat__header {
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--accent);
	display: flex;
	flex-direction: column;
	gap: 0.15rem;
	padding: 0.85rem 1.1rem;
}

.cabinet-chat__header-title {
	font-weight: 700;
}

.cabinet-chat__header-sub {
	color: var(--wp--preset--color--accent-2);
	font-size: 0.72rem;
	font-weight: 500;
}

.cabinet-chat__messages {
	display: flex;
	flex: 1 1 auto;
	flex-direction: column;
	gap: 0.6rem;
	overflow-y: auto;
	padding: 1rem;
}

.cabinet-chat__bubble {
	border-radius: 10px;
	font-size: 0.88rem;
	line-height: 1.45;
	max-width: 88%;
	padding: 0.6rem 0.8rem;
}

.cabinet-chat__bubble a {
	color: inherit;
	text-decoration: underline;
}

.cabinet-chat__bubble--bot {
	align-self: flex-start;
	background: var(--wp--preset--color--accent-2);
	color: var(--wp--preset--color--contrast);
}

.cabinet-chat__bubble--user {
	align-self: flex-end;
	background: var(--wp--preset--color--contrast);
	color: var(--wp--preset--color--base);
}

.cabinet-chat__form {
	border-top: 1px solid var(--wp--preset--color--accent-2);
	display: flex;
	gap: 0.5rem;
	padding: 0.75rem;
}

.cabinet-chat__input {
	border: 1px solid var(--wp--preset--color--accent-2);
	border-radius: 8px;
	flex: 1 1 auto;
	font-size: 0.88rem;
	padding: 0.5rem 0.7rem;
}

.cabinet-chat__send {
	align-items: center;
	background: var(--wp--preset--color--contrast);
	border: none;
	border-radius: 8px;
	color: var(--wp--preset--color--accent);
	cursor: pointer;
	display: flex;
	flex: 0 0 auto;
	justify-content: center;
	width: 2.5rem;
}

.cabinet-chat__send svg {
	height: 1.1rem;
	width: 1.1rem;
}

@media (max-width: 480px) {
	.cabinet-chat {
		bottom: 1rem;
		right: 1rem;
	}

	.cabinet-chat__panel {
		height: min(26rem, calc(100vh - 6rem));
		width: calc(100vw - 2rem);
	}
}

/* === CTA popup (delayed, dismissible, bottom-left so it never collides
   with the chat widget at bottom-right) === */
.cabinet-cta-popup {
	background: var(--wp--preset--color--contrast);
	border-radius: 12px;
	bottom: 1.5rem;
	box-shadow: 0 20px 48px rgba(11, 27, 58, 0.32);
	left: 1.5rem;
	opacity: 0;
	padding: 1.25rem 1.4rem 1.4rem;
	position: fixed;
	transform: translateY(1rem);
	transition: opacity 280ms ease, transform 280ms ease;
	width: min(19rem, calc(100vw - 2rem));
	z-index: 1190;
}

.cabinet-cta-popup.is-visible {
	opacity: 1;
	transform: translateY(0);
}

.cabinet-cta-popup__close {
	background: none;
	border: none;
	color: var(--wp--preset--color--accent-2);
	cursor: pointer;
	padding: 0.25rem;
	position: absolute;
	right: 0.6rem;
	top: 0.6rem;
}

.cabinet-cta-popup__close svg {
	display: block;
	height: 1rem;
	width: 1rem;
}

.cabinet-cta-popup__title {
	color: var(--wp--preset--color--accent);
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.15rem;
	font-weight: 700;
	margin: 0 1.5rem 0.4rem 0;
}

.cabinet-cta-popup__body {
	color: var(--wp--preset--color--base);
	font-size: 0.85rem;
	line-height: 1.45;
	margin: 0 0 1rem;
}

.cabinet-cta-popup__button {
	background: var(--wp--preset--color--accent);
	border-radius: 6px;
	color: var(--wp--preset--color--contrast);
	display: inline-block;
	font-size: 0.85rem;
	font-weight: 700;
	padding: 0.6rem 1.1rem;
	text-decoration: none;
}

@media (max-width: 480px) {
	.cabinet-cta-popup {
		bottom: 1rem;
		left: 1rem;
	}
}

/* === Scroll-reveal === */
.reveal-on-scroll {
	opacity: 0;
	transform: translateY(18px);
	transition: opacity 560ms ease, transform 560ms ease;
}

.reveal-on-scroll.is-revealed {
	opacity: 1;
	transform: translateY(0);
}

@media (prefers-reduced-motion: reduce) {
	.reveal-on-scroll {
		opacity: 1;
		transform: none;
		transition: none;
	}
}

/* === appel à partenariat (/partenariat/, /en/partnership/) === */
.partner-hero {
	row-gap: 0.85rem !important;
	text-align: center;
}

.partner-hero > * {
	margin-inline: auto !important;
}

.partner-hero h1 {
	max-width: 20ch;
	text-align: center;
	text-wrap: balance;
}

.partner-hero .hero-lead {
	max-width: 68ch;
}

.partner-hero .trust-row {
	justify-content: center;
}

.partner-hero .partner-hero__action {
	display: flex;
	justify-content: center;
}

.partner-kicker {
	display: block;
	width: fit-content;
	margin-block: 0;
	padding: 0.35rem 0.95rem;
	border: 1.5px solid var(--wp--preset--color--accent);
	border-radius: 100px;
	color: var(--wp--preset--color--accent);
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.partner-hero__action {
	margin-top: 1rem;
}

.partner-grid.wp-block-columns {
	align-items: stretch !important;
	gap: 1.5rem;
	margin-top: 1.5rem;
}

.partner-grid .wp-block-column {
	display: flex;
}

.partner-card {
	width: 100%;
	height: 100%;
}

.partner-card h3 {
	margin-bottom: 1rem;
}

.partner-card .check-list {
	row-gap: 0.7rem;
	font-size: 0.95rem;
}

.partner-countries {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 0.55rem;
	margin-top: 2.25rem !important;
}

.partner-countries__label {
	margin-right: 0.4rem;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
	color: var(--wp--preset--color--contrast-2);
}

.partner-country {
	padding: 0.4rem 0.95rem;
	border: 1.5px solid var(--wp--preset--color--contrast);
	border-radius: 100px;
	font-size: 0.9rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

.partner-country--pilot {
	background-color: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--accent);
}

.partner-steps.wp-block-columns {
	gap: 2rem;
	margin-top: 1.5rem;
}

.partner-open-note {
	max-width: 62ch;
	margin: 2rem auto 0 !important;
	font-style: italic;
	color: var(--wp--preset--color--contrast-2);
}

.partner-form-section {
	scroll-margin-top: 90px;
}

.partner-form-card {
	max-width: 780px !important;
	margin-inline: auto !important;
	padding: clamp(1.5rem, 4vw, 2.75rem) !important;
}

.partner-form-card > * {
	max-width: none !important;
}

.section .partner-form-title {
	max-width: none;
	font-size: clamp(1.75rem, 3vw, 2.4rem);
	margin-bottom: 0.25rem;
}

.partner-form.wp-block-jetpack-contact-form {
	display: grid;
	row-gap: 1.1rem !important;
	width: 100%;
	max-width: none;
	margin: 0;
}

.partner-form input[type="number"],
.partner-form input[type="url"] {
	border: 1px solid var(--wp--preset--color--contrast-2);
	border-radius: 2px;
	padding: 0.6rem 0.75rem;
	width: 100%;
	font-family: var(--wp--preset--font-family--body);
}

.partner-form select {
	background-color: #fff;
	min-height: 2.75rem;
}

.partner-form input,
.partner-form select,
.partner-form textarea {
	font-size: 1rem;
	box-sizing: border-box;
}

.partner-fieldset {
	display: grid;
	row-gap: 1rem;
	margin: 0;
	padding: 0 0 1.25rem;
	border: 0;
	border-bottom: 1px solid var(--wp--preset--color--accent-2);
	min-width: 0;
}

.partner-fieldset legend {
	padding: 0;
	margin-bottom: 0.9rem;
	font-family: var(--wp--preset--font-family--heading);
	font-size: 1.2rem;
	font-weight: 600;
	color: var(--wp--preset--color--contrast);
}

.partner-row {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 1rem;
}

.partner-label {
	display: inline-block;
	margin-bottom: 0.5rem;
	font-size: 0.9rem;
	font-weight: 600;
}

.partner-req {
	margin-left: 0.2rem;
	color: var(--wp--preset--color--accent-3);
}

.partner-checks {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 0.45rem 1rem;
}

.partner-form label.partner-check {
	display: flex;
	align-items: flex-start;
	gap: 0.55rem;
	margin: 0;
	font-size: 0.92rem;
	font-weight: 400;
	line-height: 1.4;
	cursor: pointer;
}

.partner-check input {
	flex: none;
	width: 1.05rem;
	height: 1.05rem;
	margin: 0.15rem 0 0;
	accent-color: var(--wp--preset--color--contrast);
}

.partner-form label.partner-consent {
	font-size: 0.9rem;
}

.partner-help {
	display: block;
	margin-top: 0.35rem;
	font-size: 0.8rem;
	color: var(--wp--preset--color--contrast-2);
}

.partner-privacy {
	margin: 0;
	font-size: 0.78rem;
	color: var(--wp--preset--color--contrast-2);
}

.partner-notice {
	margin-bottom: 0;
	font-weight: 500;
	line-height: 1.5;
}

@media (max-width: 640px) {
	.partner-row,
	.partner-checks {
		grid-template-columns: 1fr;
	}

	.partner-countries {
		justify-content: flex-start;
	}
}

/* home page call-for-partners band */
.partner-band {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--contrast);
	padding: clamp(2rem, 4.5vw, 3rem) var(--wp--style--root--padding-right, 1.5rem);
	margin-block: 0 !important;
	max-width: none !important;
}

.partner-band__inner {
	max-width: 1140px;
	margin-inline: auto;
	display: grid;
	grid-template-columns: minmax(0, 1fr) auto;
	grid-template-areas:
		"kicker action"
		"title action"
		"text action";
	column-gap: 2.5rem;
	row-gap: 0.4rem;
	align-items: center;
}

.partner-band__kicker {
	grid-area: kicker;
	margin: 0;
	font-size: 0.8rem;
	font-weight: 700;
	letter-spacing: 0.12em;
	text-transform: uppercase;
}

.partner-band .partner-band__title {
	grid-area: title;
	margin: 0;
	max-width: 28ch;
	font-size: clamp(1.5rem, 2.8vw, 2.2rem);
	line-height: 1.15;
	color: var(--wp--preset--color--contrast);
	text-wrap: balance;
}

.partner-band__text {
	grid-area: text;
	margin: 0.3rem 0 0;
	max-width: 70ch;
	font-size: 1rem;
}

.partner-band__action {
	grid-area: action;
}

.partner-band .partner-band__action .wp-block-button__link {
	background-color: var(--wp--preset--color--contrast) !important;
	color: var(--wp--preset--color--accent) !important;
	white-space: nowrap;
}

@media (max-width: 780px) {
	.partner-band__inner {
		grid-template-columns: 1fr;
		grid-template-areas: "kicker" "title" "text" "action";
	}

	.partner-band__action {
		margin-top: 1rem;
	}
}
