:root{
  --bg:#000;
  --surface:#0d0d0f;
  --surface-2:#141418;
  --head:#d8d8dd;      /* titoli */
  --text:#9a9aa2;      /* testo */
  --muted:#5e5e66;     /* secondario */
  --faint:#3a3a41;     /* numeri, dettagli */
  --accent:#e6e6ea;
  --radius:20px;
  --pad:clamp(20px, 5vw, 80px);
  --max:1400px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  background:var(--bg);
  color:var(--text);
  font-family:"Helvetica Neue",Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
h1,h2,h3,p{margin:0}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
::selection{background:#e6e6ea;color:#000}

/* grana + alone: profondità senza bordi */
.glow{
  position:fixed;inset:0;pointer-events:none;z-index:0;
  background:
    radial-gradient(900px 600px at 72% -14%, rgba(255,255,255,.055), transparent 60%),
    radial-gradient(700px 500px at 0% 30%, rgba(255,255,255,.028), transparent 62%);
}
.glow::after{
  content:"";position:absolute;inset:-50%;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='.5'/></svg>");
  opacity:.035;mix-blend-mode:screen;
}
main,.nav,.foot{position:relative;z-index:1}

/* ---------- nav ---------- */
.nav{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;justify-content:space-between;
  padding:22px var(--pad);
  backdrop-filter:blur(16px);
  background:linear-gradient(180deg,rgba(0,0,0,.9),rgba(0,0,0,0));
}
.nav__brand{
  font-weight:600;letter-spacing:.34em;font-size:12px;color:var(--head);
}
.nav__links{display:flex;gap:30px;font-size:13px;color:var(--muted)}
.nav__links a{position:relative;transition:color .3s}
.nav__links a::after{
  content:"";position:absolute;left:0;bottom:-6px;height:1px;width:0;
  background:currentColor;transition:width .35s cubic-bezier(.2,.7,.3,1);
}
.nav__links a:hover{color:var(--head)}
.nav__links a:hover::after{width:100%}

/* ---------- hero ---------- */
.hero{
  max-width:var(--max);margin:0 auto;
  padding:clamp(90px,20vh,220px) var(--pad) clamp(80px,14vh,170px);
  text-align:center;
}
.hero__title{
  font-size:clamp(42px,11.5vw,180px);
  line-height:1;letter-spacing:.02em;font-weight:600;
}
/* la scritta compare da sinistra verso destra */
.hero__word{
  display:inline-block;
  background:linear-gradient(100deg,#fff 0%,#c9c9d0 40%,#6a6a73 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  clip-path:inset(0 100% 0 0);
  animation:wipe 1.15s cubic-bezier(.16,.84,.28,1) .15s forwards;
}
@keyframes wipe{to{clip-path:inset(0 -6% 0 0)}}

.hero__services{
  margin-top:clamp(16px,2.2vw,26px);
  display:flex;justify-content:center;align-items:center;
  flex-wrap:wrap;gap:clamp(8px,1vw,14px);
  font-size:clamp(10.5px,1.05vw,13px);
  letter-spacing:.26em;text-transform:uppercase;color:var(--muted);
}
.hero__services span{opacity:0;animation:rise .7s cubic-bezier(.2,.7,.3,1) forwards}
.hero__services .sep{color:var(--faint);letter-spacing:0}
@keyframes rise{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@keyframes fadein{to{opacity:1}}

.hero__text{
  margin:clamp(30px,4vh,44px) auto 0;max-width:52ch;color:var(--text);
  font-size:clamp(14.5px,1.4vw,17px);line-height:1.75;
  opacity:0;animation:rise .8s cubic-bezier(.2,.7,.3,1) 1.4s forwards;
}
.btn{
  display:inline-flex;align-items:center;gap:12px;margin-top:44px;
  opacity:0;animation:fadein .8s ease 1.55s forwards;
  padding:15px 30px;border-radius:999px;
  background:var(--accent);color:#000;
  font-size:13px;font-weight:600;letter-spacing:.02em;
  transition:transform .3s cubic-bezier(.2,.7,.3,1), box-shadow .3s;
  box-shadow:0 0 0 0 rgba(255,255,255,.14);
}
.btn::after{content:"→";font-size:15px;transition:transform .3s}
.btn:hover{transform:translateY(-2px);box-shadow:0 0 44px -6px rgba(255,255,255,.22)}
.btn:hover::after{transform:translateX(4px)}

/* ---------- sezioni ---------- */
.section{max-width:var(--max);margin:0 auto;padding:clamp(60px,11vh,130px) var(--pad)}
.section__head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:22px;flex-wrap:wrap;margin-bottom:44px;
}
.section__head h2{
  font-size:clamp(24px,3.4vw,44px);font-weight:500;letter-spacing:-.03em;
  color:var(--head);max-width:16ch;line-height:1.05;
}
.filters{display:flex;gap:8px}
.chip{
  padding:10px 20px;border-radius:999px;font-size:12.5px;letter-spacing:.02em;
  color:var(--muted);background:var(--surface);
  transition:background .3s,color .3s;
}
.chip:hover{color:var(--head);background:var(--surface-2)}
.chip.is-active{background:var(--accent);color:#000}

/* ---------- griglia lavori ---------- */
.grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:16px;grid-auto-rows:290px;
}
.card{
  position:relative;overflow:hidden;border-radius:var(--radius);
  background:var(--surface);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 30px 60px -40px #000;
  cursor:pointer;
  transition:transform .5s cubic-bezier(.2,.7,.3,1), box-shadow .5s;
}
.card:hover{
  transform:translateY(-5px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09), 0 40px 70px -40px rgba(255,255,255,.1);
}
.card--wide{grid-column:span 2}
.card--tall{grid-row:span 2}
.card.is-hidden{display:none}

.card__media{position:absolute;inset:0}
.card__media img,.card__media video{
  width:100%;height:100%;object-fit:cover;display:block;
  filter:grayscale(1) contrast(1.05);
  transition:transform .8s cubic-bezier(.2,.7,.3,1), filter .6s;
}
.card:hover .card__media img,
.card:hover .card__media video{transform:scale(1.06);filter:grayscale(0) contrast(1)}

.card__info{
  position:absolute;inset:auto 0 0 0;z-index:2;
  display:flex;align-items:flex-end;justify-content:space-between;gap:14px;
  padding:22px 24px;
  background:linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.8));
  opacity:0;transform:translateY(10px);
  transition:opacity .4s,transform .4s;
}
.card:hover .card__info{opacity:1;transform:none}
.card__title{font-size:15px;font-weight:600;color:var(--head)}
.card__tag{font-size:10.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}

/* numero d'ordine */
.card__num{
  position:absolute;top:20px;left:22px;z-index:2;
  font-size:11px;letter-spacing:.16em;color:var(--faint);
  transition:color .35s;
}
.card:hover .card__num{color:var(--text)}

/* slot vuoto */
.card--empty{
  background:radial-gradient(120% 100% at 50% 0%, #17171c 0%, #0b0b0d 70%);
  display:grid;place-items:center;text-align:center;
}
.card--empty::before{
  content:"";position:absolute;inset:14px;border-radius:14px;
  background:
    linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px) 0 0/100% 100%,
    linear-gradient(180deg,rgba(255,255,255,.07) 1px,transparent 1px) 0 0/100% 100%;
  -webkit-mask:linear-gradient(#000,#000) content-box exclude, linear-gradient(#000,#000);
  opacity:0;
}
.slot{display:grid;gap:14px;justify-items:center;padding:26px;color:var(--muted)}
.slot__icon{
  width:52px;height:52px;border-radius:16px;
  background:linear-gradient(160deg,rgba(255,255,255,.09),rgba(255,255,255,.02));
  display:grid;place-items:center;
  transition:transform .4s cubic-bezier(.2,.7,.3,1);
}
.card:hover .slot__icon{transform:translateY(-3px) scale(1.06)}
.slot__icon svg{width:22px;height:22px;stroke:#b4b4bc;fill:none;stroke-width:1.5}
.slot__label{font-size:13.5px;font-weight:600;color:#c2c2ca;letter-spacing:.01em}
.slot__hint{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--faint)}

/* ---------- clienti: marquee ---------- */
.marquee{
  position:relative;overflow:hidden;
  -webkit-mask:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
          mask:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent);
}
.marquee__track{display:flex;width:max-content;animation:slide 42s linear infinite}
.marquee:hover .marquee__track{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}

.client{
  flex:0 0 auto;width:230px;height:120px;margin-right:16px;
  border-radius:var(--radius);background:var(--surface);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
  display:grid;place-items:center;padding:24px;
  color:var(--muted);font-size:14px;letter-spacing:.09em;text-align:center;
  transition:background .35s,color .35s,transform .4s;
}
.client:hover{background:var(--surface-2);color:var(--head);transform:translateY(-4px)}
/* i loghi sono già bianchi su trasparente: basta modularne l'opacità */
.client img{max-width:100%;max-height:66px;object-fit:contain;opacity:.5;transition:opacity .35s}
.client:hover img{opacity:1}

/* ---------- contatti ---------- */
.contact{text-align:center}
.contact h2{
  font-size:clamp(30px,6vw,84px);font-weight:500;letter-spacing:-.04em;line-height:1;
  background:linear-gradient(170deg,#e8e8ea,#55555d);
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.contact__mail{
  display:inline-block;margin-top:32px;
  font-size:clamp(17px,2.3vw,26px);color:var(--text);letter-spacing:-.01em;
  padding-bottom:6px;
  background-image:linear-gradient(currentColor,currentColor);
  background-size:0% 1px;background-repeat:no-repeat;background-position:0 100%;
  transition:background-size .45s cubic-bezier(.2,.7,.3,1), color .35s;
}
.contact__mail:hover{background-size:100% 1px;color:var(--head)}
.contact__meta{
  margin-top:24px;display:flex;gap:30px;justify-content:center;flex-wrap:wrap;
  color:var(--faint);font-size:12px;letter-spacing:.18em;text-transform:uppercase;
}
.contact__meta a{transition:color .3s}
.contact__meta a:hover{color:var(--text)}
.contact__social{margin-top:42px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}
.contact__social a{
  padding:12px 24px;border-radius:999px;background:var(--surface);
  font-size:12.5px;color:var(--muted);
  transition:background .3s,color .3s,transform .3s;
}
.contact__social a:hover{background:var(--surface-2);color:var(--head);transform:translateY(-2px)}

/* ---------- footer ---------- */
.foot{
  max-width:var(--max);margin:0 auto;
  padding:40px var(--pad) 56px;
  display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;
  color:#3d3d44;font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;
}

/* ---------- lightbox ---------- */
.lightbox{
  position:fixed;inset:0;z-index:100;display:none;place-items:center;padding:4vmin;
  background:rgba(0,0,0,.94);backdrop-filter:blur(12px);
}
.lightbox.is-open{display:grid}
.lightbox__stage img,.lightbox__stage video{
  max-width:92vw;max-height:88vh;border-radius:16px;display:block;
}
.lightbox__close{
  position:absolute;top:24px;right:28px;
  width:44px;height:44px;border-radius:50%;
  background:var(--surface);font-size:24px;line-height:1;color:var(--muted);
  transition:color .3s,background .3s;
}
.lightbox__close:hover{color:var(--head);background:var(--surface-2)}

/* ---------- reveal ---------- */
.reveal,.card{opacity:0;transform:translateY(22px)}
.is-in{opacity:1;transform:none;transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1)}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .grid{grid-template-columns:repeat(2,1fr);grid-auto-rows:230px}
}
@media (max-width:640px){
  .nav__links{gap:18px;font-size:12.5px}
  .hero__services{letter-spacing:.16em;gap:6px;font-size:10px}
  .grid{grid-template-columns:1fr;grid-auto-rows:250px}
  .card--wide,.card--tall{grid-column:auto;grid-row:auto}
  .client{width:180px;height:104px}
  .foot{justify-content:center;text-align:center}
}
@media (prefers-reduced-motion:reduce){
  *{transition:none!important;animation:none!important}
  .reveal,.card,.hero__text,.btn,.hero__services span{opacity:1;transform:none}
  .hero__word{clip-path:none}
}
