/* =========================================================================
   Alfredo De Luca — foglio di stile
   Da 1100 px in su la grafica riproduce esattamente le tavole originali:
   tutte le misure sono in "u" = 1/3544 della larghezza della pagina
   (la larghezza delle tavole originali). Sotto i 1100 px il layout
   si adatta a tablet e telefono.
   ========================================================================= */

/* ---------- font locali (in /fonts) ---------- */
@font-face{font-family:'Alte Haas Grotesk';src:url('../fonts/AlteHaasGrotesk-Regular.woff2') format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:'Alte Haas Grotesk';src:url('../fonts/AlteHaasGrotesk-Bold.woff2') format('woff2');font-weight:700;font-display:swap}

:root{
  --ink:#231f20;          /* testo e segni */
  --body:#1e1c1d;
  --red:#f0373c;          /* rosso del menu (come nelle tavole) */
  --red-card:#ec3127;     /* rosso dell'hover sulle copertine */
  --placeholder:#efedea;
  --u:calc(100vw / 3544);
}
@supports (width:1cqw){:root{--u:calc(100cqw / 3544)}}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scrollbar-gutter:stable}
body{
  margin:0;background:#fff;color:var(--body);
  font-family:'Alte Haas Grotesk',Arial,sans-serif;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  container-type:inline-size;
}
a{color:inherit;text-decoration:none}
img,video{max-width:100%}
p,h1,h2,ul,figure{margin:0}
:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--ink);color:#fff;padding:8px 12px;font-weight:700}
.skip:focus{left:8px}

/* ---------- il segno "registro" (4 bracci, centro vuoto) ---------- */
.m{
  /* --s = lato del segno, --t = spessore, --h = altezza comune della riga:
     segni e linee della stessa riga hanno lo stesso riquadro, così il browser
     li arrotonda allo stesso pixel e la linea combacia sempre con i bracci */
  --s:.8em; --t:max(1.5px,.11em);
  --hh:var(--h,var(--s)); --oy:calc((var(--hh) - var(--s))/2);
  display:inline-block;flex:none;position:relative;width:var(--s);height:var(--hh);
  background:
    linear-gradient(currentColor,currentColor) calc((var(--s) - var(--t))/2) var(--oy) / var(--t) calc(var(--s)*.375) no-repeat,
    linear-gradient(currentColor,currentColor) calc((var(--s) - var(--t))/2) calc(var(--oy) + var(--s)*.625) / var(--t) calc(var(--s)*.375) no-repeat,
    linear-gradient(currentColor,currentColor) 0 calc((var(--hh) - var(--t))/2) / calc(var(--s)*.375) var(--t) no-repeat,
    linear-gradient(currentColor,currentColor) calc(var(--s)*.625) calc((var(--hh) - var(--t))/2) / calc(var(--s)*.375) var(--t) no-repeat;
}
.m-b{--s:1.42em}
.rule{
  --cutL:0px;--cutR:0px;--t:max(1.5px,.11em);
  --hh:var(--h,.8em);
  flex:1 1 2em;min-width:1.5em;height:var(--hh);color:var(--ink);position:relative;align-self:center;
  /* la linea entra nei bracci dei segni; quando la voce accanto è rossa
     si "stacca" lasciando il segno intero (come nelle tavole originali) */
  background:linear-gradient(to right,transparent var(--cutL),currentColor var(--cutL),currentColor calc(100% - var(--cutR)),transparent calc(100% - var(--cutR)))
    0 calc((var(--hh) - var(--t))/2) / 100% var(--t) no-repeat;
}
/* spessore e posizione arrotondati al pixel: tratti netti, linea e bracci combaciano */
@supports (width:round(nearest,1.5px,1px)){
  .m,.rule{--t2:max(1px,round(nearest,var(--t),1px))}
  .m{
    background:
      linear-gradient(currentColor,currentColor) round(down,calc((var(--s) - var(--t2))/2),1px) round(down,var(--oy),1px) / var(--t2) calc(var(--s)*.375) no-repeat,
      linear-gradient(currentColor,currentColor) round(down,calc((var(--s) - var(--t2))/2),1px) calc(round(down,var(--oy),1px) + var(--s)*.625) / var(--t2) calc(var(--s)*.375) no-repeat,
      linear-gradient(currentColor,currentColor) 0 round(down,calc((var(--hh) - var(--t2))/2),1px) / calc(var(--s)*.375) var(--t2) no-repeat,
      linear-gradient(currentColor,currentColor) calc(var(--s)*.625) round(down,calc((var(--hh) - var(--t2))/2),1px) / calc(var(--s)*.375) var(--t2) no-repeat;
  }
  .rule{
    background:linear-gradient(to right,transparent var(--cutL),currentColor var(--cutL),currentColor calc(100% - var(--cutR)),transparent calc(100% - var(--cutR)))
      0 round(down,calc((var(--hh) - var(--t2))/2),1px) / 100% var(--t2) no-repeat;
  }
}

