:root{
  --fondo:#f5f7f5; --carta:#ffffff; --sabbia:#eef1ee; --inchiostro:#181f24; --tenue:#727a80;
  --bordo:#e3e7e3; --accento:#58B828; --accento-scuro:#16232D; --accento-btn:#3B8E1A; --blu:#1E7FD8; --arancio:#F26522;
  --ok:#2f7d4f; --attesa:#b07d1a; --errore:#a8392f; --rivedere:#b06a16;
  --serif:"Cormorant Garamond",Georgia,"Times New Roman",serif;
  --sans:"Jost",-apple-system,Segoe UI,Roboto,Arial,sans-serif;
}
*{box-sizing:border-box}
body{margin:0;font-family:var(--sans);font-weight:400;
  background:var(--fondo);color:var(--inchiostro);line-height:1.55}
a{color:var(--accento);text-decoration:none}
a:hover{text-decoration:underline}
h2{font-family:var(--serif);font-weight:500;font-size:2.1rem;letter-spacing:.01em;margin:.2rem 0 .5rem;color:var(--inchiostro)}
h3{font-family:var(--sans);font-weight:600;font-size:.82rem;text-transform:uppercase;
  letter-spacing:.12em;margin:0 0 .7rem;color:var(--accento-scuro)}

.barra{display:flex;align-items:center;gap:1rem;padding:1.05rem 1.7rem;position:relative;
  background:#fff;border-bottom:1px solid var(--bordo)}
.barra .marchio{display:flex;flex-direction:column;line-height:1;text-decoration:none}
.barra .marchio:hover{text-decoration:none}
.marchio-nome{font-family:var(--serif);color:var(--accento);font-size:1.75rem;
  font-weight:600;letter-spacing:.34em;padding-left:.34em}
.marchio-sub{font-family:var(--sans);color:var(--tenue);font-size:.66rem;
  letter-spacing:.26em;text-transform:uppercase;margin-top:.4rem;padding-left:.36em}
.barra .versione{margin-left:auto;color:var(--accento);font-size:.72rem;letter-spacing:.08em;
  border:1px solid var(--bordo);border-radius:999px;padding:.12rem .6rem}
/* logo PERXYZ centrato sulla stessa linea di Antonacci */
.marchio-centro{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  display:flex;align-items:center;text-decoration:none}
.marchio-centro:hover{text-decoration:none}
.marchio-perxyz{height:56px;width:auto;max-width:44vw;display:block}
@media(max-width:900px){.marchio-perxyz{height:46px}}
@media(max-width:640px){.marchio-perxyz{height:38px;max-width:38vw}}
@media(max-width:520px){.marchio-centro{display:none}}

/* selettore a due aree */
.segmento{display:inline-flex;background:var(--sabbia);border-radius:999px;padding:.25rem;margin-bottom:1.2rem;gap:.25rem}
.segmento a{color:var(--inchiostro);padding:.4rem 1rem;border-radius:999px;font-size:.95rem;font-weight:600}
.segmento a:hover{text-decoration:none}
.segmento a.attivo{background:var(--accento-btn);color:#fff}
.segmento .pallino{display:inline-block;background:#fff;color:var(--accento);
  border-radius:999px;padding:0 .45rem;font-size:.8rem;margin-left:.3rem}
.area.nascosta{display:none}

/* cartelle archivio */
.cartella{border:1px solid var(--bordo);border-radius:10px;margin-bottom:.55rem;background:var(--carta)}
.cartella>summary{cursor:pointer;padding:.6rem .9rem;font-weight:600;list-style:none}
.cartella>summary::-webkit-details-marker{display:none}
.cartella>summary .icona{margin-right:.3rem}
.cartella.sotto{margin:.5rem .7rem;background:#f4f6f4}
.cartella .conta{color:var(--tenue);font-weight:400;font-size:.85rem;margin-left:.3rem}
.lista-progetti{list-style:none;margin:0;padding:.2rem .9rem .7rem}
.lista-progetti li{padding:.4rem 0;border-bottom:1px solid var(--bordo);display:flex;
  flex-direction:column;gap:.1rem}
.lista-progetti li:last-child{border-bottom:none}
.lista-progetti li small{color:var(--tenue)}

/* percorso (breadcrumb) */
.percorso{color:var(--tenue);font-size:.88rem;margin-bottom:.6rem}
.percorso a{color:var(--accento)}
.percorso strong{color:var(--inchiostro)}

/* barra di verifica */
.verifica{display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  background:#fbf3e0;border:1px solid #ecd9ab;border-radius:12px;padding:.9rem 1.1rem;margin-bottom:1rem}
.verifica-azioni{display:flex;gap:.6rem}
.verifica-azioni form{margin:0}
.pericolo{background:#f3ddd9;color:var(--errore);font-weight:600;padding:.6rem 1rem}
.pericolo:hover{background:#ecccc6}
main{max-width:1080px;margin:1.4rem auto;padding:0 1.1rem}

.riquadro{background:var(--carta);border:1px solid var(--bordo);border-radius:12px;
  padding:1.2rem 1.3rem;margin-bottom:1.3rem}
.modulo{display:grid;grid-template-columns:1fr 1fr;gap:.9rem 1.1rem}
.campo{display:flex;flex-direction:column;gap:.3rem}
.campo label{font-size:.85rem;color:var(--tenue)}
.campo .opz{font-style:italic}
input[type=text],input[type=search],input[type=file]{padding:.5rem .6rem;
  border:1px solid var(--bordo);border-radius:8px;font-size:.95rem;background:#fff}
button{cursor:pointer;border:none;border-radius:8px;padding:.55rem .9rem;font-family:var(--sans);
  font-size:.9rem;background:var(--sabbia);color:var(--inchiostro)}
button.primario,.primario{background:var(--accento-btn);color:#fff;font-weight:500;
  font-size:.78rem;text-transform:uppercase;letter-spacing:.12em;
  padding:.7rem 1.3rem;border-radius:8px;display:inline-block}
button.primario{grid-column:1/-1;justify-self:start}
.primario:hover{background:var(--accento-scuro);text-decoration:none}
.primario.chiaro{background:transparent;color:var(--accento-btn);border:1px solid var(--accento-btn)}
.primario.chiaro:hover{background:var(--accento-btn);color:#fff}

.riga-ricerca{display:flex;justify-content:space-between;align-items:center;
  flex-wrap:wrap;gap:.6rem;margin-bottom:.6rem}
.ricerca{display:flex;gap:.4rem}

.tabella{width:100%;border-collapse:collapse}
.tabella th,.tabella td{text-align:left;padding:.6rem .5rem;border-bottom:1px solid var(--bordo)}
.tabella th{font-size:.8rem;color:var(--tenue);text-transform:uppercase;letter-spacing:.03em}
.tabella tbody tr{cursor:pointer}
.tabella tbody tr:hover{background:#f4f6f4}
.vuoto{color:var(--tenue)}

.stato{display:inline-block;padding:.12rem .55rem;border-radius:999px;font-size:.8rem;
  font-weight:600;text-transform:capitalize}
.stato-pronto,.stato-archiviato{background:#e2f1e7;color:var(--ok)}
.stato-da_verificare{background:#fbf3e0;color:var(--rivedere)}
.stato-in_conversione,.stato-in_coda{background:#f6ecd4;color:var(--attesa)}
.stato-errore{background:#f6e0dd;color:var(--errore)}
.badge-rivedere{display:inline-block;background:#f6e8d4;color:var(--rivedere);
  padding:.12rem .55rem;border-radius:999px;font-size:.8rem;font-weight:600}

.intestazione-progetto{display:flex;justify-content:space-between;align-items:flex-start;
  gap:1rem;margin-bottom:.9rem;flex-wrap:wrap}
.indietro{font-size:.85rem}
.meta{color:var(--tenue);margin:.2rem 0}
.banner{display:flex;align-items:center;gap:.7rem;background:var(--carta);
  border:1px solid var(--bordo);border-radius:10px;padding:.7rem 1rem;margin-bottom:1rem}

.attesa{text-align:center;color:var(--tenue);padding:2rem}
.spinner{width:34px;height:34px;border:3px solid var(--bordo);border-top-color:var(--accento);
  border-radius:50%;margin:0 auto .8rem;animation:gira 1s linear infinite}
@keyframes gira{to{transform:rotate(360deg)}}

.viewer-wrap{display:grid;grid-template-columns:1fr 320px;gap:1rem;
  background:var(--carta);border:1px solid var(--bordo);border-radius:12px;overflow:hidden}
#viewer{height:560px;background:#eceeec;position:relative}
.viewer-pezzo{height:360px;background:#eceeec;border:1px solid var(--bordo);
  border-radius:12px;margin-bottom:1rem;position:relative}
.nav-cubo{position:absolute;top:10px;right:10px;width:92px;z-index:20;
  display:flex;flex-direction:column;align-items:center;gap:.25rem}
.nav-cubo canvas{display:block;filter:drop-shadow(0 1px 3px rgba(0,0,0,.25))}
.nav-home{background:#ffffff;border:1px solid var(--bordo);border-radius:8px;
  padding:.05rem .5rem;font-size:1rem;line-height:1.3;cursor:pointer;color:var(--accento-scuro)}
.nav-home:hover{background:#eef1ee}
.vista-toggle{position:absolute;top:10px;left:10px;z-index:20;width:34px;height:34px;
  border-radius:8px;background:#ffffff;border:1px solid var(--bordo);font-size:1.05rem;line-height:1;
  box-shadow:0 1px 3px rgba(0,0,0,.18)}
.vista-toggle:hover{background:#eef1ee}
.vista-pannello{position:absolute;top:50px;left:10px;z-index:21;width:202px;max-height:80%;overflow:auto;
  background:#ffffff;border:1px solid var(--bordo);border-radius:11px;padding:.45rem .55rem;
  box-shadow:0 6px 22px rgba(0,0,0,.18);display:flex;flex-direction:column;gap:.4rem}
.vista-riga{display:flex;align-items:center;justify-content:space-between;gap:.5rem;flex-wrap:wrap}
.vista-riga.colonna{flex-direction:column;align-items:stretch;gap:.4rem}
.vista-tit{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--accento-scuro);font-weight:600}
.vista-pannello .grp{display:inline-flex;border:1px solid var(--bordo);border-radius:8px;overflow:hidden}
.vista-pannello .grp button{background:#fff;border:none;border-left:1px solid var(--bordo);
  padding:.28rem .5rem;font-size:.78rem;color:var(--inchiostro);border-radius:0}
.vista-pannello .grp button:first-child{border-left:none}
.vista-pannello .grp button.on{background:var(--accento);color:#fff}
.vista-pannello .switch{display:flex;align-items:center;gap:.45rem;font-size:.82rem;color:var(--inchiostro);cursor:pointer}
.vista-pannello .slider{display:flex;flex-direction:column;gap:.2rem;font-size:.75rem;color:var(--tenue)}
.vista-pannello .slider input{width:100%}
.vista-sez{border:1px solid var(--bordo);border-radius:8px;padding:.15rem .45rem}
.vista-sez>summary{cursor:pointer;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;
  color:var(--accento-scuro);font-weight:600;padding:.22rem 0;list-style:none}
.vista-sez>summary::-webkit-details-marker{display:none}
.vista-sez>summary::before{content:"▸ ";color:var(--tenue)}
.vista-sez[open]>summary::before{content:"▾ "}
.vista-sez .vista-riga{padding:.25rem 0}
.vista-sez .switch{padding:.12rem 0}
.vista-5ax{background:var(--sabbia);border-radius:7px;padding:.3rem .5rem}
.vista-5ax strong{color:var(--accento)}
.chip-materiali{display:flex;flex-wrap:wrap;gap:.3rem;margin:-.2rem 0 .6rem}
.chip-mat{background:var(--sabbia);border:1px solid var(--bordo);border-radius:999px;
  padding:.18rem .6rem;font-size:.78rem;color:var(--inchiostro)}
.chip-mat.attivo{background:var(--accento);color:#fff;border-color:var(--accento)}
.riga-cinque{display:flex;align-items:center;justify-content:space-between;gap:.5rem;margin:.2rem 0 .6rem}
.chip-5ax{background:var(--sabbia);border:1px solid var(--bordo);border-radius:999px;
  padding:.28rem .8rem;font-size:.82rem;font-weight:500;color:var(--accento-scuro)}
.chip-5ax.attivo{background:var(--accento);color:#fff;border-color:var(--accento)}
.chip-5ax .conta{background:#fff;color:var(--accento);border-radius:999px;padding:0 .4rem;margin-left:.3rem;font-size:.75rem}
.chip-5ax.attivo .conta{background:rgba(255,255,255,.25);color:#fff}
.link-gestione{font-size:.8rem}
.lista-cinque{list-style:none;margin:.4rem 0 1rem;padding:0;columns:2;column-gap:1.4rem}
.lista-cinque li{break-inside:avoid;margin-bottom:.15rem}
.lista-cinque label{display:flex;align-items:baseline;gap:.45rem;padding:.3rem .2rem;border-radius:8px;cursor:pointer}
.lista-cinque label.is5{background:#f6ecec}
.lista-cinque .et{font-weight:500}
.lista-cinque small{color:var(--tenue)}
@media(max-width:640px){.lista-cinque{columns:1}}
.luci-pannello{position:absolute;left:10px;bottom:10px;z-index:20;display:flex;
  flex-direction:column;gap:.2rem;background:rgba(255,254,251,.92);border:1px solid var(--bordo);
  border-radius:8px;padding:.45rem .6rem;font-size:.75rem;color:var(--tenue)}
.luci-pannello label{display:flex;align-items:center;gap:.4rem;justify-content:space-between}
.luci-pannello input[type=range]{width:96px}
.lista-ferramenta{list-style:none;margin:0;padding:0}
.lista-ferramenta li{display:flex;justify-content:space-between;gap:.5rem;
  padding:.3rem 0;border-bottom:1px solid var(--bordo)}
.lista-ferramenta li:last-child{border-bottom:none}
.lista-ferramenta small{color:var(--tenue)}
.lista-ferramenta .qta{color:var(--tenue);font-weight:600}
.nota-ferramenta{color:var(--tenue);font-size:.78rem;margin:.5rem 0 0}
.azioni-progetto{display:flex;gap:.5rem;flex-wrap:wrap}
.trova-pezzo{margin:.2rem 0 .8rem}
.percorso-doc{margin:.35rem 0 0;font-family:ui-monospace,Consolas,monospace;font-size:.8rem;
  color:var(--tenue);word-break:break-all;background:var(--sabbia);padding:.3rem .55rem;border-radius:7px;display:inline-block}
.opz{color:var(--tenue);font-weight:400;font-size:.82em}
.da-abbinare,.corretti{list-style:none;margin:0;padding:0}
.da-abbinare .voce{padding:.45rem .4rem;border-bottom:1px solid var(--bordo);cursor:pointer;
  display:flex;flex-direction:column}
.da-abbinare .voce:hover{background:#f4f6f4}
.da-abbinare .voce.attivo{background:#fbf3e0;outline:2px solid var(--accento)}
.da-abbinare small{color:var(--tenue)}
.corretti li{display:flex;justify-content:space-between;align-items:center;gap:.5rem;
  padding:.35rem .4rem;border-bottom:1px solid var(--bordo)}
.corretti small{color:var(--ok)}
.annulla{background:#f3ddd9;color:var(--errore);border-radius:6px;padding:.1rem .45rem;font-size:.85rem}
.gestione{margin-top:1.4rem;background:var(--carta);border:1px solid var(--bordo);border-radius:12px;padding:.6rem 1.1rem}
.gestione>summary{cursor:pointer;font-weight:600;color:var(--accento-scuro)}
.gestione-griglia{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-top:.8rem}
.gestione .riquadro{margin-bottom:1rem}
.modulo-stretto{display:flex;flex-direction:column;gap:.5rem}
.modulo-stretto label{display:flex;flex-direction:column;gap:.2rem;font-size:.85rem;color:var(--tenue)}
.modulo-stretto input{padding:.45rem .55rem;border:1px solid var(--bordo);border-radius:8px;font-size:.95rem;color:var(--inchiostro)}
.modulo-stretto .primario{align-self:flex-start;margin-top:.3rem}
.zona-pericolo{border-color:#ecccc6;background:#fcf4f2}
.modifica-pezzo{margin-top:1rem;background:var(--carta);border:1px solid var(--bordo);border-radius:12px;padding:.6rem 1.1rem}
.modifica-pezzo>summary{cursor:pointer;color:var(--accento-scuro);font-weight:600}
.modifica-pezzo form{margin-top:.7rem}
@media(max-width:760px){.gestione-griglia{grid-template-columns:1fr}}
.pannello-pezzi{border-left:1px solid var(--bordo);padding:.8rem;display:flex;
  flex-direction:column;min-height:0}
#filtro{margin-bottom:.6rem}
.chip-famiglie{display:flex;flex-wrap:wrap;gap:.35rem;margin-bottom:.6rem}
.chip{background:var(--sabbia);border-radius:999px;padding:.25rem .7rem;font-size:.82rem;font-weight:600;color:var(--inchiostro)}
.chip.attivo{background:var(--accento);color:#fff}
.tag-fam{display:inline-block;border-radius:999px;padding:0 .45rem;font-size:.72rem;font-weight:600;margin-left:.2rem}
.tag-pannelli{background:#e3eef6;color:#1f5d86}
.tag-ferramenta{background:#efe3f4;color:#6a3586}
.tag-masselli{background:#f1ece0;color:#6f5a2b}
.tag-vetri{background:#e1f1ee;color:#0f6e56}
.tag-altro{background:#ece9e2;color:#5f5e5a}
#lista-pezzi{list-style:none;margin:0;padding:0;overflow:auto;max-height:500px}
.voce-pezzo{display:flex;align-items:center;justify-content:space-between;gap:.4rem;
  padding:.45rem .3rem;border-bottom:1px solid var(--bordo)}
.voce-pezzo a{display:flex;flex-direction:column;flex:1;color:var(--inchiostro)}
.voce-pezzo a:hover{text-decoration:none}
.voce-pezzo strong{font-weight:600;font-size:.92rem}
.voce-pezzo small{color:var(--tenue)}
.voce-pezzo.unmatched{opacity:.55}
.voce-pezzo .mostra{background:var(--sabbia);padding:.25rem .5rem;font-size:1rem;line-height:1}
.voce-pezzo.attiva{background:#c9f2d2}

.pezzo-testa{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;margin-bottom:.8rem}
.schede{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:1rem}
.scheda{background:var(--carta);border:1px solid var(--bordo);border-radius:12px;padding:1rem 1.1rem}
.scheda dl{display:grid;grid-template-columns:auto 1fr;gap:.35rem .9rem;margin:0}
.scheda dt{color:var(--tenue);font-size:.88rem}
.scheda dd{margin:0;font-weight:500}
.grezzo{margin-top:1rem;background:var(--carta);border:1px solid var(--bordo);
  border-radius:12px;padding:.6rem 1.1rem}
.grezzo summary{cursor:pointer;color:var(--tenue)}
.grezzo dl{display:grid;grid-template-columns:auto 1fr;gap:.25rem .9rem;margin:.7rem 0 0}
.grezzo dt{color:var(--tenue);font-size:.85rem}
.grezzo dd{margin:0;font-size:.85rem}

.griglia-qr{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:.8rem}
.cella-qr{border:1px solid var(--bordo);border-radius:10px;padding:.7rem;text-align:center;background:#fff}
.cella-qr img{width:100%;max-width:150px;height:auto}
.etichetta{display:flex;flex-direction:column;font-size:.82rem;margin-top:.3rem}
.etichetta strong{font-size:.9rem}
.etichetta span{color:var(--tenue)}

@media(max-width:760px){
  .modulo{grid-template-columns:1fr}
  .viewer-wrap{grid-template-columns:1fr}
  .pannello-pezzi{border-left:none;border-top:1px solid var(--bordo)}
}
@media print{
  .barra,.no-print{display:none}
  main{margin:0}
  .cella-qr{break-inside:avoid}
}

/* ===== v1.12: pannello vista a scomparsa (hidden deve vincere su display:flex) ===== */
.vista-pannello[hidden]{display:none}

/* ===== v1.12: lista pezzi a scomparsa ===== */
.barra-viewer{display:flex;justify-content:flex-end;margin-bottom:.5rem}
#toggle-lista{background:var(--sabbia);border:1px solid var(--bordo);border-radius:8px;
  padding:.32rem .8rem;font-weight:600;font-size:.86rem;cursor:pointer;color:var(--inchiostro)}
#toggle-lista.attivo{background:var(--accento);color:#fff}
.viewer-wrap.lista-chiusa{grid-template-columns:1fr}
.pannello-pezzi[hidden]{display:none}
/* barra esplosione della pagina Revisione: il pannello "Da abbinare" e'
   posizionato in assoluto a destra, quindi lascio spazio per non finirci sotto */
.rev-barra{display:flex;align-items:center;gap:.7rem;flex-wrap:wrap;
  padding:.5rem .8rem;border-bottom:1px solid var(--bordo);background:var(--carta);
  padding-right:350px}
.rev-esplosione{display:flex;align-items:center;gap:.55rem;font-size:.78rem;color:var(--tenue)}
.rev-esplosione input[type=range]{width:180px;accent-color:var(--accento)}
.rev-esplosione output{font-weight:600;color:var(--inchiostro);min-width:2.8em;text-align:right}
.rev-btn{font-family:var(--sans);font-size:.75rem;padding:.28rem .6rem;cursor:pointer;
  border:1px solid var(--bordo);border-radius:8px;background:transparent;color:var(--inchiostro)}
.rev-btn:hover{border-color:var(--accento);color:var(--accento)}
.rev-btn.viewer-mano-btn[aria-pressed="true"]{background:var(--accento);border-color:var(--accento);color:#fff}
/* barra di conferma della selezione multipla (Ctrl+clic) */
.rev-conferma{display:flex;align-items:center;gap:.6rem;margin-left:auto;
  font-size:.8rem;color:var(--inchiostro)}
.rev-conferma[hidden]{display:none}
#rev-conta{font-weight:600}
.rev-btn-ok{background:var(--accento);border-color:var(--accento);color:#fff;font-weight:600}
.rev-btn-ok:hover{background:var(--accento-scuro);border-color:var(--accento-scuro);color:#fff}
.rev-avviso{display:block;color:#a8392f}
.rev-conflitto{font-weight:600}
/* avviso a tutta larghezza sotto la barra: corpo gia' assegnato altrove */
.rev-allarme{margin:0;padding:.5rem .8rem;background:#fdf1ef;color:#a8392f;
  border-bottom:1px solid #f0cfc9;font-family:var(--sans);font-size:.79rem;line-height:1.4}
.rev-allarme[hidden]{display:none}
/* promemoria dei gesti dentro al viewer (v2.0.66) */
.aiuto-gesti-btn{position:absolute;right:.6rem;bottom:.6rem;z-index:30;
  width:34px;height:34px;border-radius:50%;cursor:pointer;
  border:1px solid var(--bordo);background:rgba(255,255,255,.92);
  color:var(--inchiostro);font-family:var(--sans);font-size:1rem;font-weight:600;
  box-shadow:0 2px 8px rgba(66,15,20,.14);line-height:1}
.aiuto-gesti-btn:hover{border-color:var(--accento);color:var(--accento)}
.aiuto-gesti{position:absolute;right:.6rem;bottom:3.1rem;z-index:30;
  background:rgba(255,255,255,.97);border:1px solid var(--bordo);border-radius:12px;
  padding:.7rem .85rem;box-shadow:0 6px 20px rgba(66,15,20,.16);
  font-family:var(--sans);font-size:.78rem;max-width:270px}
.aiuto-gesti[hidden]{display:none}
.aiuto-gesti h4{margin:0 0 .45rem;font-family:var(--sans);font-size:.68rem;
  letter-spacing:.14em;text-transform:uppercase;color:var(--tenue);font-weight:600}
.aiuto-gesti div{display:flex;gap:.6rem;padding:.14rem 0;align-items:baseline}
.aiuto-gesti b{flex:0 0 40%;font-weight:600;color:var(--inchiostro)}
.aiuto-gesti span{color:var(--tenue)}
@media (max-width:900px){
  .rev-barra{padding-right:.8rem}
  .rev-esplosione input[type=range]{width:120px}
}

/* ===== v1.12: voce pezzo cliccabile + caratteristiche inline ===== */
.voce-pezzo{flex-direction:column;align-items:stretch}
.voce-riga{display:flex;align-items:center;gap:.35rem;min-width:0}
.voce-apri{display:flex;flex:1 1 auto;min-width:0;align-items:center;justify-content:space-between;gap:.5rem;
  background:none;border:none;text-align:left;cursor:pointer;padding:.15rem 0;color:var(--inchiostro)}
.voce-apri:hover{color:var(--accento-scuro)}
.voce-visibilita{flex:0 0 34px;width:34px;height:34px;display:flex;align-items:center;justify-content:center;
  padding:0;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--tenue);
  cursor:pointer;font-size:1.1rem;transition:background .15s,color .15s,border-color .15s}
.voce-visibilita:hover{background:var(--sabbia);border-color:var(--bordo);color:var(--accento-scuro)}
.voce-visibilita.nascosto{background:#fbe8d8;border-color:#f1c7aa;color:#a94b16}
.voce-visibilita:disabled{opacity:.35;cursor:not-allowed}
.voce-visibilita:focus-visible{outline:2px solid var(--accento);outline-offset:2px}
.voce-apri .voce-info{display:flex;flex-direction:column}
.voce-apri .voce-info strong{font-weight:600;font-size:.92rem}
.voce-apri .voce-info small{color:var(--tenue)}
.voce-apri .voce-frec{color:var(--tenue);transition:transform .15s;flex:0 0 auto}
.voce-pezzo.attiva .voce-apri .voce-frec{transform:rotate(90deg)}
.voce-pezzo.attiva{background:#c9f2d2}
.voce-dettagli{padding:.35rem .25rem .1rem;border-top:1px dashed var(--bordo);margin-top:.4rem}
.voce-dettagli dl.mini{display:grid;grid-template-columns:auto 1fr;gap:.12rem .7rem;margin:0 0 .45rem;font-size:.82rem}
.voce-dettagli dl.mini dt{color:var(--tenue)}
.voce-dettagli dl.mini dd{margin:0}
.voce-scheda{font-size:.8rem;font-weight:600}
.tag-5ax{display:inline-block;background:#fbe8d8;color:#b1561f;border-radius:999px;
  padding:0 .45rem;font-size:.7rem;font-weight:600;margin-left:.25rem}

/* ===== v1.12.1: elenco pezzi come pannello SOPRA il 3D (sempre visibile da aperto) ===== */
.viewer-wrap{position:relative;display:block}
.viewer-wrap #viewer{width:100%}
.pannello-pezzi{position:absolute;top:0;right:0;width:330px;max-height:100%;overflow:auto;z-index:25;
  background:#ffffff;border-left:1px solid var(--bordo);box-shadow:-8px 0 24px rgba(0,0,0,.16)}
@media(max-width:760px){
  .pannello-pezzi{width:100%;border-left:none;border-bottom:1px solid var(--bordo)}
}

/* ===================== v1.14 · accesso PIN + header ===================== */
.barra-nav{margin-left:auto;display:flex;gap:1.1rem;align-items:center}
.barra-nav a{color:var(--tenue);font-size:.82rem;font-weight:600;letter-spacing:.02em}
.barra-nav a:hover{color:var(--accento)}
.barra .versione{margin-left:1rem}

.accesso-box{max-width:380px;margin:8vh auto 0;background:var(--carta);
  border:1px solid var(--bordo);border-radius:16px;padding:1.8rem 1.7rem;
  box-shadow:0 10px 40px rgba(66,15,20,.07)}
.accesso-box h2{margin-top:0}
.accesso-errore{background:#fbeaea;color:#8c1d1d;border:1px solid #e7bcbc;
  border-radius:8px;padding:.5rem .7rem;font-size:.9rem;margin:.4rem 0}
.accesso-ok{background:#e9f6ec;color:#1d6b32;border:1px solid #bfe3c8;
  border-radius:8px;padding:.5rem .7rem;font-size:.9rem;margin:.4rem 0}

.qr-progetto-box{display:flex;align-items:center;gap:1rem;margin:0 0 1.4rem;
  padding:1rem;border:2px dashed var(--accento);border-radius:14px;background:#ffffff}
.qr-progetto-box img{width:130px;height:130px}
.qr-progetto-box .etichetta strong{display:block;color:var(--accento-scuro);letter-spacing:.04em}
.qr-progetto-box .etichetta span{color:var(--tenue);font-size:.85rem}
@media print{.qr-progetto-box{border-color:#000}}

/* ===================== v1.14 · viewer OFFICINA a tutta pagina ===================== */
body.officina{margin:0;background:var(--sabbia)}
.off-schermo{display:flex;flex-direction:column;height:100vh;height:100dvh}
.off-barra{flex:0 0 auto;display:flex;align-items:center;gap:1rem;
  padding:.6rem 1rem;background:#fff;border-bottom:1px solid var(--bordo)}
.off-titolo-box{display:flex;flex-direction:column;line-height:1.15;min-width:0}
.off-marchio{font-family:var(--serif);color:var(--accento);font-size:1.05rem;
  letter-spacing:.16em;font-weight:600}
.off-titolo{font-weight:600;color:var(--inchiostro);font-size:1.05rem;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.off-meta{color:var(--tenue);font-size:.78rem}
.off-btn-lista{margin-left:auto;background:#fff;border:1px solid var(--bordo);
  border-radius:10px;padding:.55rem .9rem;font-size:1rem;font-weight:600;
  color:var(--inchiostro);cursor:pointer}
.off-btn-lista.attivo{background:var(--accento);color:#fff;border-color:var(--accento)}

.off-wrap{flex:1 1 auto;min-height:0;position:relative}
.off-wrap #viewer{height:100%}
.off-attesa{flex:1;display:flex;align-items:center;justify-content:center;color:var(--tenue)}

/* singolo pezzo: colonna dettagli a sinistra, 3D a destra */
.off-pezzo{display:grid;grid-template-columns:360px 1fr;height:100vh;height:100dvh}
.off-colonna{overflow:auto;padding:1.1rem 1.1rem 2rem;background:var(--carta);
  border-right:1px solid var(--bordo);display:flex;flex-direction:column;gap:.9rem}
.off-torna{align-self:flex-start;color:var(--tenue);font-weight:600;font-size:.9rem}
.off-torna:hover{color:var(--accento)}
.off-pezzo-testa h2{margin:.2rem 0 .35rem}
.off-pezzo-testa .off-marchio{font-size:.72rem;letter-spacing:.12em;display:block;margin-bottom:.2rem}
.off-3d{position:relative;background:#eceeec;min-height:0}
.off-viewer-pezzo{height:100%}
.off-no3d{height:100%;display:flex;align-items:center;justify-content:center;color:var(--tenue)}
@media(max-width:760px){
  .off-pezzo{grid-template-columns:1fr;height:auto;min-height:100dvh}
  .off-colonna{border-right:none;border-bottom:1px solid var(--bordo)}
  .off-3d{height:62vh}
}

/* link "scheda" nella riga dell'elenco officina */
.voce-scheda-link{flex:0 0 auto;align-self:center;color:var(--accento);
  font-size:.8rem;font-weight:600;padding:0 .3rem .3rem .5rem;white-space:nowrap}

/* ===================== v1.16 · toggle inquadratura singolo pezzo ===================== */
.viewer-pezzo-wrap{position:relative}
.off-3d{position:relative}
.off-btn-vista{
  position:absolute; left:50%; bottom:14px; transform:translateX(-50%);
  z-index:5; background:var(--accento); color:#fff; border:none;
  border-radius:999px; padding:.6rem 1.15rem; font-size:.92rem; font-weight:600;
  cursor:pointer; box-shadow:0 4px 14px rgba(66,15,20,.25)}
.off-btn-vista:hover{background:var(--accento-scuro,#181d21)}
.meta-disegno{color:var(--tenue);font-size:.82rem;margin:.4rem 0 0}

/* ===================== v1.17 · ricerca dimensioni + annotazioni ===================== */
.cerca-dim{display:flex;gap:.35rem;margin:.45rem 0}
.cerca-dim input{width:100%;min-width:0;padding:.4rem .45rem;border:1px solid var(--bordo);
  border-radius:8px;font-size:.85rem;background:#fff;-moz-appearance:textfield}
.cerca-dim input::-webkit-outer-spin-button,.cerca-dim input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.cerca-dim #dim-clear{flex:0 0 auto;width:34px;border:1px solid var(--bordo);border-radius:8px;
  background:#fff;cursor:pointer;font-size:1.1rem;line-height:1;color:var(--tenue)}
.cerca-dim #dim-clear:hover{color:var(--accento);border-color:var(--accento)}

/* badge "!" pezzo annotato (elenco e schede) */
.badge-nota{display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:18px;padding:0 4px;border-radius:50%;
  background:#d61f1f;color:#fff;font-weight:800;font-size:.72rem;line-height:1;
  vertical-align:middle;box-shadow:0 0 0 2px #ffd21e}

/* scheda annotazione */
.scheda-nota.ha-nota{border:1px solid #f0c200;background:#fffdf2}
.scheda-nota .nota-testo{margin:.2rem 0;font-weight:600;color:var(--inchiostro);white-space:pre-wrap}
.scheda-nota .nota-meta{margin:.1rem 0 .6rem;color:var(--tenue);font-size:.8rem}
.form-nota{display:flex;flex-direction:column;gap:.45rem;margin-top:.3rem}
.form-nota textarea{width:100%;border:1px solid var(--bordo);border-radius:8px;
  padding:.5rem;font:inherit;font-size:.9rem;resize:vertical}
.riga-azioni-nota{display:flex;gap:.5rem}
.link-elimina{background:none;border:none;color:#a8392f;cursor:pointer;
  font-size:.82rem;padding:.3rem 0;margin-top:.3rem;text-decoration:underline}

/* ===================== v1.18 · mappa forature dai .cix ===================== */
.scheda-cix .mappa-cix-wrap{background:#fff;border:1px solid var(--bordo);border-radius:8px;padding:.4rem;margin:.3rem 0}
.mappa-cix{width:100%;height:auto;max-height:300px;display:block}
.meta-cix{color:var(--tenue);font-size:.78rem;margin:.2rem 0 .5rem}
.lista-fori{list-style:none;margin:.3rem 0;padding:0;font-size:.85rem}
.lista-fori li{display:flex;align-items:center;gap:.45rem;padding:.15rem 0}
.pallino-cix{width:11px;height:11px;border-radius:50%;background:#b8860b;flex:0 0 auto}
.pallino-cix.orig-5ax{background:#1565c0}

/* ===================== v1.18 · esito lettura .cix ===================== */
.esito-dati{font-size:.9rem;line-height:1.7;margin:.4rem 0}
.esito-griglia{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin:.5rem 0}
.esito-griglia h4{margin:.2rem 0;font-size:.85rem}
.esito-griglia ul{margin:.2rem 0;padding-left:1.1rem;font-size:.8rem;max-height:240px;overflow:auto}
.esito-confronto{border-top:1px solid var(--bordo);margin-top:.6rem;padding-top:.6rem}
code{background:#f1f3f1;padding:.1rem .3rem;border-radius:4px;font-size:.85em;word-break:break-all}


/* ===================== v2.0 · navigatore pezzi (officina, 3 colonne) ===================== */
.pz2-schermo{display:flex;flex-direction:column;height:100vh;height:100dvh;background:var(--sabbia)}

.pz2-barra{flex:0 0 auto;display:flex;align-items:center;gap:1.4rem;
  padding:.7rem 1.2rem;background:#fff;border-bottom:1px solid var(--bordo)}
.pz2-marchio{display:flex;align-items:center;gap:.5rem;color:var(--accento);text-decoration:none}
.pz2-marchio:hover{text-decoration:none}
.pz2-marchio-txt{display:flex;flex-direction:column;line-height:1}
.pz2-marchio-txt b{font-family:var(--serif);font-weight:600;font-size:1.15rem;letter-spacing:.2em;padding-left:.2em}
.pz2-marchio-txt small{font-size:.58rem;letter-spacing:.26em;text-transform:uppercase;color:var(--tenue);margin-top:.25rem;padding-left:.22em}
.pz2-commessa{display:flex;gap:1.6rem}
.pz2-campo{display:flex;flex-direction:column;gap:.15rem}
.pz2-lbl{font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;color:var(--tenue)}
.pz2-val{font-weight:600;font-size:.98rem;color:var(--inchiostro)}
.pz2-barra-dx{margin-left:auto;display:flex;align-items:center;gap:.9rem}
.pz2-progetto{font-size:.85rem;color:var(--tenue);max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

.pz2-corpo{flex:1 1 auto;min-height:0;display:grid;grid-template-columns:300px minmax(0,1fr) 290px}

.pz2-col-sx{min-height:0;overflow:auto;padding:.9rem;background:var(--carta);
  border-right:1px solid var(--bordo);display:flex;flex-direction:column;gap:.6rem}
.pz2-col-testa{display:flex;align-items:baseline;justify-content:space-between}
.pz2-col-testa h3{margin:0}
.pz2-conta{font-size:.72rem;color:var(--tenue)}
.pz2-col-sx #lista-pezzi{max-height:none;flex:0 0 auto}

.pz2-col-cx{min-height:0;display:flex;flex-direction:column;padding:.9rem}
.pz2-toolbar{flex:0 0 auto;display:flex;align-items:center;gap:.7rem;margin-bottom:.7rem;flex-wrap:wrap}
.pz2-toolbar h3{margin:0}
.pz2-tbar{display:flex;gap:.35rem}
.pz2-dropdown{position:relative}
.pz2-tbtn{width:32px;height:32px;display:flex;align-items:center;justify-content:center;
  border:1px solid var(--bordo);background:#ffffff;border-radius:8px;color:var(--inchiostro);font-size:1rem;cursor:pointer;padding:0}
.pz2-tbtn:hover{background:#eef1ee}
.pz2-tbtn.on{background:var(--accento);color:#fff;border-color:var(--accento)}
.viewer-selezione{cursor:crosshair}
.pz2-dropdown-menu{position:absolute;top:38px;left:0;background:#fff;border:1px solid var(--bordo);border-radius:8px;
  box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;flex-direction:column;z-index:100;min-width:160px}
.pz2-dropdown-menu button{padding:.5rem .8rem;border:none;background:transparent;text-align:left;cursor:pointer;
  color:var(--inchiostro);font-size:.9rem;display:flex;align-items:center;gap:.5rem;font-family:var(--sans);
  border-bottom:1px solid var(--bordo)}
.pz2-dropdown-menu button:last-child{border-bottom:none}
.pz2-dropdown-menu button:hover{background:var(--sabbia)}
.pz2-dropdown-menu button i{width:20px;text-align:center;opacity:.7}
.pz2-traspar{margin-left:auto;display:flex;align-items:center;gap:.55rem;font-size:.78rem;color:var(--tenue)}
.pz2-traspar input[type=range]{width:110px;accent-color:var(--accento)}
.pz2-traspar output{font-weight:600;color:var(--inchiostro);min-width:2.6em;text-align:right}
.pz2-col-cx #viewer{flex:1 1 auto;height:auto;min-height:0;width:100%;
  background:#eceeec;border:1px solid var(--bordo);border-radius:10px;overflow:hidden}

.pz2-col-dx{min-height:0;overflow:auto;padding:.9rem;background:var(--carta);
  border-left:1px solid var(--bordo);display:flex;flex-direction:column;gap:.9rem}
.pz2-box{border:1px solid var(--bordo);border-radius:12px;padding:.8rem .9rem;background:var(--carta)}
.pz2-box h3{margin:0 0 .6rem}
.pz2-info-vuoto{color:var(--tenue);font-size:.85rem}
.pz2-r{display:flex;flex-direction:column;gap:.1rem;padding:.32rem 0;border-bottom:1px solid var(--bordo)}
.pz2-r:last-child{border-bottom:none}
.pz2-r .pz2-lbl{font-size:.66rem}
.pz2-rv{font-size:.9rem;color:var(--inchiostro)}
.pz2-rv code{background:var(--sabbia);padding:.05rem .35rem;border-radius:5px;font-size:.82rem;color:var(--tenue)}
.pz2-rv .ok{color:var(--ok);font-weight:600}

.pz2-azioni{display:flex;flex-direction:column;gap:.4rem}
.pz2-azioni[aria-disabled="true"]{opacity:.5;pointer-events:none}
.az-dropdown{position:relative;width:100%}
.az{display:flex;align-items:center;gap:.55rem;width:100%;padding:.55rem .7rem;
  border:1px solid var(--bordo);background:#ffffff;border-radius:8px;color:var(--inchiostro);
  font-size:.86rem;font-weight:500;cursor:pointer;text-align:left;text-decoration:none}
.az:hover{background:#eef1ee;text-decoration:none}
.az i{color:var(--accento);font-size:1.05rem}
.az-dropdown-menu{position:absolute;top:42px;left:0;right:0;background:#fff;border:1px solid var(--bordo);border-radius:8px;
  box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;flex-direction:column;z-index:100}
.az-dropdown-menu button{padding:.5rem .7rem;border:none;background:transparent;text-align:left;cursor:pointer;
  color:var(--inchiostro);font-size:.82rem;display:flex;align-items:center;gap:.5rem;font-family:var(--sans);
  border-bottom:1px solid var(--bordo);font-weight:500}
.az-dropdown-menu button:last-child{border-bottom:none}
.az-dropdown-menu button:hover{background:var(--sabbia)}
.az-dropdown-menu button i{color:var(--accento);font-size:.95rem;width:18px;text-align:center}

.pz2-anteprima{margin-top:auto;border:1px solid var(--bordo);border-radius:10px;
  background:var(--carta);padding:.7rem;display:flex;flex-direction:column;gap:.55rem}
.pz2-ant-thumb{height:66px;border-radius:6px;
  background:linear-gradient(180deg,#d9c3a3,#c8ad86);border:1px solid var(--bordo)}
.pz2-ant-info{display:flex;flex-direction:column;gap:.12rem}
.pz2-ant-info strong{font-size:.9rem}
.pz2-ant-info small{font-size:.76rem;color:var(--tenue)}
.pz2-ant-info .ok{font-size:.78rem;color:var(--ok);font-weight:600}
.pz2-anteprima .primario{text-align:center;justify-self:stretch}

.pz2-footer{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;
  padding:.5rem 1.2rem;background:#fff;border-top:1px solid var(--bordo);font-size:.72rem;color:var(--tenue)}

@media(max-width:980px){
  .pz2-corpo{grid-template-columns:1fr;grid-auto-rows:minmax(0,auto)}
  .pz2-col-sx,.pz2-col-dx{border:none;border-bottom:1px solid var(--bordo)}
  .pz2-col-cx #viewer{height:56vh}
  .pz2-commessa{gap:1rem}
}


/* ===================== v2.0 · header globale (logo + marchio) e footer ===================== */
.barra{gap:.9rem}
.barra .marchio{flex-direction:row;align-items:center;gap:.6rem}
.marchio-logo{color:var(--accento);flex:0 0 auto;display:block}
.marchio-txt{display:flex;flex-direction:column;line-height:1}
.marchio-sopra{font-family:var(--sans);font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--tenue);margin-bottom:.2rem}
.barra .marchio-nome{font-family:var(--serif);color:var(--accento);font-size:1.5rem;font-weight:600;letter-spacing:.2em;padding-left:.2em}

.pie{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-wrap:wrap;
  max-width:1080px;margin:2.4rem auto .6rem;padding:.9rem 1.1rem 0;border-top:1px solid var(--bordo);
  color:var(--tenue);font-size:.76rem}
.pie-marchio{display:flex;align-items:center;gap:.45rem;color:var(--tenue)}
.pie-marchio svg{color:var(--accento)}
@media print{.pie{display:none}}


/* ===================== v2.0.2 · marchio grande (stile mockup) ===================== */
.barra{padding-top:.8rem;padding-bottom:.8rem}
.barra .marchio{align-items:center;gap:.7rem}
.marchio-logo{width:48px;height:40px;color:var(--accento);flex:0 0 auto}
.marchio-txt{gap:.12rem}
.marchio-sopra{font-family:var(--serif);font-size:1rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:var(--inchiostro)}
.barra .marchio-nome{font-family:var(--serif);font-size:2rem;font-weight:700;letter-spacing:.08em;color:var(--inchiostro);padding-left:0}

.pz2-logo{width:40px;height:34px;color:var(--accento);flex:0 0 auto}
.pz2-marchio{gap:.55rem}
.pz2-marchio-txt{gap:.05rem}
.pz2-marchio-txt small{font-family:var(--serif);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--inchiostro)}
.pz2-marchio-txt b{font-family:var(--serif);font-size:1.3rem;font-weight:700;letter-spacing:.06em;color:var(--inchiostro)}


/* ===================== v2.0.3 · logo immagine ufficiale ===================== */
.marchio-img{height:46px;width:auto;display:block}
.pz2-logo-img{height:32px;width:auto;display:block}


/* ===================== v2.0.4 · archivio raffinato (card progetti) ===================== */
.area h2{font-size:1.9rem}
.riga-ricerca{margin-bottom:.9rem}
.trova-pezzo a{color:var(--accento);font-weight:600}

.cartella{border-radius:12px;overflow:hidden}
.cartella>summary{padding:.75rem 1rem;background:#fff}
.cartella>summary:hover{background:#f4f6f4}
.cartella.sotto{background:#f7f9f7}
.cartella .conta{background:var(--sabbia);border-radius:999px;padding:.04rem .55rem;font-size:.76rem;color:var(--accento-scuro)}

.lista-progetti{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:.7rem;padding:.5rem .9rem 1rem}
.lista-progetti li{padding:.85rem .95rem;border:1px solid var(--bordo);border-radius:12px;background:var(--carta);
  display:flex;flex-direction:column;gap:.28rem;transition:box-shadow .15s ease,transform .15s ease}
.lista-progetti li:last-child{border-bottom:1px solid var(--bordo)}
.lista-progetti li:hover{box-shadow:0 6px 18px rgba(66,15,20,.09);transform:translateY(-1px)}
.lista-progetti li a{font-family:var(--serif);font-size:1.22rem;font-weight:600;color:var(--accento)}
.lista-progetti li a:hover{color:var(--accento-scuro);text-decoration:none}
.lista-progetti li small{color:var(--tenue);font-size:.82rem;line-height:1.45}


/* ===================== v2.0.5 · vista progettisti · navigatore 3 colonne in-pagina ===================== */
.pz2p-corpo{display:grid;grid-template-columns:300px minmax(0,1fr) 290px;height:72vh;min-height:520px;
  border:1px solid var(--bordo);border-radius:14px;overflow:hidden;background:var(--carta);margin:1.1rem 0 1.4rem}
@media(max-width:980px){
  .pz2p-corpo{grid-template-columns:1fr;height:auto}
  .pz2p-corpo .pz2-col-sx,.pz2p-corpo .pz2-col-dx{border-right:none;border-left:none;border-bottom:1px solid var(--bordo)}
  .pz2p-corpo .pz2-col-cx #viewer{height:56vh}
}


/* ===================== v2.0.6 · schermo intero mantiene lista + menu (3 colonne) ===================== */
.pz2-corpo:fullscreen,.pz2p-corpo:fullscreen{height:100vh;width:100vw;background:var(--fondo)}
.pz2-corpo:-webkit-full-screen,.pz2p-corpo:-webkit-full-screen{height:100vh;width:100vw;background:var(--fondo)}


/* ===================== v2.0.7 · colonne comprimibili (priorità al 3D) + fullscreen ===================== */
.pz2-corpo,.pz2p-corpo{grid-template-columns:minmax(180px,290px) minmax(0,1fr) minmax(175px,280px)}
.pz2-col-sx{border-right:1px solid var(--bordo)}
.pz2-col-dx{border-left:1px solid var(--bordo)}
.pz2-col-cx #viewer{height:auto}
/* schermo intero: 3D il più grande possibile, colonne strette ai lati */
.pz2-corpo:fullscreen,.pz2p-corpo:fullscreen{grid-template-columns:minmax(215px,250px) minmax(0,1fr) minmax(205px,240px)}
.pz2-corpo:-webkit-full-screen,.pz2p-corpo:-webkit-full-screen{grid-template-columns:minmax(215px,250px) minmax(0,1fr) minmax(205px,240px)}
/* spazio ridotto: resta 3D + elenco pezzi, i dettagli si tolgono */
@media(max-width:840px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:minmax(155px,230px) minmax(0,1fr)}
  .pz2-col-dx{display:none}
}
/* schermo molto piccolo (mobile): impilato, 3D grande */
@media(max-width:600px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:1fr;height:auto;grid-auto-rows:minmax(0,auto)}
  .pz2-col-sx{border-right:none;border-bottom:1px solid var(--bordo)}
  .pz2-col-cx #viewer{height:56vh}
}


/* ===================== v2.0.8 · 3D con larghezza minima, colonne laterali che si comprimono ===================== */
.pz2-corpo,.pz2p-corpo{grid-template-columns:minmax(150px,280px) minmax(380px,1fr) minmax(145px,270px)}
.pz2-corpo:fullscreen,.pz2p-corpo:fullscreen{grid-template-columns:minmax(200px,250px) minmax(600px,1fr) minmax(190px,240px)}
.pz2-corpo:-webkit-full-screen,.pz2p-corpo:-webkit-full-screen{grid-template-columns:minmax(200px,250px) minmax(600px,1fr) minmax(190px,240px)}
@media(max-width:840px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:minmax(140px,220px) minmax(0,1fr)}
  .pz2-col-dx{display:none}
}
@media(max-width:600px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:1fr}
}

/* v2.0.8 · tasto schermo intero attivo */
.pz2-tbtn.on{background:var(--accento);color:#fff;border-color:var(--accento)}


/* ===================== v2.0.9 · colonne laterali in percentuale (si riducono insieme alla finestra) ===================== */
.pz2-corpo,.pz2p-corpo{grid-template-columns:clamp(150px,22%,280px) minmax(340px,1fr) clamp(145px,21%,270px)}
.pz2-corpo:fullscreen,.pz2p-corpo:fullscreen{grid-template-columns:clamp(190px,14%,250px) minmax(600px,1fr) clamp(180px,13%,240px)}
.pz2-corpo:-webkit-full-screen,.pz2p-corpo:-webkit-full-screen{grid-template-columns:clamp(190px,14%,250px) minmax(600px,1fr) clamp(180px,13%,240px)}
@media(max-width:840px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:clamp(130px,30%,220px) minmax(0,1fr)}
  .pz2-col-dx{display:none}
}
@media(max-width:600px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:1fr}
}


/* ===================== v2.0.10 · tasto "solo 3D" + soglie automatiche piu alte ===================== */
.solo3d{grid-template-columns:1fr !important}
.solo3d .pz2-col-sx,.solo3d .pz2-col-dx{display:none}
@media(max-width:1150px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:clamp(150px,26%,260px) minmax(0,1fr)}
  .pz2-col-dx{display:none}
}
@media(max-width:780px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:1fr}
  .pz2-col-cx #viewer{height:56vh}
}


/* ===================== v2.0.11 · le colonne spariscono riducendo, il 3D resta (mai impilato) ===================== */
.pz2-corpo,.pz2p-corpo{grid-template-columns:clamp(160px,20%,280px) minmax(360px,1fr) clamp(150px,19%,270px)}
.pz2-corpo:fullscreen,.pz2p-corpo:fullscreen{grid-template-columns:clamp(190px,13%,250px) minmax(600px,1fr) clamp(180px,12%,240px)}
.pz2-corpo:-webkit-full-screen,.pz2p-corpo:-webkit-full-screen{grid-template-columns:clamp(190px,13%,250px) minmax(600px,1fr) clamp(180px,12%,240px)}
/* finestra media: spariscono i DETTAGLI, restano elenco + 3D */
@media(max-width:1150px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:clamp(150px,24%,260px) minmax(0,1fr)}
  .pz2-col-dx{display:none}
}
/* finestra piccola: sparisce ANCHE l'elenco, resta SOLO il 3D (niente impilamento) */
@media(max-width:820px){
  .pz2-corpo,.pz2p-corpo{grid-template-columns:1fr}
  .pz2-col-sx,.pz2-col-dx{display:none}
  .pz2-col-cx #viewer{height:auto;min-height:65vh}
}
/* tasto "solo 3D": nasconde ENTRAMBE le colonne a comando, a qualsiasi larghezza */
.solo3d{grid-template-columns:1fr !important}
.solo3d .pz2-col-sx,.solo3d .pz2-col-dx{display:none !important}


/* ============================================================
   APP OFFICINA - home reparti + scansione (v2.0.12)
   ============================================================ */
.app-off{max-width:560px;margin:0 auto;min-height:100vh;min-height:100dvh;
  display:flex;flex-direction:column;
  padding:calc(1rem + env(safe-area-inset-top)) 1.1rem calc(1.4rem + env(safe-area-inset-bottom))}
.app-off-testa{text-align:center;margin:1.2rem 0 .2rem}
.app-off-marchio{display:block;font-family:var(--serif);color:var(--accento);
  font-size:1.9rem;font-weight:600;letter-spacing:.34em;padding-left:.34em}
.app-off-sub{display:block;color:var(--tenue);font-size:.66rem;letter-spacing:.24em;
  text-transform:uppercase;margin-top:.45rem}
.app-off-titolo{font-family:var(--serif);font-weight:500;font-size:1.7rem;
  text-align:center;margin:1.5rem 0 1.1rem;color:var(--inchiostro)}
.reparti-griglia{display:grid;grid-template-columns:1fr 1fr;gap:.9rem}
.reparto-carta{display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:.7rem;background:var(--carta);border:1px solid var(--bordo);border-radius:16px;
  padding:1.7rem 1rem;color:var(--inchiostro);text-align:center;min-height:132px;
  box-shadow:0 1px 2px rgba(66,15,20,.05);transition:transform .06s ease,box-shadow .15s ease}
.reparto-carta:hover{text-decoration:none;box-shadow:0 6px 18px rgba(66,15,20,.12)}
.reparto-carta:active{transform:scale(.97)}
.reparto-ico{width:44px;height:44px;stroke:var(--accento);fill:none;
  stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.reparto-nome{font-family:var(--sans);font-weight:600;font-size:1.02rem;letter-spacing:.01em}
.reparto-carta:last-child:nth-child(odd){grid-column:1 / -1}
/* reparto gia' assegnato a questo tablet */
.app-off-nota{text-align:center;color:var(--tenue);font-size:.86rem;
  margin:-.6rem 0 1.1rem;line-height:1.45}
.app-off-nota strong{color:var(--accento);font-weight:600}
.reparto-attivo{border-color:var(--accento);border-width:2px;
  box-shadow:0 0 0 3px rgba(88,184,40,.14)}
.app-off-pie{margin-top:auto;text-align:center;color:var(--tenue);font-size:.72rem;
  letter-spacing:.08em;padding-top:1.6rem}

/* scansione */
.scan-testa{display:flex;align-items:center;gap:.9rem;margin:.8rem 0 1.2rem}
.scan-back{font-size:1.6rem;color:var(--accento);text-decoration:none;line-height:1}
.scan-back:hover{text-decoration:none}
.scan-reparto{font-family:var(--serif);font-size:1.6rem;color:var(--inchiostro);line-height:1.1}
.scan-reparto small{display:block;font-family:var(--sans);font-size:.6rem;
  letter-spacing:.2em;text-transform:uppercase;color:var(--tenue);margin-bottom:.15rem}
#scan-cam{width:100%;border-radius:16px;overflow:hidden;background:#000;
  aspect-ratio:3/4;margin-bottom:1rem}
#scan-cam video{width:100%;height:100%;object-fit:cover;display:block}
.scan-avviso{background:var(--sabbia);border:1px solid var(--bordo);border-radius:14px;
  padding:1.1rem 1.2rem;margin-bottom:1.1rem;color:var(--inchiostro);font-size:.95rem}
.scan-avviso b{color:var(--accento-scuro)}
.scan-cerca{display:flex;gap:.5rem;margin-bottom:1rem}
.scan-cerca input{flex:1}
.scan-badge{position:fixed;left:.7rem;bottom:.7rem;z-index:50;background:var(--accento);
  color:#fff;font-size:.72rem;font-weight:600;letter-spacing:.05em;border-radius:999px;
  padding:.38rem .85rem;box-shadow:0 3px 10px rgba(66,15,20,.28);text-decoration:none}
.scan-badge:hover{text-decoration:none;background:var(--accento-scuro)}

/* pulsante "Carica nuovo progetto" in alto a destra sulla home reparti */
.carica-link{position:fixed;top:.7rem;right:.8rem;z-index:40;font-family:var(--sans);
  font-size:.72rem;font-weight:600;letter-spacing:.04em;color:var(--accento);
  border:1px solid var(--bordo);background:var(--carta);border-radius:999px;
  padding:.42rem .85rem;text-decoration:none;box-shadow:0 1px 3px rgba(66,15,20,.06)}
.carica-link:hover{text-decoration:none;background:var(--accento);color:#fff;border-color:var(--accento)}


/* ===================== v2.0.15 · workspace progetti elastico (cresce con la finestra) =====================
   La pagina progetti (pz2p-corpo) sta dentro il contenitore da 1080px: la sblocco a
   tutta larghezza e le do un'altezza legata alla finestra, così il 3D si allarga
   quando ingrandisci/massimizzi la finestra (non solo col tasto schermo intero). */
.pz2p-corpo{
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  width:auto;
  height:calc(100dvh - 250px);
  min-height:480px;
}
/* schermi piccoli: il layout si impila e il 3D usa una % di viewport, niente altezza fissa */
@media(max-width:820px){
  .pz2p-corpo{height:auto;min-height:0}
}


/* ===================== v2.0.22 · Officina su TELEFONO: solo 3D, grande e pulito =====================
   Mirato alla sola vista officina (tutto sta dentro .pz2-schermo). Su schermo stretto
   l'intestazione e la barra strumenti diventano compatte su una riga sola, spariscono
   i due tasti inutili sul telefono (indicatore "selezione" e "solo 3D": i pannelli
   laterali sono gia' nascosti), e il 3D riempie tutto lo spazio rimasto. */
@media (max-width: 820px) {
  .pz2-schermo{overflow:hidden}

  /* intestazione: una riga sola, compatta */
  .pz2-schermo .pz2-barra{gap:.6rem;padding:.35rem .7rem;flex-wrap:nowrap}
  .pz2-schermo .pz2-logo-img{height:24px}
  .pz2-schermo .pz2-commessa{gap:.7rem;min-width:0;flex:1 1 auto;overflow:hidden}
  .pz2-schermo .pz2-commessa .pz2-lbl{display:none}
  .pz2-schermo .pz2-commessa .pz2-campo{flex-direction:row;white-space:nowrap;min-width:0}
  .pz2-schermo .pz2-commessa .pz2-val{font-size:.85rem;overflow:hidden;text-overflow:ellipsis}
  .pz2-schermo .pz2-barra-dx{gap:.5rem}
  .pz2-schermo .pz2-barra-dx .versione{display:none}
  .pz2-schermo .pz2-progetto{display:none}

  /* barra strumenti: compatta, tasti grandi da toccare */
  .pz2-schermo .pz2-col-cx{padding:.5rem .55rem .6rem}
  .pz2-schermo .pz2-toolbar{gap:.45rem;margin-bottom:.45rem;flex-wrap:nowrap;align-items:center}
  .pz2-schermo .pz2-toolbar h3{display:none}
  .pz2-schermo .pz2-tbar{gap:.4rem}
  .pz2-schermo .pz2-tbar > .pz2-tbtn:first-child{display:none}
  .pz2-schermo #pz2-solo3d{display:none}
  .pz2-schermo .pz2-tbtn{width:42px;height:42px;font-size:1.15rem;border-radius:10px}
  .pz2-schermo .pz2-traspar{gap:.4rem;font-size:.72rem}
  .pz2-schermo .pz2-traspar input[type=range]{width:92px}
  .pz2-schermo .pz2-traspar output{min-width:2.3em}

  /* il 3D prende tutto lo spazio che resta */
  .pz2-schermo .pz2-col-cx #viewer{flex:1 1 auto;height:auto;min-height:0;border-radius:12px}
}


/* ===================== v2.0.23 · Officina TELEFONO: cassetto elenco + info responsive ===================== */
/* elementi visibili solo su telefono (tasto elenco, tasti di chiusura) */
.pz2-solo-mobile{display:none !important}
.pz2-drawer-close{
  position:absolute; top:.5rem; right:.6rem; z-index:3;
  width:34px; height:34px; border-radius:50%; padding:0;
  border:1px solid var(--bordo); background:#fff; color:var(--inchiostro);
  font-size:1.4rem; line-height:1; cursor:pointer;
  align-items:center; justify-content:center;
}

@media (max-width: 820px){
  .pz2-solo-mobile{display:flex !important}

  /* barra Esplosione elastica: 4 tasti + cursore in una riga sola */
  .pz2-schermo .pz2-traspar{flex:1 1 auto; min-width:0}
  .pz2-schermo .pz2-traspar input[type=range]{flex:1 1 auto; width:auto; min-width:56px}

  /* ELENCO PEZZI: cassetto a scomparsa da sinistra */
  .pz2-schermo .pz2-col-sx{
    display:flex; position:fixed; top:0; left:0; bottom:0; z-index:60;
    width:min(86vw,340px); padding-top:2.9rem;
    transform:translateX(-102%); transition:transform .22s ease;
    box-shadow:0 0 26px rgba(40,10,14,.30);
  }
  .pz2-schermo.lista-aperta .pz2-col-sx{transform:translateX(0)}
  /* velo dietro il cassetto elenco */
  .pz2-schermo::after{
    content:""; position:fixed; inset:0; z-index:55;
    background:rgba(20,8,10,.38); opacity:0; pointer-events:none; transition:opacity .2s;
  }
  .pz2-schermo.lista-aperta::after{opacity:1; pointer-events:auto}

  /* INFO PEZZO: pannello a scomparsa, nascosto finche' non selezioni un pezzo */
  .pz2-schermo .pz2-col-dx{
    display:flex; position:fixed; z-index:60; padding-top:2.9rem;
    box-shadow:0 -2px 26px rgba(40,10,14,.28); transition:transform .22s ease;
  }
}

/* VERTICALE: info in basso (foglio dal basso) */
@media (max-width: 820px) and (orientation: portrait){
  .pz2-schermo .pz2-col-dx{
    left:0; right:0; bottom:0; max-height:48vh;
    border-top:1px solid var(--bordo); border-radius:16px 16px 0 0;
    transform:translateY(102%);
  }
  .pz2-schermo.info-aperta .pz2-col-dx{transform:translateY(0)}
}

/* ORIZZONTALE: info a destra */
@media (max-width: 820px) and (orientation: landscape){
  .pz2-schermo .pz2-col-dx{
    top:0; right:0; bottom:0; width:min(62vw,320px);
    border-left:1px solid var(--bordo);
    transform:translateX(102%);
  }
  .pz2-schermo.info-aperta .pz2-col-dx{transform:translateX(0)}
}


/* ===================== v2.0.24 · tasto "Dettagli" (telefono) =====================
   Compare sul 3D solo quando un pezzo e' evidenziato; toccandolo si aprono le info
   (le info non escono piu' da sole alla selezione del pezzo). */
.pz2-dettagli-fab{
  position:fixed; z-index:50; left:50%; bottom:1rem;
  display:none; align-items:center; gap:.4rem;
  background:var(--accento); color:#fff; border:none; border-radius:999px;
  padding:.6rem 1.15rem; font-family:var(--sans); font-size:.9rem; font-weight:600;
  cursor:pointer; box-shadow:0 6px 18px rgba(40,10,14,.32);
  transform:translateX(-50%) translateY(140%); opacity:0;
  transition:transform .2s ease, opacity .2s ease;
}
@media (max-width: 820px){
  .pz2-schermo.pezzo-attivo:not(.info-aperta):not(.lista-aperta) .pz2-dettagli-fab{
    display:inline-flex; opacity:1; transform:translateX(-50%) translateY(0);
  }
}

/* ================= TEMA BLU - prova pagina progetto ================= */
body.tema-blu{background:var(--accento-scuro)}
/* header blu con targhette bianche dietro i loghi */
body.tema-blu .barra{background:var(--accento-scuro);border-bottom:1px solid #24333f}
body.tema-blu .barra .marchio,
body.tema-blu .barra .marchio-centro{background:#fff;border-radius:10px;padding:5px 11px}
body.tema-blu .barra-nav a{color:#c7d0d8}
body.tema-blu .barra-nav a:hover{color:#fff}
body.tema-blu .barra .versione{color:#dbe4ea;border-color:rgba(255,255,255,.28)}
/* breadcrumb, titolo e meta sul fondo blu -> testo chiaro */
body.tema-blu .percorso{color:#aeb9c3}
body.tema-blu .percorso a{color:#fff}
body.tema-blu .percorso strong{color:#fff}
body.tema-blu .intestazione-progetto h2{color:#fff}
body.tema-blu .intestazione-progetto .meta{color:#b7c1cb}
body.tema-blu .percorso-doc{color:#93a0ab}
body.tema-blu .primario.chiaro{color:#fff;border-color:rgba(255,255,255,.5)}
body.tema-blu .primario.chiaro:hover{background:#fff;color:var(--accento-scuro)}
/* i tre frame restano bianchi (col-cx non aveva sfondo esplicito) */
body.tema-blu .pz2-col-cx{background:var(--carta)}
/* footer blu */
body.tema-blu .pie{background:var(--accento-scuro);color:#aeb9c3;border-top:1px solid #24333f}
body.tema-blu .pie a,body.tema-blu .pie-marchio{color:#dbe4ea}


/* selettore specchio lavorazioni (correzione mano SX/DX) nella scheda pezzo */
.specchio-riga{display:flex;align-items:flex-end;gap:.5rem;margin:.5rem 0 .3rem}
.specchio-lbl{font-size:.82rem;color:var(--tenue);display:flex;flex-direction:column;gap:.25rem}
.specchio-lbl select{font-size:.9rem;padding:.28rem .45rem;border:1px solid var(--bordo);
  border-radius:6px;background:#fff;color:var(--inchiostro)}
.tag-auto{background:#eaf5ee;color:var(--accento);border:1px solid var(--accento);
  border-radius:999px;padding:.02rem .55rem;font-size:.72rem;font-weight:600;line-height:1.6}
.tag-auto.tag-man{background:var(--sabbia);color:var(--tenue);border-color:var(--bordo)}

/* v2.0.75 - "Scansiona" nella vista officina: tasto, overlay fotocamera, toast */
.pz2-btn-scan { display:inline-flex; align-items:center; gap:.35rem; background:#58B828; color:#fff; border:0; border-radius:.5rem; padding:.5rem .9rem; font:inherit; font-size:.95rem; font-weight:500; margin-right:.6rem; white-space:nowrap; cursor:pointer; min-height:2.5rem; }
.pz2-btn-scan:hover { background:#4a9c22; }
.pz2-btn-scan i { font-size:1.2rem; }
.pz2-scan { position:fixed; inset:0; z-index:200; background:rgba(10,16,22,.94); display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1rem; padding:1rem; }
.pz2-scan[hidden] { display:none; }
.pz2-scan-video { position:relative; width:min(92vw, 70vh, 640px); aspect-ratio:4/3; background:#000; border-radius:.8rem; overflow:hidden; box-shadow:0 8px 30px rgba(0,0,0,.5); }
.pz2-scan-video video { width:100%; height:100%; object-fit:cover; }
.pz2-scan-mirino { position:absolute; inset:18%; border:3px solid #58B828; border-radius:.8rem; pointer-events:none; box-shadow:0 0 0 999px rgba(0,0,0,.25); }
.pz2-scan-testo { color:#fff; font-size:1.15rem; font-weight:500; text-align:center; }
.pz2-scan-manuale { display:flex; gap:.5rem; width:min(92vw, 640px); }
.pz2-scan-manuale input { flex:1; min-width:0; padding:.7rem; border-radius:.5rem; border:1px solid #666; font:inherit; font-size:1rem; }
.pz2-scan-manuale button { min-height:2.8rem; padding:0 1.1rem; }
.pz2-scan-chiudi { position:absolute; top:.6rem; right:.8rem; background:transparent; color:#fff; border:0; font-size:2.6rem; line-height:1; cursor:pointer; padding:.2rem .6rem; }
.pz2-toast { position:fixed; left:50%; bottom:1.6rem; transform:translateX(-50%); z-index:210; background:#16232D; color:#fff; padding:.7rem 1.2rem; border-radius:.6rem; font-size:1.05rem; font-weight:500; box-shadow:0 4px 18px rgba(0,0,0,.35); max-width:92vw; text-align:center; }
.pz2-toast[hidden] { display:none; }
