/* Inter variabile, self-hosted. Un solo file copre tutti i pesi
   (wght 100–900); l'asse opsz 14–32 lo guida il browser da solo
   in base al font-size (font-optical-sizing: auto è il default). */
@font-face {
	font-family: "Inter";
	src: url("../fonts/Inter-Variable.woff2") format("woff2");
	font-weight: 100 900;
	font-style: normal;
	font-display: swap;
}

/* =========================================================
   NextGen — home
   Struttura, griglia e coreografia ricalcate dalla home di
   abstract.com. Marchio, wordmark e testi sono NextGen.
   ========================================================= */

:root {
	/* ---- palette di brand ---------------------------------
	   ⚠ Le tessere 3 e 4 del documento riportano lo stesso
	   valore (#10B072) ma rendono diverse: la 4 è un menta più
	   chiaro. --c-green-400 è un segnaposto: sostituiscilo con
	   l'esadecimale reale appena lo hai. Oggi non è usato. */
	--c-green-900:    #083F3A;   /* 1 */
	--c-green-700:    #0B6D5A;   /* 2 */
	--c-green-500:    #10B072;   /* 3 */
	--c-green-400:    #10B072;   /* 4 — da confermare */
	--c-grey-100:     #F4F4F4;   /* 5  Light grey  */
	--c-grey-200:     #D9DEE2;   /* 6  Grey        */
	--c-grey-400:     #A0ADAF;   /* 7  Medium grey */
	--c-grey-600:     #636B6B;   /* 8  Dark grey   */

	/* ---- ruoli --------------------------------------------
	   Cambia qui, non nelle regole sotto. */
	--c-page:         var(--c-grey-200);   /* fondo pagina        */
	--c-ink:          var(--c-green-900);  /* testo               */
	--c-accent:       var(--c-green-700);  /* stati e punteggiatura */
	--c-accent-bright:var(--c-green-500);  /* accento grafico     */
	--c-slab:         var(--c-grey-100);   /* lastre di sfondo    */
	--c-splash-bg:    var(--c-green-900);
	--c-splash-shape: var(--c-green-700);
	--c-splash-ink:   var(--c-grey-100);

	/* Inter per tutto: testo e display. */
	--font-head: "Inter", "Helvetica Neue", Arial, sans-serif;
	--font-std:  "Inter", "Helvetica Neue", Arial, sans-serif;
}

/* ---------- reset ---------- */

html { box-sizing: border-box; }
*, *::before, *::after { box-sizing: inherit; }

body {
	position: relative;
	margin: 0;
	background-color: var(--c-page);
	color: var(--c-ink);
	font-family: var(--font-std);
	font-size: 16px;
	font-weight: 400;
	letter-spacing: normal;
	line-height: 1.2;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overscroll-behavior: none;
}

body.is-mobile-open,
body.no-scroll { overflow: hidden; }

a { color: inherit; text-decoration: none; }
ul { margin: 0; padding: 0; list-style: none; }
h1 { margin: 0; font-weight: normal; }
p  { margin: 0; }
button { font: inherit; cursor: pointer; }

/* ---------- utilità ---------- */

.is-hidden {
	transform: translateY(30px);
	visibility: hidden;
	opacity: 0;
}

.u-sr-only {
	position: absolute;
	width: 1px; height: 1px;
	margin: -1px; padding: 0;
	clip: rect(0, 0, 0, 0);
	border: 0;
	overflow: hidden;
}

.u-section { position: relative; width: 100%; margin-top: 128px; }

/* Gli a-capo del paragrafo di presentazione sono composizione da
   desktop: sotto i 1024px la colonna è stretta e i <br> creerebbero
   righe spezzate a caso, quindi si spengono. */
.simple-content__content br { display: none; }
@media only screen and (min-width: 1024px) {
	.simple-content__content br { display: inline; }
}

.u-title {
	font-family: var(--font-head);
	font-weight: 300;
	font-stretch: normal;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}

.u-content { font-size: 1.125rem; letter-spacing: .72px; line-height: 1.44; }
.u-content p + p { margin-top: 1rem; }
.u-content ul li { position: relative; padding-left: 40px; }
.u-content ul li::before {
	content: "";
	position: absolute; top: 12px; left: 0;
	width: 20px; height: 1px;
	background-color: var(--c-accent);
}

/* Wordmark e monogramma vengono dallo sprite in cima al body.
   I tracciati sono fill:currentColor: il colore si imposta con
   `color` sull'elemento che li ospita, mai con `fill`. */
.brand-logo { display: block; width: 100%; height: auto; }

/* =========================================================
   OVERLAY DI FADE PAGINA
   ========================================================= */

.page-fade-overlay {
	position: fixed; top: 0; left: 0;
	z-index: 9999;
	width: 100%; height: 100%;
	background-color: var(--c-page);
	opacity: 1;
	transition: opacity .8s ease;
	pointer-events: none;
}
body.page-ready .page-fade-overlay { opacity: 0; }

/* =========================================================
   FORME DI SFONDO FISSE
   ========================================================= */

.body-bg-homepage-left,
.body-bg-homepage-right { display: none; }

.body-bg-homepage-mobile {
	display: flex;
	align-items: center;
	justify-content: center;
	position: fixed;
	top: 4.625rem; right: 1.25rem; bottom: 1.25rem; left: 1.25rem;
	z-index: 0;
	transition: all .2s;
	opacity: 1;
}
.body-bg-homepage-mobile svg { width: auto; height: 100%; }

.no-scroll .body-bg-homepage-left,
.no-scroll .body-bg-homepage-right,
.no-scroll .body-bg-homepage-mobile { opacity: 0; }

/* =========================================================
   SPLASH
   ========================================================= */

