/* NCE Acuvia web - brand NCE v2.0: piani piatti, niente ombre ne' gradienti. Orange solo accento/CTA (testo scuro sopra: contrasto AA). */
@font-face { font-family: "Archivo"; src: url("../assets/fonts/Archivo-Variable.ttf") format("truetype"); font-weight: 100 900; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../assets/fonts/IBMPlexSans-Variable.ttf") format("truetype"); font-weight: 100 700; font-display: swap; }
@font-face { font-family: "IBM Plex Sans"; src: url("../assets/fonts/IBMPlexSans-Italic-Variable.ttf") format("truetype"); font-weight: 100 700; font-style: italic; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../assets/fonts/IBMPlexMono-Regular.ttf") format("truetype"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("../assets/fonts/IBMPlexMono-Medium.ttf") format("truetype"); font-weight: 500; font-display: swap; }

:root {
  --orange: #ff7f00; --blue-dark: #004c7e; --blue-mid: #1e6899; --paper: #fafaf8; --ink: #0a1628;
  --bg: var(--paper); --surface: #ffffff; --text: var(--blue-dark); --text2: #1a5f8e; --border: rgba(0,76,126,.28); --border-soft: rgba(0,76,126,.12);
  --accent: var(--orange); --on-accent: var(--ink); --selection: rgba(30,104,153,.14); --danger: #b3261e; --focus: #004c7e; --ok: #1b6e3c;
  --sera: #fff2cc; --notte: #dce6f2;
  --c-laeq: #1f4e79; --c-barre: #7aa6d6; --c-bordo: #333333; --c-sopra: #d62728; --c-soglia: #b00000; --c-l95: #555555; --c-altro: #7f7f7f; --c-griglia: rgba(0,0,0,.25);
  --font-display: "Archivo", "Helvetica Neue", sans-serif; --font-body: "IBM Plex Sans", "Helvetica Neue", sans-serif;
  --font-mono: "IBM Plex Mono", "SF Mono", Menlo, monospace;
  --larg-laterale: 400px;
  color-scheme: light;
}
:root[data-theme="scuro"] {
  --bg: var(--ink); --surface: #101f36; --text: #f2f6fa; --text2: #9ec3dd; --border: rgba(255,255,255,.30); --border-soft: rgba(255,255,255,.12);
  --selection: rgba(30,104,153,.5); --danger: #ff8a80; --focus: #ff7f00; --ok: #7bd99a; color-scheme: dark;
  --c-laeq: #8fb8e0; --c-bordo: #cccccc; --c-l95: #bbbbbb; --c-altro: #9a9a9a; --c-griglia: rgba(255,255,255,.22); --sera: #3a3418; --notte: #1b2c46;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="chiaro"]) {
    --bg: var(--ink); --surface: #101f36; --text: #f2f6fa; --text2: #9ec3dd; --border: rgba(255,255,255,.30); --border-soft: rgba(255,255,255,.12);
    --selection: rgba(30,104,153,.5); --danger: #ff8a80; --focus: #ff7f00; --ok: #7bd99a; color-scheme: dark;
    --c-laeq: #8fb8e0; --c-bordo: #cccccc; --c-l95: #bbbbbb; --c-altro: #9a9a9a; --c-griglia: rgba(255,255,255,.22); --sera: #3a3418; --notte: #1b2c46;
  }
}
* { box-sizing: border-box; }
html { font-size: 16px; }
body { margin: 0; background: var(--bg); color: var(--text); font-family: var(--font-body); font-size: 1rem; line-height: 1.45; min-width: 320px; overflow-x: hidden;
  display: flex; flex-direction: column; height: 100vh; height: 100dvh; }
h1, h2, h3 { font-family: var(--font-display); letter-spacing: -.015em; line-height: 1.2; margin: 0 0 .5rem; }
h2 { font-size: 1.15rem; font-weight: 700; } h3 { font-size: 1rem; font-weight: 700; }
p { margin: .25rem 0 .75rem; }
a { color: var(--text2); }
:focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; }
.salta { position: absolute; left: -999px; top: 0; background: var(--surface); padding: .5rem 1rem; z-index: 100; }
.salta:focus { left: .5rem; top: .5rem; }
[hidden] { display: none !important; }
.solo-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }

