/* ==========================================================================
   AFORMA — sito one page
   Struttura: 01 Font · 02 Variabili · 03 Base (+ intro col logo) · 04 Header
   05 Hero · 06 Numeri · 07 Manifesto · 08 Servizi · 09 Metodo · 10 Team
   11 Recensioni · 12 Portfolio · 13 Footer · 14 Menu · 15 Casi studio
   16 Cursore · 17 Responsive · 18 Pagine interne (privacy, cookie, 404)
   19 Riduzione movimento
   La classe .anim su <html> viene aggiunta da main.js solo se le animazioni
   sono attive: senza JS la pagina resta completa e leggibile.
   ========================================================================== */

/* 01 Font ------------------------------------------------------------------ */
@font-face { font-family: "Avenir"; src: url("../assets/fonts/AvenirLTStd-Light.otf") format("opentype"); font-weight: 300; font-style: normal; font-display: swap; }
@font-face { font-family: "Avenir"; src: url("../assets/fonts/AvenirLTStd-Book.otf") format("opentype"); font-weight: 400; font-style: normal; font-display: swap; }
@font-face { font-family: "Avenir"; src: url("../assets/fonts/AvenirLTStd-Medium.otf") format("opentype"); font-weight: 500; font-style: normal; font-display: swap; }

/* 02 Variabili ------------------------------------------------------------- */
:root {
	--bg: #0e0e0e;
	--bg-2: #171717;
	--ink: #ffffff;
	--muted: #c2c2c2;
	--dim: #8c8c8c;
	--line: rgba(255, 255, 255, .16);

	--teal: #5bbfcc;
	--teal-light: #a9e0e7;
	--teal-deep: #2f8f9c;
	--paper: #ececec;
	--graphite: #3e3e3e;
	--on-light: #0e0e0e;

	--font: "Avenir", "Avenir Next", "Helvetica Neue", Arial, sans-serif;
	--gutter: clamp(16px, 2.4vw, 36px);
	--radius: 8px;
	--ease: cubic-bezier(.2, .7, .1, 1);
	--header-h: 64px;
}

/* 03 Base ------------------------------------------------------------------ */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; color-scheme: dark; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: hidden; }

body {
	margin: 0;
	background: var(--bg);
	color: var(--ink);
	font-family: var(--font);
	font-weight: 300;
	font-size: 17px;
	line-height: 1.55;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	overflow-x: clip;
}
body.case-open,
body.is-locked { overflow: hidden; }

