/* =========================================================
   Costruzioni Dallapè — theme.css
   Global styles + custom-block styles. Design tokens come
   from theme.json (--wp--preset--color--*, --wp--preset--font-*).
   ========================================================= */

/* --- Layout constants (not exposed via theme.json) --- */
:root {
	--cdlp-header-height: 120px;
	--cdlp-radius-pill: 999px;
	--cdlp-radius-md: 1rem;
	--cdlp-radius-hero: 40px;

	/* Page-edge gutter — the inline inset between content and the viewport edge
	   once the centred column runs flush to the screen, i.e. what you actually
	   see as the side margin on a phone. Single source of truth: theme.json
	   styles.spacing.padding references this token, so core emits it as
	   --wp--style--root--padding-* and applies it once via .has-global-padding.
	   Constrained sections therefore need NO gutter rule of their own.

	   Only two cases still set padding-inline themselves:
	     1. full-bleed sections (alignfull / 100vw / margin:calc(50% - 50vw)) —
	        useRootPaddingAwareAlignments pulls them back out of the root
	        padding by design, so their __inner wrapper re-applies it;
	     2. carousel tracks, which need the gutter as scroll padding.
	   Retune mobile margins here; do not add per-section gutters. Component
	   padding (card interiors, form fields, navbar pill) is NOT tied to it. */
	--cdlp-gutter: 1rem;

	/* Intro-block vertical rhythm — the H1 band that opens an internal page.
	   Shared by the .cdlp-page-intro pattern (Certificazioni, Progetti, …) and
	   by the certification detail hero (.cdlp-certif-hero), so every internal
	   page opens on identical spacing instead of drifting per template.

	   Convention that goes with it: the section following an intro contributes
	   NO top padding of its own — the gap under the title is this token alone.
	   Reference: /progetti/ (tight top, moderate bottom). */
	--cdlp-intro-pad-top: clamp(1.5rem, 3.013vw + 0.794rem, 2.24rem);
	--cdlp-intro-pad-bottom: clamp(2.5rem, 9.364vw + 0.306rem, 4.8rem);
}

/* On phones the header already leaves plenty of air, so the intro's top
   padding drops to roughly half the desktop value and the title sits close
   under the header. */
@media (max-width: 640px) {
	:root {
		--cdlp-intro-pad-top: clamp(0.75rem, 1.5vw + 0.4rem, 1.1rem);
	}
}

/* Sotto gli 860px la pill si accorcia (80px → 64px, vedi .cdlp-navbar nel
   blocco mobile), quindi i 120px desktop lasciano ~37px di vuoto morto sotto
   l'header. Qui l'altezza diventa fluida: 88px a 375px — il bordo inferiore
   della pill è a ~83px, restano pochi px d'aria — fino a 100px a 860px, dove
   subentra il valore desktop. Riscalando il token si allineano insieme il
   padding-top del main, lo scroll-margin delle ancore e la colonna sticky
   della scheda certificazione. */
@media (max-width: 860px) {
	:root {
		--cdlp-header-height: clamp(5.5rem, 2.474vw + 4.92rem, 6.25rem); /* 88 → 100px */
	}
}

/* Fluid section spacing.
   theme.json can make font sizes fluid but not spacing, so the two large steps
   came out as fixed rem — 6rem is 96px on a 1440px desktop and still 96px on a
   390px phone, where it eats a quarter of the viewport. Redeclaring the preset
   custom properties here rescales every section that uses them, from 375px up
   to 1440px. The small steps (xs/sm/md) are component-level padding and gaps
   and stay fixed on purpose.
   NB: these must come after core's global-styles stylesheet, which declares the
   same properties on :root at equal specificity — cdlp-theme is enqueued later,
   so source order decides it. */
:root {
	--wp--preset--spacing--lg: clamp(2.5rem, 2.254vw + 1.972rem, 4rem); /* 40 → 64px */
	--wp--preset--spacing--xl: clamp(3rem, 4.507vw + 1.944rem, 6rem);   /* 48 → 96px */
}

/* Full-bleed sections break out with `calc(50% - 50vw)` / `width: 100vw`, and
   100vw counts the classic scrollbar that clientWidth excludes. Each one
   therefore overhangs by half the scrollbar on both sides, which is enough to
   give the document ~7px of horizontal scroll — and once the page is nudged
   right, the gutter on that side looks like it has vanished. Clipping the
   overhang here fixes every such section at once.
   `clip`, not `hidden`: hidden would make <html> a scroll container, breaking
   position: sticky and handing Lenis a second scrollport. clip on one axis
   with the other left visible is explicitly allowed and creates no scrollport. */
html { overflow-x: clip; }

/* Native smooth scroll is the fallback (e.g. prefers-reduced-motion, where
   Lenis stays off). When Lenis is active it adds .lenis to <html>; its own JS
   drives scrolling, so native scroll-behavior must yield to it. */
html { scroll-behavior: smooth; }
html.lenis,
html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.lenis.lenis-smooth iframe { pointer-events: none; }

body {
	-webkit-font-smoothing: antialiased;
}

/* Site-wide minimal fade-in for top-level content blocks. The hidden initial
   state is gated on html.cdlp-anim, added pre-paint by the head script only
   when motion is allowed and IntersectionObserver exists — so no-JS and
   reduced-motion visitors always see fully-rendered content. reveal.js adds
   .is-visible as each block scrolls into view. */
html.cdlp-anim .wp-block-post-content > * {
	opacity: 0;
	transition: opacity 0.7s ease;
}
html.cdlp-anim .wp-block-post-content > *.is-visible {
	opacity: 1;
}
/* The first block is already in view on arrival, so it has no "scrolls into
   view" moment to animate. Fading it in also gated LCP behind reveal.js: an
   opacity:0 element is not an LCP candidate, so the hero could not count until
   the script had loaded, run and fired its observer (~2.4-5.0s of LCP render
   delay). Paint it immediately; the fade still applies to everything below. */
html.cdlp-anim .wp-block-post-content > *:first-child {
	opacity: 1;
}

/* Buttons: shared button preset lands via theme.json; add height + hover on the
   "accent" style (default). */
.wp-block-button__link {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 0.5rem;
	height: 60px;
	white-space: nowrap;
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}

/* Outline button style variant */
.wp-block-button.is-style-outline .wp-block-button__link {
	background-color: transparent !important;
	color: var(--wp--preset--color--accent);
	border: 2px solid var(--wp--preset--color--accent);
}
.wp-block-button.is-style-outline .wp-block-button__link:hover {
	background-color: var(--wp--preset--color--accent) !important;
	color: var(--wp--preset--color--white) !important;
}

/* Core File block download button: reuses the theme button styles (background,
   radius, padding via .wp-element-button) but misses the sizing of
   .wp-block-button__link and inherits the content link colour — which rendered
   the label terracotta-on-terracotta with no height. Restore both here. */
.wp-block-file .wp-block-file__button {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 60px;
	color: var(--wp--preset--color--white);
	text-decoration: none;
}
.wp-block-file .wp-block-file__button:hover,
.wp-block-file .wp-block-file__button:focus {
	color: var(--wp--preset--color--white);
}

/* Eyebrow label helper (used above section headings) */
.cdlp-eyebrow {
	display: block;
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: 0.875rem;
	letter-spacing: 0.06em;
	text-transform: uppercase;
	color: var(--wp--preset--color--eyebrow);
	margin-bottom: 0.5rem;
}

/* Section lead paragraph */
.cdlp-lead {
	color: var(--wp--preset--color--muted);
	font-size: 1.5rem;
	line-height: 1.333;
	max-width: 66%;
}

/* =========================================================
   Header (rendered via /parts/header.html)
   ========================================================= */
.wp-site-blocks > header.wp-block-template-part {
	position: fixed;
	top: 0;
	left: 0;
	right: 0;
	z-index: 100;
	padding: 1.2rem var(--cdlp-gutter);
	transition: transform 0.35s ease;
	/* NB: no `will-change: transform` here. It would promote the header to a
	   containing block for absolutely/fixed-positioned descendants, which is
	   exactly what the mobile menu panel needs to escape. */
}

/* Auto-hide: slid out of view while scrolling down (toggled by header.js) */
.wp-site-blocks > header.wp-block-template-part.is-hidden {
	transform: translateY(-130%);
}

@media (prefers-reduced-motion: reduce) {
	.wp-site-blocks > header.wp-block-template-part {
		transition: none;
	}
}

.cdlp-navbar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 2rem;
	height: 80px;
	/* Anchor for the mobile menu panel, which drops out of the pill. */
	position: relative;
	/* Constrain the floating pill to the content width (like the reference
	   .site-header .container) instead of stretching to the wide alignment. */
	max-width: var(--wp--style--global--content-size, 1280px);
	margin-inline: auto;
	background-color: var(--wp--preset--color--white);
	border-radius: var(--cdlp-radius-pill);
	padding: 0 0.5rem 0 1.75rem;
	box-shadow: 0 6px 28px rgba(0, 25, 64, 0.07);
}
.cdlp-navbar .wp-block-site-logo img {
	height: 56px;
	width: auto;
}
.cdlp-navbar .wp-block-navigation {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	color: var(--wp--preset--color--muted);
}
.cdlp-navbar .wp-block-navigation a:hover,
.cdlp-navbar .wp-block-navigation .current-menu-item a,
.cdlp-navbar .wp-block-navigation a[aria-current="page"] {
	color: var(--wp--preset--color--primary);
}

/* Mobile-only Contatti item, appended to the menu by inc/nav-mobile-cta.php.
   On desktop the navbar button covers this, so the item stays hidden.
   Needs the full selector to outrank core's .wp-block-navigation-item rule. */
.cdlp-navbar nav.wp-block-navigation .cdlp-nav-cta {
	display: none;
}

/* ---- Burger toggle (markup in parts/header.html, behaviour in nav-toggle.js)
   Three bars that fold into an X while the panel is open; the button itself
   stays in place in the pill, so there is no separate close control. */
.cdlp-nav-toggle {
	display: none;
	flex-direction: column;
	justify-content: center;
	gap: 5px;
	width: 44px;
	height: 44px;
	padding: 0;
	border: 0;
	background: none;
	border-radius: 50%;
	cursor: pointer;
	color: inherit;
}
.cdlp-nav-toggle span {
	display: block;
	width: 22px;
	height: 2px;
	margin-inline: auto;
	background-color: var(--wp--preset--color--primary);
	transition: transform 0.25s ease, opacity 0.25s ease;
}
.cdlp-nav-toggle[aria-expanded="true"] span:nth-child(1) {
	transform: translateY(7px) rotate(45deg);
}
.cdlp-nav-toggle[aria-expanded="true"] span:nth-child(2) {
	opacity: 0;
}
.cdlp-nav-toggle[aria-expanded="true"] span:nth-child(3) {
	transform: translateY(-7px) rotate(-45deg);
}
@media (prefers-reduced-motion: reduce) {
	.cdlp-nav-toggle span {
		transition: none;
	}
}

/* ---- Mobile: logo + burger in the pill, menu in a panel below it ---- */
@media (max-width: 860px) {
	.cdlp-navbar {
		height: 64px;
		gap: 1rem;
		padding: 0 0.5rem 0 1rem;
	}
	.cdlp-navbar .wp-block-site-logo img {
		height: 36px;
	}
	.cdlp-nav-toggle {
		display: flex;
	}
	.cdlp-navbar > .wp-block-buttons {
		display: none;
	}

	/* The menu drops out of the pill as its own card. Hidden until
	   nav-toggle.js puts .is-nav-open on the navbar.
	   NB: scoped to `nav.` — core also puts .wp-block-navigation on the <ul>,
	   which would otherwise pick up the panel positioning a second time. */
	.cdlp-navbar nav.wp-block-navigation {
		display: none;
		position: absolute;
		top: calc(100% + 0.75rem);
		left: 0;
		right: 0;
		z-index: 10;
		background-color: var(--wp--preset--color--white);
		border-radius: var(--cdlp-radius-md);
		padding: 1.25rem;
		box-shadow: 0 12px 28px rgba(0, 25, 64, 0.18);
	}
	.cdlp-navbar.is-nav-open nav.wp-block-navigation {
		display: block;
	}
	/* Beat core's generated layout classes (single class, lower specificity). */
	.cdlp-navbar nav.wp-block-navigation .wp-block-navigation__container {
		flex-direction: column;
		align-items: center;
		justify-content: flex-start;
		gap: 1.5rem;
	}
	.cdlp-navbar nav.wp-block-navigation .wp-block-navigation-item {
		width: 100%;
		justify-content: center;
	}
	.cdlp-navbar nav.wp-block-navigation .wp-block-navigation-item__content {
		font-size: 1.125rem;
		text-align: center;
	}

	/* Contatti keeps its button look inside the panel, since the navbar
	   button it stands in for is hidden at this width. */
	.cdlp-navbar nav.wp-block-navigation .cdlp-nav-cta {
		display: flex;
		margin-top: 0.5rem;
	}
	.cdlp-navbar nav.wp-block-navigation .cdlp-nav-cta a {
		display: block;
		/* The item itself is already full width; core renders it as a flex
		   container, so the link has to grow to fill it. */
		flex: 1;
		padding: 0.75rem 1.5rem;
		border-radius: var(--cdlp-radius-pill);
		background-color: var(--wp--preset--color--accent);
		color: var(--wp--preset--color--white);
		text-align: center;
	}
	.cdlp-navbar nav.wp-block-navigation .cdlp-nav-cta a:hover,
	.cdlp-navbar nav.wp-block-navigation .cdlp-nav-cta a[aria-current="page"] {
		background-color: var(--wp--preset--color--accent-dark);
		color: var(--wp--preset--color--white);
	}
}

/* Header offsets main so fixed pill doesn't overlap non-hero content */
.wp-site-blocks main {
	padding-top: var(--cdlp-header-height);
}

/* Homepage: the hero runs full-bleed to the top, under the floating header.
   Cancel main's header-clearance spacing here; the hero supplies its own
   top padding so its content still clears the floating menu. */
.home .wp-site-blocks main {
	padding-top: 0;
	margin-top: 0;
}

/* =========================================================
   Hero (custom block: costruzioni-dallape/hero)
   ========================================================= */
