:root{--ink:#173b50;--paper:#eef3f5;--white:#fff;--green:#37694e;--amber:#916011;--text:#243640;--line:#c5d3d9;--muted:#526771;font-family:'Segoe UI',sans-serif;color:var(--text);background:var(--paper);font-size:16px}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit;color:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;min-height:44px;border:1px solid var(--line);border-radius:5px;background:var(--white);padding:9px 16px}@media(hover:hover){button:hover{border-color:var(--ink);background:#e1ebef}}a{color:var(--ink);text-underline-offset:4px}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid var(--green);outline-offset:3px}h1,h2,h3,.brand{font-family:Bahnschrift,'Arial Narrow',sans-serif;font-weight:600}h1{font-size:clamp(2.6rem,4.6vw,4.5rem);line-height:1.06;letter-spacing:-.045em;margin:12px 0 20px}h2{font-size:1.65rem;line-height:1.2;margin:0 0 20px}h3{font-size:1.13rem;line-height:1.35;margin:8px 0}p{line-height:1.6}main,.topbar-main,.topbar-views{max-width:1500px;margin:auto;padding-inline:48px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--ink)}.brand-text{letter-spacing:.14em;font-size:1rem;line-height:1.2}.brand-text span{display:block;font-family:'Segoe UI',sans-serif;font-weight:400;font-size:.78rem;letter-spacing:.02em;margin-top:3px;color:var(--muted)}#versione{font: .8rem Consolas,monospace;color:var(--muted)}.secondary{background:transparent;font-size:.88rem}.filters{display:flex;align-items:flex-end;gap:16px;padding:0 0 22px}.filters label{min-width:0;flex:1;font-size:.78rem;font-weight:600}.filters .search{flex:2}input,select,textarea{display:block;width:100%;background:var(--white);border:1px solid var(--line);padding:11px;border-radius:5px;min-height:44px;margin-top:7px}textarea{resize:vertical;line-height:1.5}.grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}.card{background:var(--white);border:1px solid var(--line);border-radius:7px;overflow:hidden;min-width:0}.card>button{display:block;width:100%;padding:0;text-align:left;border:0;border-radius:0;background:transparent}.card-media{display:block;overflow:hidden;background:#e4edf0}.card img{width:100%;height:190px;object-fit:contain;background:#e4edf0;display:block}.card-body{padding:18px 20px}.tagline{display:flex;justify-content:space-between;gap:12px;color:var(--muted);font-size:.73rem}.code{font-family:Consolas,monospace;color:var(--green)}.card p{font-size:.84rem;margin:8px 0 0;color:var(--muted)}.card small{display:block;font-size:.73rem;color:var(--amber);margin-top:10px}.visit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.visit-card{padding:22px}.visit-card ul{padding-left:22px;font-size:.88rem;line-height:1.6}.visit-card .card-link{margin:10px 0}.visit-card label,#note-wrap label{display:block;font-size:.9rem;font-weight:600}.draft-state{font-size:.85rem;color:var(--muted)}#empty{padding:35px;text-align:center;border:1px dashed var(--line)}footer{margin:56px 0 40px;padding:25px 0;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}footer p{margin:5px 0}.footer-links{display:flex;flex-wrap:wrap;gap:0 24px;margin-top:10px}.skip{position:absolute;top:-100px;left:10px;padding:12px;background:var(--white);z-index:5}.skip:focus{top:10px}dialog{width:min(1440px,96vw);max-height:94vh;border:0;padding:0;border-radius:8px;background:var(--white);color:var(--text)}dialog::backdrop{background:rgb(13 35 48 / .78)}.dialog-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 22px;background:var(--ink);color:var(--white)}.dialog-bar span{font: .85rem Consolas,monospace}.dialog-bar button{background:transparent;color:var(--white);border-color:#7894a3}.detail-layout{display:grid;grid-template-columns:1.5fr 1fr}.viewer{min-width:0;padding:18px 24px;background:var(--paper)}.viewer img{display:block;width:100%;max-height:62vh;object-fit:contain}.view-controls{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:12px}.view-controls span{font-size:.83rem;color:var(--muted)}.viewer p{font-size:.77rem;color:var(--muted);overflow-wrap:anywhere}.image-links{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;font-size:.76rem}.sheet{padding:30px;overflow-wrap:anywhere}.sheet p,.sheet li{font-size:.9rem}.sheet ul{padding-left:22px;line-height:1.6}.sheet h3{margin-top:24px}.sheet details{margin:24px 0}summary{cursor:pointer;font-weight:600;font-size:.9rem;min-height:32px}dl{font-size:.83rem}dt{font-weight:600;margin-top:12px}dd{margin:4px 0;color:var(--muted)}#note-wrap{margin-top:28px;border-top:1px solid var(--line);padding-top:22px}.muted{font-size:.77rem!important;color:var(--muted)}#history-control{display:block;margin-top:25px;font-size:.78rem}#detail-notice{color:var(--amber)}[hidden]{display:none!important}
.floor-tabs{display:inline-flex;flex-wrap:wrap;gap:4px;padding:4px;background:var(--white);border:1px solid var(--line);border-radius:999px}.floor-tabs button{min-height:40px;padding:8px 16px;border-color:transparent;border-radius:999px;background:transparent;font-weight:600;font-size:.9rem}.floor-tabs button[aria-pressed=true]{color:white;background:var(--green);border-color:var(--green)}.floor-tabs span{font: .78rem Consolas,monospace;opacity:.8;margin-left:6px}
#room-navigation{margin:10px 0 20px;padding:18px 20px;border:1px solid var(--line);background:var(--white);border-radius:7px}.room-layout{display:grid;grid-template-columns:minmax(240px,360px) 1fr;gap:30px;margin-top:18px;align-items:start}.room-map{position:relative;line-height:0}.room-map img{display:block;width:100%;height:auto}.room-map svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}.room-map polygon{fill:transparent;stroke:transparent;stroke-width:.22;cursor:pointer}.room-map polygon:hover,.room-map polygon:focus{fill:rgb(55 105 78 / .2);stroke:var(--green);outline:none}.room-map polygon[aria-pressed=true]{fill:rgb(55 105 78 / .28);stroke:var(--green)}#room-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:15px}#room-list button{text-align:left;font-size:.88rem}#room-list button[aria-pressed=true]{background:var(--green);color:white}#room-selection{font-size:.85rem;color:var(--green)}
@media(max-width:650px){.room-layout{grid-template-columns:1fr;gap:14px}.room-map{max-width:340px;margin:auto;width:100%}#room-list{grid-template-columns:repeat(2,minmax(0,1fr))}#room-list button{padding-inline:12px}#room-navigation{padding:14px}}
@media print{#room-navigation{display:none!important}}
@media(max-width:560px){.floor-tabs{display:flex;width:100%;border-radius:12px}.floor-tabs button{flex:1 1 0;padding:7px 6px;font-size:.84rem;border-radius:9px}.floor-tabs span{display:block;margin:2px 0 0}}
@media print{.floor-tabs{display:none!important}}
@media(min-width:1600px){.grid{grid-template-columns:repeat(4,minmax(0,1fr))}.visit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){main,.topbar-main,.topbar-views{padding-inline:24px}.grid{grid-template-columns:repeat(2,minmax(0,1fr))}.detail-layout{grid-template-columns:1fr}.viewer img{max-height:60vh}.filters{flex-wrap:wrap}.filters .search{flex-basis:100%}.sheet{padding:24px}}
@media(max-width:560px){main,.topbar-main,.topbar-views{padding-inline:18px}.filters{gap:12px}.grid{grid-template-columns:1fr}.card img{height:210px}.viewer{padding:14px}.sheet{padding:20px}.dialog-bar{padding:10px 14px}dialog{max-height:96vh}}
@media print{.topbar,.project-intro,.view-actions,.filters,#visit-help,footer,dialog,.card-link,.skip{display:none!important}main{padding:0}.grid{display:block}.visit-card{break-inside:avoid;margin-bottom:16px;border:1px solid #888}.visit-card textarea{border:0;resize:none;min-height:100px}body{background:white;font-size:12px}.card img{height:170px}}

/* Codici stabili per terminali e scatole elettriche, consultabili per piano e locale. */
.el-code-controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin:1rem 0}.el-code-controls label{font-size:.82rem;font-weight:600}.el-code-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(250px,1fr);gap:1.25rem;align-items:start}.el-code-map{display:block;width:100%;min-height:420px;border:1px solid var(--line);border-radius:6px;background:#f8fbfc}.el-code-room{fill:#e6eef1;stroke:#7893a1;stroke-width:.035}.el-code-room-label{fill:#526771;font-size:.18px;text-anchor:middle;pointer-events:none}.el-code-marker{cursor:pointer;stroke:#fff;stroke-width:.045}.el-code-marker.current{fill:#168361}.el-code-marker.historical{fill:#808c94}.el-code-marker:focus{outline:none;stroke:#f59e0b;stroke-width:.11}.el-code-label{font:700 .16px Consolas,monospace;fill:#173b50;paint-order:stroke;stroke:#fff;stroke-width:.055;stroke-linejoin:round;pointer-events:none}.el-code-row{cursor:pointer}.el-code-row:hover,.el-code-row:focus{background:#e1ebef;outline:2px solid var(--green);outline-offset:-2px}.el-code-layout .el-detail{min-height:180px;margin:0}.el-code-empty{fill:#526771;font-size:.35px}.el-code-actions{display:flex;gap:.6rem;flex-wrap:wrap}@media(max-width:760px){.el-code-controls,.el-code-layout{grid-template-columns:1fr}.el-code-map{min-height:320px}.el-code-layout .el-detail{min-height:0}}

.survey{overflow-wrap:anywhere}.survey details{padding:14px 0;border-bottom:1px solid var(--line)}.survey summary{line-height:1.6}.survey p,.survey li{max-width:85ch;font-size:.9rem;line-height:1.6}.survey label{display:block;margin-top:24px;font-size:.9rem;font-weight:600}.survey img{display:block;width:auto;max-width:100%;max-height:650px;object-fit:contain;margin:18px 0}.survey section{padding:12px 0}.survey button{margin:4px 8px 4px 0}@media(max-width:560px){.survey img{max-height:70vh}}

/* Progetti: pannelli di studio, costi e documenti, una sezione alla volta. */
.pv-project{padding:0 0 12px}
.issue-actions{display:flex;flex-wrap:wrap;gap:10px;margin:16px 0 28px}
.pv-project>p{max-width:75ch}.pv-notice{color:var(--amber)}
.pv-columns{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px;margin-top:28px}
.pv-columns>div{min-width:0}.pv-columns p{font-size:.92rem;max-width:70ch}
.pv-cost-table{border-collapse:collapse;width:100%;font-size:.92rem;font-variant-numeric:tabular-nums}
.pv-cost-table caption{text-align:left;color:var(--muted);padding:0 0 12px}
.pv-cost-table th,.pv-cost-table td{padding:13px 8px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.pv-cost-table tbody th{font-weight:400}.pv-cost-table td{font-weight:600}
.pv-document-links{padding-left:20px;line-height:1.5}.pv-document-links li{margin:12px 0}
.pv-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}
.pv-project details{line-height:1.6}.pv-project details li{margin:8px 0}
@media(max-width:760px){.pv-columns{grid-template-columns:minmax(0,1fr);gap:24px}.pv-cost-table{font-size:.84rem}.pv-cost-table th,.pv-cost-table td{padding:12px 4px}.pv-cost-table td{width:40%}}
/* Confronto termico nello stesso linguaggio visivo dei progetti della casa. */
.clima-controls {margin:1.2rem 0;max-width:32rem}
.clima-controls label {display:grid;gap:.5rem;font-weight:600}
.clima-controls select {width:100%;min-height:44px;padding:.6rem;border:1px solid #a9bdc5;border-radius:4px;background:white;color:#173b50;font:inherit}
.clima-result {font-size:1.18rem;font-weight:700;color:#173b50}
#progetto-climatizzazione .pv-cost-table th:first-child{width:45%}
#progetto-climatizzazione .pv-cost-table td:nth-child(2){width:20%}
#progetto-climatizzazione .pv-cost-table td:last-child{width:35%}
/* Mappatura elettrica: grafico numerato consultabile anche senza colore. */
.el-port-map{border:2px solid #173b50;padding:1rem;margin:1rem 0;max-width:900px;background:#eef3f5;overflow-x:auto}.el-port-canvas{position:relative;aspect-ratio:16/8.7;min-width:720px;border:1px solid #9d4d3e;background-color:#f4e9e4;background-image:linear-gradient(#b6cbd544 1px,transparent 1px),linear-gradient(90deg,#b6cbd544 1px,transparent 1px);background-size:5% 10%;box-shadow:inset 0 0 0 8px #b45f4d22}.el-port-canvas::after{content:'posizione relativa · vista frontale';position:absolute;left:1rem;bottom:.5rem;color:#54656c;font-size:.8rem}.el-port-canvas button{position:absolute;transform:translate(-50%,-50%);min-width:44px;min-height:44px;padding:0 .35rem;border-radius:50%;border:3px double #173b50;background:white;color:#173b50;font-weight:700;z-index:2}.el-port-canvas button[aria-pressed=true]{background:#173b50;color:white;outline:3px solid #91aebb;outline-offset:2px}.el-port-canvas .el-unknown{border:2px dashed #916011;color:#775014}.el-port-canvas .el-combined{min-width:54px;border-radius:45%}.el-port-cluster{position:absolute;left:0;top:7%;width:17%;height:64%;border-right:1px dashed #916011;pointer-events:none}.el-port-cluster::after{content:'19–22';position:absolute;left:8px;bottom:-1.4rem;color:#775014;font-size:.78rem}.el-detail{border:1px solid var(--line);border-radius:6px;padding:.3rem 1rem;background:#eef3f5;margin-bottom:1rem}.el-controls{display:flex;flex-wrap:wrap;gap:1rem}.el-controls label{display:grid;gap:.3rem;flex:1 1 220px}.el-controls select,#el-source-select{max-width:100%;min-height:44px}.el-cables{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:1rem}.el-cables article{border-top:1px solid #abc0ca;padding:.6rem 0}.el-section-value{font-weight:700}.el-source-link{padding:.45rem .6rem;margin:.15rem;border:1px solid #a3b6c0;background:white;color:#173b50;min-height:44px}.el-table-wrap{overflow-x:auto;max-width:100%}#el-source-view img{max-width:100%;max-height:650px;object-fit:contain}#progetto-elettrico h4{margin:.8rem 0 .4rem}#el-relocation{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,240px),1fr));gap:1.5rem}#progetto-elettrico details{margin:1rem 0}#progetto-elettrico p,#progetto-elettrico td{overflow-wrap:anywhere}@media(max-width:560px){.el-port-map{padding:.55rem}.el-port-canvas button{font-size:.82rem}}

/* Galleria, 8 novembre 2026: provenienza leggibile, gruppi per argomento, scorrimento fra le immagini. */
.grid-group{grid-column:1/-1;display:flex;align-items:baseline;gap:12px;margin:22px 0 -6px;padding-bottom:8px;border-bottom:1px solid var(--line);font-size:1.05rem;color:var(--ink)}
.grid-group:first-child{margin-top:4px}
.grid-group small{font:400 .78rem 'Segoe UI',sans-serif;color:var(--muted)}
.chip{display:inline-block;margin-top:10px;padding:3px 10px;border-radius:999px;background:#e7eef1;color:var(--muted);font:600 .72rem Consolas,monospace}
.chip.fresh{background:#e1efe6;color:var(--green)}
.card{transition:border-color .2s,box-shadow .2s,transform .2s}
.card:focus-within{border-color:#9db4bf;box-shadow:0 10px 24px rgb(23 59 80 / .12);transform:translateY(-2px)}@media(hover:hover){.card:hover{border-color:#9db4bf;box-shadow:0 10px 24px rgb(23 59 80 / .12);transform:translateY(-2px)}}
.card img{transition:transform .4s var(--ease)}
@media(hover:hover){.card:hover img{transform:scale(1.025);transition-duration:.6s}}
.card img.cover{object-fit:cover}
.card h3{overflow-wrap:anywhere}
.filters #order-filter{flex:.8}
.viewer img{max-height:70vh}
#view-count{font-variant-numeric:tabular-nums}
@media (prefers-reduced-motion:reduce){.card,.card img{transition:none}.card:hover,.card:focus-within,.card:hover img{transform:none}}
@media print{.grid-group,.chip{display:none!important}}
/* Stato del salvataggio delle note accanto al campo: verde quando è nel progetto, ambra quando resta solo nel browser. */
#note-status{font-size:.85rem;color:var(--muted);margin:8px 0 0}#note-status[data-note-state=saved],.draft-state[data-note-state=saved]{color:var(--green)}#note-status:is([data-note-state=error],[data-note-state=conflict],[data-note-state=local]),.draft-state:is([data-note-state=error],[data-note-state=conflict],[data-note-state=local]){color:var(--amber);font-weight:600}.note-actions{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 4px}
/* Impaginazione, 9 novembre 2026: i progetti sono schede in testata e dentro ogni progetto si vede una sezione alla volta. Testata fissa sopra i 760 px; sul telefono scorre con la pagina. */
:root{--ease:cubic-bezier(.2,.8,.2,1)}
.topbar{position:relative;z-index:30;background:var(--white);border-bottom:1px solid var(--line)}
@media(min-width:761px){.topbar{position:sticky;top:0}.workspace,.workspace [id]{scroll-margin-top:calc(var(--topbar-h,0px) + 16px)}}
.topbar-main{display:flex;align-items:stretch;gap:8px 28px;min-height:68px}
.masthead-title{display:flex;align-items:center;flex:none;margin:0;font-size:1rem;line-height:1.2;letter-spacing:0}
.brand-mark{flex:none;width:30px;height:30px}.brand-mark rect{fill:var(--ink)}.brand-mark path{fill:none;stroke:#fff;stroke-width:2.4;stroke-linejoin:round}
.project-tabs{display:flex;gap:2px;min-width:0}
.project-tabs a{display:flex;align-items:center;padding:3px 14px 0;border-bottom:3px solid transparent;color:var(--text);font-weight:600;font-size:.94rem;text-decoration:none;white-space:nowrap;transition:color 150ms var(--ease),border-color 150ms var(--ease)}
@media(hover:hover){.project-tabs a:hover{color:var(--ink);border-bottom-color:var(--line)}}
.project-tabs a[aria-current=page]{color:var(--ink);border-bottom-color:var(--green)}
.project-tabs a:focus-visible{outline-offset:-3px}
.topbar-actions{display:flex;align-items:center;flex:none;gap:22px;margin-left:auto}
.masthead-links{display:flex;gap:0 24px;font-size:.85rem}
.topbar-views{display:flex;align-items:center;gap:4px 24px;min-height:58px;border-top:1px solid var(--line)}
.view-tabs{display:flex;flex-wrap:wrap;gap:4px;padding-block:7px}
.view-tabs button{padding:9px 16px;border-color:transparent;border-radius:999px;background:transparent;font-weight:600;font-size:.9rem}
@media(hover:hover){.view-tabs button:hover{border-color:transparent;background:var(--paper)}}
.view-tabs button[aria-pressed=true]{border-color:var(--ink);background:var(--ink);color:var(--white)}
.view-tabs .count{margin-left:5px;font:.78rem Consolas,monospace;opacity:.75}
.topbar-views #versione{margin-left:auto;white-space:nowrap}
#open-3d{font-weight:600}@media(hover:hover){#open-3d:hover{background:#2e5a43;border-color:#2e5a43}}
/* Riga del progetto: descrizione e stato della connessione, con un punto colorato al posto di un testo verde. */
.project-intro{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:6px 32px;padding:20px 0 22px}
#project-description{margin:0;max-width:70ch;font-size:.95rem;color:var(--muted)}
#live-status{display:flex;align-items:baseline;gap:8px;max-width:62ch;margin:0;font-size:.82rem;line-height:1.45;color:var(--muted)}
#live-status::before{content:'';flex:none;width:8px;height:8px;border-radius:50%;background:#9fb2bb;transform:translateY(-1px)}
#live-status[data-state=ok]{color:var(--green)}#live-status[data-state=ok]::before{background:var(--green)}
#live-status[data-state=warn]{color:#7a510e}#live-status[data-state=warn]::before{background:var(--amber)}
/* Testa di ogni sezione: titolo e riga di contesto a sinistra, comandi della sezione a destra. */
.workspace{padding-bottom:8px}
.view-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px 28px;margin-bottom:22px}
.view-head h2{margin:0;font-size:1.6rem}
.view-head p{max-width:75ch;margin:6px 0 0;font-size:.92rem;color:var(--muted)}
.view-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px}
/* Verifiche aperte: zone a sinistra (ferme mentre l'elenco scorre), elenco intero senza riquadro a scorrimento. */
.explore-box{padding:20px 24px 24px;background:var(--white);border:1px solid var(--line);border-radius:7px}
.explore-layout{display:grid;grid-template-columns:minmax(190px,230px) minmax(0,1fr);gap:28px;align-items:start}.explore-layout.no-zones{grid-template-columns:minmax(0,1fr)}.explore-layout.no-zones .explore-zones{display:none}
.explore-zones{position:sticky;top:calc(var(--topbar-h,0px) + 16px);display:flex;flex-direction:column;gap:4px}
.explore-zones button{display:flex;justify-content:space-between;align-items:center;gap:12px;text-align:left;border-color:transparent;background:transparent;font-weight:600}
.explore-zones button[aria-pressed=true]{background:var(--green);border-color:var(--green);color:var(--white)}
.explore-zones span{font:.8rem Consolas,monospace;opacity:.8}
.explore-count{margin:0 0 8px;font-size:.85rem;color:var(--muted)}
.explore-list{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}.explore-list li{border-bottom:1px solid var(--line)}
.explore-row{display:grid;grid-template-columns:5.2rem minmax(0,1fr) auto;align-items:baseline;gap:16px;width:100%;padding:11px 10px;text-align:left;border:0;border-radius:0;background:transparent}
@media(hover:hover){.explore-row:hover{background:var(--paper)}}.explore-row:focus-visible{outline-offset:-3px}
.explore-row .code{font-size:.82rem}.explore-title{font-size:.95rem;line-height:1.4}.explore-zone{font-size:.78rem;color:var(--muted);text-align:right;white-space:nowrap}
/* Appunti: importazione come pulsante, con il campo file invisibile sopra. */
.import-label{position:relative;display:inline-flex;align-items:center;min-height:44px;padding:9px 16px;border:1px solid var(--line);border-radius:5px;font-size:.88rem;cursor:pointer;transition:background-color 150ms var(--ease),border-color 150ms var(--ease)}.import-label:hover{border-color:var(--ink);background:#e1ebef}.import-label input{position:absolute;inset:0;width:100%;height:100%;min-height:0;margin:0;padding:0;opacity:0;cursor:pointer}.import-label:has(input:focus-visible){outline:3px solid var(--green);outline-offset:3px}
/* Collegamenti di navigazione: a riposo senza sottolineatura, al passaggio la linea si disegna da sinistra. */
.masthead-links a,.footer-links a,.text-link{position:relative;display:inline-flex;align-items:center;min-height:44px;color:var(--ink);text-decoration:none}
.masthead-links a::after,.footer-links a::after,.text-link::after{content:'';position:absolute;left:0;right:0;bottom:10px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform 120ms var(--ease)}
@media(hover:hover){.masthead-links a:hover::after,.footer-links a:hover::after,.text-link:hover::after{transform:scaleX(1);transform-origin:left;transition-duration:150ms}}
.text-link{font-size:.9rem;font-weight:600}
.link-button{min-height:0;padding:0;border:0;background:none;color:var(--ink);font:inherit;font-weight:600;text-decoration:underline;text-underline-offset:4px;vertical-align:baseline}
@media(hover:hover){.link-button:hover{background:none;text-decoration-thickness:2px}}
/* Pulsanti: al passaggio salgono di 1 px, alla pressione scendono e si stringono appena. Esclusi schede, righe, comandi del 3D e numeri posizionati della scatola. */
button{transition:background-color 150ms var(--ease),border-color 150ms var(--ease),color 150ms var(--ease),transform 120ms var(--ease)}
@media(hover:hover){button:not(:disabled,.explore-row,.lighting-image,.link-button,.card>button,.view-tabs button,.floor-tabs button,.explore-zones button,.walk-touch button,.el-port-canvas button):hover{transform:translateY(-1px)}}
button:not(:disabled,.explore-row,.lighting-image,.link-button,.card>button,.walk-touch button,.el-port-canvas button):active{transform:translateY(1px) scale(.985);transition-duration:90ms}
@media(prefers-reduced-motion:reduce){button,.project-tabs a,.import-label{transition:none}button:not(.walk-touch button,.el-port-canvas button):is(:hover,:active){transform:none}.masthead-links a::after,.footer-links a::after,.text-link::after{transition:none}}
/* Telefono: testata che scorre, schede dei progetti in una riga scorrevole, sezioni su più righe. */
.topbar .short{display:none}
@media(max-width:1180px){.topbar .long{display:none}.topbar .short{display:inline}.masthead-links{display:none}.project-tabs a{padding-inline:12px}.topbar-main{gap:8px 20px}}
@media(max-width:960px) and (min-width:761px){.topbar-main{flex-wrap:wrap;align-items:center;padding-top:10px}.project-tabs{order:3;flex:1 0 100%;margin-top:2px}.project-tabs a{min-height:46px}.project-tabs a:first-child{padding-left:0}}
@media(max-width:760px){
 .topbar-main{flex-wrap:wrap;align-items:center;gap:8px 16px;min-height:0;padding-top:12px}
 .project-tabs{order:3;flex:1 0 100%;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 32px),transparent)}
 .project-tabs::-webkit-scrollbar{display:none}
 .project-tabs a{min-height:46px;padding:3px 12px 0}.project-tabs a:first-child{padding-left:0}.project-tabs a:last-child{margin-right:28px}
  .topbar-views{flex-wrap:wrap;gap:0 12px;min-height:0;padding-block:6px 8px}
 .view-tabs{padding-block:2px}.view-tabs button{padding:8px 13px;font-size:.86rem}
 .topbar-views #versione{font-size:.76rem}
 .project-intro{padding:16px 0 18px}
 .view-head{margin-bottom:16px}.view-head h2{font-size:1.4rem}
 .view-actions{width:100%}.view-actions>*{flex:1 1 auto;justify-content:center}
 .explore-box{padding:16px}
 .explore-layout{grid-template-columns:minmax(0,1fr);gap:12px}
 .explore-zones{position:static;flex-direction:row;flex-wrap:wrap;gap:6px}.explore-zones button{flex:1 1 calc(50% - 3px);border-color:var(--line)}
 .explore-row{grid-template-columns:auto minmax(0,1fr);gap:4px 12px;padding:12px 4px}.explore-row .code{grid-area:1/1}.explore-zone{grid-area:1/2}.explore-title{grid-area:2/1/3/3}
}
@media print{#esplora,.view-tabs{display:none!important}}
/* Adattamento, 8 novembre 2026: telefono e touch. Hover solo dove esiste, bersagli da 44 px, scheda a tutto schermo con Chiudi sempre visibile. */
.dialog-bar{position:sticky;top:0;z-index:2}
@media(max-width:900px){main,.topbar-main,.topbar-views{padding-left:max(24px,env(safe-area-inset-left));padding-right:max(24px,env(safe-area-inset-right))}}
@media(max-width:560px){main,.topbar-main,.topbar-views{padding-left:max(18px,env(safe-area-inset-left));padding-right:max(18px,env(safe-area-inset-right))}
 dialog{width:100%;max-width:100%;height:100dvh;max-height:100dvh;margin:0;border-radius:0}.dialog-bar{padding-top:max(10px,env(safe-area-inset-top))}.sheet{padding-bottom:max(28px,env(safe-area-inset-bottom))}
 .filters label{flex:1 1 100%}.filters #order-filter,.filters #level-filter{flex:1 1 55%}.filters>button{flex:1 1 35%}}
@media(pointer:coarse){summary{min-height:44px;padding-block:10px}.brand{padding-block:4px}.pv-document-links li{margin:0}.pv-document-links a,.image-links a,#survey-document,#survey-closed-links a,#computo-document,#computo-request,#computo-quantities-link,#professional-analysis-link,footer a{display:inline-block;padding-block:12px}}
/* Chiarezza, 8 novembre 2026: lo stato della verifica scritto sulla card, i conflitti in evidenza e per primi. */
.flags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}.flags:not(:has(>:not([hidden]))){display:none}
.flag{display:inline-block;padding:2px 9px;border:1px solid var(--line);border-radius:999px;background:var(--white);color:var(--ink);font-size:.74rem;font-weight:600;line-height:1.5}
.flag.conflict{border-color:#e2c48f;background:#fbf3e4;color:#7a510e}.flag.noted{border-color:#b9d5c4;background:#e1efe6;color:var(--green)}
.explore-title .flags{display:inline-flex;margin:0 0 0 8px;vertical-align:1px}.explore-title .flags:not(:has(>:not([hidden]))){display:none}
dd.value-conflict{color:#7a510e;font-weight:600}
/* Rifinitura, 8 novembre 2026: superfici del browser nei colori del quaderno, stati disabilitati leggibili. */
:root{accent-color:var(--green)}::selection{background:#cfe1d6;color:var(--ink)}
button:disabled{opacity:.5;cursor:not-allowed;pointer-events:none}
.tagline .area{color:var(--green);font-weight:600}
.pv-source{margin:-12px 0 18px;font-size:.85rem;color:var(--muted)}