/* testata */
.testata { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-wrap: wrap; padding: .5rem .75rem; background: var(--surface); border-bottom: 1px solid var(--border); }
.logo { display: flex; align-items: center; gap: .6rem; text-decoration: none; color: var(--text); }
.logo-scuro { display: none; }
:root[data-theme="scuro"] .logo-chiaro { display: none; } :root[data-theme="scuro"] .logo-scuro { display: inline; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="chiaro"]) .logo-chiaro { display: none; } :root:not([data-theme="chiaro"]) .logo-scuro { display: inline; } }
.nome-app { font-family: var(--font-display); font-weight: 800; font-size: 1.25rem; letter-spacing: -.03em; }
.testata-comandi { display: flex; align-items: center; gap: .5rem; flex-wrap: wrap; }
.campo-inline { display: inline-flex; align-items: center; gap: .4rem; font-size: .875rem; }
.pillola { font-family: var(--font-mono); font-size: .75rem; border: 1px solid var(--border); padding: .2rem .5rem; border-radius: 2px; }
.pillola.ok::before { content: "● "; color: var(--ok); } .pillola.ko::before { content: "▲ "; color: var(--danger); }
.badge { background: var(--accent); color: var(--on-accent); font-family: var(--font-mono); font-size: .75rem; padding: 0 .35rem; border-radius: 2px; }

/* controlli */
button, select, input, textarea { font: inherit; color: var(--text); }
.btn { background: var(--surface); border: 1px solid var(--border); border-radius: 2px; padding: .4rem .75rem; min-height: 2.25rem; cursor: pointer; }
.btn:hover:not(:disabled) { border-color: var(--text2); background: var(--selection); }
.btn:disabled, button:disabled { opacity: 1; color: var(--text2); border-style: dashed; cursor: not-allowed; background: transparent; }
.btn.cta { background: var(--accent); color: var(--on-accent); border-color: var(--accent); font-weight: 500; }
.btn.cta:hover:not(:disabled) { filter: brightness(.95); background: var(--accent); }
.btn.cta:disabled { background: transparent; border: 1px dashed var(--border); color: var(--text2); }
.btn.piccolo { padding: .15rem .5rem; min-height: 1.75rem; font-size: .875rem; }
.btn[aria-pressed="true"] { background: var(--selection); border-color: var(--text2); font-weight: 500; }
select, input[type=text], input[type=number], input[type=date], input[type=search], textarea { background: var(--surface); border: 1px solid var(--border); border-radius: 2px; padding: .35rem .5rem; min-height: 2.25rem; max-width: 100%; }
textarea { width: 100%; font-family: var(--font-mono); font-size: .875rem; }
input[type=checkbox], input[type=radio] { width: 1.1rem; height: 1.1rem; accent-color: var(--blue-mid); }
label { cursor: pointer; }

/* struttura */
.corpo { display: grid; grid-template-columns: var(--larg-laterale) 6px minmax(0, 1fr); flex: 1; min-height: 0; }
.laterale { overflow: auto; border-right: 1px solid var(--border); background: var(--bg); min-width: 0; }
.maniglia { background: var(--border-soft); cursor: col-resize; touch-action: none; }
.maniglia:hover, .maniglia:focus-visible { background: var(--blue-mid); }
#main { overflow: auto; min-width: 0; padding: .75rem 1rem 3rem; outline: none; }
.barra-stato { border-top: 1px solid var(--border); background: var(--surface); font-family: var(--font-mono); font-size: .75rem; padding: .2rem .75rem; min-height: 1.5rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 900px) {
  body { height: auto; min-height: 100vh; overflow-y: auto; }
  .corpo { display: block; } .maniglia { display: none; }
  .laterale { border-right: 0; border-bottom: 1px solid var(--border); max-height: none; overflow: visible; }
  #main { padding: .5rem .75rem 3rem; overflow: visible; }
}