/* ---------- cornice di segni (about / contact) ---------- */
.frame-mk{position:absolute;pointer-events:none;background:var(--ink);
  -webkit-mask:var(--tile) 0 0 / var(--px) var(--py) repeat;mask:var(--tile) 0 0 / var(--px) var(--py) repeat;-webkit-mask-repeat:repeat;mask-repeat:repeat}

/* =========================================================================
   HEADER
   ========================================================================= */
.site-header{color:var(--ink);font-weight:700;background:#fff;position:relative;z-index:50}
.hd{position:relative}
.hrow{display:flex;align-items:center}
.brand-name{font-size:inherit;font-weight:700;line-height:1;letter-spacing:0}
.cats{display:inline-flex;align-items:center;list-style:none;padding:0}
.cats li{display:inline-flex;align-items:center}
.cats a,.nav-link span,.brand-name{transition:color .12s}
.sep{color:var(--ink);font-weight:700;display:inline-block}
.work,.nav-link,.role,.brand{display:inline-flex;align-items:center;white-space:nowrap;height:var(--h,auto)}
.cats,.cats li{height:var(--h,auto)}
.work.is-active,.nav-link.is-active{color:var(--red)}
.cats a{color:var(--ink)}
.cats a[aria-current]{color:var(--red)}
@media (hover:hover){
  .nav-link:hover,.cats a:hover{color:var(--red)}
  .work:has(.cats a:hover){color:var(--red)}
  .cats:has(a:hover) a[aria-current]:not(:hover){color:var(--ink)}
  .hrow-2:has(.nav-link:hover) .work.is-active{color:var(--ink)}
  .hrow-2:has(.nav-link:hover) .cats a[aria-current]{color:var(--ink)}
  .hrow-2:has(.cats a:hover) .nav-link.is-active,
  .hrow-2:has(.nav-link:hover) .nav-link.is-active:not(:hover){color:var(--ink)}
}
.hd-conn{display:none}
:root{--cl:calc(.3em + .25em);--cr:calc(.3em + .25em)}
.hrow-2:has(.work.is-active) .rule-work{--cutL:var(--cl)}
.hrow-2:has(.nav-about.is-active) .rule-work{--cutR:var(--cr)}
.hrow-2:has(.nav-about.is-active) .rule-short{--cutL:var(--cl)}
.hrow-2:has(.nav-contact.is-active) .rule-short{--cutR:var(--cr)}
@media (hover:hover){
  /* passando sopra un'altra voce, quella attiva torna nera e la linea si riattacca */
  .hrow-2:has(.nav-link:hover) .rule-work,.hrow-2:has(.cats a:hover) .rule-work,
  .hrow-2:has(.nav-link:hover) .rule-short,.hrow-2:has(.cats a:hover) .rule-short{--cutL:0px;--cutR:0px}
  .hrow-2:has(.cats a:hover) .rule-work{--cutL:var(--cl)}
  .hrow-2:has(.nav-about:hover) .rule-work{--cutR:var(--cr)}
  .hrow-2:has(.nav-about:hover) .rule-short{--cutL:var(--cl)}
  .hrow-2:has(.nav-contact:hover) .rule-short{--cutR:var(--cr)}
}

/* =========================================================================
   GRIGLIA LAVORI (home) — misure del file originale
   ========================================================================= */
.grid{list-style:none;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.card{min-width:0;position:relative;z-index:0}
.card[hidden]{display:none}
.card a{display:block;position:relative}
.card a::before{
  content:"";position:absolute;z-index:-1;left:-30pt;right:-30pt;top:-30pt;bottom:0;
  background:var(--red-card);opacity:0;pointer-events:none;
}
.cover{display:block;width:100%;aspect-ratio:354.643/156.069;overflow:hidden;background:var(--placeholder);position:relative}
/* trailer YouTube in copertina: muto, in loop, ritagliato come la foto */
.cover iframe{position:absolute;left:50%;top:50%;width:125%;height:auto;aspect-ratio:16/9;transform:translate(-50%,-50%);border:0;pointer-events:none;opacity:0;transition:opacity .6s}
.cover.playing iframe{opacity:1}
.cover img{width:100%;height:100%;display:block;object-fit:cover}
.project-label{
  position:relative;display:block;margin-top:5.711pt;min-height:24.289pt;padding:0 0 calc(24.289pt - 16.744pt);
  font-weight:700;font-size:14pt;line-height:16.744pt;letter-spacing:0;color:#231f20;
}
.project-label > span:last-child{display:block}
.marker{
  position:absolute;left:-21.915pt;top:1.417pt;width:14.34pt;height:14.34pt;opacity:0;
  background:
    linear-gradient(#231f20,#231f20) 6.170pt 0 / 2pt 5.336pt no-repeat,
    linear-gradient(#231f20,#231f20) 6.170pt 9.004pt / 2pt 5.336pt no-repeat,
    linear-gradient(#231f20,#231f20) 0 6.170pt / 5.336pt 2pt no-repeat,
    linear-gradient(#231f20,#231f20) 9.004pt 6.170pt / 5.336pt 2pt no-repeat;
}
@media (hover:hover){
  .card:hover{z-index:5}
  .card:hover a::before{opacity:1}
  .card:hover .project-label{color:#fff}
  .card:hover .marker{opacity:1;
    background:
      linear-gradient(#fff,#fff) 6.170pt 0 / 2pt 5.336pt no-repeat,
      linear-gradient(#fff,#fff) 6.170pt 9.004pt / 2pt 5.336pt no-repeat,
      linear-gradient(#fff,#fff) 0 6.170pt / 5.336pt 2pt no-repeat,
      linear-gradient(#fff,#fff) 9.004pt 6.170pt / 5.336pt 2pt no-repeat;
  }
}
.card a:focus-visible{outline:none}
.card a:focus-visible::before{opacity:1}
.card a:focus-visible .project-label{color:#fff}

/* =========================================================================
   PAGINA LAVORO
   ========================================================================= */
.project-head{color:var(--ink)}
.project-head h1{font-weight:700;line-height:1}
.meta{font-weight:400;white-space:nowrap}
.meta b{font-weight:700}
.meta-item{white-space:nowrap}
.gallery{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));align-items:start}
.gallery figure{min-width:0;grid-column:span 6}
.gallery .s3{grid-column:span 3}
.gallery .s2{grid-column:span 2}
.gallery a{display:block;cursor:zoom-in}
.gallery img{display:block;width:100%;height:auto}
.video{position:relative;aspect-ratio:16/9;background:#000;overflow:hidden}
.video iframe,.video img{position:absolute;inset:0;width:100%;height:100%;border:0;object-fit:cover}
.video button{position:absolute;inset:0;width:100%;height:100%;border:0;padding:0;background:transparent;cursor:pointer}
.video button::after{
  content:"";position:absolute;left:50%;top:50%;width:84px;height:84px;margin:-42px 0 0 -42px;border-radius:50%;
  background:rgba(35,31,32,.78) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='white' d='M8 5v14l11-7z'/%3E%3C/svg%3E") 56% 50% / 42% no-repeat;
  transition:background-color .15s;
}
.video button:hover::after{background-color:var(--red-card)}
.to-top{display:block;color:var(--ink)}
.to-top span{display:block;margin:0 auto;background:currentColor;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 114.72 172.08'%3E%3Cdefs%3E%3Cpath id='m' d='M6.17 0h2v5.336h-2zM6.17 9.004h2v5.336h-2zM0 6.17h5.336v2H0zM9.004 6.17h5.336v2H9.004z'/%3E%3C/defs%3E%3Cuse href='%23m' x='50.19'/%3E%3Cuse href='%23m' x='43.02' y='14.34'/%3E%3Cuse href='%23m' x='57.36' y='14.34'/%3E%3Cuse href='%23m' x='28.68' y='28.68'/%3E%3Cuse href='%23m' x='43.02' y='28.68'/%3E%3Cuse href='%23m' x='57.36' y='28.68'/%3E%3Cuse href='%23m' x='71.7' y='28.68'/%3E%3Cuse href='%23m' x='14.34' y='43.02'/%3E%3Cuse href='%23m' x='28.68' y='43.02'/%3E%3Cuse href='%23m' x='71.7' y='43.02'/%3E%3Cuse href='%23m' x='86.04' y='43.02'/%3E%3Cuse href='%23m' y='57.36'/%3E%3Cuse href='%23m' x='14.34' y='57.36'/%3E%3Cuse href='%23m' x='86.04' y='57.36'/%3E%3Cuse href='%23m' x='100.38' y='57.36'/%3E%3Cuse href='%23m' x='43.02' y='57.36'/%3E%3Cuse href='%23m' x='57.36' y='57.36'/%3E%3Cuse href='%23m' x='43.02' y='71.7'/%3E%3Cuse href='%23m' x='57.36' y='71.7'/%3E%3Cuse href='%23m' x='43.02' y='86.04'/%3E%3Cuse href='%23m' x='57.36' y='86.04'/%3E%3Cuse href='%23m' x='43.02' y='100.38'/%3E%3Cuse href='%23m' x='57.36' y='100.38'/%3E%3Cuse href='%23m' x='43.02' y='114.72'/%3E%3Cuse href='%23m' x='57.36' y='114.72'/%3E%3Cuse href='%23m' x='43.02' y='129.06'/%3E%3Cuse href='%23m' x='57.36' y='129.06'/%3E%3Cuse href='%23m' x='43.02' y='143.4'/%3E%3Cuse href='%23m' x='57.36' y='143.4'/%3E%3Cuse href='%23m' x='50.19' y='157.74'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 114.72 172.08'%3E%3Cdefs%3E%3Cpath id='m' d='M6.17 0h2v5.336h-2zM6.17 9.004h2v5.336h-2zM0 6.17h5.336v2H0zM9.004 6.17h5.336v2H9.004z'/%3E%3C/defs%3E%3Cuse href='%23m' x='50.19'/%3E%3Cuse href='%23m' x='43.02' y='14.34'/%3E%3Cuse href='%23m' x='57.36' y='14.34'/%3E%3Cuse href='%23m' x='28.68' y='28.68'/%3E%3Cuse href='%23m' x='43.02' y='28.68'/%3E%3Cuse href='%23m' x='57.36' y='28.68'/%3E%3Cuse href='%23m' x='71.7' y='28.68'/%3E%3Cuse href='%23m' x='14.34' y='43.02'/%3E%3Cuse href='%23m' x='28.68' y='43.02'/%3E%3Cuse href='%23m' x='71.7' y='43.02'/%3E%3Cuse href='%23m' x='86.04' y='43.02'/%3E%3Cuse href='%23m' y='57.36'/%3E%3Cuse href='%23m' x='14.34' y='57.36'/%3E%3Cuse href='%23m' x='86.04' y='57.36'/%3E%3Cuse href='%23m' x='100.38' y='57.36'/%3E%3Cuse href='%23m' x='43.02' y='57.36'/%3E%3Cuse href='%23m' x='57.36' y='57.36'/%3E%3Cuse href='%23m' x='43.02' y='71.7'/%3E%3Cuse href='%23m' x='57.36' y='71.7'/%3E%3Cuse href='%23m' x='43.02' y='86.04'/%3E%3Cuse href='%23m' x='57.36' y='86.04'/%3E%3Cuse href='%23m' x='43.02' y='100.38'/%3E%3Cuse href='%23m' x='57.36' y='100.38'/%3E%3Cuse href='%23m' x='43.02' y='114.72'/%3E%3Cuse href='%23m' x='57.36' y='114.72'/%3E%3Cuse href='%23m' x='43.02' y='129.06'/%3E%3Cuse href='%23m' x='57.36' y='129.06'/%3E%3Cuse href='%23m' x='43.02' y='143.4'/%3E%3Cuse href='%23m' x='57.36' y='143.4'/%3E%3Cuse href='%23m' x='50.19' y='157.74'/%3E%3C/svg%3E") center/contain no-repeat;
}
.project-nav{color:var(--ink);font-weight:700}
.project-nav a{display:inline-flex;align-items:center;min-width:0;white-space:nowrap}
.project-nav a > span{overflow:hidden;text-overflow:ellipsis}
.pn-dir{font-weight:400}
@media (hover:hover){.project-nav a:hover{color:var(--red)}}

/* lightbox */
.lightbox{border:0;padding:0;margin:0;width:100vw;height:100dvh;max-width:none;max-height:none;background:#fff;color:var(--ink);overflow:hidden}
.lightbox::backdrop{background:#fff}
.lightbox[open]{display:flex;align-items:center;justify-content:center}
.lightbox img{max-width:calc(100vw - 14%);max-height:calc(100dvh - 120px);width:auto;height:auto;object-fit:contain;user-select:none}
.lightbox button{position:absolute;border:0;background:none;color:var(--ink);cursor:pointer;font:700 clamp(32px,3vw,52px)/1 'Alte Haas Grotesk',Arial,sans-serif;padding:12px 16px}
.lightbox button:hover{color:var(--red)}
.lb-close{top:10px;right:4%}
.lb-prev{left:2%;top:50%;transform:translateY(-50%)}
.lb-next{right:2%;top:50%;transform:translateY(-50%)}
.lb-count{position:absolute;bottom:18px;left:0;right:0;text-align:center;font-weight:700;font-size:14px}

/* =========================================================================
   ABOUT / CONTACT (struttura comune)
   ========================================================================= */
.about,.contact{position:relative;color:var(--ink)}
.about-text{font-weight:700}
.about-photo{position:relative;line-height:0;display:block}
.about-photo img{display:block;width:100%;height:auto}
.about-photo .ph-b{position:absolute;inset:0;opacity:0}
@media (hover:hover){.about:has(.about-text:hover,.about-photo:hover) .ph-b{opacity:1}}
.about.is-on .ph-b{opacity:1}
.contact-video{display:block;object-fit:cover;object-position:50% 100%;background:#fff;pointer-events:none}
.contact-box h1{font-weight:700;letter-spacing:0}
.contact-list{list-style:none;padding:0;font-weight:700}
.contact-list a{transition:color .12s}
@media (hover:hover){.contact-list a:hover{color:var(--red)}}

.site-footer{color:var(--ink);font-weight:700}
.site-footer a:hover{color:var(--red)}
.notfound{font-weight:700;color:var(--ink)}
.notfound a{display:inline-flex;align-items:center;gap:.45em}

@media (min-width:1100px){.project-label{white-space:nowrap}}

/* =========================================================================
   COMPUTER (≥ 1100 px): geometria identica alle tavole originali
   ========================================================================= */
@media (min-width:1100px){
  /* --- header: tavola 3544 × 355 --- */
  .site-header{height:calc(355*var(--u));margin-bottom:4.6vw}
  .page-project .site-header,.page-about .site-header,.page-contact .site-header{position:sticky;top:0;margin-bottom:0}
  .hd{position:absolute;left:calc(246*var(--u));right:calc(263*var(--u));top:0;height:100%}
  .hd .m{--s:calc(36*var(--u));--t:calc(5*var(--u))}
  .hd .m-b{--s:calc(64*var(--u))}
  .hd .rule{--t:calc(5*var(--u));min-width:0}
  .hrow-1{--h:calc(64*var(--u))}
  .hrow-2,.ph,.ft,.project-nav{--h:calc(36*var(--u))}
  @supports (width:round(nearest,1.5px,1px)){
    /* righe ad altezza e posizione intere: segni e linee sullo stesso pixel */
    .hrow-1{--h:round(nearest,calc(64*var(--u)),2px);top:round(nearest,calc(140.5*var(--u)),1px)}
    .hrow-2{--h:round(nearest,calc(36*var(--u)),2px);top:round(nearest,calc(245.5*var(--u)),1px)}
    .ph{--h:round(nearest,calc(36*var(--u)),2px);top:round(nearest,calc(176.4*var(--u)),1px)}
    .ft{--h:round(nearest,calc(36*var(--u)),2px);top:round(nearest,calc(245.5*var(--u)),1px)}
  }
  .hd{--cl:calc(25*var(--u));--cr:calc(24*var(--u))}
  .hd-conn{display:block;position:absolute;left:calc(29*var(--u));top:calc(148*var(--u));width:calc(5*var(--u));height:calc(93*var(--u));background:var(--ink)}
  .hrow{position:absolute;left:0;right:0;height:0}
  .hrow-1{top:calc(140.5*var(--u))}
  .hrow-2{top:calc(245.5*var(--u))}
  .brand-name{font-size:calc(94*var(--u));letter-spacing:calc(-1.93*var(--u));margin-left:calc(17.1*var(--u));position:relative;top:calc(-11.6*var(--u))}
  .brand .m-b + .brand-name + .m-b{margin-left:calc(19.35*var(--u))}
  .hrow-1 .rule{margin-left:calc(-24*var(--u));margin-right:calc(-13*var(--u))}
  .role{font-size:calc(45*var(--u))}
  .role span{margin-left:calc(8.6*var(--u));position:relative;top:calc(-4.6*var(--u));line-height:1}
  .role .m:last-child{margin-left:calc(14.9*var(--u))}
  .hrow-2{font-size:calc(45*var(--u))}
  .work > .m:first-child{margin-left:calc(14*var(--u))}
  .work-label{margin-left:calc(17.35*var(--u));position:relative;top:calc(-3.2*var(--u));line-height:1}
  .cats{margin-left:calc(27.8*var(--u))}
  .cats a{position:relative;top:calc(-3.2*var(--u));line-height:1;display:block}
  .sep{width:calc(50.4*var(--u));font-size:calc(57.7*var(--u));line-height:1;padding-left:calc(15.9*var(--u));position:relative;top:calc(-17.4*var(--u))}
  .work > .m:last-child{margin-left:calc(18.7*var(--u))}
  .rule-work{margin-left:calc(-14*var(--u));margin-right:calc(-12*var(--u))}
  .nav-link span{position:relative;top:calc(-3.2*var(--u));line-height:1}
  .nav-about span{margin-left:calc(15.6*var(--u))}
  .nav-about .m:last-child{margin-left:calc(13.4*var(--u))}
  .rule-short{flex:0 0 calc(136*var(--u));margin-left:calc(-14*var(--u));margin-right:calc(-13*var(--u))}
  .nav-contact span{margin-left:calc(17.3*var(--u))}
  .nav-contact .m:last-child{margin-left:calc(14.4*var(--u))}

  /* --- griglia home (CSS originale) --- */
  .grid{margin-left:6.941%;margin-right:7.449%;column-gap:4.561vw;row-gap:3.9vw}

  /* --- testata del lavoro: tavola 3937 × 394 (= 355 u) --- */
  .project-head{height:calc(354.7*var(--u));position:relative}
  .ph{position:absolute;left:calc(246*var(--u));right:calc(261.2*var(--u));top:calc(176.4*var(--u));height:0;display:flex;align-items:center}
  .ph .m{--s:calc(36*var(--u));--t:calc(5*var(--u))}
  .ph > .m:first-child{margin-left:calc(15*var(--u))}
  .ph h1{font-size:calc(122*var(--u));letter-spacing:calc(-1.14*var(--u));margin-left:calc(22.5*var(--u));position:relative;top:calc(-12.9*var(--u));white-space:nowrap}
  .ph h1 + .m{margin-left:calc(27.6*var(--u))}
  .ph .rule{--t:calc(5*var(--u));margin-left:calc(-14*var(--u));margin-right:calc(-13*var(--u));min-width:calc(60*var(--u))}
  .ph .meta{font-size:calc(37.9*var(--u));letter-spacing:calc(-.21*var(--u));margin-left:calc(17.8*var(--u));line-height:1;position:relative;top:calc(-8.9*var(--u))}
  .ph .meta + .m{margin-left:calc(15.1*var(--u))}
  .ph .meta .sep{width:calc(62.7*var(--u));font-size:calc(60*var(--u));padding-left:calc(22.4*var(--u));top:calc(-4*var(--u))}
  .gallery{margin-left:6.941%;margin-right:7.449%;column-gap:2.25vw;row-gap:2.25vw;padding-bottom:5vw}
  .project-nav{margin:0 7.449% 0 6.941%;font-size:calc(45*var(--u));display:flex;align-items:center}
  .project-nav .m{--s:calc(36*var(--u));--t:calc(5*var(--u))}
  .project-nav a{gap:calc(16*var(--u))}
  .project-nav .rule{--t:calc(5*var(--u));margin:0 calc(-13*var(--u))}
  .to-top{height:calc(567.5*var(--u));padding-top:calc(67.5*var(--u))}
  .to-top span{width:calc(287.5*var(--u));height:calc(431*var(--u))}

  /* --- footer: tavola 3544 × 355 --- */
  .site-footer{height:calc(355*var(--u));position:relative}
  .ft{position:absolute;left:calc(246*var(--u));right:calc(263*var(--u));top:calc(245.5*var(--u));height:0;display:flex;align-items:center}
  .ft .m{--s:calc(36*var(--u));--t:calc(5*var(--u))}
  .ft > .m:first-child{margin-left:calc(14*var(--u))}
  .ft p{font-size:calc(25.2*var(--u));letter-spacing:calc(-.095*var(--u));margin-left:calc(12.6*var(--u));line-height:1;white-space:nowrap;position:relative;top:calc(-2.05*var(--u))}
  .ft p + .m{margin-left:calc(20.7*var(--u))}
  .ft .rule{--t:calc(5*var(--u));margin-left:calc(-14*var(--u));margin-right:calc(-13*var(--u))}

  /* --- about: tavola 3544 × 1063 --- */
  .page-about main .wrap,.page-contact main .wrap{padding:0}
  .about{height:calc(1063*var(--u))}
  .about .fr-t,.about .fr-b{left:calc(1052*var(--u));width:calc(1223*var(--u));height:calc(36*var(--u));--px:calc(45.65*var(--u));--py:calc(36*var(--u));--tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 45.65 36'%3E%3Cpath d='M15.5 0h5v13.5h-5zM15.5 22.5h5v13.5h-5zM0 15.5h13.5v5H0zM22.5 15.5h13.5v5H22.5z'/%3E%3C/svg%3E")}
  .about .fr-t{top:calc(35*var(--u))}
  .about .fr-b{top:calc(523*var(--u));z-index:2}
  .about .fr-l,.about .fr-r{top:calc(35*var(--u));width:calc(36*var(--u));height:calc(524*var(--u));--px:calc(36*var(--u));--py:calc(44.36*var(--u));--tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 44.36'%3E%3Cpath d='M15.5 0h5v13.5h-5zM15.5 22.5h5v13.5h-5zM0 15.5h13.5v5H0zM22.5 15.5h13.5v5H22.5z'/%3E%3C/svg%3E")}
  .about .fr-l{left:calc(1052*var(--u))}
  .about .fr-r{left:calc(2239*var(--u))}
  .about-text{position:absolute;left:calc(1124.5*var(--u));top:calc(94.8*var(--u));width:calc(1090*var(--u));font-size:calc(29.5*var(--u));letter-spacing:calc(.25*var(--u));line-height:calc(36*var(--u))}
  .about-text p + p{margin-top:calc(36*var(--u))}
  .about-photo{position:absolute;left:calc(1052*var(--u));top:calc(540*var(--u));width:calc(1222*var(--u))}
  
  /* --- contact: tavola 3937 × 788 (= 709,3 u) --- */
  .contact{height:calc(709.3*var(--u))}
  .contact .fr-t,.contact .fr-b{left:calc(1179.5*var(--u));width:calc(1185.5*var(--u));height:calc(36*var(--u));--px:calc(45.98*var(--u));--py:calc(36*var(--u));--tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 45.98 36'%3E%3Cpath d='M15.5 0h5v13.5h-5zM15.5 22.5h5v13.5h-5zM0 15.5h13.5v5H0zM22.5 15.5h13.5v5H22.5z'/%3E%3C/svg%3E")}
  .contact .fr-t{top:calc(280.9*var(--u))}
  .contact .fr-b{top:calc(646.4*var(--u))}
  .contact .fr-l,.contact .fr-r{top:calc(280.9*var(--u));width:calc(36*var(--u));height:calc(401.5*var(--u));--px:calc(36*var(--u));--py:calc(45.68*var(--u));--tile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 36 45.68'%3E%3Cpath d='M15.5 0h5v13.5h-5zM15.5 22.5h5v13.5h-5zM0 15.5h13.5v5H0zM22.5 15.5h13.5v5H22.5z'/%3E%3C/svg%3E")}
  .contact .fr-l{left:calc(1179.5*var(--u))}
  .contact .fr-r{left:calc(2329*var(--u))}
  .contact-video{position:absolute;left:calc(1506*var(--u));top:0;width:calc(631.9*var(--u));height:calc(297.1*var(--u));z-index:3}
  .contact-box h1{position:absolute;right:calc(3544*var(--u) - 1651.3*var(--u));top:calc(367.4*var(--u));font-size:calc(122*var(--u));line-height:calc(112.5*var(--u));letter-spacing:calc(.35*var(--u));word-spacing:calc(-13*var(--u));text-align:right;white-space:nowrap}
  .contact-list{position:absolute;left:calc(1674.7*var(--u));top:calc(377.5*var(--u));font-size:calc(45.3*var(--u));line-height:calc(74.9*var(--u));white-space:nowrap}

  .notfound{padding:calc(200*var(--u)) 7.449% calc(200*var(--u)) 6.941%;font-size:calc(45*var(--u))}
  .notfound h1{font-size:calc(94*var(--u));margin-bottom:.6em}
}

/* =========================================================================
   TABLET E TELEFONO (< 1100 px)
   ========================================================================= */
@media (max-width:1099px){
  :root{--gl:6.941%;--gr:7.449%;--fs:clamp(15px,1.6vw,18px)}
  .wrap,.hd,.ph,.ft{padding-left:var(--gl);padding-right:var(--gr)}
  .site-header{padding:clamp(20px,3vw,40px) 0 clamp(26px,4.6vw,48px);font-size:var(--fs)}
  .hd{display:flex;flex-direction:column;row-gap:.55em}
  .hrow{gap:.45em}
  .hrow-1{--h:1.42em}
  .hrow-2{--h:1.3em}
  @supports (width:round(nearest,1.5px,1px)){.hrow-1{--h:round(nearest,1.42em,2px)}.hrow-2{--h:round(nearest,1.3em,2px)}.ph,.ft{--h:round(nearest,.8em,2px)}}
  .hd .rule,.ph .rule,.ft .rule{margin-left:calc(-.45em - .3em);margin-right:calc(-.45em - .3em);min-width:2em}
  .hrow-1 .rule{margin-left:calc(-.45em - .43em)}
  .work,.nav-link,.role,.brand{gap:.45em}
  .brand-name{font-size:2.1em}
  .work-label{margin-right:.35em}
  .sep{margin:0 .42em 0 .1em;transform:scaleY(1.15)}
  .cats a{padding:.25em 0}
  .rule-short{flex:0 0 3.8em}
  .grid{margin:0 var(--gr) 0 var(--gl);column-gap:4vw;row-gap:5vw}
  .project-head{margin:0 0 clamp(24px,3vw,40px)}
  .ph{display:flex;align-items:center;flex-wrap:wrap;gap:.45em;font-size:var(--fs);row-gap:12px}
  .ph h1{font-size:2.3em}
  .ph .rule{flex:1 1 2em}
  .ph .meta{flex-basis:100%;white-space:normal}
  .ph .meta + .m,.ph .rule + .m{display:none}
  .meta-list{display:flex;flex-direction:column;gap:2px}
  .meta .sep{display:none}
  .gallery{margin:0 var(--gr) 0 var(--gl);gap:12px;padding-bottom:40px}
  .project-nav{margin:0 var(--gr) 0 var(--gl);font-size:var(--fs);display:flex;align-items:center;gap:.45em}
  .project-nav a{gap:.45em;max-width:46%}
  .to-top{padding:48px 0 0}
  .to-top span{width:60px;height:90px}
  .site-footer{margin-top:56px;padding-bottom:24px;font-size:13px}
  .ft{display:flex;align-items:flex-start;gap:.45em}
  .ft p{line-height:1.35}
  .ft .rule,.ft .m:nth-of-type(n+2){display:none}
  .ft .m{margin-top:.25em}
  .frame-mk{display:none}
  .frame{position:relative;padding:28px 30px}
  .frame::before,.frame::after{
    content:"";position:absolute;inset:0;pointer-events:none;background:var(--ink);
    --mt:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-6 -6 48 48'%3E%3Cpath d='M15.5 0h5v13.5h-5zM15.5 22.5h5v13.5h-5zM0 15.5h13.5v5H0zM22.5 15.5h13.5v5H22.5z'/%3E%3C/svg%3E");
    -webkit-mask:var(--mt) left top / 16px 16px space no-repeat,var(--mt) left bottom / 16px 16px space no-repeat;
    mask:var(--mt) left top / 16px 16px space no-repeat,var(--mt) left bottom / 16px 16px space no-repeat;
  }
  .frame::after{top:16px;bottom:16px;
    -webkit-mask:var(--mt) left top / 16px 16px no-repeat space,var(--mt) right top / 16px 16px no-repeat space;
    mask:var(--mt) left top / 16px 16px no-repeat space,var(--mt) right top / 16px 16px no-repeat space;
  }
  .about,.contact{width:min(100%,560px);margin:0 auto}
  .about-text{font-size:15px;line-height:1.24}
  .about-text p + p{margin-top:1.15em}
  .contact-video{width:60%;margin-left:22%;aspect-ratio:702/330}
  .contact-box{display:flex;align-items:center;justify-content:center;gap:18px;padding-top:40px;padding-bottom:40px}
  .contact-box h1{font-size:clamp(36px,6vw,52px);line-height:.98;text-align:right}
  .contact-list{font-size:16px;line-height:1.2}
  .contact-list li + li{margin-top:.6em}
  .notfound{padding:8vh var(--gr) 8vh var(--gl);font-size:var(--fs)}
}
@media (max-width:899px){
  .grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:699px){
  :root{--gl:20px;--gr:20px;--fs:15px}
  .hrow-1,.hrow-2{flex-wrap:wrap;row-gap:10px}
  .hrow-1 .role{flex-basis:100%;justify-content:flex-end}
  .hrow-2 .work{flex-basis:100%}
  .rule-work{display:none}
  .rule-short{flex:1 1 2em}
  .cats a{padding:.45em 0}
  .grid{grid-template-columns:1fr;row-gap:26px}
  .project-label{padding-bottom:4px;min-height:0}
  .gallery figure,.gallery .s3,.gallery .s2{grid-column:span 6}
  .project-nav{flex-wrap:wrap;row-gap:14px}
  .project-nav .rule{display:none}
  .project-nav a{max-width:100%;flex-basis:100%}
  .project-nav a[rel=next]{justify-content:flex-end}
  .lightbox img{max-width:100vw;max-height:calc(100dvh - 140px)}
  .lb-prev,.lb-next{top:auto;bottom:4px;transform:none}
}
@media (max-width:520px){
  .contact-video{width:76%;margin-left:12%}
  .contact-box{flex-direction:column;align-items:flex-start}
  .contact-box h1{text-align:left}
  .contact-list a{display:inline-block;padding:.3em 0}
}
@media (hover:none){.card a::before{display:none}}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important}}

/* posizioni delle righe arrotondate al pixel (ultime, così prevalgono) */
@media (min-width:1100px){
  @supports (width:round(nearest,1.5px,1px)){
    .hrow-1{top:round(nearest,calc(140.5*var(--u)),1px)}
    .hrow-2{top:round(nearest,calc(245.5*var(--u)),1px)}
    .ph{top:round(nearest,calc(176.4*var(--u)),1px)}
    .ft{top:round(nearest,calc(245.5*var(--u)),1px)}
    .site-header{height:round(nearest,calc(355*var(--u)),1px)}
    .project-head,.site-footer{height:round(nearest,calc(355*var(--u)),1px)}
  }
}