img, video, svg { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
h1, h2, h3, h4, p, figure, blockquote, ol, ul { margin: 0; }
ol, ul { padding: 0; list-style: none; }
::selection { background: var(--teal); color: #000; }
:focus-visible { outline: 2px solid var(--teal); outline-offset: 4px; border-radius: 2px; }

.label {
	font-weight: 500;
	font-size: 12px;
	line-height: 1.4;
	letter-spacing: .16em;
	text-transform: uppercase;
}

.h-xl {
	font-weight: 400;
	font-size: clamp(34px, 4.7vw, 72px);
	line-height: 1.02;
	letter-spacing: -.035em;
	text-wrap: balance;
}

.btn {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	padding: 15px 26px;
	border-radius: 999px;
	background: var(--ink);
	color: #000;
	font-weight: 500;
	font-size: 15px;
	line-height: 1.1;
	letter-spacing: -.005em;
	border: 1px solid transparent;
	transition: background-color .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease), transform .35s var(--ease);
}
.btn:hover { background: var(--teal); color: #000; }
.btn:active { transform: scale(.97); }
.btn--small { padding: 10px 18px; font-size: 14px; }
.btn--ghost { background: transparent; color: var(--ink); border-color: rgba(255, 255, 255, .34); }
.btn--ghost:hover { border-color: var(--teal); background: var(--teal); }

/* Parole spezzate da main.js */
.w { display: inline-block; }
.w--clip { overflow: hidden; vertical-align: top; padding-bottom: .12em; margin-bottom: -.12em; }
.wi { display: inline-block; will-change: transform; }

/* Bagliori animati (hero e footer) */
.glow {
	position: absolute;
	inset: 0;
	z-index: -1;
	overflow: hidden;
	pointer-events: none;
}
.glow::after {
	content: "";
	position: absolute;
	inset: 0;
	opacity: .08;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>");
}
.blob {
	position: absolute;
	border-radius: 50%;
	will-change: transform;
}
.blob--a {
	width: 80vmax; height: 80vmax;
	right: -38vmax; top: 4vh;
	background: radial-gradient(closest-side, rgba(91, 191, 204, .5), rgba(91, 191, 204, 0));
	animation: drift-a 19s ease-in-out infinite alternate;
}
.blob--b {
	width: 64vmax; height: 64vmax;
	left: -30vmax; top: -24vmax;
	background: radial-gradient(closest-side, rgba(47, 143, 156, .42), rgba(47, 143, 156, 0));
	animation: drift-b 23s ease-in-out infinite alternate;
}
.blob--c {
	width: 56vmax; height: 56vmax;
	left: 18vw; top: 55%;
	background: radial-gradient(closest-side, rgba(236, 236, 236, .13), rgba(236, 236, 236, 0));
	animation: drift-c 27s ease-in-out infinite alternate;
}
.blob--cursor {
	width: 40vmax; height: 40vmax;
	left: 0; top: 0;
	margin: -20vmax 0 0 -20vmax;
	background: radial-gradient(closest-side, rgba(169, 224, 231, .2), rgba(169, 224, 231, 0));
	opacity: 0;
	transition: opacity 1.2s ease;
}
@keyframes drift-a {
	0%   { transform: translate3d(0, 0, 0) scale(1); }
	50%  { transform: translate3d(-14vw, -8vh, 0) scale(1.15); }
	100% { transform: translate3d(-4vw, 16vh, 0) scale(.92); }
}
@keyframes drift-b {
	0%   { transform: translate3d(0, 0, 0) scale(1); }
	50%  { transform: translate3d(16vw, 12vh, 0) scale(.9); }
	100% { transform: translate3d(6vw, 28vh, 0) scale(1.1); }
}
@keyframes drift-c {
	0%   { transform: translate3d(0, 0, 0) scale(1); }
	100% { transform: translate3d(28vw, -18vh, 0) scale(1.2); }
}

/* Intro con il logo animato (video) ---------------------------------------- */
.splash { display: none; }
.has-splash .splash {
	position: fixed;
	inset: 0;
	z-index: 90;
	display: grid;
	place-items: center;
	background: #050b0e; /* stesso colore di fondo del video */
	/* paracadute: se lo script non parte, l'intro sparisce da sola */
	animation: splash-failsafe 0s linear 9s forwards;
}
/* Il video riempie tutto lo schermo, a qualsiasi dimensione */
.splash__video {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	object-fit: cover;
	background: #050b0e;
}
/* Finestre strette e alte: il video resta intero, così il logo non viene tagliato ai lati */
@media (max-aspect-ratio: 5/4) {
	.splash__video { object-fit: contain; }
}
.splash__skip {
	position: absolute;
	right: var(--gutter);
	bottom: max(20px, env(safe-area-inset-bottom));
	padding: 10px 0;
	color: var(--dim);
	transition: color .3s ease;
}
.splash__skip:hover { color: var(--ink); }
.has-splash.splash-js .splash { animation: none; }
@keyframes splash-failsafe { to { visibility: hidden; } }

/* 04 Header ---------------------------------------------------------------- */
.site-header {
	position: fixed;
	inset: 0 0 auto 0;
	z-index: 50;
	height: var(--header-h);
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 24px;
	padding: 0 var(--gutter);
	border-bottom: 1px solid transparent;
	transition: background-color .5s ease, border-color .5s ease;
}
/* La barra resta sempre ferma e visibile: cambia solo lo sfondo lasciata la cima */
.site-header.is-scrolled {
	background: rgba(14, 14, 14, .8);
	border-bottom-color: rgba(255, 255, 255, .06);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
}
.brand svg { height: 22px; width: auto; }
.nav { display: flex; align-items: center; gap: clamp(16px, 2.2vw, 34px); }
.nav a.label { color: var(--muted); transition: color .3s ease; }
.nav a.label:hover { color: var(--teal); }
.menu-btn { display: none; padding: 10px 0; }

/* 05 Hero ------------------------------------------------------------------ */
.top {
	position: relative;
	isolation: isolate;
}
.top > .glow {
	-webkit-mask-image: linear-gradient(to bottom, #000 62%, transparent 100%);
	mask-image: linear-gradient(to bottom, #000 62%, transparent 100%);
}
.hero {
	min-height: 100vh; /* riserva per browser vecchi */
	min-height: 100svh;
	display: flex;
	flex-direction: column;
	align-items: center;
	text-align: center;
	padding: calc(var(--header-h) + clamp(28px, 7vh, 80px)) var(--gutter) clamp(20px, 5vh, 56px);
}
.hero__kicker { color: var(--teal); margin-bottom: clamp(16px, 2.6vh, 26px); }
.hero__title {
	font-weight: 400;
	font-size: clamp(42px, 6.6vw, 104px);
	line-height: .98;
	letter-spacing: -.045em;
}
.hero__title em { font-style: normal; color: var(--teal); }
.hero__sub {
	margin: clamp(18px, 3vh, 28px) auto 0;
	max-width: 36em;
	font-size: clamp(15px, 1.2vw, 19px);
	line-height: 1.5;
	color: var(--muted);
}
.hero__logo {
	width: min(92vw, 1560px);
	margin-top: auto;
	padding-top: clamp(40px, 8vh, 90px);
}
.hero__logo svg { width: 100%; height: auto; }

.connector {
	position: relative;
	height: clamp(180px, 34vh, 360px);
	display: flex;
	justify-content: center;
	margin-top: clamp(16px, 3vh, 30px);
}
.connector__line {
	width: 1px;
	height: 100%;
	background: linear-gradient(to bottom, rgba(255, 255, 255, .9), rgba(255, 255, 255, .15));
	transform-origin: top;
}
.connector__label {
	position: absolute;
	top: 34%;
	left: 50%;
	transform: translateX(-50%);
	padding: 8px 4px;
	background: var(--bg);
	color: var(--muted);
	white-space: nowrap;
}

.intro {
	text-align: center;
	padding: clamp(24px, 4vh, 40px) var(--gutter) clamp(56px, 10vh, 110px);
}
.intro p {
	max-width: 32em;
	margin: 20px auto 0;
	color: var(--muted);
	font-size: clamp(15px, 1.2vw, 18px);
}

/* 06 Numeri ---------------------------------------------------------------- */
.stats {
	display: grid;
	gap: 4px;
	padding: 0 clamp(8px, 1vw, 14px);
}
.stat {
	display: grid;
	grid-template-columns: 1fr 1fr;
	align-items: center;
	gap: 24px;
	padding: clamp(10px, 1.4vw, 20px) clamp(14px, 1.6vw, 26px);
	border-radius: 6px;
	color: var(--on-light);
}
.stat__num {
	font-weight: 400;
	font-size: clamp(54px, 7.6vw, 124px);
	line-height: .92;
	letter-spacing: -.05em;
	font-variant-numeric: tabular-nums;
}
.stat__txt {
	font-weight: 400;
	font-size: clamp(16px, 1.55vw, 24px);
	line-height: 1.18;
	letter-spacing: -.01em;
	max-width: 21em;
}
.stat--1 { background: var(--teal); }
.stat--2 { background: var(--teal-light); }
.stat--3 { background: var(--paper); }
.stat--4 { background: var(--graphite); color: var(--ink); }

/* 07 Manifesto ------------------------------------------------------------- */
.manifesto {
	padding: clamp(120px, 24vh, 260px) var(--gutter);
	text-align: center;
}
.manifesto__label { color: var(--teal); margin-bottom: clamp(22px, 4vh, 36px); }
.manifesto__text {
	max-width: 21em;
	margin-inline: auto;
	font-weight: 400;
	font-size: clamp(26px, 3.4vw, 52px);
	line-height: 1.13;
	letter-spacing: -.028em;
}
.manifesto__text p + p { margin-top: .85em; }

/* 08 Servizi --------------------------------------------------------------- */
.services { position: relative; }
.services__title { text-align: center; padding: clamp(40px, 8vh, 80px) var(--gutter) 0; }
.services__title .label { color: var(--teal); margin-bottom: 18px; }
/* Titolo dei percorsi: senza animazioni sta tra i servizi e i percorsi */
.services__title--paths { grid-column: 1 / -1; padding-bottom: 10px; }

.cards {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 12px;
	padding: 40px var(--gutter);
}
.card {
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 36px;
	min-height: 320px;
	padding: 20px;
	border-radius: var(--radius);
	background: rgba(66, 66, 66, .72);
	border: 1px solid rgba(255, 255, 255, .08);
	-webkit-backdrop-filter: blur(12px);
	backdrop-filter: blur(12px);
	box-shadow: 0 40px 80px -30px rgba(0, 0, 0, .7);
}
.card h3 {
	margin-top: 8px;
	font-weight: 400;
	font-size: clamp(24px, 2.1vw, 32px);
	line-height: 1.02;
	letter-spacing: -.025em;
}
.card__tag { color: var(--muted); }
.card__dot {
	display: block;
	width: 14px; height: 14px;
	margin-bottom: 14px;
	border-radius: 50%;
	background: var(--dot, var(--teal));
	box-shadow: 0 0 18px var(--dot, var(--teal));
}
.card p { font-size: 14px; line-height: 1.45; color: #ececec; }
.card small { display: block; margin-top: 10px; font-size: 12px; line-height: 1.4; color: var(--muted); }
.card--path { background: rgba(14, 14, 14, .55); border-color: rgba(91, 191, 204, .45); }
.card--path .card__tag { color: var(--teal); }
.card--hot { background: var(--teal); color: var(--on-light); border-color: transparent; }
.card--hot .card__tag, .card--hot p { color: var(--on-light); }
.card--hot .card__dot { background: var(--on-light); box-shadow: none; }

.services__cta {
	display: flex;
	justify-content: center;
	padding: clamp(10px, 2vh, 20px) var(--gutter) clamp(90px, 16vh, 160px);
}

.anim .services { height: 520vh; }
.anim .services__stage {
	position: sticky;
	top: 0;
	height: 100vh; /* riserva per browser vecchi */
	height: 100svh;
	overflow: hidden;
}
.anim .services__title {
	position: absolute;
	inset: 0;
	display: grid;
	place-content: center;
	padding: 0 var(--gutter);
}
.anim .cards {
	display: block;
	position: absolute;
	inset: 0;
	padding: 0;
}
.anim .card {
	position: absolute;
	top: 0;
	left: var(--x);
	z-index: 1;
	width: clamp(250px, 22vw, 330px);
	will-change: transform;
}
.anim .services__title--paths { z-index: 0; padding-bottom: 0; }

/* 09 Metodo ---------------------------------------------------------------- */
.method__stage {
	position: relative;
	overflow: hidden;
	padding: clamp(90px, 16vh, 160px) var(--gutter);
	background: var(--teal);
	color: var(--on-light);
}
.method__circle { display: none; }
.method__content {
	position: relative;
	z-index: 1;
	width: 100%;
	max-width: 1500px;
	margin-inline: auto;
}
.method__label { margin-bottom: 18px; }
.method__title { max-width: 12em; }
.steps {
	display: grid;
	grid-template-columns: repeat(4, 1fr);
	gap: 0 clamp(16px, 2vw, 32px);
	margin-top: clamp(40px, 9vh, 100px);
}
.step {
	padding-top: 16px;
	border-top: 1px solid rgba(14, 14, 14, .35);
}
.step .label { opacity: .7; }
.step h3 {
	margin: 12px 0 8px;
	font-weight: 400;
	font-size: clamp(22px, 2.1vw, 32px);
	line-height: 1.05;
	letter-spacing: -.025em;
}
.step p:not(.label) { font-size: 15px; line-height: 1.45; font-weight: 400; }

.anim .method { height: 300vh; }
.anim .method__stage {
	position: sticky;
	top: 0;
	height: 100vh; /* riserva per browser vecchi */
	height: 100svh;
	display: grid;
	place-items: center;
	padding: var(--header-h) var(--gutter) 0;
	background: transparent;
}
.anim .method__circle {
	display: block;
	position: absolute;
	left: 50%; top: 50%;
	width: 150vmax; height: 150vmax;
	margin: -75vmax 0 0 -75vmax;
	border-radius: 50%;
	background: var(--teal);
	transform: scale(.1);
	will-change: transform;
}

/* 10 Team ------------------------------------------------------------------ */
.team { padding: clamp(110px, 18vh, 200px) clamp(8px, 1vw, 14px) clamp(60px, 10vh, 110px); }
.team__head {
	width: fit-content;
	max-width: 100%;
	margin: 0 auto clamp(56px, 10vh, 110px);
	padding-inline: var(--gutter);
}
.team__head .label { color: var(--teal); margin-bottom: 18px; }
.team__head .indent { display: inline-block; padding-left: 2.2em; }
.team__head p {
	max-width: 28em;
	margin: 22px 0 0 clamp(0px, 7vw, 150px);
	color: var(--muted);
	font-size: clamp(15px, 1.2vw, 18px);
}
.team__grid {
	display: grid;
	grid-template-columns: repeat(2, 1fr);
	gap: 6px;
}
.member {
	display: flex;
	flex-direction: column;
	gap: 40px;
	min-height: clamp(280px, 24vw, 360px);
	padding: clamp(16px, 1.6vw, 26px);
	border-radius: var(--radius);
	color: var(--on-light);
}
.member__top { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; }
.member__name {
	margin-top: 14px;
	font-weight: 400;
	font-size: clamp(26px, 2.5vw, 38px);
	line-height: 1.02;
	letter-spacing: -.03em;
}
.member__role { font-weight: 400; font-size: clamp(17px, 1.6vw, 24px); line-height: 1.1; letter-spacing: -.015em; }
.member__photo {
	flex: none;
	width: clamp(92px, 10vw, 150px);
	aspect-ratio: 1;
	overflow: hidden;
	border-radius: 6px;
	background: rgba(0, 0, 0, .12);
}
.member__photo img {
	width: 100%; height: 100%;
	object-fit: cover;
	filter: grayscale(1) contrast(1.05);
	transition: filter .7s ease, transform 1s var(--ease);
}
.member:hover .member__photo img { filter: none; transform: scale(1.06); }
.member__bio { max-width: 32em; margin-top: 18px; font-size: 15px; line-height: 1.5; font-weight: 400; }
.member--1 { background: var(--teal); }
.member--2 { background: var(--paper); }
.member--3 { background: var(--teal-light); }
.member--4 { background: var(--teal-deep); }

/* 11 Recensioni ------------------------------------------------------------ */
.voices { padding: clamp(80px, 14vh, 160px) 0 clamp(90px, 16vh, 180px); overflow: hidden; }
.voices__head { text-align: center; padding-inline: var(--gutter); }
.voices__head .label { color: var(--teal); margin-bottom: 18px; }
.chips {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 8px;
	margin-top: 24px;
}
.chip {
	padding: 6px 13px;
	border-radius: 999px;
	background: var(--ink);
	color: #000;
	font-size: 12px;
	font-weight: 500;
	line-height: 1.2;
}

.marquee {
	margin-top: clamp(44px, 8vh, 80px);
	padding-block: clamp(14px, 2vh, 22px);
	border-block: 1px solid var(--line);
	overflow: hidden;
}
.marquee__track {
	display: flex;
	width: max-content;
	animation: marquee 42s linear infinite;
	will-change: transform;
}
.marquee__group { display: flex; flex: none; }
.marquee__item {
	display: flex;
	align-items: center;
	gap: .38em;
	padding-right: .38em;
	font-weight: 400;
	font-size: clamp(40px, 6.4vw, 104px);
	line-height: 1.05;
	letter-spacing: -.045em;
	white-space: nowrap;
}
.marquee__item::after {
	content: "";
	width: .2em; height: .2em;
	border-radius: 50%;
	background: var(--teal);
}
@keyframes marquee { to { transform: translate3d(-50%, 0, 0); } }

.quotes {
	display: flex;
	gap: 10px;
	margin-top: clamp(44px, 8vh, 80px);
	padding: 0 var(--gutter) 6px;
	overflow-x: auto;
	scroll-snap-type: x mandatory;
	scroll-padding-inline: var(--gutter);
	scrollbar-width: none;
	cursor: grab;
}
.quotes::-webkit-scrollbar { display: none; }
.quotes.is-drag { scroll-snap-type: none; cursor: grabbing; user-select: none; }
.quote {
	flex: 0 0 clamp(286px, 31vw, 450px);
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 30px;
	min-height: 330px;
	padding: 24px;
	border-radius: var(--radius);
	background: var(--bg-2);
	border: 1px solid var(--line);
	scroll-snap-align: start;
}
.quote__stars { display: flex; gap: 5px; }
.quote__stars span { width: 9px; height: 9px; border-radius: 50%; background: var(--teal); }
.quote blockquote p {
	font-weight: 400;
	font-size: clamp(17px, 1.35vw, 21px);
	line-height: 1.38;
	letter-spacing: -.01em;
}
.quote figcaption { display: flex; flex-direction: column; gap: 2px; }
.quote__name { font-weight: 500; }
.quote__meta { font-size: 13px; color: var(--muted); }

/* 12 Portfolio ------------------------------------------------------------- */
.work { padding: clamp(40px, 6vh, 70px) 0 clamp(140px, 24vh, 260px); overflow-x: clip; }
.work__head { text-align: center; padding-inline: var(--gutter); }
.work__head .label { color: var(--teal); margin-bottom: 18px; }
.work__head p {
	max-width: 34em;
	margin: 22px auto 0;
	color: var(--muted);
	font-size: clamp(15px, 1.2vw, 18px);
}

.timeline {
	position: relative;
	max-width: 1240px;
	margin: clamp(70px, 12vh, 130px) auto 0;
	padding: 60px var(--gutter) 40px;
}
.timeline__rail {
	position: absolute;
	top: 0; bottom: 0;
	left: 50%;
	width: 1px;
	background: var(--line);
}
.timeline__fill {
	position: absolute;
	inset: 0;
	background: var(--teal);
	transform-origin: top;
	transform: scaleY(0);
}
.timeline__plus {
	position: sticky;
	top: 50vh;
	display: block;
	width: 21px; height: 21px;
	margin-left: -10px;
}
.timeline__plus::before, .timeline__plus::after {
	content: "";
	position: absolute;
	background: var(--ink);
}
.timeline__plus::before { left: 0; right: 0; top: 10px; height: 1px; }
.timeline__plus::after { top: 0; bottom: 0; left: 10px; width: 1px; }

.pf {
	position: relative;
	display: flex;
	width: 50%;
}
.pf + .pf { margin-top: clamp(-190px, -12vw, -60px); }
.pf--l { justify-content: flex-end; padding-right: calc(clamp(24px, 3vw, 50px) + var(--dx, 0px)); }
.pf--r { margin-left: 50%; justify-content: flex-start; padding-left: calc(clamp(24px, 3vw, 50px) + var(--dx, 0px)); }

.polaroid {
	display: block;
	width: clamp(240px, 26vw, 360px);
	text-align: left;
	rotate: calc(var(--r, 0) * 1deg);
}
.anim .polaroid { rotate: none; }
.polaroid__body {
	display: block;
	padding: 10px 10px 18px;
	border-radius: 6px;
	background: #f2f2f2;
	color: #111;
	box-shadow: 0 34px 70px -28px rgba(0, 0, 0, .85);
	transition: transform .6s var(--ease), box-shadow .6s var(--ease);
}
.polaroid:hover .polaroid__body,
.polaroid:focus-visible .polaroid__body {
	transform: translateY(-8px) scale(1.025);
	box-shadow: 0 44px 80px -26px rgba(0, 0, 0, .9), 0 0 0 2px var(--teal);
}
.polaroid__img {
	display: block;
	aspect-ratio: 4 / 3;
	overflow: hidden;
	border-radius: 3px;
	background: #ddd;
}
.polaroid__img img {
	width: 100%; height: 100%;
	object-fit: cover;
	transition: transform 1s var(--ease);
}
.polaroid:hover .polaroid__img img { transform: scale(1.06); }
.polaroid__cap { display: flex; flex-direction: column; gap: 6px; margin-top: 16px; padding-inline: 4px; }
.polaroid__cap .label { font-size: 10.5px; color: #5a5a5a; }
.polaroid__name { font-weight: 500; font-size: 22px; line-height: 1.05; letter-spacing: -.02em; }

/* 13 Footer ---------------------------------------------------------------- */
.footer {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	min-height: 100vh; /* riserva per browser vecchi */
	min-height: 100svh;
	display: flex;
	flex-direction: column;
	align-items: center;
	padding: clamp(110px, 18vh, 190px) var(--gutter) 22px;
	text-align: center;
	border-top: 1px solid var(--line);
}
.glow--footer .blob--a { top: 30%; right: -30vmax; background: radial-gradient(closest-side, rgba(91, 191, 204, .62), rgba(91, 191, 204, 0)); }
.glow--footer .blob--b { top: 40%; left: -34vmax; }
.glow--footer .blob--c { top: 70%; left: 30vw; background: radial-gradient(closest-side, rgba(236, 236, 236, .2), rgba(236, 236, 236, 0)); }
.footer__cta .label { color: var(--teal); margin-bottom: 18px; }
.footer__cta > p:not(.label) {
	max-width: 32em;
	margin: 22px auto 0;
	color: var(--muted);
	font-size: clamp(15px, 1.2vw, 18px);
}
.footer__btns {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px;
	margin-top: 32px;
}
.footer__logo {
	width: min(92vw, 1560px);
	margin-top: auto;
	padding-top: clamp(70px, 14vh, 160px);
}
.footer__logo svg { width: 100%; height: auto; }
.footer__links {
	display: flex;
	flex-wrap: wrap;
	justify-content: center;
	gap: 10px 28px;
	margin-top: clamp(30px, 5vh, 50px);
}
.footer__links a { text-decoration: underline; text-underline-offset: 5px; transition: color .3s ease; }
.footer__links a:hover { color: var(--teal); }
.footer__legal {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 8px 20px;
	width: 100%;
	margin-top: clamp(30px, 5vh, 50px);
	padding-top: 18px;
	border-top: 1px solid var(--line);
	font-size: 12px;
	color: var(--dim);
}
.footer__legal a:hover { color: var(--ink); }

/* 14 Menu mobile ----------------------------------------------------------- */
.menu {
	position: fixed;
	inset: 0;
	z-index: 70;
	display: flex;
	flex-direction: column;
	padding: 0 var(--gutter) 28px;
	background: var(--bg);
	visibility: hidden;
	clip-path: inset(0 0 100% 0);
	transition: clip-path .7s var(--ease), visibility 0s linear .7s;
}
.menu.is-open {
	visibility: visible;
	clip-path: inset(0 0 0 0);
	transition: clip-path .7s var(--ease);
}
.menu__bar {
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: var(--header-h);
}
.menu__bar .label:first-child { color: var(--teal); }
.menu__bar button { padding: 10px 0; }
.menu__links {
	display: flex;
	flex-direction: column;
	justify-content: center;
	flex: 1;
	gap: 2px;
}
.menu__links a { display: block; overflow: hidden; }
.menu__links span {
	display: block;
	font-weight: 400;
	font-size: clamp(44px, 13vw, 88px);
	line-height: 1.05;
	letter-spacing: -.045em;
	transition: color .3s ease;
}
.menu__links a:hover span { color: var(--teal); }
.menu__foot { display: flex; flex-wrap: wrap; gap: 10px 22px; color: var(--muted); }

/* 15 Casi studio ----------------------------------------------------------- */
.case {
	position: fixed;
	inset: 0;
	z-index: 80;
	overflow-y: auto;
	overscroll-behavior: contain;
	background: var(--bg);
	visibility: hidden;
	clip-path: inset(100% 0 0 0);
}
.case.is-open { visibility: visible; clip-path: inset(0 0 0 0); }
.case__bar {
	position: sticky;
	top: 0;
	z-index: 2;
	display: flex;
	align-items: center;
	justify-content: space-between;
	height: var(--header-h);
	padding: 0 var(--gutter);
	background: rgba(14, 14, 14, .82);
	-webkit-backdrop-filter: blur(14px);
	backdrop-filter: blur(14px);
}
.case__bar .label:first-child { color: var(--teal); }
.case__close { padding: 10px 0; transition: color .3s ease; }
.case__close:hover { color: var(--teal); }
.case__inner {
	max-width: 1500px;
	margin: 0 auto;
	padding: clamp(30px, 7vh, 80px) var(--gutter) 60px;
}
.case__head {
	display: grid;
	grid-template-columns: 1.15fr 1fr;
	align-items: end;
	gap: 20px 48px;
}
.case__head .label { color: var(--teal); margin-bottom: 14px; }
.case__head h2 {
	font-weight: 400;
	font-size: clamp(48px, 7.6vw, 124px);
	line-height: .92;
	letter-spacing: -.05em;
}
.case__head h3 {
	font-weight: 400;
	font-size: clamp(20px, 2.1vw, 32px);
	line-height: 1.18;
	letter-spacing: -.02em;
	color: var(--muted);
}
.case__cols {
	display: grid;
	grid-template-columns: repeat(3, 1fr);
	gap: 8px;
	margin-top: clamp(36px, 6vh, 64px);
}
.case__col {
	padding: 22px;
	border-radius: var(--radius);
	background: var(--bg-2);
	border: 1px solid var(--line);
}
.case__col .label { color: var(--muted); }
.case__col p { margin-top: 14px; font-size: 16px; line-height: 1.5; color: #e2e2e2; }
.case__col--result { background: var(--teal); border-color: transparent; }
.case__col--result .label, .case__col--result p { color: var(--on-light); }
.case__col--result p { font-weight: 400; }
.case__links { display: flex; flex-wrap: wrap; gap: 10px 26px; margin-top: 26px; }
.case__links a { text-decoration: underline; text-underline-offset: 5px; }
.case__links a:hover { color: var(--teal); }
.case__gallery {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 8px;
	margin-top: clamp(36px, 6vh, 64px);
}
.case__gallery figure {
	position: relative;
	overflow: hidden;
	border-radius: var(--radius);
	background: #1b1b1b;
	aspect-ratio: 1;
}
.case__gallery figure.wide { grid-column: 1 / -1; aspect-ratio: 2341 / 1774; }
.case__gallery img { width: 100%; height: 100%; object-fit: cover; }
.case__gallery video { width: 100%; height: 100%; object-fit: contain; background: #000; }
.play {
	position: absolute;
	inset: 0;
	display: grid;
	place-items: center;
	background: rgba(0, 0, 0, .18);
	transition: background-color .3s ease;
}
.play span {
	display: grid;
	place-items: center;
	width: clamp(64px, 7vw, 92px);
	aspect-ratio: 1;
	padding-left: 4px;
	border-radius: 50%;
	background: var(--teal);
	color: #000;
	font-size: 22px;
	transition: transform .4s var(--ease);
}
.play:hover { background: rgba(0, 0, 0, .32); }
.play:hover span { transform: scale(1.1); }
.case__nav {
	display: flex;
	justify-content: space-between;
	gap: 20px;
	margin-top: clamp(50px, 9vh, 90px);
	padding-top: 24px;
	border-top: 1px solid var(--line);
}
.case__navbtn { display: flex; flex-direction: column; gap: 6px; text-align: left; }
.case__navbtn--next { text-align: right; align-items: flex-end; }
.case__navbtn .label { color: var(--muted); }
.case__navname {
	font-weight: 400;
	font-size: clamp(24px, 3vw, 44px);
	line-height: 1;
	letter-spacing: -.035em;
	transition: color .3s ease;
}
.case__navbtn:hover .case__navname { color: var(--teal); }

/* 16 Cursore --------------------------------------------------------------- */
.cursor {
	position: fixed;
	left: 0; top: 0;
	z-index: 200;
	display: grid;
	place-items: center;
	width: 12px; height: 12px;
	margin: -6px 0 0 -6px;
	border-radius: 50%;
	background: var(--teal);
	pointer-events: none;
	opacity: 0;
	transition: width .45s var(--ease), height .45s var(--ease), margin .45s var(--ease), opacity .3s ease;
}
.cursor span {
	font-size: 11px;
	font-weight: 500;
	letter-spacing: .14em;
	text-transform: uppercase;
	color: #000;
	opacity: 0;
	transition: opacity .2s ease;
}
.cursor.is-label { width: 92px; height: 92px; margin: -46px 0 0 -46px; }
.cursor.is-label span { opacity: 1; transition-delay: .12s; }
@media (hover: none), (pointer: coarse) {
	.cursor { display: none; }
}

/* 17 Responsive ------------------------------------------------------------ */
@media (max-width: 960px) {
	.nav { display: none; }
	.menu-btn { display: inline-flex; }
	.steps { grid-template-columns: repeat(2, 1fr); gap: 26px 20px; }
	.case__head, .case__cols { grid-template-columns: 1fr; }
}

@media (max-width: 760px) {
	:root { --header-h: 58px; }
	body { font-size: 16px; }
	.brand svg { height: 19px; }
	/* Titolo centrato nello spazio sopra il logo grande */
	.hero { padding-top: calc(var(--header-h) + 12px); }
	.hero__head { margin-top: auto; }
	.hero__sub br { display: none; }

	.stat { grid-template-columns: 1fr; gap: 4px; padding-block: 14px; }

	.anim .services { height: 560vh; }
	.anim .card {
		left: var(--xm);
		width: 74vw;
		min-height: 280px;
		-webkit-backdrop-filter: none;
		backdrop-filter: none;
		background: rgba(58, 58, 58, .94);
	}
	.anim .card--path { background: rgba(20, 20, 20, .94); }
	.anim .card--hot { background: var(--teal); }

	.anim .method__stage { padding-top: calc(var(--header-h) + 10px); }
	.method__title { font-size: clamp(34px, 10vw, 48px); }
	.steps { margin-top: 30px; gap: 18px 16px; }
	.step { padding-top: 12px; }
	.step h3 { margin: 6px 0 4px; font-size: 21px; }
	.step p:not(.label) { font-size: 13.5px; line-height: 1.38; }

	.team__grid { grid-template-columns: 1fr; }
	.team__head .indent { padding-left: 1.2em; }
	.team__head p { margin-left: 0; }
	.member { min-height: 0; }
	/* Su telefono: nome e ruolo accanto alla foto, descrizione a tutta larghezza sotto */
	.member__top { display: grid; grid-template-columns: 1fr auto; grid-template-rows: auto auto 1fr auto; gap: 0 16px; align-items: start; }
	.member__info { display: contents; }
	.member__info > * { grid-column: 1; }
	.member__photo { grid-column: 2; grid-row: 1 / 4; }
	.member__info .member__bio { grid-column: 1 / -1; }

	.timeline { padding-inline: 16px; }
	.timeline__rail { left: 20px; }
	.pf, .pf--r { width: 100%; margin-left: 0; justify-content: flex-start; padding: 0 0 0 36px; }
	.pf + .pf { margin-top: 56px; }
	.polaroid { width: min(74vw, 340px); }

	.case__gallery { grid-template-columns: 1fr; }
	.case__navname { font-size: 22px; }

	.footer__legal { flex-direction: column; align-items: center; text-align: center; }
}

@media (max-height: 640px) and (max-width: 760px) {
	.steps .step p:not(.label) { display: none; }
}

/* 18 Pagine interne: privacy, cookie, 404 ---------------------------------- */
.page {
	min-height: 100vh;
	display: flex;
	flex-direction: column;
}
.back-link { padding: 10px 0; color: var(--muted); transition: color .3s ease; }
.back-link:hover { color: var(--teal); }

.legal {
	flex: 1;
	width: 100%;
	max-width: 780px;
	margin: 0 auto;
	padding: calc(var(--header-h) + clamp(40px, 8vh, 90px)) var(--gutter) clamp(70px, 12vh, 120px);
}
.legal__kicker { color: var(--teal); }
.legal h1 {
	margin: 16px 0 14px;
	font-weight: 400;
	font-size: clamp(40px, 6vw, 76px);
	line-height: 1;
	letter-spacing: -.045em;
}
.legal__updated { margin-bottom: clamp(30px, 5vh, 50px); font-size: 14px; color: var(--dim); }
.legal h2 {
	margin: 42px 0 12px;
	font-weight: 500;
	font-size: clamp(19px, 1.6vw, 22px);
	letter-spacing: -.01em;
}
.legal p, .legal li { font-size: 16px; line-height: 1.7; color: var(--muted); }
.legal p + p, .legal p + ul, .legal ul + p { margin-top: 12px; }
.legal ul { padding-left: 22px; list-style: disc; }
.legal li + li { margin-top: 6px; }
.legal strong { font-weight: 500; color: var(--ink); }
.legal a { color: var(--teal); text-decoration: underline; text-underline-offset: 3px; }

.mini-footer {
	display: flex;
	flex-wrap: wrap;
	justify-content: space-between;
	gap: 8px 20px;
	padding: 22px var(--gutter);
	border-top: 1px solid var(--line);
	font-size: 12px;
	color: var(--dim);
}
.mini-footer a:hover { color: var(--ink); }

.notfound {
	position: relative;
	isolation: isolate;
	overflow: hidden;
	flex: 1;
	display: grid;
	place-content: center;
	justify-items: center;
	gap: 22px;
	min-height: 100vh; /* riserva per browser vecchi */
	min-height: 100svh;
	padding: var(--header-h) var(--gutter) 40px;
	text-align: center;
}
.notfound .label { color: var(--teal); }
.notfound h1 {
	font-weight: 400;
	font-size: clamp(38px, 6vw, 88px);
	line-height: 1;
	letter-spacing: -.045em;
}
.notfound p:not(.label) { max-width: 30em; color: var(--muted); }

/* 19 Riduzione movimento ---------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
	.blob { animation: none; }
	.marquee__track { animation: none; flex-wrap: wrap; width: auto; }
	.marquee__group + .marquee__group { display: none; }
	.marquee__group { flex-wrap: wrap; justify-content: center; }
	*, *::before, *::after { transition-duration: .01ms !important; }
}