.cdlp-hero {
	position: relative;
	/* border-box so min-height:100vh includes the header-clearance padding,
	   making the hero exactly one viewport tall. */
	box-sizing: border-box;
	/* Break out of the constrained page layout: the hero runs the full
	   viewport width leaving a left/right margin (3rem each side), no cap. */
	width: calc(100vw - 6rem);
	max-width: none;
	/* Centered on the viewport with left/transform alone. WP's constrained
	   layout also forces `margin-left/right:auto` on every child; that margin
	   is zeroed by the higher-specificity rule below so it can't stack on top
	   of the translate and shove the hero sideways on mobile. */
	left: 50%;
	transform: translateX(-50%);
	/* Leave a small gap below so the rounded bottom corners sit inside the
	   viewport (matches the ~1rem side insets) instead of at the fold.
	   Subtract the admin-bar height too so the gap holds when logged in. */
	min-height: calc(100vh - 3rem - var(--wp-admin--admin-bar--height, 0px));
	min-height: calc(100svh - 3rem - var(--wp-admin--admin-bar--height, 0px));
	margin-top: 0;
	/* Bottom margin matches the 3rem left/right side insets. */
	margin-bottom: 3rem;
	padding-top: var(--cdlp-header-height);
	display: flex;
	align-items: flex-end;
	overflow: hidden;
	color: var(--wp--preset--color--white);
	border-radius: 0 0 var(--cdlp-radius-hero) var(--cdlp-radius-hero);
}

/* WordPress's constrained-layout rule
   `.is-layout-constrained > :where(:not(.alignleft):not(.alignright):not(.alignfull))`
   forces `margin-left/right: auto !important`. On a full-width (mobile) container
   that auto margin resolves to a large positive value that stacks on top of the
   translate and shoves the hero sideways, breaking its centering. Because WP uses
   !important we must too, and the two-class selector keeps us winning on
   specificity among the !important declarations — without raising the base
   rule's specificity (which would clobber the mobile @media min-height/radius). */
.cdlp-hero.wp-block-costruzioni-dallape-hero {
	margin-left: 0 !important;
	margin-right: 0 !important;
}

@media (max-width: 860px) {
	/* Full-bleed edge-to-edge on mobile (no side insets). The page container is
	   inset by the root padding (theme.json), so break back out of it with
	   matching negative margins rather than 100vw — avoids the horizontal-scroll
	   footgun that 100vw causes when a scrollbar is present. The two-class
	   selector + !important is needed to beat the margin-zeroing rule above. */
	.cdlp-hero.wp-block-costruzioni-dallape-hero {
		width: auto;
		left: auto;
		transform: none;
		margin-left: calc(-1 * var(--wp--style--root--padding-left)) !important;
		margin-right: calc(-1 * var(--wp--style--root--padding-right)) !important;
		min-height: calc(100svh - 3rem - var(--wp-admin--admin-bar--height, 0px));
		border-radius: 0 0 24px 24px;
	}
}

.cdlp-hero__slide {
	position: absolute;
	inset: 0;
	opacity: 0;
	transition: opacity 0.8s ease;
}
.cdlp-hero__slide.is-active { opacity: 1; }
/* Slides carry a real <img> (see blocks/hero/render.php); this reproduces
   what background-size:cover / background-position:center used to do. */
.cdlp-hero__slide img {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	object-position: center;
}
.cdlp-hero__slide::after {
	content: "";
	position: absolute;
	inset: 0;
	background:
		linear-gradient(to top,  rgba(0, 15, 40, 0.85) 0%, rgba(0, 15, 40, 0.40) 38%, transparent 58%),
		linear-gradient(to right, rgba(0, 15, 40, 0.55) 0%, rgba(0, 15, 40, 0.10) 45%, transparent 68%);
}
@media (max-width: 860px) {
	.cdlp-hero__slide::after { background: rgba(0, 15, 40, 0.52); }
}

.cdlp-hero__inner {
	position: relative;
	z-index: 2;
	width: 100%;
	box-sizing: border-box;
	max-width: calc(var(--wp--style--global--content-size, 1280px) + 2rem);
	margin-inline: auto;
	padding-inline: var(--cdlp-gutter);
}
.cdlp-hero__content { max-width: 680px; padding-bottom: 5.5rem; }
.cdlp-hero__title {
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(2.25rem, 1.784vw + 1.832rem, 3.4375rem); /* 36 → 55px */
	line-height: 1.2;
	font-weight: 700;
	color: var(--wp--preset--color--white);
	margin: 0 0 1rem;
}
.cdlp-hero__subtitle {
	font-size: 1.5rem;
	font-weight: 400;
	line-height: 1.1667;
	margin: 0 0 2rem;
	color: rgba(255, 255, 255, 0.92);
}
.cdlp-hero__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 60px;
	padding-inline: 1.75rem;
	text-decoration: none;
	border-radius: var(--cdlp-radius-pill);
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 1.125rem;
	line-height: 1;
	border: 2px solid var(--wp--preset--color--accent);
	transition: background-color 0.25s ease, color 0.25s ease, border-color 0.25s ease;
}
.cdlp-hero__cta:hover {
	background-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
	border-color: var(--wp--preset--color--primary);
}
/* Exception: the hero slider CTA keeps its original white hover. */
.cdlp-hero .cdlp-hero__cta:hover {
	background-color: var(--wp--preset--color--white);
	color: var(--wp--preset--color--accent);
	border-color: var(--wp--preset--color--white);
}
.cdlp-hero__dots { display: flex; gap: 0.6rem; margin-top: 2rem; }
.cdlp-hero__dots button {
	width: 12px;
	height: 12px;
	border-radius: 50%;
	background-color: rgba(255, 255, 255, 0.45);
	border: none;
	padding: 0;
	cursor: pointer;
	transition: background-color 0.2s ease, transform 0.2s ease;
}
.cdlp-hero__dots button.is-active {
	background-color: var(--wp--preset--color--white);
	transform: scale(1.2);
}

/* =========================================================
   Stat counter (custom block)
   ========================================================= */
.cdlp-stat__number {
	display: block; /* span markup: keep it block-level like the old heading */
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(2.75rem, 2.441vw + 2.178rem, 4.375rem); /* 44 → 70px */
	font-weight: 700;
	color: var(--wp--preset--color--primary);
	line-height: 1;
	margin: 0;
}
.cdlp-stat__label {
	color: var(--wp--preset--color--muted);
	font-weight: 400;
	font-size: 1.25rem; /* 20px — testo di supporto sotto i numeri, leggermente più grande */
	margin: 0.4rem 0 0; /* core paragraph: kill default bottom margin */
}
/* (Odometer/rullo styles removed — stat-counter now uses a numeric count-up
   that renders whole integers, so no digit-strip clipping.) */

/* =========================================================
   Progetti carousel (custom block)
   ========================================================= */
.cdlp-progetti {
	background-color: var(--wp--preset--color--section);
	/* Full-bleed background: break out of the constrained content container
	   (align:full is capped at content-size in this theme) so the section BG
	   spans the whole viewport. __inner keeps the content centred at 1280px. */
	width: auto;
	/* !important beats WP's `.has-global-padding > .alignfull` layout rule
	   which otherwise resets these margins to 0. */
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	/* Respiro maggiore, identico sopra e sotto. */
	padding-block: var(--wp--preset--spacing--xl);
}
.cdlp-progetti__inner {
	width: 100%;
	/* border-box (there is no global reset): with content-box the 1rem inline
	   padding was added *outside* width:100%, so on mobile this box measured
	   viewport + 32px and gave the whole page a horizontal scroll. The max-width
	   grows by the same 2rem so the content column stays 1280px on desktop,
	   matching .cdlp-progetti__track's padding-left. */
	box-sizing: border-box;
	max-width: calc(1280px + 2rem);
	margin-inline: auto;
	padding-inline: var(--cdlp-gutter);
}
.cdlp-progetti__head { margin-bottom: 4rem; }
/* Tighten the eyebrow → title → lead spacing (default h2 margins are too loose). */
.cdlp-progetti__head .cdlp-section-heading { margin: 0.25rem 0 1rem; }
.cdlp-progetti__lead-row {
	display: flex;
	justify-content: space-between;
	align-items: flex-end;
	gap: 6rem;
	margin-top: 0;
}
.cdlp-progetti__lead-row .cdlp-lead {
	max-width: none;
	/* Bottom flush con le frecce (align-items: flex-end): senza questo,
	   il margine inferiore del paragrafo alza il testo di 24px. */
	margin-block: 0;
}

.cdlp-progetti__nav {
	display: flex;
	gap: 0.75rem;
	flex-shrink: 0;
}
.cdlp-progetti__nav button {
	width: 68px;
	height: 68px;
	border-radius: 50%;
	border: 1.5px solid var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
	background: none;
	display: flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.cdlp-progetti__nav button:hover {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
}
.cdlp-progetti__nav svg { width: 28px; height: 28px; }

@media (max-width: 640px) {
	/* The 6rem gap + non-shrinking 148px arrow pair cannot sit beside the lead
	   text at phone widths — the row overflowed and scrolled the whole page.
	   Stack instead, with the arrows below the text. */
	.cdlp-progetti__lead-row {
		flex-direction: column;
		align-items: flex-start;
		gap: 1.75rem;
	}
	.cdlp-progetti__head { margin-bottom: 2.5rem; }
	.cdlp-progetti__nav button { width: 56px; height: 56px; }
	.cdlp-progetti__nav svg { width: 22px; height: 22px; }
}

.cdlp-progetti__track {
	display: flex;
	gap: 1rem;
	overflow-x: auto;
	/* Proximity (not mandatory): the last card's start snap is unreachable near
	   the end, and mandatory would yank the track back, leaving it peeking.
	   Proximity lets the track rest at max scroll with the last card fully shown
	   while still snapping card starts during normal navigation. */
	scroll-snap-type: x proximity;
	scrollbar-width: none;
	padding-bottom: 0.5rem;
	padding-left: max(var(--cdlp-gutter), calc((100% - 1280px) / 2));
	padding-right: var(--cdlp-gutter);
	scroll-padding-left: max(var(--cdlp-gutter), calc((100% - 1280px) / 2));
	/* Match padding-right so the last card's end-snap lands exactly at max scroll. */
	scroll-padding-right: var(--cdlp-gutter);
}
.cdlp-progetti__track::-webkit-scrollbar { display: none; }

.cdlp-card {
	flex: 0 0 380px;
	scroll-snap-align: start;
	scroll-snap-stop: always;
	background-color: var(--wp--preset--color--white);
	border-radius: var(--cdlp-radius-md);
	overflow: hidden;
	display: block;
	color: inherit;
	text-decoration: none;
}
/* The last card's "start" snap is unreachable near the end (not a full viewport
   of cards remains), so snap its END instead: the track can then rest at max
   scroll with the last card fully in view, never leaving it peeking. */
.cdlp-progetti__track > .cdlp-card:last-child {
	scroll-snap-align: end;
}
.cdlp-card__media {
	position: relative;
	aspect-ratio: 440 / 480;
	overflow: hidden;
}
.cdlp-card__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: transform 0.4s ease, opacity 0.25s ease;
	display: block;
}
.cdlp-card:hover .cdlp-card__media img { transform: scale(1.05); opacity: 0.7; }
.cdlp-card__arrow {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%) scale(0.8);
	width: 75px;
	height: 75px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
	display: flex;
	align-items: center;
	justify-content: center;
	opacity: 0;
	transition: opacity 0.25s ease, transform 0.25s ease;
}
.cdlp-card:hover .cdlp-card__arrow { opacity: 1; transform: translate(-50%, -50%) scale(1); }
.cdlp-card__arrow svg { width: 52px; height: 52px; }

.cdlp-card__body { padding: 1.1rem 1rem 1rem; } /* top +10% */
.cdlp-card__title {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: clamp(1.125rem, 0.188vw + 1.081rem, 1.25rem); /* 18 → 20px */
	line-height: 1.3;
	margin: 0 0 0.5rem;
	color: var(--wp--preset--color--text);
}
/* Inline flow (not flex) so the ubicazione fills the rest of the current
   line and breaks between its own words where needed, instead of being
   pushed whole onto the next line or truncated. */
.cdlp-card__meta {
	color: var(--wp--preset--color--muted);
	font-size: 1rem;
	line-height: 1.45;
}
/* Category and year stay whole; only the ubicazione is allowed to break. */
.cdlp-card__meta > span { white-space: nowrap; }
.cdlp-card__meta .cdlp-card__luogo { white-space: normal; }
.cdlp-card__meta .cdlp-dot {
	width: 4px;
	height: 4px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	display: inline-block;
	vertical-align: middle;
	margin: 0 0.1rem;
}
/* Only the "In corso" fallback is emphasised — a real year stays regular. */
.cdlp-card__meta .cdlp-status { font-weight: 400; }
.cdlp-card__meta .cdlp-status.is-in-corso { font-weight: 600; }

.cdlp-progetti__cta { display: flex; justify-content: center; margin-top: 4rem; }

@media (max-width: 1024px) {
	.cdlp-card { flex: 0 0 min(440px, 45%); }
}
@media (max-width: 640px) {
	/* Wider card on phones — 78% left the project images small next to the
	   1rem track padding. 88% still shows a clear slice of the next card. */
	.cdlp-card { flex: 0 0 88%; }
}

/* =========================================================
   Ambiti list (custom block)
   ========================================================= */
.cdlp-ambiti { padding-top: 3.326rem; padding-bottom: 4.8rem; }
.cdlp-ambiti__inner {
	width: 100%;
	box-sizing: border-box;
	max-width: 1280px;
	margin-inline: auto;
}
/* Unlike the other __inner wrappers, this one's parent is the constrained
   1280px column rather than a full-bleed section, so the root padding (see
   theme.json styles.spacing.padding) already supplies the side gutter. */
.cdlp-ambiti__head {
	padding-bottom: 1rem;
	border-bottom: 1px solid var(--wp--preset--color--section);
	margin-bottom: 4rem;
}
/* Tighten the gap between the title and the lead paragraph. */
.cdlp-ambiti__head .cdlp-section-heading { margin: 0.25rem 0 1rem; }
.cdlp-ambiti__head .cdlp-lead { margin-top: 0; }
.cdlp-ambiti__list {
	display: flex;
	flex-direction: column;
	gap: 4.5rem;
	/* Bottom divider closing the list, mirroring the head divider. */
	padding-bottom: 4.8rem;
	border-bottom: 1px solid var(--wp--preset--color--section);
}

.cdlp-ambiti-row {
	position: relative;
	display: flex;
	align-items: center;
	justify-content: space-between;
	padding: 2rem;
	color: var(--wp--preset--color--text);
	text-decoration: none;
	transition: background-color 0.3s ease, color 0.3s ease;
	overflow: visible;
}
.cdlp-ambiti-row__left { display: flex; align-items: center; gap: 4.5rem; }
.cdlp-ambiti-row__index {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 400;
	font-size: clamp(1rem, 0.376vw + 0.912rem, 1.25rem); /* 16 → 20px */
	color: var(--wp--preset--color--muted);
}
.cdlp-ambiti-row__title {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: clamp(1.5rem, 2.911vw + 0.818rem, 3.4375rem); /* 24 → 55px */
	margin: 0;
}
.cdlp-ambiti-row__arrow {
	width: 75px;
	height: 75px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	color: var(--wp--preset--color--accent);
	flex-shrink: 0;
	transition: background-color 0.3s ease, color 0.3s ease;
}
.cdlp-ambiti-row__arrow svg { width: 32px; height: 32px; }
.cdlp-ambiti-row__image {
	position: absolute;
	right: 12%;
	top: 50%;
	width: 360px;
	height: 240px;
	overflow: hidden;
	opacity: 0;
	transform: translateY(-50%) scale(0.9);
	transition: opacity 0.3s ease, transform 0.3s ease;
	pointer-events: none;
	box-shadow: 0 16px 32px rgba(0, 0, 0, 0.25);
}
.cdlp-ambiti-row__image img { width: 100%; height: 100%; object-fit: cover; }