.splash-page {
	position: fixed; top: 0; right: 0; bottom: 0; left: 0;
	z-index: 10000;
	width: 100vw; height: 100vh;
	background-color: var(--c-page);
}
.splash-page.loading-page {
	background-color: var(--c-splash-bg);
	transition: all 1.2s ease;
}
.splash-page.no-first-animation { display: none; }
.no-js .splash-page { display: none; }

/* --- logo dello splash --- */

.splash-page__logo-container {
	display: flex;
	align-items: center;
	position: absolute;
	top: 2.125rem; right: 1.875rem; bottom: auto; left: 1.875rem;
	z-index: 10;
	text-align: center;
	transition: all .6s ease;
	justify-self: center;
}
.loading-page .splash-page__logo-container { transition: all 1.2s ease; }

.splash-page__logo-container .splash-page__logo {
	display: block;
	width: 6.25rem;
	margin-right: auto; margin-left: auto;
	color: var(--c-ink);
	transition: all .6s ease;
}
.loading-page .splash-page__logo-container .splash-page__logo { transition: all 1.2s ease; }
.splash-page__logo-container .splash-page__logo svg,
.splash-page__logo-container svg { width: 100%; }

/* Deve colpire il logo, non il contenitore: il colore ereditato
   perderebbe contro il `color` dichiarato su .splash-page__logo. */
.loading-page .splash-page__logo-container .splash-page__logo { color: var(--c-splash-ink); }

/* --- claim --- */

.splash-page__content {
	display: flex;
	align-items: center;
	justify-content: center;
	position: absolute;
	top: 0; right: 0; bottom: 0; left: 0;
	z-index: 10;
	width: 100%;
	padding: 0 1.875rem;
	color: var(--c-splash-ink);
	font-family: var(--font-head);
	text-align: center;
}
.splash-page__content .u-title {
	display: block;
	width: 100%;
	color: var(--c-splash-ink);
	font-size: 1.625rem;
	letter-spacing: -0.32px;
	transition: all .6s ease;
}
.loading-page .splash-page__content .u-title { transition: all 1.2s ease; }

/* =========================================================
   HEADER DESKTOP
   ========================================================= */

.site-top { display: none; }
.no-scroll .site-top { opacity: 0; }

.site-top { position: fixed; }

.site-top.is-scrolled-down {
	transform: translate3d(0, -100%, 0);
	transition: all .2s ease;
}
.site-top.is-scrolled {
	padding-top: 10px;
	padding-bottom: 10px;
	background-color: var(--c-page);
}

.site-top__logo { display: block; width: 5.6875rem; color: var(--c-ink); }
.site-top__logo svg { width: 100%; height: auto; }

.site-top__cta {
	position: absolute;
	top: 50%; right: 40px;
	transform: translateY(-50%);
	padding: .5rem 1.25rem;
	border: 1px solid var(--c-ink);
	font-size: .875rem;
	font-weight: 500;
	letter-spacing: .56px;
	color: var(--c-ink);
	transition: background-color .3s ease, color .3s ease;
}
.site-top__cta .fork__cta-dot { transition: color .3s ease; }
.site-top__cta:hover {
	background-color: var(--c-ink);
	color: var(--c-page);
}
.site-top__cta:hover .fork__cta-dot { color: var(--c-green-500); }

.site-top-nav {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	margin-right: 7.5rem;
}
.site-top-nav > .site-top-nav__item { position: relative; }
.site-top-nav > .site-top-nav__item > a { display: inline-flex; padding: 10px 15px; }
.site-top-nav > .site-top-nav__item > a .text { position: relative; }
.site-top-nav > .site-top-nav__item > a .text::after {
	content: ".";
	color: var(--c-accent);
	transition: opacity 1s;
	opacity: 0;
}
.site-top-nav > .site-top-nav__item > a:hover .text { color: var(--c-accent); }
.site-top-nav > .site-top-nav__item > a:hover .text::after { opacity: 1; }
.site-top-nav > .site-top-nav__item.current-menu-item .text { color: var(--c-accent); }
.site-top-nav > .site-top-nav__item.current-menu-item .text::after { opacity: 1; }

/* =========================================================
   HEADER MOBILE
   ========================================================= */

.site-top-mobile {
	display: none;
	align-items: center;
	justify-content: space-between;
	position: fixed; top: 0; left: 0;
	z-index: 500;
	width: 100%;
	padding: 1.25rem;
}
.site-top-mobile__logo {
	position: absolute;
	top: 1.625rem; left: 50%;
	z-index: 100;
	width: 6.375rem;
	color: var(--c-ink);
	transform: translateX(-50%);
}
.site-top-mobile__logo svg { width: 100%; height: auto; }

/* glifo nudo, stesso registro dell'icona menù */
.site-top-mobile__cta {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 10px 0;
	margin-left: -4px;
	color: var(--c-ink);
}
.site-top-mobile__cta svg {
	width: 20px;
	height: 20px;
	stroke-width: 1.1;
}

.site-top-mobile__toggle-mobile {
	min-height: 33px;
	margin-right: -10px;
	padding: 10px 0;
	border: 0;
	outline: 0;
	background-color: rgba(0, 0, 0, 0);
}
.site-top-mobile__toggle-mobile span:not(.u-sr-only) {
	display: block;
	width: 13px; height: 1px;
	background-color: var(--c-ink);
	transition: all .3s ease-in-out;
}
.site-top-mobile__toggle-mobile span:not(.u-sr-only):not(:first-child) { margin-top: 5px; }

.is-mobile-open .site-top-mobile__toggle-mobile { min-height: 33px; }
.is-mobile-open .site-top-mobile__toggle-mobile span { width: 25px; }
.is-mobile-open .site-top-mobile__toggle-mobile span:first-child { transform: rotate(45deg); }
.is-mobile-open .site-top-mobile__toggle-mobile span:nth-child(2) { opacity: 0; }
.is-mobile-open .site-top-mobile__toggle-mobile span:nth-child(3) { margin-top: -7px; transform: rotate(-45deg); }