/* pannelli riducibili */
.pannello { border-bottom: 1px solid var(--border-soft); }
.pannello > h2.pannello-titolo { margin: 0; font-size: .95rem; }
.pannello-titolo button { width: 100%; text-align: left; background: var(--surface); border: 0; border-bottom: 1px solid var(--border-soft); padding: .55rem .75rem; display: flex; gap: .5rem; align-items: center;
  font-family: var(--font-display); font-weight: 700; cursor: pointer; min-height: 2.5rem; }
.pannello-titolo button:hover { background: var(--selection); }
.pannello-titolo .freccia { display: inline-block; transition: transform .12s; font-family: var(--font-mono); }
.pannello.chiuso .freccia { transform: rotate(-90deg); }
.pannello-corpo { padding: .5rem .75rem; }
.pannello.chiuso > .pannello-corpo { display: none; }
@media (prefers-reduced-motion: reduce) { * { transition: none !important; animation: none !important; scroll-behavior: auto !important; } }
.suggerimento { font-size: .8rem; color: var(--text2); }
.motivo { color: var(--danger); font-size: .9rem; }
.indicativo { font-family: var(--font-mono); font-size: .75rem; border: 1px solid var(--text2); padding: 0 .35rem; border-radius: 2px; color: var(--text2); }

/* schede (tab) */
.schede { display: flex; gap: .25rem; flex-wrap: wrap; border-bottom: 1px solid var(--border); margin: 0 0 .75rem; padding: 0; }
.schede [role=tab] { background: transparent; border: 1px solid transparent; border-bottom: 0; padding: .45rem .8rem; cursor: pointer; font-family: var(--font-display); font-weight: 600; border-radius: 2px 2px 0 0; min-height: 2.5rem; }
.schede [role=tab]:hover { background: var(--selection); }
.schede [role=tab][aria-selected=true] { background: var(--surface); border-color: var(--border); border-bottom: 3px solid var(--accent); margin-bottom: -1px; }
.schede.secondarie [role=tab] { font-family: var(--font-body); font-weight: 500; font-size: .9rem; min-height: 2.1rem; }
.scheda-pannello { min-width: 0; }

/* albero */
.albero, .albero ul { list-style: none; margin: 0; padding: 0; }
.albero ul { margin-left: 1rem; border-left: 1px solid var(--border-soft); }
.albero li { margin: 0; }
.nodo { display: flex; align-items: center; gap: .35rem; padding: .2rem .35rem; cursor: pointer; border-radius: 2px; min-height: 1.9rem; }
.nodo:hover { background: var(--selection); }
.nodo[aria-selected=true] { background: var(--selection); outline: 2px solid var(--text2); outline-offset: -2px; font-weight: 500; }
.nodo .tw { width: 1rem; text-align: center; font-family: var(--font-mono); flex: none; }
.nodo .nome { flex: 1; min-width: 0; overflow-wrap: anywhere; }
.nodo .col { font-family: var(--font-mono); font-size: .7rem; color: var(--text2); flex: none; min-width: 1.7rem; text-align: center; }
.nodo { gap: .2rem; }
.nodo.tipo-progetto, .nodo.tipo-zona { font-family: var(--font-display); font-weight: 700; }
.albero-testa { display: flex; justify-content: flex-end; gap: .75rem; font-family: var(--font-mono); font-size: .68rem; color: var(--text2); padding: 0 .35rem .25rem; }
.albero-testa span { min-width: 1.7rem; text-align: center; }
.riga-comandi { display: flex; gap: .4rem; flex-wrap: wrap; align-items: center; margin: .35rem 0; }

/* moduli */
.modulo { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: .6rem 1rem; align-items: end; }
.modulo .campo { display: flex; flex-direction: column; gap: .2rem; font-size: .9rem; min-width: 0; }
.modulo .campo.largo { grid-column: 1 / -1; }
.gruppo .campo.spunta { display: flex; flex-direction: row; align-items: center; gap: .5rem; margin: .2rem 0; }
.modulo .campo.spunta { flex-direction: row; align-items: center; gap: .5rem; align-self: center; }
.gruppo { border: 1px solid var(--border-soft); padding: .5rem .75rem; margin: .5rem 0; border-radius: 2px; }
.gruppo legend { font-family: var(--font-display); font-weight: 700; font-size: .9rem; padding: 0 .35rem; }