.cdlp-ambiti-row:hover,
.cdlp-ambiti-row.is-active {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
}
.cdlp-ambiti-row:hover .cdlp-ambiti-row__index,
.cdlp-ambiti-row.is-active .cdlp-ambiti-row__index { color: rgba(255, 255, 255, 0.75); }
.cdlp-ambiti-row:hover .cdlp-ambiti-row__title,
.cdlp-ambiti-row.is-active .cdlp-ambiti-row__title { color: var(--wp--preset--color--white); }
.cdlp-ambiti-row:hover .cdlp-ambiti-row__arrow,
.cdlp-ambiti-row.is-active .cdlp-ambiti-row__arrow {
	background-color: var(--wp--preset--color--white);
	color: var(--wp--preset--color--accent);
}
.cdlp-ambiti-row:hover .cdlp-ambiti-row__image,
.cdlp-ambiti-row.is-active .cdlp-ambiti-row__image {
	opacity: 1;
	transform: translateY(-50%) scale(1);
}

@media (max-width: 640px) {
	.cdlp-ambiti-row { padding: 1.5rem; gap: 0.75rem; }
	.cdlp-ambiti-row__image { display: none; }
	/* The 4.5rem gap + 75px non-shrinking arrow pushed the row past the
	   viewport at phone widths. min-width:0 lets the title shrink below its
	   min-content width instead of forcing the row wider. */
	.cdlp-ambiti-row__left { gap: 1rem; min-width: 0; }
	.cdlp-ambiti-row__title { min-width: 0; overflow-wrap: break-word; }
	.cdlp-ambiti-row__arrow { width: 44px; height: 44px; }
	.cdlp-ambiti-row__arrow svg { width: 20px; height: 20px; }
}

/* =========================================================
   Certificazioni grid (custom block)
   ========================================================= */
.cdlp-certificazioni {
	padding-top: 0.43008rem;
	padding-bottom: var(--wp--preset--spacing--xl);
	/* Full-bleed so the blue __band spans the viewport; inners keep content at 1280. */
	width: auto;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
}
.cdlp-certificazioni__inner {
	width: 100%;
	box-sizing: border-box;
	max-width: calc(1280px + 2rem);
	margin-inline: auto;
	padding-inline: var(--cdlp-gutter);
}
/* Testo a sinistra, bottone CTA a destra (allineato in basso col testo). */
.cdlp-certificazioni__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--lg);
	margin-bottom: 4rem;
}
.cdlp-certificazioni__head-text { min-width: 0; }
/* Bottone CTA in testata (blocco core wp:buttons): non si comprime, allineato in basso. */
.cdlp-certificazioni__cta-link,
.cdlp-certificazioni__cta-head { flex-shrink: 0; margin: 0; }
@media (max-width: 768px) {
	.cdlp-certificazioni__head {
		flex-direction: column;
		align-items: flex-start;
	}
}
/* Lead più largo del default .cdlp-lead (66%), ma non a tutta larghezza. */
.cdlp-certificazioni__head .cdlp-lead { max-width: 1097.7px; }
/* Tighten eyebrow → title → lead (default h2 margins too loose). */
.cdlp-certificazioni__head .cdlp-section-heading { margin: 0.25rem 0 1rem; }
.cdlp-certificazioni__head .cdlp-lead { margin-top: 0; }
.cdlp-certificazioni__band {
	background-color: var(--wp--preset--color--eyebrow);
	width: 100%;
	padding-block: 2rem;
	margin-top: var(--wp--preset--spacing--lg);
}
.cdlp-certificazioni__grid {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 1rem;
}

.cdlp-cert-card {
	position: relative;
	background-color: var(--wp--preset--color--section);
	border-radius: var(--cdlp-radius-md);
	aspect-ratio: 4 / 5;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 2rem;
	overflow: hidden;
	/* L'intera card è cliccabile (è un <a>). */
	color: inherit;
	text-decoration: none;
}
.cdlp-cert-card img {
	max-height: 85%;
	max-width: 92%;
	width: auto;
	object-fit: contain;
}
.cdlp-cert-card__info {
	position: absolute;
	inset: auto 0 0 0;
	background-color: var(--wp--preset--color--white);
	padding: 1rem 1.25rem;
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 0.75rem;
	transform: translateY(100%);
	transition: transform 0.3s ease;
}
.cdlp-cert-card:hover .cdlp-cert-card__info { transform: translateY(0); }
.cdlp-cert-card__title {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: clamp(1rem, 0.15vw + 0.965rem, 1.1rem); /* 16 → 17.6px */
	line-height: 1.3;
	color: var(--wp--preset--color--text);
}
.cdlp-cert-card__year {
	color: var(--wp--preset--color--muted);
	font-size: 0.95rem;
	display: flex;
	align-items: center;
	gap: 0.35rem;
	margin-top: 0.2rem;
}
.cdlp-cert-card__year .cdlp-dot {
	width: 6px;
	height: 6px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	display: inline-block;
}
.cdlp-cert-card__arrow {
	width: 75px;
	height: 75px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
	display: flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
}
.cdlp-cert-card__arrow svg { width: 52px; height: 52px; }

.cdlp-certificazioni__cta { display: flex; justify-content: center; margin-top: var(--wp--preset--spacing--lg); }

@media (max-width: 1024px) {
	.cdlp-certificazioni__grid { grid-template-columns: repeat(2, 1fr); }
}
/* Mobile: turn the cert grid into a horizontal snap carousel instead of a
   stacked column, so all riconoscimenti stay reachable with a swipe. */
@media (max-width: 640px) {
	.cdlp-certificazioni__grid {
		display: flex;
		align-items: flex-start;
		overflow-x: auto;
		scroll-snap-type: x mandatory;
		-webkit-overflow-scrolling: touch;
		/* Bleed past the band's right gutter so the peeking card runs off the
		   screen edge instead of stopping 1rem short of it. The left gutter
		   stays, so the first card still lines up with the section above. */
		margin-right: calc(var(--cdlp-gutter) * -1);
		/* Snap flush to the scroll port's left edge. At 1rem it added a second
		   indent on top of the inner's padding, so a snapped card sat further
		   in than the first card does at rest. */
		scroll-padding-inline: 0;
		/* Tighter than the desktop 1rem: the blue band shows through the gap, and
		   a wide one reads as an empty slot rather than the seam between cards. */
		gap: 0.5rem;
		/* a little room for the scrollbar / snap end */
		padding-bottom: 0.5rem;
	}
	.cdlp-certificazioni__grid > .cdlp-cert-card {
		/* border-box so the 80% is the card's total width (it's content-box by
		   default + 2rem padding), leaving a clear peek of the next card. */
		box-sizing: border-box;
		flex: 0 0 80%;
		scroll-snap-align: start;
	}
}

/* Let these sections' description text span the full width on mobile. The
   default .cdlp-lead 66% cap is only lifted globally below 640px, so on
   phones/small tablets the paragraph would otherwise read awkwardly short. */
@media (max-width: 860px) {
	.cdlp-ambiti__head .cdlp-lead,
	.cdlp-certificazioni__head .cdlp-lead { max-width: none; }
}

/* =========================================================
   Azienda-stats layout helper (composed with core blocks)
   ========================================================= */
.cdlp-azienda-stats { padding-block: var(--wp--preset--spacing--xl); }
.cdlp-azienda-stats__head {
	padding-bottom: 2rem;
	border-bottom: 1px solid var(--wp--preset--color--border);
	margin-bottom: 2rem;
}
.cdlp-azienda-stats__body {
	display: grid;
	grid-template-columns: 1fr 1.4fr;
	gap: 4rem;
	align-items: start;
}
/* Left column CTA sits at the bottom, aligned with the numbers row. Covers both
   the azienda-stats custom block (.cdlp-azienda-stats__col-left) and the older
   composed version (a first-child wp-block-group in the body). */
.cdlp-azienda-stats__col-left {
	display: flex;
	flex-direction: column;
	align-items: flex-start;
	justify-content: flex-end;
	align-self: stretch;
}
.cdlp-azienda-stats__body > .wp-block-group:first-child {
	align-self: stretch;
	/* One child (the CTA) → push it to the bottom, aligned with the numbers row. */
	justify-content: flex-end;
}
.cdlp-azienda-stats__text > p {
	color: var(--wp--preset--color--body);
	font-size: 1.5rem;
	line-height: 1.333;
}
.cdlp-azienda-stats__text > p:first-child { font-weight: 600; }
.cdlp-azienda-stats__numbers {
	display: flex;
	gap: 4rem;
	margin-top: var(--wp--preset--spacing--lg);
}
/* Equal-width cells with each logo centred in its own. The logos have very
   different aspect ratios, so the previous wrapping flex row with
   space-between produced ragged rows — one logo alone, then two flung to
   opposite edges, then a stranded last one. A grid keeps them on a shared
   rhythm whatever their intrinsic size.
   Scoped with the section class so it outranks the flex layout rules core
   generates from the group block's justifyContent attribute. */
.cdlp-azienda-stats .cdlp-azienda-stats__logos {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	align-items: center;
	justify-items: center;
	gap: 3rem 2rem;
	margin-top: var(--wp--preset--spacing--xl);
}
/* Logos are core image blocks: zero the figure margin so the cells align. */
.cdlp-azienda-stats__logos .wp-block-image { margin: 0; }
.cdlp-azienda-stats__logos img {
	height: auto;
	width: auto;
	max-height: 120px;
	/* Cap the wide logos, but never let one overflow its cell. */
	max-width: min(220px, 100%);
	object-fit: contain;
}
/* is-large may sit on the <img> (legacy) or on the <figure> (image block). */
.cdlp-azienda-stats__logos img.is-large,
.cdlp-azienda-stats__logos .is-large img { max-height: 174px; }

/* The stats section only sets padding-block; the side gutter comes from the
   root padding (theme.json styles.spacing.padding). */

@media (max-width: 860px) {
	.cdlp-azienda-stats__body { grid-template-columns: 1fr; }
	/* Two even rows of two rather than a ragged 1 / 2 / 1 wrap. */
	.cdlp-azienda-stats .cdlp-azienda-stats__logos {
		grid-template-columns: repeat(2, 1fr);
		gap: 2.5rem 1.5rem;
	}
	.cdlp-azienda-stats__logos img { max-height: 96px; }
	.cdlp-azienda-stats__logos img.is-large,
	.cdlp-azienda-stats__logos .is-large img { max-height: 120px; }
	/* Stack the stats vertically, one per row, centered, with larger numbers. */
	.cdlp-azienda-stats__numbers { flex-direction: column; align-items: center; gap: 2rem; }
	.cdlp-azienda-stats__numbers .cdlp-stat { align-items: center; text-align: center; }
	/* Stacked layout gets its own ramp: 44px on a phone up to 64px at 860px. */
	.cdlp-azienda-stats__numbers .cdlp-stat__number { font-size: clamp(2.75rem, 4.124vw + 1.784rem, 4rem); }
}

/* =========================================================
   Marquee (custom block)
   ========================================================= */
.cdlp-marquee {
	overflow: hidden;
	white-space: nowrap;
	padding-block: 2.08rem 1.6rem; /* top -20% (from 2.6rem), bottom -20% */
	background-color: var(--wp--preset--color--white);
}
.cdlp-marquee__track {
	display: flex;
	width: max-content;
	animation: cdlp-marquee-scroll 22s linear infinite;
}
.cdlp-marquee__item {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: clamp(4rem, 2.441vw + 3.428rem, 5.625rem); /* 64 → 90px */
	letter-spacing: 0.06em;
	text-transform: capitalize;
	color: var(--wp--preset--color--white);
	text-shadow:
		-2px -2px 0 var(--wp--preset--color--section),
		 2px -2px 0 var(--wp--preset--color--section),
		-2px  2px 0 var(--wp--preset--color--section),
		 2px  2px 0 var(--wp--preset--color--section),
		 0   -2px 0 var(--wp--preset--color--section),
		 0    2px 0 var(--wp--preset--color--section),
		-2px  0   0 var(--wp--preset--color--section),
		 2px  0   0 var(--wp--preset--color--section);
	padding-inline: 1.5rem;
}
@keyframes cdlp-marquee-scroll {
	from { transform: translateX(0); }
	to   { transform: translateX(-50%); }
}

/* =========================================================
   CTA banner (composed with core Cover)
   ========================================================= */
.cdlp-cta-banner {
	position: relative;
	/* Wide banner centred in the viewport with matching left/right gutters.
	   !important overrides the align:wide max-width cap. Centre via left/transform
	   rather than margin-inline:auto so it stays centred even on wide screens where
	   the banner is wider than its constrained parent — there margin:auto collapses
	   to 0 and the banner overflows off the right edge. margin-inline needs
	   !important: inside a constrained parent (e.g. single-progetto) WP core's
	   `.is-layout-constrained > :where(…) { margin: auto }` ties on specificity and
	   would otherwise win by source order, re-introducing the asymmetric offset. */
	width: calc(100vw - 6rem) !important;
	max-width: none !important;
	margin-inline: 0 !important;
	left: 50%;
	transform: translateX(-50%);
	border-radius: var(--cdlp-radius-hero) var(--cdlp-radius-hero) 0 0;
	overflow: hidden;
	min-height: 600px !important;
	display: flex;
	align-items: center;
	/* Core ships `.wp-block-cover { padding: 1em }`, which at this block's fluid
	   font-size is ~14px and stacked on top of the inner container's gutter —
	   the card sat at 30px instead of the site's 16px column. The inner
	   container below owns the side inset. */
	padding: 0;
}
@media (max-width: 860px) {
	/* Mobile: banner a tutta larghezza (niente gutter laterale). */
	.cdlp-cta-banner {
		width: 100vw !important;
		min-height: 480px !important;
		border-radius: 24px 24px 0 0;
	}
}
/* Lighten the dark photo overlay on this banner (saved dimRatio is stronger). */
.cdlp-cta-banner .wp-block-cover__background.has-background-dim {
	opacity: 0.1 !important;
}
/* Keep the card within the 1280 container even though the banner is full-bleed. */
.cdlp-cta-banner .wp-block-cover__inner-container {
	width: 100%;
	box-sizing: border-box;
	max-width: calc(1280px + 2rem);
	margin-inline: auto;
	padding-inline: var(--cdlp-gutter);
}
.cdlp-cta-card {
	position: relative;
	z-index: 2;
	background-color: var(--wp--preset--color--white);
	border-radius: 1.5rem;
	padding: 4rem 2rem;
	max-width: 576px;
	text-align: center;
}
.cdlp-cta-card__title {
	font-size: clamp(1.85rem, 0.977vw + 1.621rem, 2.5rem); /* 29.6 → 40px */
	margin: 0.5rem auto 2rem !important;
}
/* Keep the eyebrow blue even on copied CTA instances (e.g. in the homepage
   page content) that still carry the has-text-color class — WP's global
   .has-text-color !important rule would otherwise force it to the text color. */