/* =========================================================
   NAV MOBILE A SCOMPARSA
   ========================================================= */

.mobile-nav-hld {
	position: fixed; top: 0; right: 0; bottom: 0;
	z-index: 499;
	height: auto;
}
.mobile-nav-background {
	position: absolute; top: 0; right: 0;
	pointer-events: none;
	width: 100vw; height: 100%;
	background-color: var(--c-page);
	transition: opacity .2s;
	opacity: 0;
}
.mobile-nav-body {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	position: absolute; top: 0; left: 100%;
	width: 100vw; height: 100%;
	padding: 100px 50px 40px;
	background-color: var(--c-page);
	transform: translate3d(-200%, 0, 0);
	transition: transform .5s;
	overflow-y: auto;
}
.mobile-nav-hld.is-active .mobile-nav-background { pointer-events: auto; opacity: 1; }
.mobile-nav-hld.is-active .mobile-nav-body { transform: translate3d(-100%, 0, 0); }
.mobile-nav-hld.is-active .mobile-nav { transform: translateX(0); opacity: 1; }

.mobile-nav__legal {
	margin-top: 2.5rem;
	font-size: .6875rem;
	letter-spacing: .4px;
	line-height: 1.6;
	text-align: center;
	color: color-mix(in srgb, var(--c-ink) 55%, var(--c-page));
	transition: all .8s ease-in-out .3s;
	opacity: 0;
}
.mobile-nav-hld.is-active .mobile-nav__legal { opacity: 1; }

.mobile-nav__group {
	margin-top: 2rem;
	margin-bottom: .25rem;
	font-size: .75rem;
	letter-spacing: .48px;
	text-align: center;
	color: var(--c-grey-600);
	transition: all .8s ease-in-out .3s;
	opacity: 0;
}
.mobile-nav-hld.is-active .mobile-nav__group { opacity: 1; }

.mobile-nav {
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	transition: all .8s ease-in-out .3s;
	opacity: 0;
}
.mobile-nav > .mobile-nav__item { position: relative; text-align: center; }
.mobile-nav > .mobile-nav__item > a {
	display: flex;
	align-items: center;
	justify-content: center;
	position: relative;
	text-align: center;
}
.mobile-nav > .mobile-nav__item > a .text {
	font-size: 1.125rem;
	letter-spacing: .72px;
	line-height: 2.22;
}
.mobile-nav > .mobile-nav__item > a .text::after {
	content: ".";
	color: var(--c-accent);
	transition: opacity 1s;
	opacity: 0;
}
.mobile-nav > .mobile-nav__item.current_page_item a .text { color: var(--c-accent); }
.mobile-nav > .mobile-nav__item.current_page_item a .text::after { opacity: 1; }

/* =========================================================
   BLOCCO DI TESTO
   ========================================================= */

.u-section--simple-content.u-section--simple-content {
	display: flex;
	align-items: center;
	justify-content: center;
	width: 100%;
	height: 70vh;
	margin-top: 16vh;
	overflow: hidden;
}
.simple-content__text-hld {
	width: 100%;
	max-width: 20rem;
	margin-right: 10vw; margin-left: 10vw;
	padding: 0 1.5625rem;
	text-align: center;
	opacity: 0;
}
.simple-content__text-hld p { font-size: .875rem; }
.home.is-animate .simple-content__text-hld { transition: opacity .8s ease .2s; opacity: 1; }

/* =========================================================
   FOOTER
   ========================================================= */

.site-footer {
	display: none;
	position: relative;
	z-index: 100;
	width: calc(100% - 80px);
	padding: 0 2.5rem 0;
	transform: translateY(0);
	transition: all .4s ease .2s;
	opacity: 1;
}
/* La fascia clienti è fissa, quindi il contenuto della home è di
   nuovo esattamente 100vh: il footer risale sopra il main come
   nell'originale e la pagina non scorre. */
.home .site-footer { margin-top: -3.75rem; }
.page-office .site-top-mobile { background-color: var(--c-page); }

/* Sulla pagina studio il footer deve stare incollato al fondo della
   finestra come in home. Lì ci pensa il main da 100vh + margin-top
   negativo; qui il contenuto ha altezza variabile, quindi: body a
   colonna flex alta almeno una viewport e footer spinto in fondo con
   margin-top:auto. Con contenuto più alto della finestra il footer
   torna semplicemente in coda al flusso. */
.page-office {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}
.page-office .site-footer { margin-top: auto; }
.no-scroll .site-footer { opacity: 0; }

/* riga legale: a destra sul desktop, tono quieto ovunque
   (la mescola coi ruoli si adatta anche alla pagina verde) */
.site-footer__legal {
	position: absolute;
	right: 2.5rem; top: 50%;
	transform: translateY(-50%);
	font-size: .6875rem;
	letter-spacing: .4px;
	color: color-mix(in srgb, var(--c-ink) 55%, var(--c-page));
}

.site-footer__legal a,
.mobile-nav__legal a {
	text-decoration: underline;
	text-underline-offset: 2px;
	text-decoration-color: color-mix(in srgb, currentColor 45%, transparent);
}
.site-footer__legal a:hover,
.mobile-nav__legal a:hover { color: var(--c-accent); }

.site-footer-navs {
	display: flex;
	align-items: center;
	transform: translateY(0);
	transition: all .4s ease .2s;
	visibility: visible;
	opacity: 1;
}
.site-footer-navs.is-hidden { transform: translateY(15px); opacity: 0; }
.no-js .site-footer-navs.is-hidden { transform: translateY(0); visibility: visible; opacity: 1; }
.home .site-footer-navs,
.page-office .site-footer-navs { transform: translateY(0); visibility: visible; opacity: 1; }