/* tabelle */
.tab-scroll { overflow: auto; max-width: 100%; max-height: 60vh; border: 1px solid var(--border); background: var(--surface); }
table.dati { border-collapse: collapse; width: max-content; min-width: 100%; font-size: .85rem; }
table.dati caption { text-align: left; padding: .25rem .5rem; font-size: .8rem; color: var(--text2); caption-side: top; }
table.dati th { position: sticky; top: 0; background: var(--bg); text-align: left; font-family: var(--font-mono); font-size: .72rem; font-weight: 500; padding: .35rem .5rem; border-bottom: 1px solid var(--border); white-space: nowrap; z-index: 1; }
table.dati th button { background: none; border: 0; font: inherit; color: inherit; cursor: pointer; padding: 0; }
table.dati td { padding: .3rem .5rem; border-bottom: 1px solid var(--border-soft); vertical-align: top; }
table.dati td.num { text-align: right; font-family: var(--font-mono); white-space: nowrap; }
table.dati td .suggerimento { max-width: 38ch; }
table.dati td.azioni { position: sticky; right: 0; background: var(--surface); border-left: 1px solid var(--border-soft); white-space: nowrap; }
table.dati:has(td.azioni) th:last-child { position: sticky; right: 0; top: 0; z-index: 2; border-left: 1px solid var(--border-soft); }
table.dati td code.calcolo { display: inline-block; max-width: 44ch; white-space: normal; overflow-wrap: anywhere; }
table.dati tbody tr:nth-child(even) { background: var(--bg); }
table.dati tbody tr[aria-selected=true] { background: var(--selection); }
table.dati tbody tr.spenta { color: var(--text2); }
table.dati tbody tr:hover { background: var(--selection); }
.menu-ctx { position: fixed; z-index: 60; background: var(--surface); border: 1px solid var(--border); min-width: 220px; padding: .25rem 0; }
.menu-ctx button { display: block; width: 100%; text-align: left; background: none; border: 0; padding: .45rem .9rem; cursor: pointer; }
.menu-ctx button:hover, .menu-ctx button:focus-visible { background: var(--selection); }
.menu-ctx button[disabled] { color: var(--text2); cursor: not-allowed; }

/* progresso */
.avanzamento { display: flex; align-items: center; gap: .6rem; min-width: 220px; flex: 1; }
.avanzamento progress { flex: 0 1 220px; height: .75rem; accent-color: var(--blue-mid); }
.avanzamento .testo { font-family: var(--font-mono); font-size: .78rem; color: var(--text2); overflow-wrap: anywhere; }
pre.uscita { font-family: var(--font-mono); font-size: .8rem; background: var(--surface); border: 1px solid var(--border); padding: .5rem; margin: 0; max-height: 50vh; overflow: auto; white-space: pre-wrap; overflow-wrap: anywhere; }