.cdlp-cta-card .cdlp-eyebrow {
	color: var(--wp--preset--color--eyebrow) !important;
}

/* =========================================================
   Footer (rendered via /parts/footer.html)
   ========================================================= */
.wp-site-blocks > footer.wp-block-template-part {
	background-color: var(--wp--preset--color--section);
	padding: 4rem 0;
}
.cdlp-footer-grid {
	display: grid;
	grid-template-columns: 1.3fr 1fr 1fr 1fr;
	gap: 4rem;
	max-width: 1280px;
	margin-inline: auto;
	padding-inline: var(--cdlp-gutter);
}
.cdlp-footer-grid p,
.cdlp-footer-grid address,
.cdlp-footer-grid a {
	color: var(--wp--preset--color--body);
	font-weight: 400;
	font-style: normal;
}
.cdlp-footer-grid a {
	text-decoration: none;
}
/* Ritmo compatto come il riferimento: niente blockGap tra i paragrafi,
   solo il piccolo margine del design. */
.cdlp-footer-brand > *,
.cdlp-footer-col > * {
	margin-block-start: 0;
}
.cdlp-footer-grid p {
	margin-bottom: 0.3rem;
}
.cdlp-footer-col p {
	margin-bottom: 0;
}
.cdlp-footer-logo img { height: 46px; width: auto; margin-bottom: 1rem; }
/* Align the menu columns with the company-name line (one logo block down:
   46px logo + 16px gap), instead of the default 24px blockGap. */
.cdlp-footer-grid .cdlp-footer-col {
	margin-block-start: 62px;
}
.cdlp-footer-grid .cdlp-footer-company {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	color: var(--wp--preset--color--body);
	margin-bottom: 0.5rem;
}
.cdlp-footer-col a {
	display: inline-block;
	padding-block: 0.4rem;
	position: relative;
}
/* Menu footer FSE (block core/navigation): elenco verticale, ritmo dato dal
   padding dei link — non dal gap del blocco. */
.cdlp-footer-col .wp-block-navigation .wp-block-navigation__container {
	flex-direction: column;
	align-items: flex-start;
	gap: 0;
}
/* Hover: fade in a 1px accent (brown) underline — text colour stays unchanged. */
.cdlp-footer-col a::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: 0.25rem;
	height: 1px;
	background-color: var(--wp--preset--color--accent);
	opacity: 0;
	transition: opacity 0.3s ease;
}
.cdlp-footer-col a:hover::after { opacity: 1; }
.cdlp-footer-legal {
	margin-top: 0.75rem;
	font-size: 0.9rem;
}
.cdlp-footer-legal a { text-decoration: underline; }

/* Card "Scarica il calendario" — blocco custom costruzioni-dallape/footer-download.
   Server-rendered, so the whole card is a real <a> and needs no stretched
   overlay; that in turn lets the label animate with a transform. */
.cdlp-footer-download {
	display: block;
	background-color: var(--wp--preset--color--white);
	border-radius: var(--cdlp-radius-md);
	padding: 0.75rem;
}
.cdlp-footer-download__media {
	background-color: var(--wp--preset--color--eyebrow);
	border-radius: calc(var(--cdlp-radius-md) - 0.25rem);
	aspect-ratio: 4 / 3;
	display: flex;
	align-items: flex-start;
	justify-content: center;
	padding-top: 0.5rem;
	overflow: hidden;
}
.cdlp-footer-download__media img {
	height: 110%;
	width: auto;
	max-width: 100%;
	object-fit: contain;
	transition: transform 0.25s ease;
}
.cdlp-footer-download:hover .cdlp-footer-download__media img { transform: scale(1.05); }
.cdlp-footer-download__info {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1.25rem;
	padding: 1rem 0.5rem 0.5rem;
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 0.9375rem;
	/* `anywhere` rather than `break-word`: it also lowers the element's
	   min-content width, so a long unbreakable label wraps instead of forcing
	   the footer's 1fr grid column wider. */
	overflow-wrap: anywhere;
}
.cdlp-footer-download__info svg {
	width: 18px;
	height: 18px;
	color: var(--wp--preset--color--primary);
	stroke-width: 2.5;
	flex-shrink: 0;
	transition: transform 0.25s ease;
}
.cdlp-footer-download:hover .cdlp-footer-download__info svg { transform: translateX(-4px); }
.cdlp-footer-download__label {
	transition: transform 0.25s ease;
}
.cdlp-footer-download:hover .cdlp-footer-download__label { transform: translateX(4px); }

@media (max-width: 900px) {
	/* Halve the 4rem column/row gap once the footer collapses on mobile. */
	.cdlp-footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; }
}
@media (max-width: 560px) {
	.cdlp-footer-grid { grid-template-columns: 1fr; }
	/* The 62px top margin only exists to align the menu columns with the
	   company-name line on desktop; once the footer is a single stacked
	   column it just balloons the spacing, so drop it here. Combined with the
	   halved grid gap this leaves an even, ~50%-tighter gap between columns. */
	.cdlp-footer-grid .cdlp-footer-col { margin-block-start: 0; }
}

/* =========================================================
   Shared: inline arrow icon defaults
   ========================================================= */
.cdlp-icon-arrow { width: 18px; height: 18px; }

/* =========================================================
   Pagina Azienda — hero testuale (custom block)
   ========================================================= */
.cdlp-azienda-hero {
	padding-block: var(--wp--preset--spacing--xl);
	text-align: center;
}

.cdlp-azienda-hero__title {
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(2.2rem, 1.859vw + 1.764rem, 3.4375rem); /* 35 → 55px */
	line-height: 1.2;
	font-weight: 700;
	color: var(--wp--preset--color--text);
	margin-bottom: var(--wp--preset--spacing--sm);
}

.cdlp-azienda-hero__subtitle {
	color: var(--wp--preset--color--muted);
	font-size: 1.5rem; /* 24px — design */
	line-height: 1.333; /* 32px @ 24px */
	max-width: 760px;
	margin-inline: auto;
	margin-bottom: var(--wp--preset--spacing--xl);
}

.cdlp-azienda-hero__stats {
	background-color: var(--wp--preset--color--section);
	border-radius: 1.5rem;
	padding: 2.4rem var(--wp--preset--spacing--xl); /* block padding: lg 4rem -50% then +20% */
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--md);
	text-align: center;
}

@media (max-width: 640px) {
	.cdlp-azienda-hero__subtitle {
		margin-bottom: var(--wp--preset--spacing--lg);
	}
	.cdlp-azienda-hero__stats {
		grid-template-columns: 1fr;
		padding: var(--wp--preset--spacing--md);
		gap: var(--wp--preset--spacing--sm);
	}
}

/* Pattern variant: neutralize core flow-layout auto margins inside the hero
   so spacing comes only from the explicit margins above. */
.cdlp-azienda-hero > * {
	margin-block-start: 0;
}
.cdlp-azienda-hero__stats > * {
	margin: 0;
}

/* Stats band split out of the hero into its own block (page Azienda):
   il blocco intro (cdlp-page-intro) fornisce già il padding superiore. */
.cdlp-azienda-stats-band {
	padding-block: 0;
}

/* Tutte le sezioni della pagina Azienda (storia, servizi, team, qualità,
   stampa) sono constrained e ricevono il gutter dal root padding (theme.json).
   NB: .cdlp-azienda-qualita sembra full-bleed ma il fondo colorato è uno
   ::before in 100vw — il box resta nella colonna, quindi nessun gutter qui. */

/* =========================================================
   Pagina Azienda — La nostra storia (pattern)
   ========================================================= */