.site-footer-navs ul { display: flex; align-items: center; gap: 20px; }
.site-footer-navs ul a .text {
	position: relative;
	font-size: .75rem;
	letter-spacing: .48px;
	line-height: 2.17;
}
.site-footer-navs ul a .text::after {
	content: ".";
	color: var(--c-accent);
	transition: opacity 1s;
	opacity: 0;
}
.site-footer-navs ul a:hover .text { color: var(--c-accent); }
.site-footer-navs ul a:hover .text::after { opacity: 1; }

/* =========================================================
   CLIENTI — fascia a scorrimento continuo
   ========================================================= */

.u-section--clients {
	display: none;   /* nascosta per ora — togli questa riga per riattivarla */
	position: fixed;
	right: 0; bottom: 1.5rem; left: 0;
	z-index: 10;
	margin-top: 0;
	padding: 0;
	opacity: 0;
}
.home.is-animate .u-section--clients {
	transition: opacity .8s ease .2s;
	opacity: 1;
}

.clients__label {
	margin-bottom: 1.75rem;
	font-size: .75rem;
	letter-spacing: .48px;
	text-align: center;
	color: var(--c-grey-600);
}

/* Due copie identiche della lista scorrono affiancate: quando la
   prima è uscita del tutto (-100%), il loop riparte invisibile. */