/* visualizzatore immagini */
.visore { border: 1px solid var(--border); background: var(--surface); }
.visore-barra { display: flex; gap: .35rem; flex-wrap: wrap; padding: .35rem; border-bottom: 1px solid var(--border-soft); align-items: center; }
.visore-area { overflow: auto; max-height: 70vh; position: relative; touch-action: pan-x pan-y; background: #fff; }
.visore-area img { display: block; max-width: none; transform-origin: 0 0; image-rendering: auto; user-select: none; -webkit-user-drag: none; }
.visore-area.sposta { cursor: grab; } .visore-area.riquadro { cursor: crosshair; }
.rett-sel { position: absolute; border: 2px dashed var(--orange); background: rgba(255,127,0,.12); pointer-events: none; }

/* grafici */
.grafico { border: 1px solid var(--border); background: var(--surface); position: relative; }
.grafico canvas { display: block; width: 100%; touch-action: none; }
.tab-html { background: #fff; color: #0A1628; padding: .25rem; } .tab-html table { font-size: .85rem; }
.grafico.strisce { border-top: 0; } .grafico.strisce canvas { touch-action: pan-y; }
.grafico[hidden], .legenda[hidden] { display: none; }
.grafico-barra { display: flex; gap: .35rem; flex-wrap: wrap; padding: .35rem; align-items: center; border-bottom: 1px solid var(--border-soft); }
.grafico-info { font-family: var(--font-mono); font-size: .75rem; color: var(--text2); padding: .25rem .5rem; }
.legenda { display: flex; gap: 1rem; flex-wrap: wrap; font-size: .8rem; padding: .25rem .5rem; }
.legenda i { display: inline-block; width: 1.4rem; height: .5rem; margin-right: .35rem; vertical-align: middle; border: 1px solid var(--c-bordo); }
.legenda i.tratto { height: 0; border-width: 0 0 3px 0; } .legenda i.tratteggio { height: 0; border-width: 0 0 2px 0; border-style: dashed; }

/* dialog e avvisi */
dialog { border: 1px solid var(--border); background: var(--surface); color: var(--text); max-width: min(560px, 94vw); padding: 1rem; border-radius: 2px; }
dialog::backdrop { background: rgba(10,22,40,.55); }
.dlg-testo { white-space: pre-wrap; margin: .5rem 0 1rem; overflow-wrap: anywhere; }
.dlg-azioni { display: flex; flex-direction: row-reverse; gap: .5rem; justify-content: flex-end; padding: 0; margin: 0; }
.avvisi { position: fixed; right: .75rem; bottom: 2.25rem; display: flex; flex-direction: column; gap: .4rem; z-index: 70; max-width: min(460px, 92vw); }
.avviso { background: var(--surface); border: 1px solid var(--border); border-left: 6px solid var(--text2); padding: .5rem .75rem; overflow-wrap: anywhere; }
.avviso.errore { border-left-color: var(--danger); } .avviso.ok { border-left-color: var(--ok); }
.intestazione-misura { margin-bottom: .5rem; } .intestazione-misura strong { font-family: var(--font-display); font-size: 1.1rem; display: block; }
.intestazione-misura span { font-family: var(--font-mono); font-size: .78rem; color: var(--text2); }
.colonne2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 1rem; }
.kv { display: grid; grid-template-columns: max-content 1fr; gap: .15rem .75rem; font-size: .9rem; margin: .25rem 0; }
.kv dt { color: var(--text2); } .kv dd { margin: 0; overflow-wrap: anywhere; }
.lista-file { margin: .25rem 0; padding-left: 1.1rem; font-size: .85rem; }
.testata-comandi { max-width: 100%; } .campo-inline { max-width: 100%; min-width: 0; } .campo-inline select { min-width: 0; max-width: 60vw; text-overflow: ellipsis; }
@media (max-width: 600px) { .testata { padding: .4rem .5rem; } .testata-comandi { width: 100%; } .campo-inline { flex: 1 1 100%; } .campo-inline select { max-width: none; flex: 1; } .grafico-barra .btn, .riga-comandi .btn { flex: 1 1 auto; } }

.nodo.disabilitata .nome { color: var(--text2); font-style: italic; text-decoration: line-through; text-decoration-color: var(--border); }
.nodo.disabilitata { opacity: .95; }
.uscita-compatta { min-height: 1.75rem; padding: .15rem .35rem; font-size: .875rem; max-width: 14rem; }
.testo-fisso { display: inline-block; width: 64ch; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; vertical-align: middle; }
#main input[type=range] { width: 7rem; vertical-align: middle; min-height: 1.5rem; }
.impronta { font-family: var(--font-mono); font-size: .85rem; overflow-wrap: anywhere; word-break: break-all; }
.anteprima-chiave { display: grid; grid-template-columns: max-content 1fr; gap: .2rem .8rem; margin: .5rem 0; } .anteprima-chiave dt { font-weight: 500; } .anteprima-chiave dd { margin: 0; overflow-wrap: anywhere; }
tr.disattiva td { color: var(--text2); text-decoration: line-through; text-decoration-color: var(--border); }
.badge:not(.ok) { background: transparent; color: var(--text2); border: 1px solid var(--border); }
/* Calcolo con un profilo: variabili cambiate evidenziate (bordo e testo, non solo colore) */
tr.cambiata td { background: var(--surface2, var(--surface)); }
tr.cambiata td:first-child { border-left: 3px solid var(--accent); }
tr.cambiata .pf-stato { font-weight: 700; }
.pf-err:empty { display: none; }
pre.esito { white-space: pre-wrap; overflow: auto; max-width: 100%; font-family: var(--font-mono); font-size: .85rem; border: 1px solid var(--border); padding: .5rem; background: var(--surface); }
/* Sorgenti e filtri: striscia dei tempi (SVG responsive) e passi evidenziati (bordo e testo, non solo colore) */
.striscia-wrap { max-width: 100%; overflow-x: auto; border: 1px solid var(--border); background: var(--surface); color: var(--text); }
.striscia { min-width: 520px; display: block; height: auto; }
.legenda-striscia { list-style: none; padding: 0; margin: .4rem 0; font-size: .875rem; display: grid; gap: .15rem; }
.legenda-striscia .chip { display: inline-block; width: 1.1rem; height: .7rem; vertical-align: middle; }
tr.evid td { background: var(--selection); }
tr.evid td:first-child { border-left: 3px solid var(--accent); }
tr.evid .evid-stato { font-weight: 700; }
tr.grandezza { cursor: pointer; }
.elenco-file { list-style: none; margin: 0; padding: 0; font-size: .85rem; }

/* Calcolo con un profilo: sezioni a fisarmonica, preset e piani */
details.sezione { border: 1px solid var(--border); border-radius: 2px; margin: .75rem 0; background: var(--surface); }
details.sezione > summary { cursor: pointer; padding: .55rem .75rem; font-family: var(--font-title, inherit); font-weight: 700; min-height: 2.25rem; }
details.sezione[open] > summary { border-bottom: 1px solid var(--border-soft); }
details.sezione > :not(summary) { margin-left: .75rem; margin-right: .75rem; }
details.sezione > :last-child { margin-bottom: .75rem; }
td.azioni .btn { margin: .1rem .3rem .1rem 0; }
.pannello-edit { border: 1px solid var(--border); padding: .6rem .75rem; margin: .6rem 0; }
.avviso-serie { border-left: 3px solid var(--accent); padding: .3rem .6rem; background: var(--bg); }

/* Formule e variabili dell'utente */
.campo-variabile { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.campo-variabile [hidden], .modulo [hidden], .modulo-annidato[hidden] { display: none !important; }
.formula-gruppo { display: flex; flex-direction: column; gap: .3rem; min-width: 0; }
.formula-gruppo input.formula { font-family: "IBM Plex Mono", ui-monospace, monospace; width: 100%; min-width: 0; box-sizing: border-box; }
input.formula-nodo { font-family: "IBM Plex Mono", ui-monospace, monospace; width: 100%; min-width: 26rem; box-sizing: border-box; }
.formula-gruppo select { min-width: 0; width: 11rem; max-width: 100%; }
.formula-gruppo input.formula { min-width: 14rem; }
.modulo-annidato { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: .6rem 1rem; }
.modulo-annidato .campo { display: flex; flex-direction: column; gap: .2rem; font-size: .9rem; }

/* Verifica del grafo: esito ben visibile, mai affidato al solo colore (il testo dice «superata» / «NON superata») */
.esito-sintesi { border-left: 6px solid var(--border); padding: .5rem .75rem; font-weight: 700; }
.esito-sintesi.esito-ok { border-left-color: #1a7f37; color: #0f5a26; }
.esito-sintesi.esito-ko { border-left-color: #b00000; color: #8a0000; }
:root[data-theme="scuro"] .esito-sintesi.esito-ok { color: #7ee2a0; border-left-color: #7ee2a0; }
:root[data-theme="scuro"] .esito-sintesi.esito-ko { color: #ff9a9a; border-left-color: #ff9a9a; }
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="chiaro"]) .esito-sintesi.esito-ok { color: #7ee2a0; border-left-color: #7ee2a0; }
  :root:not([data-theme="chiaro"]) .esito-sintesi.esito-ko { color: #ff9a9a; border-left-color: #ff9a9a; }
}

/* Tabelle di campi (editor di calcolo, preset, profili, variabili): su schermi stretti ogni riga diventa un blocco con l'intestazione davanti a ogni valore, senza scorrimento orizzontale. */
@media (max-width: 600px) {
  .tab-impila { max-height: none; overflow: visible; border: 0; }
  .tab-impila table.dati, .tab-impila table.dati tbody, .tab-impila table.dati tr, .tab-impila table.dati td { display: block; width: 100%; min-width: 0; box-sizing: border-box; }
  .tab-impila table.dati caption { display: block; }
  .tab-impila table.dati thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
  .tab-impila table.dati tr { border: 1px solid var(--border); margin: .5rem 0; padding: .25rem 0; background: var(--surface); }
  .tab-impila table.dati td { border: 0; padding: .2rem .5rem; }
  .tab-impila table.dati td:empty { display: none; }
  .tab-impila table.dati td.azioni { position: static; border-left: 0; white-space: normal; }
  .tab-impila table.dati td.num { text-align: left; white-space: normal; }
  .tab-impila table.dati td[data-label]::before { content: attr(data-label); display: block; font-family: var(--font-mono); font-size: .68rem; color: var(--text2); }
  .tab-impila input.formula-nodo, .tab-impila .formula-gruppo input.formula { min-width: 0; }
  .tab-impila .formula-gruppo select { width: 100%; }
}

/* ---- LaTeX, editor dei tempi, eccezioni (Variabili) */
.simbolo-latex .katex { font-size: 1.05em; }
.latex-anteprima { min-width: 6rem; min-height: 2rem; padding: .2rem .6rem; border: 1px dashed var(--border); border-radius: 2px; display: inline-flex; align-items: center; background: var(--surface); }
.campo-latex input { flex: 1 1 14rem; min-width: 0; font-family: var(--font-mono, monospace); }
.tempo-editor { display: flex; flex-direction: column; gap: .5rem; min-width: 0; border-left: 3px solid var(--border); padding-left: .6rem; }
.tempo-editor .tempo-annidato { margin-left: .25rem; }
.tempo-editor .modulo-annidato { grid-template-columns: repeat(auto-fill, minmax(min(100%, 12rem), 1fr)); }
.tempo-editor .campo { display: flex; flex-direction: column; gap: .2rem; font-size: .9rem; min-width: 0; }
.tempo-editor .campo input, .tempo-editor .campo select { min-width: 0; max-width: 100%; }
.tempo-json { font-family: var(--font-mono, monospace); font-size: .85rem; white-space: pre-wrap; word-break: break-word; margin: 0; padding: .4rem; border: 1px solid var(--border-soft); background: var(--surface); }
.eccezioni-editor { border: 1px solid var(--border-soft); padding: .5rem; margin-top: .4rem; min-width: 0; }
.eccezione-riga { border-top: 1px solid var(--border-soft); padding: .5rem 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 11rem), 1fr)); gap: .5rem; align-items: start; }
.eccezione-riga:first-of-type { border-top: 0; }
.eccezione-riga .campo { display: flex; flex-direction: column; gap: .2rem; font-size: .9rem; min-width: 0; }
.eccezione-riga .campo.largo { grid-column: 1 / -1; }
.badge-ecc { margin-left: .3rem; }
.senza-bordo { border: 0; padding: 0; margin: 0; min-width: 0; }
table.dati code, dl.kv code { overflow-wrap: anywhere; word-break: break-word; white-space: pre-wrap; }
@media (max-width: 600px) { table.dati td, table.dati td.num { overflow-wrap: anywhere; white-space: normal; } }

/* versione Base/Advanced, tabelle e grafici configurabili */
.pillola.base::before { content: "◆ "; color: var(--text2); }
.btn.limitato, .btn.limitato:hover { color: var(--text2); border-style: dashed; background: transparent; cursor: not-allowed; }
.btn.cta.limitato { background: transparent; border: 1px dashed var(--border); }
.editor-colonne td input, .editor-colonne td select { min-width: 0; width: 100%; max-width: 100%; }
.editor-colonne td { min-width: 7rem; }
.editor-colonne td.stretta { min-width: 6.5rem; }
.editor-colonne td.inattiva > * { visibility: hidden; }
@media (max-width: 600px) { .tab-impila table.dati.editor-colonne td.inattiva { display: none; } }
.editor-colonne td.azioni { white-space: normal; }
.anteprima-tabella table.dati td.num { font-variant-numeric: tabular-nums; }
.anteprima-tabella caption.didascalia { caption-side: bottom; font-size: .85rem; color: var(--text); white-space: normal; }
.figura-grafico { margin: .5rem 0; }
.catalogo-figure { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 22rem), 1fr)); gap: .6rem; }
.catalogo-figure .scheda-fig { border: 1px solid var(--border-soft); background: var(--surface); padding: .5rem .6rem; min-width: 0; }
.catalogo-figure .scheda-fig p { margin: .2rem 0; overflow-wrap: anywhere; font-size: .85rem; }
.catalogo-figure .scheda-fig img { max-width: 100%; height: auto; background: #fff; border: 1px solid var(--border-soft); }
.json-template { max-height: 40vh; overflow: auto; font-family: var(--font-mono); font-size: .78rem; white-space: pre-wrap; overflow-wrap: anywhere; border: 1px solid var(--border-soft); padding: .4rem; background: var(--bg); }
.mono, input.mono { font-family: var(--font-mono); }

/* Variabili e Calcoli: pannelli, tabelle con selezione, contenuto dei preset */
td.contenuto { min-width: 15rem; }
table.dati tr[aria-current="true"] { background: var(--selection); outline: 2px solid var(--blue-mid); outline-offset: -2px; }
table.dati input[type=radio] { width: 1.1rem; height: 1.1rem; vertical-align: middle; }
.senza-bordo { border: 0; padding: 0; margin: 0; min-width: 0; }
.elenco-azioni { margin: .4rem 0; padding-left: 1.1rem; font-size: .875rem; }
.elenco-azioni li { margin: .15rem 0; }

/* Progetto > Struttura dell'albero */
.campo select { max-width: 100%; min-width: 0; }
.livelli-albero { padding-left: 1.4rem; }
.livelli-albero li { margin: .3rem 0; }
.livelli-albero li .btn { margin-left: .25rem; }
.anteprima-albero, .anteprima-albero ul { margin: 0; padding-left: 1.1rem; }
.anteprima-albero li.misura { color: var(--text2); font-family: var(--font-mono, monospace); font-size: .9em; }

/* accessi per utente: gruppi di caselle (permessi, progetti) e riga di stato nella testata */
.caselle { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 18rem), 1fr)); gap: .1rem .8rem; min-width: 0; }
.caselle-gruppo { min-width: 0; margin: .5rem 0; }
.caselle .suggerimento { display: block; margin: 0; }
#stato-utente { max-width: 16rem; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* pagina di accesso (servita dal proxy, senza JS): scheda centrata con il marchio */
body.pagina-accesso { display: block; height: auto; min-height: 100vh; min-height: 100dvh; padding: 2rem 1rem; }
.accesso-scheda { max-width: 26rem; margin: 6vh auto 0; background: var(--surface); border: 1px solid var(--border); padding: 1.75rem 1.5rem 1.25rem; }
.accesso-marchio { display: flex; align-items: center; gap: .6rem; margin: 0 0 1.5rem; font-family: var(--font-display); font-weight: 700; font-size: 1.25rem; color: var(--text); }
.accesso-scheda h1 { font-size: 1.4rem; }
.accesso-scheda .campo { display: flex; flex-direction: column; gap: .3rem; margin: 0 0 .9rem; }
.accesso-scheda input { font: inherit; padding: .5rem .6rem; border: 1px solid var(--border); border-radius: 2px; background: var(--bg); color: var(--text); min-height: 2.5rem; }
.accesso-scheda .btn.cta { width: 100%; min-height: 2.5rem; }
.accesso-vie { border-top: 1px solid var(--border-soft); margin-top: 1rem; padding-top: .75rem; font-size: .9rem; }
.accesso-vie ul { list-style: none; margin: 0; padding: 0; display: grid; gap: .35rem; }
.accesso-vie:has(ul:empty) { display: none; }
@media (prefers-color-scheme: dark) { :root:not([data-theme="chiaro"]) .pagina-accesso .logo-chiaro { display: none; } :root:not([data-theme="chiaro"]) .pagina-accesso .logo-scuro { display: inline; } }