.cdlp-azienda-storia {
	padding-block: var(--wp--preset--spacing--xl);
}
.cdlp-azienda-storia__body {
	gap: var(--wp--preset--spacing--xl);
	align-items: flex-start;
	margin-bottom: var(--wp--preset--spacing--xl);
}
.cdlp-azienda-storia__text h2 {
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-azienda-storia__text p:not(.cdlp-eyebrow) {
	color: var(--wp--preset--color--body);
	font-size: 1.125rem;
	line-height: 1.55;
	margin-block: 0 var(--wp--preset--spacing--sm);
}
.cdlp-azienda-storia__text p:last-child {
	margin-bottom: 0;
}
.cdlp-azienda-storia__media .wp-block-image {
	margin: 0;
}
.cdlp-azienda-storia__media img {
	width: 100%;
	aspect-ratio: 9 / 10; /* altezza ridotta ~12% (crop via object-fit) */
	height: auto;
	border-radius: var(--cdlp-radius-md);
	object-fit: cover;
}
/* Equal-width cells with each logo centred in its own — same reasoning as the
   stats logos: a wrapping flex row with space-between broke into ragged rows on
   narrow screens (one logo, then two flung to opposite edges, then a stranded
   last one), and the fixed 220px cap let the wide logos overflow the viewport.
   Grid cells plus fluid caps keep them on a shared rhythm at any width. */
.cdlp-azienda-storia__logos {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	align-items: center;
	justify-items: center;
	gap: 3rem 2rem;
}
.cdlp-azienda-storia__logos .wp-block-image {
	margin: 0;
	max-width: 100%;
}
.cdlp-azienda-storia__logos img {
	height: auto;
	width: auto;
	/* Scale with the viewport instead of stepping at a breakpoint, and never
	   let a logo grow past its cell. */
	max-height: clamp(64px, 8.5vw, 120px);
	max-width: min(220px, 100%);
	object-fit: contain;
}
.cdlp-azienda-storia__logos .wp-block-image:first-child img {
	max-height: clamp(84px, 12.4vw, 174px);
}
@media (max-width: 860px) {
	/* Two even rows of two rather than a ragged 1 / 2 / 1 wrap. */
	.cdlp-azienda-storia__logos {
		grid-template-columns: repeat(2, 1fr);
		gap: 2.5rem 1.5rem;
	}
}

/* =========================================================
   Pagina Azienda — Cosa facciamo oggi (pattern)
   ========================================================= */
.cdlp-azienda-servizi {
	/* Padding verticale ridotto un po' rispetto all'xl (6rem) standard. */
	padding-block: 4.5rem;
}
.cdlp-azienda-servizi__body {
	gap: var(--wp--preset--spacing--xl);
	align-items: stretch;
}
/* Immagine sinistra ~10% più larga (colonne 55/45 invece di 50/50).
   Specificità alzata per battere .wp-block-columns .wp-block-column di core. */
.wp-block-columns.cdlp-azienda-servizi__body .cdlp-azienda-servizi__media {
	flex-grow: 0;
	flex-basis: 55%;
}
.wp-block-columns.cdlp-azienda-servizi__body .cdlp-azienda-servizi__text {
	flex-grow: 0;
	flex-basis: 45%;
	/* Colonna destra centrata verticalmente rispetto all'immagine più alta. */
	display: flex;
	flex-direction: column;
	justify-content: center;
}
.cdlp-azienda-servizi__media .wp-block-image {
	margin: 0;
	height: 100%;
}
.cdlp-azienda-servizi__media img {
	width: 100%;
	/* Fixed crop, so the photo is framed the same on a phone as on desktop.
	   The ratio is the desktop geometry made explicit: at the 1280px content
	   column the media column measures 651.2px against the 754px height the
	   layout imposed, i.e. 651 / 754. Previously that height came from a
	   min-height, so once the columns stacked the image kept its 754px while
	   the column narrowed — the crop turned progressively taller and tighter
	   the smaller the screen. Deriving height from the ratio keeps the same
	   framing at every width. */
	aspect-ratio: 651 / 754;
	height: auto;
	object-fit: cover;
	border-radius: var(--cdlp-radius-md);
}
.cdlp-azienda-servizi__text .cdlp-eyebrow {
	margin-bottom: 1.5rem; /* eyebrow "Servizi": stesso gap (24px) degli altri titoli;
	                          la colonna è flex quindi i margini non collassano. */
}
.cdlp-azienda-servizi__text h2 {
	margin-top: 0;
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-azienda-servizi__lead {
	color: var(--wp--preset--color--body);
	font-size: 1.0625rem;
	line-height: 1.5;
	margin-block: 0 var(--wp--preset--spacing--md);
}
.cdlp-azienda-servizi__list {
	list-style: none;
	padding-left: 0;
	display: flex;
	flex-direction: column;
	gap: 0.85rem;
	margin-block: 0 var(--wp--preset--spacing--lg);
}
.cdlp-azienda-servizi__list li {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	font-size: 1.3125rem;
	color: var(--wp--preset--color--body);
	margin: 0;
}
.cdlp-azienda-servizi__list li::before {
	content: "";
	width: 22px;
	height: 22px;
	flex-shrink: 0;
	background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"%3E%3Ccircle cx="11" cy="11" r="11" fill="%2300408f"/%3E%3Cpolyline points="6,11.5 9.5,15 16,8" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E') no-repeat center / contain;
}
/* No stacked-column min-height here any more: the image's aspect-ratio sets
   its own height, which stays well above the old 320px floor at every width. */

/* =========================================================
   Pagina Azienda — La nostra evoluzione / timeline (pattern)
   ========================================================= */
.cdlp-azienda-evoluzione {
	background-color: var(--wp--preset--color--section);
	/* Full-bleed background: break out of the constrained content container
	   (same technique as .cdlp-progetti). Children stay constrained (1100px)
	   by the group's own layout rules. */
	width: auto;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	padding-block: var(--wp--preset--spacing--xl);
	padding-inline: var(--wp--preset--spacing--sm);
	margin-bottom: 4.125rem;
}
.cdlp-azienda-evoluzione__head {
	text-align: center;
	max-width: 902px; /* 820px +10% */
	margin-inline: auto;
	margin-bottom: var(--wp--preset--spacing--xl);
}
.cdlp-azienda-evoluzione__title {
	font-size: clamp(2.2rem, 1.859vw + 1.764rem, 3.4375rem); /* 35 → 55px */
	line-height: 1.2;
	font-weight: 700;
	color: var(--wp--preset--color--text);
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-azienda-evoluzione__lead {
	color: var(--wp--preset--color--body);
	font-size: 1.25rem;
	line-height: 1.55;
	margin-block-start: 0;
}

/* Timeline: linea verticale terracotta al centro */
.cdlp-azienda-evoluzione__timeline {
	position: relative;
}
.cdlp-azienda-evoluzione__timeline::before {
	content: "";
	position: absolute;
	left: 50%;
	top: 0;
	bottom: 0;
	width: 1.5px;
	background: linear-gradient(
		to bottom,
		transparent 0%,
		var(--wp--preset--color--accent) 8%,
		var(--wp--preset--color--accent) 92%,
		transparent 100%
	);
	transform: translateX(-50%);
}

/* Ogni riga: anno | dot | contenuto */
.cdlp-evoluzione-item {
	display: grid;
	grid-template-columns: 1fr 20px 1fr;
	column-gap: var(--wp--preset--spacing--lg);
	align-items: start;
	padding-block: 3.36rem;
}
.cdlp-evoluzione-item > * {
	margin-block-start: 0;
}
.cdlp-evoluzione-item__year {
	text-align: right;
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(1.75rem, 1.127vw + 1.486rem, 2.5rem); /* 28 → 40px */
	font-weight: 600;
	color: var(--wp--preset--color--text);
	line-height: 1;
}
/* Dot: core separator ristilizzato */
hr.cdlp-evoluzione-item__dot {
	border: 0;
	width: 14px;
	height: 14px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	position: relative;
	z-index: 1;
	justify-self: center;
	margin: 0.25em 0 0;
	box-shadow: 0 0 0 5px rgba(178, 105, 45, 0.22);
}
.cdlp-evoluzione-item__content > * {
	margin-block-start: 0;
}
.cdlp-evoluzione-item__title {
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(1.125rem, 0.188vw + 1.081rem, 1.25rem); /* 18 → 20px */
	font-weight: 600;
	color: var(--wp--preset--color--text);
	line-height: 1.3;
	margin-bottom: 0.5rem;
}
.cdlp-evoluzione-item__text {
	color: var(--wp--preset--color--body);
	font-size: 1.1rem;
	line-height: 1.5;
	margin-bottom: var(--wp--preset--spacing--md);
}
.cdlp-evoluzione-item__img {
	margin: 0;
}
.cdlp-evoluzione-item__img img {
	width: 100%;
	max-width: 430px;
	height: 215px;
	object-fit: cover;
	border-radius: var(--cdlp-radius-md);
	display: block;
}

@media (max-width: 768px) {
	.cdlp-azienda-evoluzione__timeline::before {
		left: 10px;
	}
	.cdlp-evoluzione-item {
		grid-template-columns: 20px 1fr;
		column-gap: var(--wp--preset--spacing--sm);
		padding-block: var(--wp--preset--spacing--lg);
	}
	.cdlp-evoluzione-item__year {
		grid-column: 1 / -1;
		text-align: left;
		padding-left: 2.5rem;
		margin-bottom: var(--wp--preset--spacing--xs);
	}
	hr.cdlp-evoluzione-item__dot {
		grid-column: 1;
		grid-row: 2;
		margin-top: 0.3rem;
	}
	.cdlp-evoluzione-item__content {
		grid-column: 2;
		grid-row: 2;
	}
}

/* =========================================================
   Intro pagina interna (pattern) — H1 + sottotitolo centrati
   ========================================================= */
.cdlp-page-intro {
	/* Vertical rhythm shared with .cdlp-certif-hero — see the intro tokens on
	   :root, which also carry the mobile step-down. is-flush still overrides
	   the bottom to 0. */
	padding-block-start: var(--cdlp-intro-pad-top);
	padding-block-end: var(--cdlp-intro-pad-bottom);
	text-align: center;
}
.cdlp-page-intro > * {
	margin-block-start: 0;
}
.cdlp-page-intro__title {
	font-size: clamp(2.2rem, 1.859vw + 1.764rem, 3.4375rem); /* 35 → 55px */
	line-height: 1.2;
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-page-intro__subtitle {
	color: var(--wp--preset--color--muted);
	font-size: 1.5rem; /* 24px — design */
	line-height: 1.333;
	max-width: 950px; /* ~+10% rispetto agli 864px originali */
	margin-inline: auto;
}

/* Sezione riconoscimenti della pagina Certificazioni (blocchi core salvati nel
   contenuto della pagina): il gutter laterale arriva dal root padding
   (theme.json styles.spacing.padding). */

/* Loghi Cassa Edile Awards: sempre tre in fila e fluidi a ogni larghezza.
   Le colonne core si impilano sotto i 782px (flex-basis:100% !important) e i
   loghi restano alla dimensione fissa "large"; qui forziamo la riga e lasciamo
   che colonne e immagini scalino con lo spazio disponibile. */
.cdlp-awards__row {
	flex-wrap: nowrap;
	align-items: flex-start;
}
/* Specificità (0,4,0) per superare la regola core di impilamento mobile
   .wp-block-columns:not(.is-not-stacked-on-mobile) > .wp-block-column
   { flex-basis:100% !important } che è (0,3,0). */
.cdlp-awards .cdlp-awards__row.wp-block-columns > .wp-block-column {
	flex: 1 1 0 !important;
	min-width: 0;
}
.cdlp-awards__row .wp-block-image,
.cdlp-awards__row .wp-block-image img {
	width: 100%;
	height: auto;
}

/* Certificazioni grid — variante "is-plain" (pagina Certificazioni):
   niente intestazione né banda colorata, griglia su fondo bianco. */
.cdlp-certificazioni.is-plain { padding-block: 0 var(--wp--preset--spacing--xl); }
.cdlp-certificazioni.is-plain .cdlp-certificazioni__head { display: none; }
.cdlp-certificazioni.is-plain .cdlp-certificazioni__band {
	background-color: transparent;
	margin-top: 0;
	padding-block: 0;
}
/* Mobile: questa è la pagina-elenco, non un teaser — tutte le certificazioni
   devono essere visibili scorrendo la pagina. Annulla la carosello orizzontale
   applicata a .cdlp-certificazioni__grid sotto i 640px e torna a una griglia
   a 2 colonne. Le sezioni teaser (home, azienda) restano un carosello. */
@media (max-width: 640px) {
	.cdlp-certificazioni.is-plain .cdlp-certificazioni__grid {
		display: grid;
		grid-template-columns: repeat(2, 1fr);
		overflow-x: visible;
		scroll-snap-type: none;
		margin-right: 0;
		gap: 0.75rem;
		padding-bottom: 0;
	}
	.cdlp-certificazioni.is-plain .cdlp-certificazioni__grid > .cdlp-cert-card {
		flex: none;
		scroll-snap-align: none;
		/* A due colonne su telefono la card è ~165px: il padding desktop di 2rem
		   lascerebbe pochissimo spazio al logo. */
		padding: 1rem;
	}
}

/* Marquee in blocchi core (pattern "Testo scorrevole"): reset dei margini dei
   paragrafi-item e breakout full-bleed quando usato nel contenuto pagina. */
.cdlp-marquee__track > * {
	margin: 0;
}
.cdlp-marquee.is-bleed {
	width: auto;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
}

/* Card CTA: il Cover core forza color:inherit (bianco) sui titoli interni —
   dentro la card bianca il titolo deve restare scuro. */
.cdlp-cta-card,
.wp-block-cover .cdlp-cta-card__title:not(.has-text-color) {
	color: var(--wp--preset--color--heading);
}

/* Marquee full-bleed: annulla anche il max-width del layout constrained
   (i gruppi senza alignfull restano altrimenti a 1280px). */
.cdlp-marquee.is-bleed {
	max-width: none !important;
}

/* Il contenuto pagina termina spesso con sezioni full-bleed (CTA banner,
   marquee): il footer deve attaccarsi senza il blockGap di wp-site-blocks. */
.wp-site-blocks > footer.wp-block-template-part {
	margin-block-start: 0;
}

/* =========================================================
   Single Progetto (templates/single-progetto.html)
   ========================================================= */
/* Intestazione: eyebrow (categoria) + titolo + corpo su due colonne.
   Top padding tight (0.6rem = 10% of the original xl) so the title sits close
   under the header; bottom keeps the xl gap toward the cover. */
.cdlp-progetto-hero {
	padding-block: 0.6rem var(--wp--preset--spacing--xl);
}
.cdlp-progetto-hero__head {
	display: grid;
	grid-template-columns: 60% 1fr;
	gap: 100px;
	align-items: center;
	width: 100%;
}
.cdlp-progetto-hero__title-wrap {
	min-width: 0;
}
/* post-terms renders a <div> of category links; keep it on the eyebrow style. */
.cdlp-progetto-hero__tipo {
	margin: 0 0 0.5rem;
}
.cdlp-progetto-hero__tipo a {
	color: inherit;
	text-decoration: none;
}
.cdlp-progetto-hero__title {
	font-family: var(--wp--preset--font-family--sora);
	/* Match the reference .section-heading sizing (caps at 2.75rem / 44px). */
	font-size: clamp(2rem, 1.2vw + 1.7rem, 2.75rem);
	line-height: 1.295;
	margin: 0;
}
/* Right column = the Gutenberg post body (post-content). Style its text as the
   lead paragraph shown in the reference; neutralize the block's default margins. */
.cdlp-progetto-hero__body {
	min-width: 0;
	margin: 0;
	color: var(--wp--preset--color--body);
	font-size: 1.25rem;
	font-weight: 400;
	line-height: 1.4;
}
.cdlp-progetto-hero__body > * {
	margin-block: 0;
}
.cdlp-progetto-hero__body > * + * {
	margin-block-start: 1rem;
}
@media (max-width: 768px) {
	.cdlp-progetto-hero__head {
		display: flex;
		flex-direction: column;
		gap: var(--wp--preset--spacing--md);
	}
	.cdlp-progetto-hero__body {
		font-size: 1.0625rem;
	}
}

/* Copertina: immagine rappresentativa + barra info (block: progetto-cover).
   Il blocco usa align:wide (max 1560px, centrato con margini simmetrici gestiti
   dal core — niente breakout in vw, che con la scrollbar dava margini asimmetrici).
   La card resta larga quanto il blocco con un piccolo margine laterale. */
.cdlp-progetto-cover {
	/* The hero's 96px padding-bottom already provides the gap (as in the
	   reference); cancel the constrained-layout blockGap so they sit flush. */
	margin-block-start: 0 !important;
	/* Bottom gap +50% (40px → 60px) before the next block. */
	margin-block-end: 60px !important;
}
.cdlp-progetto-cover__card {
	/* The section is already inset by the root padding (theme.json), so the card
	   sits flush inside it — it used to subtract its own 2rem, which stacked on
	   top of the root padding and pushed the card to 32px on mobile. */
	width: 100%;
	border-radius: 20px;
	overflow: hidden;
}
.cdlp-progetto-cover__media {
	position: relative;
	display: block;
	width: 100%;
	overflow: hidden;
}
.cdlp-progetto-cover__img {
	display: block;
	width: 100%;
	height: 100%;
	aspect-ratio: 16 / 9;
	object-fit: cover;
}
.cdlp-progetto-cover__bar {
	display: flex;
	flex-wrap: wrap;
	/* Top-align so the (reduced) top padding governs the gap above the labels;
	   centering + a tall min-height would otherwise mask it. */
	align-items: flex-start;
	gap: 12rem;
	min-height: 140px;
	/* Top ~2.03rem; bottom reduced 20% then 10% more (2.5rem → 1.8rem). */
	padding: 2.03rem var(--wp--preset--spacing--lg) 1.8rem;
	background-color: var(--wp--preset--color--section);
}
.cdlp-progetto-cover__bar-item strong {
	display: block;
	margin-bottom: 0.4rem;
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: clamp(1.0625rem, 1.033vw + 0.82rem, 1.75rem); /* 17 → 28px */
}
.cdlp-progetto-cover__bar-item span {
	display: block;
	color: var(--wp--preset--color--muted);
	font-size: clamp(0.9375rem, 0.47vw + 0.828rem, 1.25rem); /* 15 → 20px */
	font-weight: 400;
	line-height: 1.4;
}
@media (max-width: 640px) {
	.cdlp-progetto-cover__bar {
		gap: var(--wp--preset--spacing--md);
		padding: var(--wp--preset--spacing--md);
	}
}

/* Project image gallery (block: costruzioni-dallape/progetto-gallery) —
   horizontal carousel of landscape rounded images that bleed off both edges,
   with circular terracotta prev/next arrows centered below (view.js scrolls it). */
.cdlp-progetto-gallery {
	margin-block: 2.5rem 3rem;
	/* Break back out of the root padding (theme.json) instead of using 100vw, so
	   the track spans the full screen while its own left gutter still resolves
	   against the page column. This makes the first image start flush with the
	   content's left edge; the remaining images bleed off the right screen edge.
	   Using negative margins rather than 100vw avoids the horizontal-scroll
	   footgun when a scrollbar is present. */
	width: auto;
	max-width: none;
	/* !important: WP core forces `margin-left/right: auto !important` on every
	   child of a constrained layout, which would cancel the breakout. */
	margin-left: calc(-1 * var(--wp--style--root--padding-left)) !important;
	margin-right: calc(-1 * var(--wp--style--root--padding-right)) !important;
}
.cdlp-progetto-gallery__track {
	display: flex;
	gap: var(--wp--preset--spacing--md);
	overflow-x: auto;
	scrollbar-width: none;
	/* First image aligns with the cover card above it (align:wide edge + 1rem
	   inset), not the narrower content column; the rest bleed off the right. */
	padding-inline: calc(max(0px, (100% - var(--wp--style--global--wide-size, 1560px)) / 2) + var(--cdlp-gutter)) 0;
}
.cdlp-progetto-gallery__track::-webkit-scrollbar {
	display: none;
}
.cdlp-gallery-item {
	position: relative;
	flex: 0 0 450px;
	margin: 0;
	padding: 0;
	border: 0;
	background: none;
	aspect-ratio: 9 / 7;
	border-radius: 2rem;
	overflow: hidden;
	cursor: pointer;
}
.cdlp-progetto-gallery__img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	transition: opacity 0.3s ease;
}
/* Hover: dim the image and reveal a blue circle with the search icon centered. */
.cdlp-gallery-item:hover .cdlp-progetto-gallery__img,
.cdlp-gallery-item:focus-visible .cdlp-progetto-gallery__img {
	opacity: 0.7;
}
.cdlp-gallery-item::after {
	content: "";
	position: absolute;
	top: 50%;
	left: 50%;
	width: 56px;
	height: 56px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--primary);
	background-image: url("data:image/svg+xml,%3Csvg width='24' height='24' viewBox='0 0 24 24' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M21 21L16.65 16.65M11 6C13.7614 6 16 8.23858 16 11M19 11C19 15.4183 15.4183 19 11 19C6.58172 19 3 15.4183 3 11C3 6.58172 6.58172 3 11 3C15.4183 3 19 6.58172 19 11Z' stroke='%23E9E4E0' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: center;
	background-size: 24px 24px;
	opacity: 0;
	transform: translate(-50%, -50%) scale(0.8);
	transition: opacity 0.25s ease, transform 0.25s ease;
	pointer-events: none;
}
.cdlp-gallery-item:hover::after,
.cdlp-gallery-item:focus-visible::after {
	opacity: 1;
	transform: translate(-50%, -50%) scale(1);
}

/* Lightbox opened on image click (built by view.js, appended to <body>). */
.cdlp-lightbox {
	position: fixed;
	inset: 0;
	z-index: 9999;
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 5vh 6vw;
	background: rgba(0, 20, 45, 0.92);
}
.cdlp-lightbox[hidden] {
	display: none;
}
.cdlp-lightbox__img {
	max-width: 100%;
	max-height: 90vh;
	object-fit: contain;
	border-radius: 1rem;
}
.cdlp-lightbox__btn {
	position: absolute;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 56px;
	height: 56px;
	border: 1.5px solid rgba(255, 255, 255, 0.7);
	border-radius: 50%;
	background: transparent;
	color: #fff;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.cdlp-lightbox__btn:hover {
	background: #fff;
	color: var(--wp--preset--color--primary);
}
.cdlp-lightbox__btn svg {
	width: 26px;
	height: 26px;
}
.cdlp-lightbox__close {
	top: 4vh;
	right: 4vw;
}
.cdlp-lightbox__btn.is-prev {
	left: 3vw;
	top: 50%;
	transform: translateY(-50%);
}
.cdlp-lightbox__btn.is-next {
	right: 3vw;
	top: 50%;
	transform: translateY(-50%);
}
@media (max-width: 640px) {
	.cdlp-lightbox__btn {
		width: 44px;
		height: 44px;
	}
	.cdlp-lightbox__btn.is-prev {
		left: 1rem;
	}
	.cdlp-lightbox__btn.is-next {
		right: 1rem;
	}
}
.cdlp-progetto-gallery__nav {
	display: flex;
	justify-content: center;
	gap: 0.75rem;
	margin-top: var(--wp--preset--spacing--md);
}
.cdlp-progetto-gallery__nav button {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 68px;
	height: 68px;
	border-radius: 50%;
	border: 1.5px solid var(--wp--preset--color--accent);
	background: transparent;
	color: var(--wp--preset--color--accent);
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.cdlp-progetto-gallery__nav button:hover {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
}
.cdlp-progetto-gallery__nav svg {
	width: 28px;
	height: 28px;
}
@media (max-width: 1024px) {
	.cdlp-gallery-item {
		flex-basis: 320px;
	}
}
@media (max-width: 640px) {
	.cdlp-progetto-gallery__track {
		gap: 0.75rem;
		padding-inline: var(--cdlp-gutter);
	}
	.cdlp-gallery-item {
		flex-basis: 75vw;
	}
	.cdlp-progetto-gallery__nav button {
		width: 48px;
		height: 48px;
	}
	.cdlp-progetto-gallery__nav svg {
		width: 20px;
		height: 20px;
	}
}

/* =========================================================
   Pagina Contatti (pattern) — hero: varianti dell'intro pagina
   ========================================================= */
.cdlp-page-intro.is-flush {
	padding-block-end: 0;
}
/* Rassegna stampa & Sicurezza: wider intro subtitle text box than the 950px base. */
.page-id-933 .cdlp-page-intro__subtitle,
.page-id-931 .cdlp-page-intro__subtitle {
	max-width: 1150px;
}
/* The reference intro spacing (formerly progetti-only "is-tight-top") and the
   864px subtitle are now the base defaults, so every page's intro matches.
   is-tight-top / is-wide remain as no-ops for existing page markup; is-flush
   still zeroes the bottom padding (e.g. Contatti). */

/* =========================================================
   Pagina Contatti — card info + form (pattern)
   ========================================================= */
.cdlp-contatti-info {
	padding-block: var(--wp--preset--spacing--xl);
}
.cdlp-contatti-info > *,
.cdlp-contatti-info__top > *,
.cdlp-contatti-card > *,
.cdlp-contatti-form-card > * {
	margin-block-start: 0;
}
.cdlp-contatti-info__top {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 1rem;
	margin-bottom: 1rem;
}
.cdlp-contatti-card {
	background-color: var(--wp--preset--color--section);
	border-radius: var(--cdlp-radius-md);
	padding: 2rem var(--wp--preset--spacing--md);
	text-align: center;
}
.cdlp-contatti-card__icon,
.cdlp-contatti-form-card__icon {
	width: 40px;
	height: 40px;
	color: var(--wp--preset--color--accent);
	margin-inline: auto;
	margin-bottom: var(--wp--preset--spacing--sm);
	display: block;
}
/* Le tre icone (telefono, sede, messaggio) arrivano dalla Libreria media come
   core/image: la classe sta sulla <figure>, quindi serve annullare i margini di
   .wp-block-image e far riempire l'<img>. Il colore accent e' incorporato nei
   file SVG perche' currentColor non si eredita dentro un <img>. */
figure.cdlp-contatti-card__icon,
figure.cdlp-contatti-form-card__icon {
	margin: 0 auto var(--wp--preset--spacing--sm);
}
figure.cdlp-contatti-card__icon img,
figure.cdlp-contatti-form-card__icon img {
	width: 100%;
	height: 100%;
	object-fit: contain;
}
.cdlp-contatti-card__label {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: clamp(1.1875rem, 0.282vw + 1.122rem, 1.375rem); /* 19 → 22px */
	color: var(--wp--preset--color--text);
	margin-bottom: 0.4rem;
}
.cdlp-contatti-card__value {
	color: var(--wp--preset--color--muted);
	font-size: 1.125rem;
	line-height: 1.4;
}
.cdlp-contatti-card__value a {
	color: inherit;
	text-decoration: none;
}
.cdlp-contatti-card__value a:hover {
	color: var(--wp--preset--color--accent);
}

/* Card form */
.cdlp-contatti-form-card {
	background-color: var(--wp--preset--color--section);
	border-radius: var(--cdlp-radius-md);
	padding: 2rem var(--wp--preset--spacing--md);
	text-align: center;
}
.cdlp-contatti-form-card__title {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: clamp(1.25rem, 0.376vw + 1.162rem, 1.5rem); /* 20 → 24px */
	color: var(--wp--preset--color--text);
	margin-bottom: 3rem;
}

/* Fluent Forms dentro la card: allineato al design del form statico */
.cdlp-contatti-form-card .fluentform {
	max-width: 640px;
	margin-inline: auto;
	text-align: left;
}
.cdlp-contatti-form-card .ff-el-input--label label {
	font-size: 0.95rem;
	font-weight: 400;
	color: var(--wp--preset--color--text);
}
.cdlp-contatti-form-card .ff-el-input--label.ff-el-is-required.asterisk-right label:after {
	color: var(--wp--preset--color--accent);
}
.cdlp-contatti-form-card .ff-el-form-control {
	background-color: var(--wp--preset--color--white);
	border: 2px solid transparent;
	border-radius: 0.6rem;
	padding: 0.875rem 1rem;
	font-size: 1rem;
	color: var(--wp--preset--color--text);
	width: 100%;
	outline: none;
	transition: border-color 0.2s ease;
	box-shadow: none;
}
.cdlp-contatti-form-card .ff-el-form-control:hover,
.cdlp-contatti-form-card .ff-el-form-control:focus {
	border-color: var(--wp--preset--color--accent);
}
.cdlp-contatti-form-card textarea.ff-el-form-control {
	resize: vertical;
	min-height: 140px;
}
.cdlp-contatti-form-card input[type="checkbox"],
.cdlp-contatti-form-card input[type="radio"] {
	width: 1.25rem;
	height: 1.25rem;
	accent-color: var(--wp--preset--color--accent);
	flex-shrink: 0;
	margin-right: 0.6rem;
}
.cdlp-contatti-form-card .ff-el-form-check-label {
	display: flex;
	align-items: center;
}
.cdlp-contatti-form-card .ff-el-form-check-label a,
.cdlp-contatti-form-card .ff_gdpr_field a {
	color: var(--wp--preset--color--accent);
	text-decoration: underline;
}
.cdlp-contatti-form-card .ff-el-form-check-label a:hover,
.cdlp-contatti-form-card .ff_gdpr_field a:hover {
	color: var(--wp--preset--color--accent-dark);
}
.cdlp-contatti-form-card .ff-btn-submit {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 60px;
	padding: 0 2rem;
	background-color: var(--wp--preset--color--accent) !important;
	color: var(--wp--preset--color--white) !important;
	border: none !important;
	border-radius: var(--cdlp-radius-pill) !important;
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 1rem;
	cursor: pointer;
	transition: background-color 0.25s ease;
}
.cdlp-contatti-form-card .ff-btn-submit:hover {
	background-color: var(--wp--preset--color--accent-dark);
}

/* Messaggio di conferma dopo l'invio */
.cdlp-contatti-form-card .ff-message-success {
	border: none;
	box-shadow: none;
	background: none;
	margin-top: 0;
	padding: 2rem 0;
}
.cdlp-form-success {
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	gap: 0.75rem;
}
.cdlp-form-success__icon {
	width: 56px;
	height: 56px;
	color: var(--cdlp-success, #1f8a4c);
	flex-shrink: 0;
}
.cdlp-form-success__title {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 700;
	font-size: 1.25rem;
	line-height: 1.3;
	color: var(--wp--preset--color--heading);
	margin: 0;
}
.cdlp-form-success__text {
	font-size: 1rem;
	line-height: 1.5;
	color: var(--wp--preset--color--body);
	margin: 0;
	max-width: 34ch;
}

@media (max-width: 640px) {
	.cdlp-contatti-info__top {
		grid-template-columns: 1fr;
	}
	.cdlp-contatti-form-card {
		padding: var(--wp--preset--spacing--lg) var(--wp--preset--spacing--sm);
	}
}

/* =========================================================
   Pagina Contatti — Dati societari (pattern)
   ========================================================= */
.cdlp-contatti-societa {
	padding-block-start: var(--wp--preset--spacing--xl);
	padding-block-end: var(--wp--preset--spacing--lg);
}
.cdlp-contatti-societa__body {
	gap: var(--wp--preset--spacing--xl);
}
.cdlp-contatti-societa__media .wp-block-image {
	margin: 0;
	border-radius: 1.5rem;
	overflow: hidden;
	aspect-ratio: 668 / 652;
}
.cdlp-contatti-societa__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}
.cdlp-contatti-societa__text h2 {
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-contatti-societa__data {
	margin-bottom: var(--wp--preset--spacing--lg);
}
.cdlp-contatti-societa__data-item {
	color: var(--wp--preset--color--body);
	font-size: 1.125rem;
	line-height: 1.5;
	padding-block: 0.5rem;
	margin: 0;
}

/* =========================================================
   Pagina Contatti — Trasparenza (pattern)
   ========================================================= */
.cdlp-contatti-trasparenza {
	padding-block: var(--wp--preset--spacing--lg);
}
.cdlp-contatti-trasparenza > * {
	margin-block-start: 0;
}
.cdlp-contatti-trasparenza__title {
	font-size: clamp(1.75rem, 2vw + 1.2rem, 2.75rem);
	font-weight: 700;
	color: var(--wp--preset--color--text);
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-contatti-trasparenza__text {
	color: var(--wp--preset--color--body);
	font-size: 1.125rem;
	line-height: 1.7;
}
.cdlp-contatti-trasparenza__text a {
	color: var(--wp--preset--color--body);
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--muted);
	text-underline-offset: 3px;
	word-break: break-all;
}
.cdlp-contatti-trasparenza__text a:hover {
	text-decoration-color: var(--wp--preset--color--body);
}

/* =========================================================
   Pagina Contatti — Lavora con noi (pattern)
   ========================================================= */
.cdlp-contatti-lavora {
	padding-block: var(--wp--preset--spacing--lg);
	scroll-margin-top: calc(var(--cdlp-header-height) + 1rem);
}
.cdlp-contatti-lavora__card {
	background-color: var(--wp--preset--color--section);
	border-radius: 1.5rem;
	padding: 3rem;
	max-width: 1060px;
	margin-inline: auto;
}
.cdlp-contatti-lavora__card > * {
	margin-block-start: 0;
}
.cdlp-contatti-lavora__title {
	font-size: clamp(1.75rem, 2vw + 1.2rem, 2.75rem);
	font-weight: 700;
	color: var(--wp--preset--color--text);
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-contatti-lavora__text {
	color: var(--wp--preset--color--body);
	font-size: 1.125rem;
	line-height: 1.6;
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-contatti-lavora__positions-label {
	color: var(--wp--preset--color--body);
	font-size: 1.125rem;
	margin-bottom: 0.75rem;
}
.cdlp-contatti-lavora .cdlp-check-list li {
	font-size: 1.125rem;
}
hr.cdlp-contatti-lavora__divider {
	border: 0;
	width: 100%;
	max-width: none;
	height: 1px;
	background-color: var(--wp--preset--color--muted);
	margin-block: 1.5rem;
}
.cdlp-contatti-lavora__email {
	color: var(--wp--preset--color--body);
	font-size: 1.125rem;
}
.cdlp-contatti-lavora__email a {
	color: var(--wp--preset--color--body);
	text-decoration: underline;
	text-decoration-color: var(--wp--preset--color--accent);
	text-underline-offset: 3px;
}
.cdlp-contatti-lavora__email a:hover {
	color: var(--wp--preset--color--accent);
}

/* These Contatti sections are centred at 1280px by the constrained parent on
   desktop; below the content-size the side gutter comes from the root padding
   (theme.json styles.spacing.padding). */

/* Check-list condivisa (spunte blu) — stessa resa della lista servizi */
.cdlp-check-list {
	list-style: none;
	padding-left: 0;
	display: flex;
	flex-direction: column;
	gap: 0.75rem;
	margin-block: 0;
}
.cdlp-check-list li {
	display: flex;
	align-items: center;
	gap: 0.85rem;
	font-size: 1rem;
	color: var(--wp--preset--color--body);
	margin: 0;
}
.cdlp-check-list li::before {
	content: "";
	width: 22px;
	height: 22px;
	flex-shrink: 0;
	background: url('data:image/svg+xml,%3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 22"%3E%3Ccircle cx="11" cy="11" r="11" fill="%2300408f"/%3E%3Cpolyline points="6,11.5 9.5,15 16,8" fill="none" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/%3E%3C/svg%3E') no-repeat center / contain;
}

/* =========================================================
   Progetti — griglia con filtri (custom block, archivio)
   ========================================================= */
.cdlp-progetti-grid {
	background-color: var(--wp--preset--color--section);
	/* Full-bleed come .cdlp-progetti (align:full capped nel layout constrained) */
	width: auto;
	margin-left: calc(50% - 50vw) !important;
	margin-right: calc(50% - 50vw) !important;
	padding-block: var(--wp--preset--spacing--xl);
}
.cdlp-progetti-grid__inner {
	width: 100%;
	box-sizing: border-box;
	max-width: calc(1280px + 2rem);
	margin-inline: auto;
	padding-inline: var(--cdlp-gutter);
}
.cdlp-progetti-grid__filters {
	display: flex;
	justify-content: center;
	flex-wrap: wrap;
	gap: 1.242rem;
	margin-bottom: var(--wp--preset--spacing--lg);
}
.cdlp-filtro-btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 60px;
	padding-inline: 1.75rem;
	border-radius: var(--cdlp-radius-pill);
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 1.125rem;
	line-height: 1;
	border: 1px solid var(--wp--preset--color--accent);
	color: var(--wp--preset--color--accent);
	background-color: transparent;
	cursor: pointer;
	transition: background-color 0.2s ease, color 0.2s ease;
}
.cdlp-filtro-btn:hover,
.cdlp-filtro-btn.is-active {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
}
.cdlp-progetti-grid__list {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 1.28rem; /* spacing-md (2rem) ridotto ~36% (20% + 20%) */
}
.cdlp-progetti-grid__more {
	display: flex;
	justify-content: center;
	margin-top: var(--wp--preset--spacing--lg);
}
.cdlp-progetti-grid__more:has(> button[hidden]) {
	display: none;
}
.cdlp-filtri-select-wrap {
	display: none;
}

@media (max-width: 1024px) {
	.cdlp-progetti-grid__list {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 640px) {
	.cdlp-progetti-grid__filters {
		display: none;
	}
	.cdlp-filtri-select-wrap {
		display: block;
		position: relative;
		margin-bottom: var(--wp--preset--spacing--lg);
	}
	.cdlp-filtri-select {
		appearance: none;
		-webkit-appearance: none;
		width: 100%;
		height: 56px;
		padding-inline: 1.25rem 3rem;
		border-radius: var(--cdlp-radius-pill);
		border: 2px solid var(--wp--preset--color--accent);
		font-family: var(--wp--preset--font-family--sora);
		font-weight: 600;
		font-size: 1rem;
		color: var(--wp--preset--color--accent);
		background-color: transparent;
		cursor: pointer;
	}
	.cdlp-filtri-select:focus {
		outline: none;
		background-color: color-mix(in srgb, var(--wp--preset--color--accent) 6%, transparent);
	}
	.cdlp-filtri-select__chevron {
		position: absolute;
		right: 1.25rem;
		top: 50%;
		transform: translateY(-50%);
		width: 20px;
		height: 20px;
		color: var(--wp--preset--color--accent);
		pointer-events: none;
	}
	.cdlp-progetti-grid__list {
		grid-template-columns: 1fr;
	}
}

/* Filtri: .cdlp-card definisce un proprio display, che vince
   sull'attributo hidden — qui ripristiniamo la semantica. */
.cdlp-progetti-grid__list .cdlp-card[hidden] {
	display: none;
}

/* =========================================================
   Pagina Azienda — Una squadra, una garanzia (team)
   ========================================================= */
.cdlp-azienda-team {
	padding-block-start: 0;
	padding-block-end: var(--wp--preset--spacing--xl);
}
.cdlp-azienda-team > *,
.cdlp-azienda-team__intro > *,
.cdlp-azienda-team__group > *,
.cdlp-azienda-team__grid > *,
.cdlp-team-card > * {
	margin-block-start: 0;
}
.cdlp-azienda-team__intro {
	padding-bottom: 1.8rem;
	border-bottom: 1px solid var(--wp--preset--color--border);
	margin-bottom: 5.5rem;
}
.cdlp-azienda-team__intro .cdlp-section-heading {
	margin: 0.25rem 0 1rem;
}
.cdlp-azienda-team__lead {
	color: var(--wp--preset--color--body);
	font-size: 1.25rem;
	line-height: 1.5;
}
.cdlp-azienda-team__group {
	margin-bottom: var(--wp--preset--spacing--xl);
}
.cdlp-azienda-team__group:last-child {
	margin-bottom: 0;
}
.cdlp-azienda-team__group-title {
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(1.375rem, 0.563vw + 1.243rem, 1.75rem); /* 22 → 28px */
	font-weight: 600;
	color: var(--wp--preset--color--primary);
	margin-bottom: var(--wp--preset--spacing--md);
}
.cdlp-azienda-team__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	row-gap: 1rem;
	column-gap: 2.25rem;
	padding-left: var(--cdlp-gutter);
}
/* Dipendenti archive has no group-title above the grid, so drop the azienda
   left indent — cards stay symmetric within the section's side gutter. */
.cdlp-azienda-team--dipendenti .cdlp-azienda-team__grid {
	padding-left: 0;
}
.cdlp-team-card {
	position: relative;
	background-color: var(--wp--preset--color--section);
	border-radius: 1rem;
	padding: 2.1rem 1.75rem;
}
.cdlp-team-card::before {
	content: "";
	position: absolute;
	left: -1rem;
	top: 0;
	width: 0.5rem;
	height: 100%;
	background-color: var(--wp--preset--color--section);
	border-radius: var(--cdlp-radius-pill);
}
.cdlp-team-card__name {
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(1.25rem, 0.376vw + 1.162rem, 1.5rem); /* 20 → 24px */
	font-weight: 400;
	color: var(--wp--preset--color--heading);
	margin-bottom: 0.5rem;
	line-height: 1.2;
}
.cdlp-team-card__meta {
	font-size: 1rem;
	font-weight: 600;
	color: var(--wp--preset--color--heading);
}
.cdlp-team-card--link {
	display: block;
	text-decoration: none;
	color: inherit;
}
.cdlp-team-card--link:hover .cdlp-team-card__name,
.cdlp-team-card--link:focus-visible .cdlp-team-card__name {
	text-decoration: underline;
	text-underline-offset: 0.15rem;
}
.cdlp-team-card--cta {
	background-color: var(--wp--preset--color--accent);
}
.cdlp-team-card--cta::before {
	background-color: var(--wp--preset--color--accent);
}
.cdlp-team-card--cta .cdlp-team-card__name {
	color: var(--wp--preset--color--white);
}
.cdlp-team-card__cta-link {
	color: var(--wp--preset--color--white);
	font-size: 0.95rem;
	font-weight: 600;
	text-decoration: underline;
	text-underline-offset: 0.15rem;
}
.cdlp-team-card__cta-link:hover,
.cdlp-team-card__cta-link:focus-visible {
	text-decoration: none;
}
@media (max-width: 768px) {
	.cdlp-azienda-team__grid {
		grid-template-columns: 1fr 1fr;
	}
}
@media (max-width: 480px) {
	.cdlp-azienda-team__grid {
		grid-template-columns: 1fr;
	}
}

/* =========================================================
   Dipendente — scheda dettaglio (pagina singola / QR)
   ========================================================= */
.cdlp-dip-dettaglio {
	max-width: 46rem;
	margin-block-start: var(--wp--preset--spacing--lg);
	padding-block-end: 5rem;
}
.cdlp-dip-meta {
	margin: 0 0 var(--wp--preset--spacing--xl);
	padding: 0;
}
.cdlp-dip-meta__row {
	display: grid;
	grid-template-columns: 12rem 1fr;
	gap: 0.5rem 1.5rem;
	padding: 0.85rem 0;
	border-bottom: 1px solid var(--wp--preset--color--border);
}
.cdlp-dip-meta__row:first-child {
	border-top: 1px solid var(--wp--preset--color--border);
}
.cdlp-dip-meta dt {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	color: var(--wp--preset--color--primary);
	margin: 0;
}
.cdlp-dip-meta dd {
	margin: 0;
	color: var(--wp--preset--color--body);
}
.cdlp-dip-docs__title {
	font-family: var(--wp--preset--font-family--sora);
	font-size: clamp(1.375rem, 0.563vw + 1.243rem, 1.75rem);
	font-weight: 600;
	color: var(--wp--preset--color--primary);
	margin: 0 0 var(--wp--preset--spacing--md);
}
.cdlp-dip-docs__list {
	list-style: none;
	margin: 0;
	padding: 0;
}
.cdlp-dip-docs__item {
	display: flex;
	flex-wrap: wrap;
	align-items: baseline;
	justify-content: space-between;
	gap: 0.25rem 1rem;
	padding: 0.85rem 0;
	border-bottom: 1px solid var(--wp--preset--color--border);
}
.cdlp-dip-docs__item:first-child {
	border-top: 1px solid var(--wp--preset--color--border);
}
.cdlp-dip-docs__link {
	display: inline-flex;
	align-items: center;
	gap: 0.6rem;
	font-weight: 600;
	color: var(--wp--preset--color--heading);
	text-decoration: none;
}
.cdlp-dip-docs__link:hover,
.cdlp-dip-docs__link:focus-visible {
	text-decoration: underline;
	text-underline-offset: 0.15rem;
}
.cdlp-dip-docs__pdf {
	font-size: 0.7rem;
	font-weight: 700;
	letter-spacing: 0.04em;
	color: var(--wp--preset--color--white);
	background-color: var(--wp--preset--color--accent);
	border-radius: var(--cdlp-radius-pill);
	padding: 0.15rem 0.5rem;
}
.cdlp-dip-docs__date {
	font-size: 0.9rem;
	color: var(--wp--preset--color--body);
}
.cdlp-dip-docs__empty {
	color: var(--wp--preset--color--body);
}
@media (max-width: 600px) {
	.cdlp-dip-meta__row {
		grid-template-columns: 1fr;
		gap: 0.15rem;
	}
}

/* =========================================================
   Pagina Azienda — Politica della qualità
   ========================================================= */
.cdlp-azienda-qualita {
	/* Full-bleed background while the content stays constrained/aligned with
	   the rest of the page: paint the background as a 100vw ::before layer
	   instead of breaking the section out with negative margins. */
	position: relative;
	z-index: 0;
	padding-block: var(--wp--preset--spacing--xl);
}
.cdlp-azienda-qualita::before {
	content: "";
	position: absolute;
	inset-block: 0;
	left: 50%;
	width: 100vw;
	transform: translateX(-50%);
	background-color: var(--wp--preset--color--section);
	z-index: -1;
}
.cdlp-azienda-qualita > *,
.cdlp-azienda-qualita__body > *,
.cdlp-azienda-qualita__text > * {
	margin-block-start: 0;
}
.cdlp-azienda-qualita__body {
	display: grid;
	/* minmax(0, …) — necessario: con `1fr 1fr` la traccia auto-minima veniva
	   forzata dalla larghezza fissa dell'immagine (680px), così sotto ~1200px
	   la colonna testo usciva dal gutter destro. Il rapporto 680:472 mantiene
	   le proporzioni desktop di riferimento e ora scala invece di sbordare. */
	grid-template-columns: minmax(0, 680fr) minmax(0, 472fr);
	gap: var(--wp--preset--spacing--xl);
	align-items: center;
}
.cdlp-azienda-qualita__media,
.cdlp-azienda-qualita__text {
	min-width: 0;
}
.cdlp-azienda-qualita__media {
	width: 100%;
	max-width: 42.5rem;
	aspect-ratio: 1 / 1;
	margin: 0;
}
.cdlp-azienda-qualita__media .wp-block-image {
	margin: 0;
	width: 100%;
	height: 100%;
}
.cdlp-azienda-qualita__media img {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
	border-radius: var(--cdlp-radius-md);
}
.cdlp-azienda-qualita__text .cdlp-section-heading {
	margin-bottom: var(--wp--preset--spacing--md);
}
.cdlp-azienda-qualita__text p {
	color: var(--wp--preset--color--body);
	font-size: 1.0625rem;
	line-height: 1.5;
	margin-bottom: var(--wp--preset--spacing--lg);
}
.cdlp-azienda-qualita__cta {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	height: 3.75rem;
	padding-inline: 1.75rem;
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
	border: 2px solid var(--wp--preset--color--accent);
	border-radius: var(--cdlp-radius-pill);
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 1.125rem;
	line-height: 1;
	max-width: 100%;
	text-align: center;
	text-decoration: none;
	transition: background-color 0.25s ease, border-color 0.25s ease;
}
.cdlp-azienda-qualita__cta:hover {
	background-color: var(--wp--preset--color--primary);
	border-color: var(--wp--preset--color--primary);
	color: var(--wp--preset--color--white);
}
/* Fascia intermedia: due colonne ancora affiancate ma strette — gap ridotto e
   CTA che può andare a capo invece di spingere fuori dal gutter. */
@media (max-width: 1200px) {
	.cdlp-azienda-qualita__body {
		gap: var(--wp--preset--spacing--lg);
	}
	.cdlp-azienda-qualita__cta {
		height: auto;
		min-height: 3.75rem;
		padding-block: 0.75rem;
		line-height: 1.25;
	}
}
@media (max-width: 860px) {
	.cdlp-azienda-qualita__body {
		grid-template-columns: 1fr;
	}
	.cdlp-azienda-qualita__media {
		order: 2;
		max-width: none;
	}
	.cdlp-azienda-qualita__text {
		order: 1;
	}
}

/* =========================================================
   Pagina Azienda — Rassegna stampa (block: rassegna-stampa-grid)
   ========================================================= */
.cdlp-azienda-stampa {
	/* Slightly less space below the block (xl → lg) to tighten the gap to the
	   marquee / next section. */
	padding-block: var(--wp--preset--spacing--xl) var(--wp--preset--spacing--lg);
}
.cdlp-azienda-stampa__head {
	display: flex;
	align-items: flex-end;
	justify-content: space-between;
	gap: var(--wp--preset--spacing--lg);
	/* Tighter gap between the title and the divider line. */
	padding-bottom: var(--wp--preset--spacing--sm);
	border-bottom: 1px solid var(--wp--preset--color--border);
	margin-bottom: var(--wp--preset--spacing--lg);
}
.cdlp-azienda-stampa__head-text > * {
	margin-block-start: 0;
}
.cdlp-azienda-stampa__head-text .cdlp-section-heading {
	margin: 0.25rem 0 1rem;
}
.cdlp-azienda-stampa__lead {
	max-width: none;
	margin: 0;
}
.cdlp-azienda-stampa__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: var(--wp--preset--spacing--lg) var(--wp--preset--spacing--md);
}
.cdlp-stampa-item__meta {
	color: #767676;
	font-size: 1rem;
	margin-bottom: 0.75rem;
}
.cdlp-stampa-item__title {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: clamp(1.1875rem, 0.282vw + 1.122rem, 1.375rem); /* 19 → 22px */
	line-height: 1.3;
	color: var(--wp--preset--color--text);
	margin-bottom: 1rem;
}
/* Clickable title: looks like the heading, turns accent (brown) on hover. */
.cdlp-stampa-item__title a {
	color: inherit;
	text-decoration: none;
	transition: color 0.2s ease;
}
.cdlp-stampa-item__title a:hover,
.cdlp-stampa-item__title a:focus-visible {
	color: var(--wp--preset--color--accent);
}
.cdlp-stampa-item__link {
	position: relative;
	color: var(--wp--preset--color--body);
	font-size: 1rem;
	text-decoration: none;
	transition: color 0.25s ease;
}
.cdlp-stampa-item__link::after {
	content: "";
	position: absolute;
	left: 0;
	right: 0;
	bottom: -0.15rem;
	height: 1px;
	background-color: var(--wp--preset--color--accent-dark);
	opacity: 1;
	transition: opacity 0.25s ease;
}
.cdlp-stampa-item__link:hover,
.cdlp-stampa-item__link:focus-visible {
	color: var(--wp--preset--color--accent);
}
.cdlp-stampa-item__link:hover::after,
.cdlp-stampa-item__link:focus-visible::after {
	opacity: 0;
}
/* Bottone outline (dal riferimento .btn.btn-outline) */
.cdlp-btn-outline {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	flex-shrink: 0;
	/* border-box + max-width: non c'è un reset globale, quindi senza questi il
	   padding/bordo si sommavano alla larghezza e la pill sbordava dalla colonna. */
	box-sizing: border-box;
	max-width: 100%;
	height: 3.75rem;
	padding-inline: 1.75rem;
	background-color: transparent;
	color: var(--wp--preset--color--accent);
	border: 2px solid var(--wp--preset--color--accent);
	border-radius: var(--cdlp-radius-pill);
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 1.125rem;
	line-height: 1;
	white-space: nowrap;
	text-decoration: none;
	transition: background-color 0.25s ease, color 0.25s ease;
}
.cdlp-btn-outline:hover {
	background-color: var(--wp--preset--color--accent);
	color: var(--wp--preset--color--white);
}
/* Sotto i 640px un'etichetta lunga (es. "Leggi la nostra politica della
   qualità") con white-space:nowrap non poteva restringersi e usciva dalla
   colonna: qui la pill va a capo e cresce in altezza invece di sbordare. */
@media (max-width: 640px) {
	.cdlp-btn-outline {
		white-space: normal;
		height: auto;
		min-height: 3.75rem;
		padding-block: 0.75rem;
		text-align: center;
	}
}
.cdlp-azienda-stampa__cta-mobile {
	display: none;
}
@media (max-width: 768px) {
	.cdlp-azienda-stampa__head {
		flex-direction: column;
		align-items: flex-start;
	}
	.cdlp-azienda-stampa__grid {
		grid-template-columns: 1fr;
	}
}
@media (max-width: 640px) {
	/* Hide the whole CTA paragraph, not just the link inside it: an empty flex
	   item still collects the head's column gap, leaving a big void above the
	   divider. The button is re-rendered under the grid as __cta-mobile. */
	.cdlp-azienda-stampa__head .cdlp-azienda-stampa__cta {
		display: none;
	}
	.cdlp-azienda-stampa__cta-mobile {
		display: flex;
		justify-content: center;
		margin-top: var(--wp--preset--spacing--md);
	}
}

/* =========================================================
   Pagina Rassegna stampa — griglia completa (archive)
   block: rassegna-stampa-grid {"archive":true}
   ========================================================= */
.cdlp-stampa-page {
	/* Reduced top padding: the intro block above already provides ample bottom
	   spacing, so the grid sits closer to it. Bottom keeps the full xl gap. */
	padding-block: var(--wp--preset--spacing--md) var(--wp--preset--spacing--xl);
}
.cdlp-stampa-page__grid {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 0;
}
.cdlp-stampa-item--page {
	padding: var(--wp--preset--spacing--md) var(--wp--preset--spacing--md) var(--wp--preset--spacing--lg) 0;
	border-top: 1px solid var(--wp--preset--color--border);
}
.cdlp-stampa-item--page.is-hidden {
	display: none;
}
.cdlp-stampa-page__load-more {
	display: flex;
	justify-content: center;
	padding-top: var(--wp--preset--spacing--lg);
	border-top: 1px solid var(--wp--preset--color--border);
	margin-top: var(--wp--preset--spacing--md);
}
.cdlp-stampa-page__load-more:has(> button[hidden]) {
	display: none;
}
@media (max-width: 900px) {
	.cdlp-stampa-page__grid {
		grid-template-columns: repeat(2, 1fr);
	}
}
@media (max-width: 600px) {
	.cdlp-stampa-page__grid {
		grid-template-columns: 1fr;
	}
	.cdlp-stampa-item--page {
		padding-right: 0;
	}
}

/* =========================================================
   Pagina Sicurezza — blocchi testo/immagine alternati (sic-block)
   ========================================================= */
.cdlp-sic-block {
	padding-block: var(--wp--preset--spacing--xl);
}
/* Consecutive blocks: no double gap, separated by a divider on the body. */
.cdlp-sic-block + .cdlp-sic-block {
	padding-block-start: 0;
}
.cdlp-sic-block__body {
	display: grid;
	/* minmax(0, …) — necessario: con `1fr` la traccia auto-minima viene forzata
	   dalla larghezza intrinseca dell'immagine (non c'è un reset globale su img),
	   così sotto la content-size la colonna sbordava a destra invece di scalare.
	   Stesso motivo di .cdlp-azienda-qualita__body. */
	grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
	gap: var(--wp--preset--spacing--xl);
	align-items: center;
}
.cdlp-sic-block__media,
.cdlp-sic-block__text {
	min-width: 0;
}
.cdlp-sic-block + .cdlp-sic-block .cdlp-sic-block__body {
	border-top: 1px solid var(--wp--preset--color--border);
	padding-top: var(--wp--preset--spacing--xl);
}
.cdlp-sic-block__media img {
	width: 100%;
	aspect-ratio: 4 / 3;
	object-fit: cover;
	border-radius: var(--cdlp-radius-md);
	display: block;
}
.cdlp-sic-block__text h2 {
	margin-bottom: var(--wp--preset--spacing--md);
}
.cdlp-sic-block__text p {
	font-size: 1.0625rem;
	line-height: 1.5;
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-sic-block__text p:last-child {
	margin-bottom: 0;
}
@media (max-width: 860px) {
	.cdlp-sic-block__body {
		grid-template-columns: minmax(0, 1fr);
		gap: var(--wp--preset--spacing--lg);
	}
}

/* =========================================================
   Pagine legali (privacy / cookie) — colonna di testo leggibile
   ========================================================= */
.cdlp-legal {
	max-width: 52rem;
	margin-inline: auto;
	padding-block: 0 var(--wp--preset--spacing--xl);
}
.cdlp-legal > h2 {
	margin-top: var(--wp--preset--spacing--lg);
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-legal > h2:first-child {
	margin-top: 0;
}
.cdlp-legal > p {
	line-height: 1.6;
	margin-bottom: var(--wp--preset--spacing--sm);
}

/* =========================================================
   Template 404 — pagina non trovata
   ========================================================= */
.cdlp-not-found__code {
	display: block;
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 800;
	font-size: clamp(5rem, 14vw, 10rem);
	line-height: 1;
	color: var(--wp--preset--color--section);
	letter-spacing: -0.03em;
	margin-bottom: 1.5rem;
}
.cdlp-not-found .cdlp-page-intro__title {
	margin-bottom: 1.5rem;
}
.cdlp-not-found .cdlp-page-intro__subtitle {
	margin-bottom: 0;
}
.cdlp-not-found .cdlp-not-found__actions {
	margin-top: 2.5rem;
	gap: var(--wp--preset--spacing--sm);
}

/* =========================================================
   Template Certificazione (dettaglio) — single-certificazione
   ========================================================= */
.cdlp-certif-hero {
	/* Same intro rhythm as .cdlp-page-intro on the other internal pages (the
	   top padding used to be xl and the bottom 0, which opened this template
	   lower and hung the gap off .cdlp-certif-body instead). Alignment stays
	   left here — only the vertical spacing is shared. */
	padding-block: var(--cdlp-intro-pad-top) var(--cdlp-intro-pad-bottom);
}
.cdlp-certif-hero__head {
	max-width: 780px;
}
.cdlp-certif-hero__head > * {
	margin-block: 0;
}
.cdlp-certif-hero__title {
	font-size: clamp(2.2rem, 1.859vw + 1.764rem, 3.4375rem); /* 35 → 55px */
	line-height: 1.2;
	font-weight: 700;
	color: var(--wp--preset--color--text);
	margin-block: 0.5rem 0;
}
.cdlp-certif-hero__anno {
	display: inline-flex;
	align-items: center;
	gap: 0.5rem;
	color: var(--wp--preset--color--muted);
	font-size: 1.125rem;
	font-weight: 400;
	margin-top: var(--wp--preset--spacing--sm);
}
.cdlp-certif-hero__anno-dot {
	display: inline-block;
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background-color: var(--wp--preset--color--accent);
	flex-shrink: 0;
}

.cdlp-certif-body {
	/* Top padding is 0 by the intro convention: the gap under the title comes
	   from .cdlp-certif-hero's bottom padding, exactly as the Certificazioni
	   listing hangs its gap off .cdlp-page-intro. Otherwise the two would
	   stack and this template would open ~10rem below the header. */
	padding-block: 0 var(--wp--preset--spacing--xl);
}
.cdlp-certif-body__grid {
	display: grid;
	grid-template-columns: 400px 1fr;
	gap: var(--wp--preset--spacing--xl);
	align-items: start;
}
.cdlp-certif-body__media-col {
	position: sticky;
	top: calc(var(--cdlp-header-height) + 2rem);
}
.cdlp-certif-body__media-card {
	display: flex;
	align-items: center;
	justify-content: center;
	background-color: var(--wp--preset--color--section);
	border-radius: var(--cdlp-radius-md);
	padding: var(--wp--preset--spacing--lg);
}
.cdlp-certif-body__media-card .cdlp-certif-media,
.cdlp-certif-body__media-card .wp-block-post-featured-image {
	width: 100%;
	margin: 0;
	display: flex;
	align-items: center;
	justify-content: center;
}
.cdlp-certif-body__media-card img {
	max-width: 90%;
	max-height: 720px;
	width: auto;
	height: auto;
	object-fit: contain;
}
.cdlp-certif-body__back {
	display: inline-flex;
	align-items: center;
	gap: 0.4rem;
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: 0.875rem;
	text-transform: uppercase;
	letter-spacing: 0.06em;
	color: var(--wp--preset--color--muted);
	text-decoration: none;
	transition: color 0.2s ease;
	margin-top: var(--wp--preset--spacing--sm);
}
.cdlp-certif-body__back:hover {
	color: var(--wp--preset--color--accent);
}
.cdlp-certif-body__back .cdlp-icon-arrow {
	width: 16px;
	height: 16px;
}
.cdlp-certif-body__content {
	padding-top: var(--wp--preset--spacing--sm);
	color: var(--wp--preset--color--body);
}
.cdlp-certif-body__content p {
	font-size: 1.0625rem;
	line-height: 1.7;
	margin-bottom: var(--wp--preset--spacing--md);
}
.cdlp-certif-body__content h2 {
	font-family: var(--wp--preset--font-family--sora);
	font-weight: 600;
	font-size: clamp(1.375rem, 0.563vw + 1.243rem, 1.75rem); /* 22 → 28px */
	line-height: 1.3;
	color: var(--wp--preset--color--text);
	margin-bottom: var(--wp--preset--spacing--sm);
}
.cdlp-certif-body__content a {
	color: var(--wp--preset--color--accent);
	text-decoration: underline;
	text-underline-offset: 3px;
}
.cdlp-certif-body__content img {
	max-width: 100%;
	height: auto;
}
@media (max-width: 860px) {
	.cdlp-certif-body__grid {
		grid-template-columns: 1fr;
		gap: var(--wp--preset--spacing--lg);
	}
	/* On phones the image comes first, then the copy, with the back link
	   last. `display: contents` lifts the card and the link out of the
	   media column so all three can be ordered directly in the grid. */
	.cdlp-certif-body__media-col {
		display: contents;
		position: static;
		top: auto;
	}
	.cdlp-certif-body__media-card {
		order: 1;
		padding: var(--wp--preset--spacing--md);
	}
	.cdlp-certif-body__content {
		order: 2;
	}
	.cdlp-certif-body__back {
		order: 3;
		justify-self: start;
	}
}
@media (max-width: 540px) {
	.cdlp-certif-body__media-card {
		aspect-ratio: 4 / 3;
	}
}

/* =========================================================
   Mobile body copy — 16px
   Running text (leads, subtitles, paragraphs, list copy) is set at
   17–24px on desktop across the sections. On phones that overflows the
   narrow measure, so everything that reads as body copy collapses to
   1rem here. Titles, labels, numbers, nav and buttons keep their own
   sizes. Placed last in the file so it wins over the per-section rules
   at equal specificity — selectors that are more specific upstream are
   mirrored exactly.
   ========================================================= */
@media (max-width: 640px) {
	.cdlp-lead,
	.cdlp-hero__subtitle,
	.cdlp-azienda-hero__subtitle,
	.cdlp-page-intro__subtitle,
	.cdlp-azienda-stats__text > p,
	.cdlp-stat__label,
	.cdlp-azienda-storia__text p:not(.cdlp-eyebrow),
	.cdlp-azienda-servizi__lead,
	.cdlp-azienda-servizi__list li,
	.cdlp-azienda-evoluzione__lead,
	.cdlp-evoluzione-item__text,
	.cdlp-azienda-team__lead,
	.cdlp-azienda-qualita__text p,
	.cdlp-progetto-hero__body,
	.cdlp-contatti-card__value,
	.cdlp-contatti-societa__data-item,
	.cdlp-contatti-trasparenza__text,
	.cdlp-contatti-lavora__text,
	.cdlp-contatti-lavora__positions-label,
	.cdlp-contatti-lavora__email,
	.cdlp-contatti-lavora .cdlp-check-list li,
	.cdlp-sic-block__text p,
	.cdlp-certif-body__content p {
		font-size: 1rem;
		line-height: 1.6;
	}

	/* The lead paragraphs are capped at 66% of the column on desktop;
	   on a phone that leaves an awkwardly short measure. */
	.cdlp-lead {
		max-width: none;
	}
}
