/* ==========================================================================
   Waldner Tecnologie Medicali — Design System
   Rosso aziendale: #EB0029 (dal logo)
   ========================================================================== */

:root{
  /* Brand */
  --red:#EB0029;
  --red-dark:#C10021;
  --red-ink:#8E0018;
  --red-soft:#FFF0F3;
  --red-line:#FBD3DA;

  /* Neutri (grigio-blu freddo, coerente col grigio del logo #434342) */
  --ink:#0E151D;
  --ink-2:#18222E;
  --ink-3:#26313E;
  --slate:#57626F;
  --slate-2:#8590A0;
  --line:#E3E8ED;
  --line-2:#EFF2F5;
  --bg:#FFFFFF;
  --soft:#F5F7FA;
  --soft-2:#EDF1F5;

  /* Misure */
  --container:1240px;
  --gutter:clamp(20px, 4vw, 48px);
  --r-sm:10px;
  --r:16px;
  --r-lg:24px;

  --shadow-1:0 1px 2px rgba(14,21,29,.05), 0 6px 20px rgba(14,21,29,.05);
  --shadow-2:0 2px 6px rgba(14,21,29,.07), 0 22px 55px rgba(14,21,29,.13);
  --shadow-red:0 10px 30px rgba(235,0,41,.28);

  --t:.42s cubic-bezier(.22,.61,.36,1);

  --font-display:"Manrope", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --font-text:"Inter", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%; scroll-behavior:smooth; scroll-padding-top:96px}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:var(--font-text);
  font-size:17px;
  line-height:1.65;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}
img{max-width:100%; display:block}
a{color:inherit}
button{font:inherit}