.clients__marquee {
	display: flex;
	overflow: hidden;
	-webkit-mask-image: linear-gradient(to right, transparent, #000 12%, #000 88%, transparent);
	mask-image: linear-gradient(to right, transparent, #000 12%, #000 88%, transparent);
}

.clients__track {
	display: flex;
	align-items: center;
	flex-shrink: 0;
	min-width: 100%;
	justify-content: space-around;
	gap: 4rem;
	padding-right: 4rem;
	animation: clients-scroll 36s linear infinite;
}

.clients__item {
	flex-shrink: 0;
	font-size: 1rem;
	font-weight: 500;
	letter-spacing: .64px;
	white-space: nowrap;
	color: var(--c-grey-400);
}

/* Loghi grafici al posto del testo: altezza fissa, tinta ereditata.
   I pittogrammi bicolori usano --cl-strong / --cl-soft: due gradazioni
   dello stesso grigio, la seconda attenuata verso il fondo. */
.clients__item svg,
.clients__item img {
	display: block;
	height: 1.5rem;
	width: auto;
}
.clients__item {
	--cl-strong: var(--c-grey-400);
	--cl-mid: color-mix(in srgb, var(--c-grey-400) 62%, var(--c-page));
	--cl-soft: color-mix(in srgb, var(--c-grey-400) 45%, var(--c-page));
}

@keyframes clients-scroll {
	from { transform: translateX(0); }
	to   { transform: translateX(-100%); }
}

@media only screen and (min-width: 768px) {
	.clients__track { gap: 6rem; padding-right: 6rem; }
	.clients__item { font-size: 1.125rem; }
}

@media only screen and (min-width: 1280px) {
	.u-section--clients { bottom: 5rem; }   /* 60px di footer + 20px d'aria */
}

/* Chi preferisce niente animazioni scorre a mano */
@media (prefers-reduced-motion: reduce) {
	.clients__track { animation: none; }
	.clients__marquee {
		overflow-x: auto;
		-webkit-mask-image: none;
		mask-image: none;
	}
}

/* =========================================================
   PAGINA PRODOTTI — il bivio
   ========================================================= */

.page-prodotti {
	display: flex;
	flex-direction: column;
	min-height: 100vh;
}
/* Il main deve riempire lo spazio tra header e footer, così la
   sezione (flex:1 + justify-center) si centra in verticale. */
.page-prodotti main {
	display: flex;
	flex-direction: column;
	flex: 1;
}
.page-prodotti .site-footer { margin-top: auto; }
.page-prodotti .site-top-mobile { background-color: var(--c-page); }
.page-prodotti .site-footer-navs { transform: translateY(0); visibility: visible; opacity: 1; }

.u-section--fork {
	display: flex;
	flex-direction: column;
	justify-content: center;
	flex: 1;
	margin-top: 0;
	padding: 6rem 1.25rem 3rem;
}

.fork__claim {
	margin-bottom: 2.5rem;
	font-size: 1.375rem;
	font-weight: 300;
	letter-spacing: -0.2px;
	text-align: center;
}

.fork__label {
	margin-bottom: .75rem;
	font-size: .75rem;
	letter-spacing: .48px;
	text-align: center;
	color: var(--c-grey-600);
}

.fork__branches {
	display: flex;
	flex-direction: column;
	gap: 2.5rem;
	width: 100%;
	max-width: 30rem;
	margin: 0 auto;
}

/* --- la singola diramazione --- */

.fork__branch {
	position: relative;
	padding: 2.5rem 2rem;
}

.fork__slab {
	position: absolute;
	top: 0; right: 0; bottom: 0; left: 0;
	z-index: 0;
	width: 100%; height: 100%;
	opacity: .3;
	transition: opacity .4s ease;
}
.fork__branch:hover .fork__slab { opacity: .55; }

.fork__body {
	position: relative;
	z-index: 1;
	text-align: center;
}

.fork__index {
	margin-bottom: .75rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}

.fork__title {
	font-size: 1.75rem;
	letter-spacing: -0.32px;
}

.fork__desc {
	max-width: 24rem;
	margin: 1rem auto 0;
	font-size: .875rem;
	letter-spacing: .56px;
	line-height: 1.5;
	text-align: left;
	color: var(--c-grey-600);
}

.fork__products {
	margin-top: 1.75rem;
}
.fork__product + .fork__product { margin-top: .75rem; }

.fork__product a {
	display: inline-block;
	padding: .25rem .5rem;
}
.fork__product .text {
	position: relative;
	font-size: 1rem;
	letter-spacing: .64px;
}
.fork__product .text::after {
	content: ".";
	color: var(--c-accent);
	transition: opacity 1s;
	opacity: 0;
}
.fork__product a:hover .text { color: var(--c-accent); }
.fork__product a:hover .text::after { opacity: 1; }

.fork__product-note {
	display: block;
	margin-top: .25rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}

/* --- prodotti proprietari: righe a fisarmonica --- */

.acc {
	margin-top: 2rem;
	text-align: left;
}

.acc__item { border-top: 1px solid color-mix(in srgb, var(--c-ink) 25%, transparent); }
.acc__item:last-child { border-bottom: 1px solid color-mix(in srgb, var(--c-ink) 25%, transparent); }

.acc__head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 1rem;
	width: 100%;
	padding: 1rem .25rem;
	border: 0;
	background: none;
	color: inherit;
	text-align: left;
}
.acc__name {
	font-size: .9375rem;
	font-weight: 500;
	letter-spacing: .6px;
}
.acc__plus {
	font-size: 1.25rem;
	font-weight: 300;
	line-height: 1;
	transition: transform .3s ease;
}
.acc__item.is-open .acc__plus { transform: rotate(45deg); }
.acc__head:hover .acc__name { color: var(--c-accent); }

.acc__body {
	max-height: 0;
	overflow: hidden;
	transition: max-height .4s ease;
}
.acc__body p {
	padding: 0 .25rem;
	font-size: .875rem;
	letter-spacing: .56px;
	line-height: 1.5;
	color: var(--c-grey-600);
}
.acc__link {
	display: inline-block;
	padding: .5rem .25rem .875rem;
	font-size: .8125rem;
	letter-spacing: .52px;
}
.acc__link .text { position: relative; }
.acc__link .text::after {
	content: ".";
	color: var(--c-accent);
	transition: opacity 1s;
	opacity: 0;
}
.acc__link:hover .text { color: var(--c-accent); }
.acc__link:hover .text::after { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
	.acc__body, .acc__plus { transition: none; }
}

/* --- CTA --- */

.fork__cta {
	margin-top: 3.5rem;
	text-align: center;
}

.fork__cta-lead {
	margin-bottom: 1.25rem;
	font-size: .875rem;
	letter-spacing: .56px;
	color: var(--c-grey-600);
}

.fork__cta-btn {
	display: inline-block;
	padding: 1rem 3rem;
	border: 1px solid var(--c-ink);
	background: none;
	cursor: pointer;
	font-size: 1rem;
	font-weight: 500;
	letter-spacing: .64px;
	color: var(--c-ink);
	transition: background-color .3s ease, color .3s ease, border-color .3s ease;
}
.fork__cta-dot { color: var(--c-accent); transition: color .3s ease; }

.fork__cta-btn:hover {
	background-color: var(--c-ink);
	border-color: var(--c-ink);
	color: var(--c-grey-100);
}
.fork__cta-btn:hover .fork__cta-dot { color: var(--c-green-500); }

.fork__cta-btn:focus-visible {
	outline: 2px solid var(--c-accent);
	outline-offset: 3px;
}

/* --- prova del primato (slot, si attiva dal markup) --- */
.fork__proof {
	margin-top: 1.25rem;
	font-size: .75rem;
	letter-spacing: .48px;
	text-align: left;
	color: var(--c-grey-600);
}

/* --- desktop: le due diramazioni affiancate --- */

@media only screen and (min-width: 1024px) {
	/* padding-top − altezza header (97px) = padding-bottom:
	   così i vuoti visivi sopra e sotto il blocco si equivalgono */
	.u-section--fork { padding: 8rem 2.5rem 2rem; }
	.fork__label { margin-bottom: 3.5rem; }

	.fork__branches {
		flex-direction: row;
		align-items: stretch;
		gap: 2.5rem;
		max-width: 68rem;
	}
	.fork__branch {
		flex: 1;
		display: flex;
		align-items: flex-start;
		justify-content: center;
		min-height: 20rem;
		padding: 3rem 2.5rem;
	}
	.fork__body { width: 100%; }
	.fork__title { font-size: 2rem; }
}

/* Finestre desktop basse: si comprimono i respiri, non il testo,
   così la pagina resta senza scroll. */
@media only screen and (min-width: 1280px) and (max-height: 849px) {
	.u-section--fork { padding-top: 5.5rem; padding-bottom: 1.5rem; }
	.fork__claim { margin-bottom: 1.25rem; font-size: 1.25rem; }
	.fork__branch { min-height: 0; padding: 2rem 2.5rem; }
	.fork__cta { margin-top: 1.75rem; }
	.fork__cta-lead { margin-bottom: .875rem; }
	.fork__cta-btn { padding: .75rem 2.5rem; }
}

@media only screen and (min-width: 1680px) {
	.fork__branches { max-width: 80rem; gap: 4rem; }
	.fork__branch { min-height: 24rem; }
	.fork__title { font-size: 2.6875rem; letter-spacing: -0.43px; }
	.fork__desc { font-size: 1rem; }
}

/* =========================================================
   PAGINA PROGETTI — il diario
   ========================================================= */

/* niente centraggio verticale: la lista parte dall'alto e cresce */
.page-progetti main { display: block; flex: 1; }

.u-section--posts {
	margin-top: 0;
	padding: 6rem 1.25rem 4rem;
}

.posts__label {
	margin-bottom: 3rem;
	font-size: .75rem;
	letter-spacing: .48px;
	text-align: center;
	color: var(--c-grey-600);
}

.posts {
	max-width: 46rem;
	margin: 0 auto;
}

.posts .acc__head { padding: 1.5rem .25rem; }

.post__headmain { flex: 1; min-width: 0; }

.post__meta {
	display: flex;
	align-items: baseline;
	justify-content: space-between;
	gap: 1rem;
	margin-bottom: .625rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}
.post__tag { color: var(--c-accent); }

.post__client {
	display: block;
	margin-top: .375rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}

.post__title {
	display: block;
	font-size: 1.375rem;
	letter-spacing: -0.2px;
	line-height: 1.25;
	transition: color .3s ease;
}
.post__dot {
	color: var(--c-accent);
	transition: opacity .4s ease;
	opacity: 0;
}
.acc__head:hover .post__title { color: var(--c-accent); }
.acc__head:hover .post__dot { opacity: 1; }

.post__logo {
	display: block;
	height: 2rem;
	width: auto;
	margin: .25rem .25rem 1rem;
	color: var(--c-grey-600);
	/* tre gradazioni per i marchi sfaccettati */
	--cl-strong: var(--c-grey-600);
	--cl-mid: color-mix(in srgb, var(--c-grey-600) 62%, var(--c-page));
	--cl-soft: color-mix(in srgb, var(--c-grey-600) 40%, var(--c-page));
}
/* marchi molto orizzontali: meno altezza, stesso peso visivo */
.post__logo--wide { height: 1.375rem; }

/* parete loghi dentro un racconto: box uniformi, i marchi larghi
   si limitano in larghezza, gli altri in altezza */
.post__logos {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 1.25rem 2.25rem;
	margin: .25rem .25rem 1rem;
	color: var(--c-grey-600);
	--cl-strong: var(--c-grey-600);
	--cl-mid: color-mix(in srgb, var(--c-grey-600) 62%, var(--c-page));
	--cl-soft: color-mix(in srgb, var(--c-grey-600) 40%, var(--c-page));
}
.post__logos svg {
	width: auto;
	height: auto;
	max-width: 88px;
	max-height: 18px;
}

/* --- parlano di noi --- */

.press {
	max-width: 46rem;
	margin: 2.5rem auto 0;
	text-align: center;
}
.press__label {
	margin-bottom: 1rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}
.press__item {
	display: inline-block;
	color: var(--c-grey-400);
	--cl-soft: color-mix(in srgb, var(--c-grey-400) 40%, var(--c-page));
	transition: color .3s ease;
}
.press__item:hover { color: var(--c-grey-600); }
.press__item svg { display: block; height: 28px; width: auto; }

@media only screen and (min-width: 1280px) and (max-height: 849px) {
	.press { margin-top: 1.5rem; }
	.press__label { margin-bottom: .625rem; }
	.press__item svg { height: 24px; }
}

/* link nel corpo del testo */
.u-link { color: var(--c-accent); }
.u-link:hover { text-decoration: underline; text-underline-offset: 3px; }
.posts .acc__body p { max-width: 40rem; padding-bottom: 1.25rem; }

@media only screen and (min-width: 1024px) {
	.u-section--posts { padding: 7rem 2.5rem 3rem; }
	.posts__label { margin-bottom: 2rem; }
	.posts .acc__head { padding: 1.375rem .25rem; }
	.post__title { font-size: 1.5rem; }
}

@media only screen and (min-width: 1280px) and (max-height: 849px) {
	.u-section--posts { padding-top: 6rem; }
	.posts .acc__head { padding: 1rem .25rem; }
	.post__title { font-size: 1.375rem; }
}

/* =========================================================
   PAGINA PARLIAMONE — il form
   ========================================================= */

.u-section--talk {
	display: flex;
	flex-direction: column;
	justify-content: center;
	flex: 1;
	margin-top: 0;
	padding: 8rem 1.25rem 2rem;
}

.talk {
	width: 100%;
	max-width: 34rem;
	margin: 0 auto;
}

/* --- scelta dell'ambito: due lastre selezionabili --- */

.talk__ambiti {
	display: flex;
	gap: 1rem;
	margin: 0 0 2rem;
	padding: 0;
	border: 0;
}
.talk__legend {
	margin-bottom: 1rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}
.talk__ambito { flex: 1; }
@media only screen and (max-width: 479px) {
	.talk__ambiti { flex-direction: column; }
}
.talk__ambito input {
	position: absolute;
	width: 1px; height: 1px;
	margin: -1px;
	clip: rect(0, 0, 0, 0);
}
.talk__ambito-card {
	display: flex;
	align-items: center;
	justify-content: center;
	padding: 1.125rem 1rem;
	background-color: color-mix(in srgb, var(--c-slab) 30%, transparent);
	border: 1px solid transparent;
	font-size: .9375rem;
	letter-spacing: .6px;
	text-align: center;
	cursor: pointer;
	transition: background-color .3s ease, border-color .3s ease, color .3s ease;
}
.talk__ambito:hover .talk__ambito-card {
	background-color: color-mix(in srgb, var(--c-slab) 55%, transparent);
}
.talk__ambito input:checked + .talk__ambito-card {
	border-color: var(--c-accent);
	color: var(--c-accent);
	background-color: color-mix(in srgb, var(--c-slab) 55%, transparent);
}
.talk__ambito input:focus-visible + .talk__ambito-card {
	outline: 2px solid var(--c-accent);
	outline-offset: 3px;
}

/* --- campi --- */

.talk__grid {
	display: grid;
	grid-template-columns: 1fr;
	gap: 1.25rem;
}
.talk__field { display: block; }
.talk__label {
	display: block;
	margin-bottom: .375rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}
.talk input[type="text"],
.talk input[type="email"],
.talk textarea {
	width: 100%;
	padding: .625rem .125rem;
	border: 0;
	border-bottom: 1px solid color-mix(in srgb, var(--c-ink) 25%, transparent);
	border-radius: 0;
	background: none;
	color: var(--c-ink);
	font: inherit;
	letter-spacing: .32px;
	transition: border-color .3s ease;
}
.talk textarea { resize: vertical; }
.talk input:focus,
.talk textarea:focus {
	outline: none;
	border-bottom-color: var(--c-accent);
}

.talk__actions {
	margin-top: 2rem;
	text-align: center;
}

.talk__ok {
	margin-top: 1.5rem;
	font-size: .875rem;
	letter-spacing: .56px;
	text-align: center;
	color: var(--c-accent);
}

@media only screen and (min-width: 768px) {
	.talk__grid { grid-template-columns: 1fr 1fr; }
	.talk__field--full { grid-column: 1 / -1; }
}

@media only screen and (min-width: 1280px) and (max-height: 849px) {
	.u-section--talk { padding-top: 6rem; }
	.talk__ambiti { margin-bottom: 1.25rem; }
	.talk__grid { gap: .875rem; }
	.talk__actions { margin-top: 1.25rem; }
	.talk .fork__cta-btn { padding: .75rem 2.5rem; }
}

/* =========================================================
   PAGINA MEDIA COMPANY — la home in verde
   Tutto il sito legge le variabili-ruolo: qui si ribaltano.
   ========================================================= */

.page-media {
	--c-page: var(--c-green-900);
	--c-ink: var(--c-grey-100);
	--c-accent: var(--c-green-500);
	--c-slab: var(--c-green-700);
}

.u-nowrap { white-space: nowrap; }

/* fascia loghi sotto il testo: il blocco resta centrato in viewport
   (il fade lo eredita dal contenitore del testo) */
.chosen {
	margin-top: 2.75rem;
	text-align: center;
}
.chosen__label {
	margin-bottom: 1rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: color-mix(in srgb, var(--c-ink) 60%, var(--c-page));
}
.chosen__logos {
	display: flex;
	align-items: center;
	justify-content: center;
	flex-wrap: wrap;
	gap: .875rem 1.5rem;
	padding: 0;
	color: color-mix(in srgb, var(--c-ink) 72%, var(--c-page));
	--cl-strong: color-mix(in srgb, var(--c-ink) 72%, var(--c-page));
	--cl-mid: color-mix(in srgb, var(--c-ink) 45%, var(--c-page));
	--cl-soft: color-mix(in srgb, var(--c-ink) 28%, var(--c-page));
}
.chosen__logos svg,
.chosen__logos img {
	width: auto;
	height: auto;
	max-width: 84px;
	max-height: 18px;
}
/* stemmi verticali: un filo più alti per restare leggibili */
.chosen__logos .chosen--tall { max-height: 26px; }


/* =========================================================
   PAGINA STUDIO
   ========================================================= */

.u-wrapper {
	position: relative;
	width: 100%;
	max-width: 1284px;
	margin: 0 auto;
	padding-right: 20px;
	padding-left: 20px;
}

.body-bg-office { display: none; position: fixed; z-index: 0; }
.body-bg-office svg { width: 100%; height: 100%; }

.u-section--office {
	position: relative;
	z-index: 10;
	margin-top: 6.5rem;   /* sotto l'header mobile, senza clip */
}

/* --- intro dello studio --- */

.office__intro {
	max-width: 40rem;
	margin-bottom: 2rem;
	transition: opacity .8s ease;
}
.office__intro.is-hidden { transform: translateY(0); opacity: 0; }
.office__label {
	margin-bottom: .875rem;
	font-size: .75rem;
	letter-spacing: .48px;
	color: var(--c-grey-600);
}
.office__lead {
	font-size: .875rem;
	letter-spacing: .56px;
	line-height: 1.5;
	color: var(--c-grey-600);
}
.office__lead + .office__lead { margin-top: .875rem; }

.office__row:not(:first-of-type) { margin-top: 2.25rem; }

.office__photos {
	display: flex;
	flex-direction: column;
	gap: 1.625rem;
}

/* Le foto sono orizzontali (3:2): l'altezza del riquadro è fissa e
   l'immagine la riempie ritagliando (object-fit), così la coppia
   resta allineata a qualunque viewport. */
.office__img-hld {
	width: 100%;
	height: 14.5rem;   /* riquadro orizzontale: le foto sono 3:2 */
	background-color: var(--c-slab);   /* visibile finché l'immagine non c'è */
	transition: opacity .8s ease;
}
.office__img-hld.is-hidden { transform: translateY(0); opacity: 0; }
.office__img-hld img {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
}

.office__caption {
	margin-top: 1.125rem;
	margin-bottom: 2.25rem;
	font-size: .75rem;
	letter-spacing: .48px;
	line-height: 1.43;
	transition: opacity .8s ease;
}
.office__caption.is-hidden { transform: translateY(0); opacity: 0; }
.office__caption pre { margin: 0; font-family: inherit; }

/* =========================================================
   BREAKPOINT — stessi valori e stesse soglie dell'originale
   ========================================================= */

@media only screen and (min-width: 400px) {
	.body-bg-homepage-mobile { bottom: 1.25rem; }
}

@media only screen and (min-width: 768px) {
	.body-bg-homepage-left,
	.body-bg-homepage-right {
		position: fixed; top: 0; bottom: 0;
		transition: all .4s ease .4s;
		opacity: 1;
	}
	.body-bg-homepage-left svg,
	.body-bg-homepage-right svg { width: auto; height: 100%; }

	.body-bg-homepage-left { display: block; left: 50%; transform: translateX(-50%); }
	.body-bg-homepage-mobile { display: none; }

	.splash-page__logo-container {
		top: 5.625rem; right: 1.875rem; bottom: auto; left: 1.875rem;
		text-align: center;
	}
	.splash-page__logo-container .splash-page__logo {
		width: 9.3125rem;
		margin-right: auto; margin-left: auto;
	}

	.splash-page__content .u-title { font-size: 2.6875rem; letter-spacing: -0.45px; }

	.site-top-mobile { padding-right: 1.875rem; padding-left: 1.875rem; }

	.u-section--simple-content.u-section--simple-content {
		height: 100vh;
		margin-top: 0;
		overflow: visible;
	}
	.simple-content__text-hld {
		max-width: 32.0625rem;
		margin-right: 6.25rem; margin-left: 6.25rem;
		padding: 2.125rem 2.5rem 0;
		font-size: 1.125rem;
	}
	.simple-content__text-hld p { font-size: 1.125rem; }
}

@media only screen and (min-width: 1024px) {
	.body-bg-homepage-left { left: 0; transform: translateX(0); }
	.body-bg-homepage-right { display: block; right: 0; }

	.splash-page__logo-container { top: 2.125rem; right: auto; bottom: 2.125rem; left: 3.5rem; }
	.splash-page__logo-container .splash-page__logo {
		width: 8.4375rem;
	}

	.splash-page__content .u-title { font-size: 2rem; letter-spacing: -0.32px; }

	.simple-content__text-hld {
		max-width: 54rem;
		margin-right: auto; margin-left: auto;
	}
}

@media only screen and (max-width: 1279px) {
	.site-top-mobile { display: flex; }
}

@media only screen and (min-width: 1280px) {
	.site-top {
		display: flex;
		align-items: center;
		justify-content: center;
		position: fixed; top: 0; left: 0;
		z-index: 500;
		width: 100%;
		padding: 30px;
		transition: all .6s ease;
		opacity: 1;
	}

	.splash-page__logo-container { top: 2.125rem; bottom: 2.125rem; left: 5.625rem; z-index: 10; }


	.site-footer { display: block; height: 3.75rem; }
	}

@media only screen and (min-width: 1365px) {
	.site-top__logo { width: 6.625rem; }
	.site-top-nav > .site-top-nav__item > a .text { font-size: .875rem; }

	}

@media only screen and (max-width: 1366px) {
	.u-content { font-size: 1rem; letter-spacing: .64px; line-height: 1.5; }
	.site-top-nav { width: 100%; margin-right: 5.625rem; }
	.site-footer { padding: 0 1.875rem 0; }
}

@media only screen and (min-width: 1680px) {
	.site-top { padding: 53px 40px 0; }
	.site-top__logo { width: 8.9375rem; }
	.site-top-nav > .site-top-nav__item > a .text { font-size: 1rem; }

	.splash-page__logo-container .splash-page__logo {
		width: 11.25rem;
	}
	.splash-page__content .u-title { font-size: 2.6875rem; letter-spacing: -0.43px; }

	.u-content p + p { margin-top: 2rem; }
	.site-footer-navs ul a .text { font-size: .875rem; letter-spacing: .56px; line-height: 1.86; }
	}

/* --- correzioni per formati tablet specifici (come l'originale) --- */

@media only screen and (min-height: 800px) and (max-height: 1023px) and (max-width: 1023px) {
	}

@media only screen and (width: 1024px) and (height: 768px) {
	.body-bg-homepage-left { transform: translateX(-200px); }
	.body-bg-homepage-right { transform: translateX(200px); }
}

@media only screen and (width: 1366px) and (height: 1024px) {
	.body-bg-homepage-left { transform: translateX(-100px); }
	.body-bg-homepage-right { transform: translateX(100px); }
}

@media only screen and (width: 1024px) and (height: 1366px) {
	.body-bg-homepage-left,
	.body-bg-homepage-right { display: none; }
	.body-bg-homepage-mobile { display: flex; align-items: center; justify-content: center; }

	.splash-page__logo-container {
		top: 5.625rem;
		right: 1.875rem !important;
		bottom: auto !important;
		left: 1.875rem;
	}
	.splash-page__logo-container .splash-page__logo {
		width: 9.3125rem;
		margin-right: auto; margin-left: auto;
	}
			.splash-page__content .u-title { font-size: 2.8125rem; }
}

/* --- pagina studio: breakpoint --- */

@media only screen and (min-width: 768px) {
	.u-wrapper { padding-right: 1.875rem; padding-left: 1.875rem; }
	.u-section--office { margin-top: 6.5rem; }
	.office__photos { gap: 3rem; }
	.office__img-hld { height: 24rem; }
	.office__caption { margin-bottom: 1.5rem; font-size: .875rem; letter-spacing: .56px; }
}

@media only screen and (min-width: 1024px) {
	.u-wrapper { max-width: 1000px; }
	.u-section--office { margin-top: 6.9375rem; }
}

@media only screen and (min-width: 1280px) {
	.body-bg-office { display: block; }
	.body-bg-office--1,
	.body-bg-office--2 { width: 45%; height: auto; }
	.body-bg-office--1 { top: 0; left: 0; }
	.body-bg-office--2 { right: 0; bottom: 0; }

	.office__photos { flex-direction: row; gap: 2.6875rem; }
	/* mai più alta della finestra: 380px = testata + didascalia +
	   margini + footer */
	.office__img-hld { height: min(540px, calc(100vh - 585px)); }
	.office__caption { font-size: .75rem; letter-spacing: .48px; }
}

@media only screen and (min-width: 1365px) {
	.u-section--office { margin-bottom: 8.1875rem; }
}

@media only screen and (min-width: 1280px) and (max-height: 849px) {
	.u-section--office { margin-top: 4rem; margin-bottom: 2rem; }
	.office__intro { margin-bottom: 1.25rem; }
	.office__lead + .office__lead { margin-top: .625rem; }
	.office__img-hld { height: calc(100vh - 480px); }
	.office__caption { margin-bottom: .75rem; }
}

@media only screen and (min-width: 1680px) {
	.u-wrapper { max-width: 1492px; }
	.u-section--office { margin-top: 8.125rem; margin-bottom: 10.75rem; }
	.office__photos { gap: 4.0625rem; }
	.office__img-hld { height: min(51.25rem, calc(100vh - 635px)); }
	.office__caption { font-size: .875rem; letter-spacing: .56px; }
}