::selection{background:var(--red); color:#fff}

:focus-visible{outline:3px solid var(--red); outline-offset:3px; border-radius:4px}

.skip{
  position:absolute; left:-9999px; top:0; z-index:1000;
  background:var(--red); color:#fff; padding:12px 20px; border-radius:0 0 8px 0; font-weight:600;
}
.skip:focus{left:0}

/* ---------- Layout ---------- */
.wrap{width:100%; max-width:var(--container); margin-inline:auto; padding-inline:var(--gutter)}
.wrap--narrow{max-width:900px}
.wrap--wide{max-width:1440px}

.section{padding:clamp(64px, 9vw, 128px) 0}
.section--tight{padding:clamp(48px, 6vw, 80px) 0}
.section--soft{background:var(--soft)}
.section--dark{background:var(--ink); color:#fff}
.section--dark .lede{color:#B9C2CD}

/* ---------- Tipografia ---------- */
h1,h2,h3,h4{font-family:var(--font-display); font-weight:800; letter-spacing:-.025em; line-height:1.08; margin:0}
.h1,h1{font-size:clamp(2.4rem, 5.6vw, 4.1rem)}
.h2,h2{font-size:clamp(1.9rem, 3.6vw, 2.9rem); line-height:1.12}
.h3,h3{font-size:clamp(1.2rem, 1.9vw, 1.5rem); letter-spacing:-.02em; line-height:1.25}
.h4,h4{font-size:1.03rem; font-weight:700; letter-spacing:-.01em}
p{margin:0 0 1.15em}
p:last-child{margin-bottom:0}

.eyebrow{
  display:inline-flex; align-items:center; gap:12px;
  font-family:var(--font-text);
  font-size:.75rem; font-weight:700; letter-spacing:.18em; text-transform:uppercase;
  color:var(--red); margin:0 0 20px;
}
.eyebrow::before{content:""; width:28px; height:2px; background:var(--red); flex:none}
.section--dark .eyebrow{color:#FF5470}
.section--dark .eyebrow::before{background:#FF5470}

.lede{font-size:clamp(1.06rem, 1.5vw, 1.28rem); line-height:1.6; color:var(--slate); font-weight:400}
.prose{color:var(--slate); font-size:1.03rem}
.prose strong,.prose b{color:var(--ink); font-weight:600}
.prose em{color:var(--ink-3)}
.prose a:not(.btn):not(.tlink){color:var(--red-dark); text-decoration:underline; text-underline-offset:3px; text-decoration-thickness:1.5px}
.prose a:not(.btn):not(.tlink):hover{color:var(--red)}
.prose h3{margin:2.2em 0 .7em; color:var(--ink)}
.prose h3:first-child{margin-top:0}

.sec-head{max-width:760px; margin-bottom:clamp(40px,5vw,64px)}
.sec-head--center{margin-inline:auto; text-align:center}
.sec-head--center .eyebrow{justify-content:center}
.sec-head .lede{margin-top:20px}

/* Arco: richiamo grafico del segno del logo */
.arc{width:36px; height:36px; flex:none}
.arc path{stroke:var(--red)}

/* ---------- Bottoni ---------- */
.btn{
  display:inline-flex; align-items:center; gap:10px;
  padding:14px 26px; border-radius:100px; border:1.5px solid transparent;
  font-family:var(--font-text); font-weight:600; font-size:.95rem; letter-spacing:.005em;
  text-decoration:none; cursor:pointer; white-space:nowrap;
  transition:background var(--t), color var(--t), border-color var(--t), transform var(--t), box-shadow var(--t);
}
.btn svg{width:16px; height:16px; transition:transform var(--t)}
.btn:hover svg{transform:translateX(4px)}
.btn--primary{background:var(--red); color:#fff}
.btn--primary:hover{background:var(--red-dark); transform:translateY(-2px); box-shadow:var(--shadow-red)}
.btn--ghost{border-color:var(--line); color:var(--ink); background:#fff}
.btn--ghost:hover{border-color:var(--ink); transform:translateY(-2px)}
.btn--light{border-color:rgba(255,255,255,.28); color:#fff}
.btn--light:hover{background:#fff; color:var(--ink); border-color:#fff}
.btn--sm{padding:10px 20px; font-size:.88rem}

.tlink{
  display:inline-flex; align-items:center; gap:9px;
  font-weight:600; font-size:.95rem; color:var(--red-dark); text-decoration:none;
}
.tlink svg{width:15px; height:15px; transition:transform var(--t)}
.tlink:hover{color:var(--red)}
.tlink:hover svg{transform:translateX(4px)}

/* ---------- Header ---------- */
.site-header{
  position:fixed; inset:0 0 auto 0; z-index:100;
  background:rgba(255,255,255,.86);
  backdrop-filter:saturate(160%) blur(14px);
  -webkit-backdrop-filter:saturate(160%) blur(14px);
  border-bottom:1px solid transparent;
  transition:border-color var(--t), box-shadow var(--t), background var(--t);
}
.site-header.is-stuck{border-bottom-color:var(--line); box-shadow:0 6px 24px rgba(14,21,29,.06)}
.hdr{display:flex; align-items:center; gap:clamp(16px,3vw,44px); height:84px; transition:height var(--t)}
.site-header.is-stuck .hdr{height:70px}

.brand{display:flex; align-items:center; flex:none}
.brand img{height:38px; width:auto; transition:height var(--t)}
.site-header.is-stuck .brand img{height:33px}

.nav{display:flex; align-items:center; gap:clamp(10px,1.7vw,26px); margin-left:auto}
.nav a{
  position:relative; text-decoration:none; font-size:.845rem; font-weight:600;
  letter-spacing:.055em; text-transform:uppercase; color:var(--ink-3);
  padding:8px 0; transition:color var(--t); white-space:nowrap;
}
.nav a::after{
  content:""; position:absolute; left:0; right:100%; bottom:0; height:2px;
  background:var(--red); transition:right var(--t);
}
.nav a:hover{color:var(--ink)}
.nav a:hover::after,.nav a[aria-current="page"]::after{right:0}
.nav a[aria-current="page"]{color:var(--red)}

.hdr-tools{display:flex; align-items:center; gap:16px; flex:none}
.langs{display:flex; align-items:center; gap:2px; font-size:.78rem; font-weight:700; letter-spacing:.06em}
.langs a{text-decoration:none; color:var(--slate-2); padding:4px 6px; border-radius:6px; transition:color var(--t), background var(--t)}
.langs a:hover{color:var(--ink); background:var(--soft)}
.langs a.is-active{color:var(--ink)}
.langs span{color:var(--line)}

.reserved{
  display:inline-flex; align-items:center; gap:7px; text-decoration:none;
  font-size:.78rem; font-weight:600; letter-spacing:.05em; text-transform:uppercase;
  color:var(--slate); transition:color var(--t);
}
.reserved svg{width:13px; height:13px}
.reserved:hover{color:var(--red)}

.burger{
  display:none; width:46px; height:46px; border:1px solid var(--line); background:#fff;
  border-radius:12px; cursor:pointer; padding:0;
  flex-direction:column; align-items:center; justify-content:center; gap:5px;
}
.burger span{display:block; width:19px; height:1.8px; background:var(--ink); border-radius:2px; transition:transform var(--t), opacity var(--t)}
body.menu-open .burger span:nth-child(1){transform:translateY(6.8px) rotate(45deg)}
body.menu-open .burger span:nth-child(2){opacity:0}
body.menu-open .burger span:nth-child(3){transform:translateY(-6.8px) rotate(-45deg)}

/* Drawer mobile */
.drawer{
  position:fixed; inset:0; z-index:99; background:#fff;
  padding:110px var(--gutter) 40px;
  transform:translateX(100%); transition:transform .5s cubic-bezier(.22,.61,.36,1);
  overflow-y:auto; display:flex; flex-direction:column;
}
body.menu-open .drawer{transform:translateX(0)}
.drawer nav{display:flex; flex-direction:column}
.drawer nav a{
  text-decoration:none; font-family:var(--font-display); font-weight:700; font-size:1.55rem;
  letter-spacing:-.02em; padding:16px 0; border-bottom:1px solid var(--line-2); color:var(--ink);
}
.drawer nav a[aria-current="page"]{color:var(--red)}
.drawer .drawer-foot{margin-top:auto; padding-top:32px; display:flex; flex-wrap:wrap; gap:16px 24px; align-items:center}

/* ---------- Hero home ---------- */
.hero{position:relative; min-height:min(92vh, 880px); display:flex; align-items:center; padding:140px 0 90px; overflow:hidden}
.hero__media{position:absolute; inset:0; z-index:0}
.hero__media img{width:100%; height:100%; object-fit:cover; object-position:70% center; animation:kb 22s ease-out both}
@keyframes kb{from{transform:scale(1.07)} to{transform:scale(1)}}
.hero__media::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(96deg, rgba(255,255,255,.97) 0%, rgba(255,255,255,.93) 32%, rgba(255,255,255,.55) 52%, rgba(255,255,255,0) 74%);
}
.hero__inner{position:relative; z-index:1; max-width:660px}
.hero__title{font-size:clamp(2.9rem, 7.2vw, 5.4rem); line-height:.98; letter-spacing:-.035em}
.hero__title .accent{color:var(--red)}
.hero__rule{width:64px; height:4px; background:var(--red); border-radius:4px; margin:30px 0}
.hero__lede{font-size:clamp(1.05rem,1.6vw,1.32rem); color:var(--ink-3); max-width:540px; line-height:1.55}
.hero__actions{display:flex; flex-wrap:wrap; gap:14px; margin-top:38px}
.hero__meta{
  position:absolute; left:0; right:0; bottom:34px; z-index:1;
  display:flex; gap:36px; flex-wrap:wrap; font-size:.78rem; letter-spacing:.14em;
  text-transform:uppercase; font-weight:600; color:var(--slate-2);
}
.hero__meta b{color:var(--ink); font-weight:700}

/* ---------- Page hero (pagine interne) ---------- */
.page-hero{position:relative; padding:170px 0 clamp(64px,8vw,110px); overflow:hidden; background:var(--ink); color:#fff}
.page-hero__media{position:absolute; inset:0; z-index:0}
.page-hero__media img{width:100%; height:100%; object-fit:cover; opacity:.42}
.page-hero__media::after{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(14,21,29,.86) 0%, rgba(14,21,29,.55) 45%, rgba(14,21,29,.92) 100%);
}
.page-hero__inner{position:relative; z-index:1; max-width:820px}
.page-hero h1{color:#fff}
.page-hero .lede{color:#C7D0DA; margin-top:22px; max-width:660px}
.page-hero .eyebrow{color:#FF5470}
.page-hero .eyebrow::before{background:#FF5470}

.crumbs{display:flex; gap:10px; align-items:center; font-size:.8rem; color:rgba(255,255,255,.55); margin-bottom:26px}
.crumbs a{text-decoration:none; transition:color var(--t)}
.crumbs a:hover{color:#fff}
.crumbs span{opacity:.5}

/* ---------- Stats ---------- */
.stats{display:grid; grid-template-columns:repeat(4,1fr); gap:1px; background:rgba(255,255,255,.12); border-radius:var(--r); overflow:hidden}
.stat{background:var(--ink); padding:clamp(26px,3.4vw,40px)}
.stat__num{
  font-family:var(--font-display); font-weight:800; font-size:clamp(2.2rem,4.4vw,3.3rem);
  letter-spacing:-.04em; line-height:1; color:#fff;
}
.stat__num em{color:var(--red); font-style:normal}
.stat__label{margin-top:12px; font-size:.83rem; letter-spacing:.1em; text-transform:uppercase; color:#93A0AE; font-weight:600; line-height:1.5}

/* ---------- Split ---------- */
.split{display:grid; grid-template-columns:1.05fr 1fr; gap:clamp(36px,5.5vw,88px); align-items:center}
.split--flip .split__media{order:2}
.split__media{position:relative}
.split__media img{width:100%; border-radius:var(--r-lg); box-shadow:var(--shadow-2)}
.split__badge{
  position:absolute; left:-18px; bottom:-18px; background:var(--red); color:#fff;
  border-radius:var(--r); padding:22px 26px; box-shadow:var(--shadow-red); max-width:230px;
}
.split__badge b{display:block; font-family:var(--font-display); font-size:1.9rem; line-height:1; letter-spacing:-.03em}
.split__badge span{display:block; margin-top:8px; font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; font-weight:600; opacity:.92}

/* ---------- Griglie e card ---------- */
.grid{display:grid; gap:clamp(18px,2.2vw,28px)}
.grid--2{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(3,1fr)}
.grid--4{grid-template-columns:repeat(4,1fr)}

.card{
  position:relative; background:#fff; border:1px solid var(--line); border-radius:var(--r);
  overflow:hidden; display:flex; flex-direction:column;
  transition:transform var(--t), box-shadow var(--t), border-color var(--t);
}
.card::before{
  content:""; position:absolute; top:0; left:0; right:100%; height:3px; background:var(--red);
  transition:right var(--t); z-index:2;
}
.card:hover{transform:translateY(-6px); box-shadow:var(--shadow-2); border-color:transparent}
.card:hover::before{right:0}
.card__media{position:relative; aspect-ratio:16/10; overflow:hidden; background:var(--soft-2)}
.card__media img{width:100%; height:100%; object-fit:cover; transition:transform .8s cubic-bezier(.22,.61,.36,1)}
.card:hover .card__media img{transform:scale(1.06)}
.card__body{padding:clamp(22px,2.4vw,30px); display:flex; flex-direction:column; gap:12px; flex:1}
.card__title{font-family:var(--font-display); font-weight:700; font-size:1.16rem; letter-spacing:-.02em; line-height:1.25}
.card__text{font-size:.95rem; color:var(--slate); line-height:1.6; margin:0}
.card__foot{margin-top:auto; padding-top:6px}

/* Business unit */
.bu{
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  padding:clamp(26px,2.8vw,34px); display:flex; flex-direction:column; gap:16px;
  transition:transform var(--t), box-shadow var(--t), border-color var(--t);
}
.bu:hover{transform:translateY(-6px); box-shadow:var(--shadow-2); border-color:transparent}
.bu__icon{
  width:62px; height:62px; border-radius:14px; background:var(--red-soft);
  display:grid; place-items:center; border:1px solid var(--red-line);
}
.bu__icon img{width:36px; height:36px; object-fit:contain}
.bu__name{font-family:var(--font-display); font-weight:800; font-size:1.05rem; letter-spacing:.06em; text-transform:uppercase}
.bu__sub{font-size:.76rem; letter-spacing:.11em; text-transform:uppercase; color:var(--red); font-weight:700; margin-top:-10px}
.bu__text{font-size:.95rem; color:var(--slate); line-height:1.62; margin:0}
.chips{display:flex; flex-wrap:wrap; gap:7px; margin-top:auto; padding-top:6px}
.chip{
  font-size:.68rem; letter-spacing:.07em; text-transform:uppercase; font-weight:600;
  background:var(--soft); color:var(--slate); border:1px solid var(--line-2);
  padding:5px 11px; border-radius:100px; white-space:nowrap;
}

/* Servizi — accordion con immagine */
.svc{border-top:1px solid var(--line)}
.svc:last-child{border-bottom:1px solid var(--line)}
.svc__head{
  width:100%; background:none; border:0; cursor:pointer; text-align:left;
  display:flex; align-items:center; gap:24px; padding:clamp(22px,2.6vw,32px) 0;
  transition:padding-left var(--t);
}
.svc__head:hover{padding-left:10px}
.svc__idx{font-family:var(--font-display); font-weight:800; font-size:.85rem; color:var(--red); letter-spacing:.06em; width:34px; flex:none}
.svc__title{font-family:var(--font-display); font-weight:700; font-size:clamp(1.15rem,2.1vw,1.6rem); letter-spacing:-.02em; flex:1; line-height:1.25}
.svc__plus{
  width:42px; height:42px; border-radius:50%; border:1.5px solid var(--line); flex:none;
  display:grid; place-items:center; transition:background var(--t), border-color var(--t), transform var(--t);
}
.svc__plus::before,.svc__plus::after{content:""; position:absolute; width:14px; height:1.8px; background:var(--ink); border-radius:2px; transition:transform var(--t), background var(--t)}
.svc__plus{position:relative}
.svc__plus::after{transform:rotate(90deg)}
.svc__head:hover .svc__plus{border-color:var(--red)}
.svc.is-open .svc__plus{background:var(--red); border-color:var(--red)}
.svc.is-open .svc__plus::before,.svc.is-open .svc__plus::after{background:#fff}
.svc.is-open .svc__plus::after{transform:rotate(0)}
.svc__panel{display:grid; grid-template-rows:0fr; transition:grid-template-rows .5s cubic-bezier(.22,.61,.36,1)}
.svc.is-open .svc__panel{grid-template-rows:1fr}
.svc__panel>div{overflow:hidden}
.svc__inner{display:grid; grid-template-columns:1fr .85fr; gap:clamp(24px,4vw,56px); padding:0 0 clamp(28px,3.4vw,44px) 58px; align-items:start}
.svc__inner img{border-radius:var(--r); box-shadow:var(--shadow-1)}

/* Realizzazioni */
.proj-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(16px,2vw,24px)}
.proj{
  position:relative; border-radius:var(--r); overflow:hidden; cursor:pointer;
  border:0; padding:0; background:var(--ink); text-align:left; color:#fff;
  aspect-ratio:4/3; display:block; width:100%;
  transition:transform var(--t), box-shadow var(--t);
}
.proj:hover{transform:translateY(-6px); box-shadow:var(--shadow-2)}
.proj img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; transition:transform .9s cubic-bezier(.22,.61,.36,1), opacity var(--t); opacity:.82}
.proj:hover img{transform:scale(1.07); opacity:.62}
.proj__grad{position:absolute; inset:0; background:linear-gradient(180deg, rgba(14,21,29,0) 34%, rgba(14,21,29,.55) 62%, rgba(14,21,29,.93) 100%)}
.proj__body{position:absolute; inset:auto 0 0 0; padding:clamp(20px,2.4vw,28px); display:block}
.proj__place{display:block; font-size:.72rem; letter-spacing:.13em; text-transform:uppercase; font-weight:700; color:#FF7089; margin-bottom:8px}
.proj__title{display:block; font-family:var(--font-display); font-weight:800; font-size:1.14rem; letter-spacing:-.02em; line-height:1.2}
.proj__more{
  display:inline-flex; align-items:center; gap:8px; margin-top:14px; font-size:.82rem; font-weight:600;
  color:#fff; opacity:0; transform:translateY(6px); transition:opacity var(--t), transform var(--t);
}
.proj:hover .proj__more{opacity:1; transform:translateY(0)}
.proj__more svg{width:14px; height:14px}

/* Modal */
.modal{
  position:fixed; inset:0; z-index:200; display:grid; place-items:center;
  padding:clamp(16px,4vw,48px); opacity:0; pointer-events:none; transition:opacity .35s ease;
}
.modal.is-open{opacity:1; pointer-events:auto}
.modal__bg{position:absolute; inset:0; background:rgba(14,21,29,.72); backdrop-filter:blur(6px)}
.modal__box{
  position:relative; background:#fff; border-radius:var(--r-lg); max-width:1000px; width:100%;
  max-height:88vh; overflow:auto; box-shadow:var(--shadow-2);
  transform:translateY(18px) scale(.985); transition:transform .4s cubic-bezier(.22,.61,.36,1);
}
.modal.is-open .modal__box{transform:none}
.modal__close{
  position:absolute; top:16px; right:16px; z-index:3; width:44px; height:44px; border-radius:50%;
  border:0; background:rgba(255,255,255,.94); cursor:pointer; display:grid; place-items:center;
  box-shadow:var(--shadow-1); transition:background var(--t), transform var(--t);
}
.modal__close:hover{background:var(--red); transform:rotate(90deg)}
.modal__close:hover svg{stroke:#fff}
.modal__close svg{width:18px; height:18px; stroke:var(--ink)}
.modal__media{aspect-ratio:16/9; background:var(--soft-2)}
.modal__media img{width:100%; height:100%; object-fit:cover}
.modal__body{padding:clamp(26px,3.6vw,48px)}
.modal__body h3{margin-bottom:22px}
.dl{display:grid; gap:14px; margin:0}
.dl>div{display:grid; grid-template-columns:130px 1fr; gap:18px; padding-bottom:14px; border-bottom:1px solid var(--line-2)}
.dl>div:last-child{border-bottom:0}
.dl dt{font-size:.74rem; letter-spacing:.12em; text-transform:uppercase; font-weight:700; color:var(--red); padding-top:4px}
.dl dd{margin:0; color:var(--slate); font-size:.98rem; line-height:1.62}

/* Academy gallery */
.gal{display:grid; grid-template-columns:repeat(5,1fr); gap:clamp(12px,1.6vw,20px)}
.gal button{
  border:1px solid var(--line); background:var(--soft); padding:0; border-radius:var(--r-sm);
  overflow:hidden; cursor:pointer; aspect-ratio:3/4; position:relative;
  transition:transform var(--t), box-shadow var(--t), border-color var(--t);
}
.gal button:hover{transform:translateY(-5px) scale(1.015); box-shadow:var(--shadow-2); border-color:var(--red)}
.gal img{width:100%; height:100%; object-fit:contain; background:#fff; padding:6px}
.gal button::after{
  content:""; position:absolute; inset:0; background:rgba(235,0,41,.14); opacity:0; transition:opacity var(--t);
}
.gal button:hover::after{opacity:1}

.lightbox{
  position:fixed; inset:0; z-index:210; display:grid; place-items:center; padding:clamp(20px,4vw,60px);
  background:rgba(14,21,29,.9); opacity:0; pointer-events:none; transition:opacity .3s ease;
}
.lightbox.is-open{opacity:1; pointer-events:auto}
.lightbox img{max-width:100%; max-height:86vh; width:auto; border-radius:8px; box-shadow:var(--shadow-2)}
.lightbox .modal__close{background:#fff}

/* Elenco specialità */
.tags{display:flex; flex-wrap:wrap; gap:9px}
.tag{
  font-size:.83rem; font-weight:500; padding:9px 16px; border-radius:100px;
  background:#fff; border:1px solid var(--line); color:var(--ink-3);
  transition:border-color var(--t), color var(--t), transform var(--t);
}
.tag:hover{border-color:var(--red); color:var(--red); transform:translateY(-2px)}
.section--soft .tag{background:#fff}

/* Documenti */
.docs{display:grid; gap:12px}
.doc{
  display:flex; align-items:center; gap:18px; padding:20px 24px; background:#fff;
  border:1px solid var(--line); border-radius:var(--r); text-decoration:none;
  transition:border-color var(--t), transform var(--t), box-shadow var(--t);
}
.doc:hover{border-color:var(--red); transform:translateX(6px); box-shadow:var(--shadow-1)}
.doc__ico{
  width:44px; height:44px; border-radius:10px; background:var(--red-soft); color:var(--red);
  display:grid; place-items:center; flex:none; border:1px solid var(--red-line); font-size:.66rem; font-weight:800; letter-spacing:.04em;
}
.doc__name{font-weight:600; font-size:1rem; line-height:1.35}
.doc__meta{font-size:.8rem; color:var(--slate-2); margin-top:3px}
.doc__arr{margin-left:auto; color:var(--slate-2); transition:color var(--t), transform var(--t)}
.doc:hover .doc__arr{color:var(--red)}
.doc__arr svg{width:18px; height:18px}

/* Callout */
.callout{
  background:var(--red-soft); border:1px solid var(--red-line); border-radius:var(--r-lg);
  padding:clamp(28px,3.6vw,48px);
}
.callout h3{color:var(--red-ink); margin-bottom:16px}
.callout .prose{color:var(--ink-3)}

/* Contatti */
.dept{
  display:flex; flex-direction:column; gap:6px; padding:24px 26px; background:#fff;
  border:1px solid var(--line); border-radius:var(--r); text-decoration:none;
  transition:border-color var(--t), transform var(--t), box-shadow var(--t);
}
.dept:hover{border-color:var(--red); transform:translateY(-4px); box-shadow:var(--shadow-1)}
.dept__label{font-size:.72rem; letter-spacing:.13em; text-transform:uppercase; font-weight:700; color:var(--slate-2)}
.dept__mail{font-family:var(--font-display); font-weight:700; font-size:1.02rem; letter-spacing:-.015em; color:var(--ink); word-break:break-word}
.dept:hover .dept__mail{color:var(--red)}

.loc{background:#fff; border:1px solid var(--line); border-radius:var(--r); padding:clamp(26px,2.8vw,34px); display:flex; flex-direction:column; gap:14px}
.loc__tag{
  align-self:flex-start; font-size:.68rem; letter-spacing:.12em; text-transform:uppercase; font-weight:700;
  color:#fff; background:var(--red); padding:5px 12px; border-radius:100px;
}
.loc h3{font-size:1.28rem}
.loc p{font-size:.96rem; color:var(--slate); margin:0}
.loc a{color:var(--ink); text-decoration:none; font-weight:600}
.loc a:hover{color:var(--red)}

/* CTA band */
.cta-band{position:relative; overflow:hidden; border-radius:var(--r-lg); padding:clamp(44px,6vw,86px) clamp(28px,5vw,72px); color:#fff}
.cta-band__media{position:absolute; inset:0; z-index:0}
.cta-band__media img{width:100%; height:100%; object-fit:cover}
.cta-band__media::after{content:""; position:absolute; inset:0; background:linear-gradient(100deg, rgba(14,21,29,.94) 12%, rgba(14,21,29,.72) 58%, rgba(235,0,41,.42) 100%)}
.cta-band__inner{position:relative; z-index:1; max-width:640px}
.cta-band h2{color:#fff}
.cta-band p{color:#C7D0DA; margin-top:18px; font-size:1.08rem}

/* Strip immagini */
.strip{display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(10px,1.4vw,18px)}
.strip img{width:100%; aspect-ratio:4/3; object-fit:cover; border-radius:var(--r-sm)}

/* ---------- Footer ---------- */
.footer{background:var(--ink); color:#fff; padding:clamp(56px,6vw,88px) 0 0}
.footer__top{display:grid; grid-template-columns:1.4fr 1fr 1fr 1.1fr; gap:clamp(28px,3.6vw,56px); padding-bottom:56px}
.footer__logo{height:40px; width:auto; margin-bottom:24px}
.footer__claim{font-family:var(--font-display); font-weight:700; font-size:1.28rem; letter-spacing:-.02em; color:#fff; margin-bottom:14px}
.footer p,.footer li{color:#96A2B0; font-size:.93rem; line-height:1.72}
.footer h4{font-size:.75rem; letter-spacing:.15em; text-transform:uppercase; color:#fff; margin-bottom:20px; font-family:var(--font-text); font-weight:700}
.footer ul{list-style:none; margin:0; padding:0; display:grid; gap:11px}
.footer ul a{text-decoration:none; transition:color var(--t)}
.footer ul a:hover{color:#fff}
.footer__legal{
  border-top:1px solid rgba(255,255,255,.1); padding:28px 0 34px;
  display:flex; flex-wrap:wrap; gap:14px 32px; justify-content:space-between; align-items:flex-start;
}
.footer__legal p{font-size:.79rem; color:#6E7B8A; line-height:1.7; margin:0; max-width:820px}
.footer__legal a{color:#96A2B0; text-decoration:none}
.footer__legal a:hover{color:#fff}
.footer__mail{color:#fff !important; font-weight:600; text-decoration:none}
.footer__mail:hover{color:var(--red) !important}

/* ---------- Cookie bar ---------- */
.cookiebar{
  position:fixed; left:var(--gutter); right:var(--gutter); bottom:20px; z-index:150;
  background:#fff; border:1px solid var(--line); border-radius:var(--r);
  box-shadow:var(--shadow-2); padding:20px 24px;
  display:flex; align-items:center; gap:20px; flex-wrap:wrap;
  max-width:var(--container); margin-inline:auto;
  transform:translateY(140%); transition:transform .6s cubic-bezier(.22,.61,.36,1);
}
.cookiebar.is-in{transform:none}
.cookiebar p{font-size:.86rem; color:var(--slate); margin:0; flex:1; min-width:260px; line-height:1.55}
.cookiebar .btn{padding:11px 22px; font-size:.87rem}

/* ---------- Reveal ---------- */
.reveal{opacity:0; transform:translateY(26px); transition:opacity .8s cubic-bezier(.22,.61,.36,1), transform .8s cubic-bezier(.22,.61,.36,1)}
.reveal.is-in{opacity:1; transform:none}
.reveal[data-d="1"]{transition-delay:.09s}
.reveal[data-d="2"]{transition-delay:.18s}
.reveal[data-d="3"]{transition-delay:.27s}
.reveal[data-d="4"]{transition-delay:.36s}
.reveal[data-d="5"]{transition-delay:.45s}

/* ---------- Responsive ---------- */
@media (max-width:1080px){
  .nav{display:none}
  .hdr-tools .langs,.hdr-tools .reserved{display:none}
  .burger{display:flex}
  .hdr{justify-content:space-between}
  .hdr-tools{margin-left:auto}
  .grid--4{grid-template-columns:repeat(2,1fr)}
  .gal{grid-template-columns:repeat(4,1fr)}
  .footer__top{grid-template-columns:1fr 1fr}
}
@media (max-width:860px){
  body{font-size:16px}
  .grid--3,.proj-grid{grid-template-columns:repeat(2,1fr)}
  .stats{grid-template-columns:repeat(2,1fr)}
  .split{grid-template-columns:1fr; gap:36px}
  .split--flip .split__media{order:0}
  .split__badge{left:16px; right:auto; bottom:-16px}
  .svc__inner{grid-template-columns:1fr; padding-left:0}
  .svc__inner img{order:-1}
  .gal{grid-template-columns:repeat(3,1fr)}
  .hero{min-height:auto; padding:130px 0 80px; flex-direction:column; align-items:stretch}
  .hero__media img{object-position:66% center}
  .hero__media::after{background:linear-gradient(180deg, rgba(255,255,255,.96) 0%, rgba(255,255,255,.88) 46%, rgba(255,255,255,.55) 100%)}
  .hero__meta{position:static; margin-top:44px; gap:22px}
  .dl>div{grid-template-columns:1fr; gap:4px}
}
@media (max-width:600px){
  .grid--2,.grid--3,.grid--4,.proj-grid{grid-template-columns:1fr}
  .stats{grid-template-columns:1fr}
  .gal{grid-template-columns:repeat(2,1fr)}
  .strip{grid-template-columns:repeat(2,1fr)}
  .strip img:nth-child(1){grid-column:span 1}
  .footer__top{grid-template-columns:1fr}
  .cookiebar{left:12px; right:12px; bottom:12px; padding:18px}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms !important; transition-duration:.001ms !important; scroll-behavior:auto !important}
  .reveal{opacity:1; transform:none}
}

@media print{
  .site-header,.drawer,.cookiebar,.hero__actions{display:none}
  body{font-size:11pt}
}
