/* ==========================================================================
   Preventivatore Serramenti Elmec — stile "vetro" (glass) con i colori aziendali
   Verde Elmec #18914A · verde chiaro #52B358 · petrolio #005457 · grigio #4F4845
   ========================================================================== */
:root{
  --brand:#18914A;
  --brand-2:#52B358;
  --brand-dark:#0F6B36;
  --teal:#005457;
  --graphite:#4F4845;

  /* nomi storici usati anche dal codice dei disegni e della stampa */
  --ink:#1E2923;
  --ink-soft:#5F6B64;
  --line:rgba(24,60,38,.12);
  --line-strong:rgba(24,60,38,.22);
  --paper:#F3F7F4;
  --paper-raised:#FFFFFF;
  --blue:var(--brand);
  --blue-soft:#E2F2E7;
  --glass-tint:rgba(255,255,255,.62);
  --danger:#C23B2E;
  --danger-soft:#FBEAE7;
  --warn:#A86A00;
  --warn-soft:#FFF4DC;
  --radius:10px;
  --radius-lg:22px;
  --shadow:0 10px 36px rgba(12,58,32,.10), 0 1px 2px rgba(12,58,32,.06);
  --font-body:-apple-system, BlinkMacSystemFont, "SF Pro Text", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-display:-apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --font-mono:"SF Mono", ui-monospace, Menlo, Consolas, "Liberation Mono", monospace;
}
*{ box-sizing:border-box; }
html{ -webkit-text-size-adjust:100%; }
body{
  margin:0; min-height:100vh; color:var(--ink); font-family:var(--font-body); font-size:14px; line-height:1.5;
  background:#E9F1EC;
  background-image:
    radial-gradient(1200px 700px at 8% -10%, rgba(82,179,88,.28), transparent 60%),
    radial-gradient(900px 600px at 105% 10%, rgba(0,84,87,.20), transparent 60%),
    radial-gradient(1000px 800px at 50% 120%, rgba(24,145,74,.16), transparent 60%);
  background-attachment:fixed;
  -webkit-font-smoothing:antialiased;
}
::selection{ background:var(--brand); color:#fff; }
.bg-blobs{ position:fixed; inset:0; z-index:-1; overflow:hidden; pointer-events:none; }
.bg-blobs span{ position:absolute; border-radius:50%; filter:blur(60px); opacity:.55; }
.bg-blobs span:nth-child(1){ width:420px; height:420px; left:-80px; top:30%; background:#9ED8A6; }
.bg-blobs span:nth-child(2){ width:520px; height:520px; right:-140px; top:-120px; background:#8CC7C2; opacity:.45; }
.bg-blobs span:nth-child(3){ width:380px; height:380px; right:20%; bottom:-160px; background:#C9E9CF; }

/* ---------- superfici vetro ---------- */
.glass, .card{
  background:var(--glass-tint);
  -webkit-backdrop-filter:saturate(180%) blur(24px);
  backdrop-filter:saturate(180%) blur(24px);
  border:1px solid rgba(255,255,255,.75);
  box-shadow:var(--shadow), inset 0 1px 0 rgba(255,255,255,.85);
}
.card{ border-radius:var(--radius-lg); padding:22px 24px; margin-bottom:20px; }
.card h2{
  font-family:var(--font-display); font-size:17px; font-weight:650; letter-spacing:-.01em; color:var(--ink);
  margin:0 0 16px; display:flex; align-items:baseline; gap:10px; flex-wrap:wrap;
}
.card h2 .hint, .hint{ font-size:12px; font-weight:400; color:var(--ink-soft); letter-spacing:0; }
.h3{ font-family:var(--font-display); font-size:14px; font-weight:650; margin:22px 0 10px; }

.wrap{ max-width:1280px; margin:0 auto; padding:20px 22px 40px; }

/* ---------- barra superiore ---------- */
.topbar{ position:sticky; top:0; z-index:50; border-radius:0; border-left:none; border-right:none; border-top:none; }
.topbar-inner{ max-width:1280px; margin:0 auto; padding:10px 22px; display:flex; align-items:center; gap:18px; }
.topbar-logo{ height:34px; width:auto; cursor:pointer; }
.seg{ display:inline-flex; gap:2px; padding:3px; border-radius:12px; background:rgba(30,41,35,.07); }
.seg button{
  font:inherit; font-size:13px; font-weight:550; color:var(--ink-soft); background:transparent; border:0;
  padding:7px 14px; border-radius:9px; cursor:pointer; transition:background .15s, color .15s, box-shadow .15s; white-space:nowrap;
}
.seg button:hover{ color:var(--ink); }
.seg button.active{ background:#fff; color:var(--ink); box-shadow:0 1px 3px rgba(0,0,0,.12), 0 1px 1px rgba(0,0,0,.04); }
.seg-sub{ margin-bottom:16px; flex-wrap:wrap; }
.user-menu{ margin-left:auto; position:relative; }
.user-chip{ display:flex; align-items:center; gap:8px; font:inherit; font-size:13px; background:rgba(255,255,255,.6); border:1px solid rgba(255,255,255,.8); border-radius:999px; padding:4px 12px 4px 4px; cursor:pointer; color:var(--ink); }
.avatar{ width:26px; height:26px; border-radius:50%; display:grid; place-items:center; color:#fff; font-weight:650; font-size:12px; background:linear-gradient(135deg, var(--brand-2), var(--teal)); }
.user-pop{ display:none; position:absolute; right:0; top:calc(100% + 8px); min-width:220px; border-radius:14px; padding:6px; z-index:60; }
.user-pop.open{ display:block; }
.user-pop-head{ padding:8px 10px 10px; border-bottom:1px solid var(--line); margin-bottom:4px; display:flex; flex-direction:column; }
.user-pop button{ display:block; width:100%; text-align:left; font:inherit; background:transparent; border:0; padding:8px 10px; border-radius:8px; cursor:pointer; color:var(--ink); }
.user-pop button:hover{ background:rgba(24,145,74,.10); }

/* ---------- barra documento ---------- */
.docbar{ position:sticky; top:62px; z-index:40; border-radius:18px; padding:12px 16px; margin-bottom:18px; display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.docbar-info{ flex:1; min-width:240px; }
.docbar-title{ font-family:var(--font-display); font-size:16px; font-weight:650; display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.docbar-actions{ display:flex; gap:8px; flex-wrap:wrap; }
.badge{ font-size:11px; font-weight:600; padding:2px 9px; border-radius:999px; background:rgba(30,41,35,.08); color:var(--ink-soft); }
.badge.ok{ background:var(--blue-soft); color:var(--brand-dark); }
.badge.mod{ background:var(--warn-soft); color:var(--warn); }
.badge.st-bozza{ background:rgba(30,41,35,.08); color:var(--ink-soft); }
.badge.st-inviato{ background:#E1EEF7; color:#1D5C8C; }
.badge.st-accettato{ background:var(--blue-soft); color:var(--brand-dark); }
.badge.st-rifiutato{ background:var(--danger-soft); color:var(--danger); }
.badge.st-produzione{ background:#FCEFD6; color:#8A5A00; }
.badge.st-montaggio{ background:#F8E3D2; color:#9A4A12; }
.badge.st-chiusa{ background:var(--blue-soft); color:var(--brand-dark); }
/* stepper degli stadi (uguali al portale commesse), nella barra del documento */
.stadi{ flex-basis:100%; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.stadio{ display:inline-flex; align-items:center; gap:7px; border:1px solid rgba(30,41,35,.14); background:rgba(255,255,255,.55); color:var(--ink-soft);
  font:inherit; font-size:12.5px; font-weight:600; padding:4px 12px 4px 5px; border-radius:999px; cursor:pointer; }
.stadio:hover{ background:#fff; }
.stadio .pallino{ width:20px; height:20px; border-radius:50%; display:inline-flex; align-items:center; justify-content:center; font-size:11px;
  background:rgba(30,41,35,.1); color:var(--ink-soft); }
.stadio.fatto{ color:var(--brand-dark); }
.stadio.fatto .pallino{ background:var(--brand-dark); color:#fff; }
.stadio.attivo{ background:var(--brand-dark); color:#fff; border-color:var(--brand-dark); }
.stadio.attivo .pallino{ background:#fff; color:var(--brand-dark); }
.stadio.rifiutato{ padding-left:12px; margin-left:8px; }
.stadio.rifiutato.attivo{ background:var(--danger); border-color:var(--danger); color:#fff; }
.stadio-linea{ width:14px; height:2px; background:rgba(30,41,35,.18); border-radius:2px; }

.banner{ border-radius:14px; padding:10px 14px; margin-bottom:16px; display:flex; align-items:center; gap:12px; flex-wrap:wrap; font-size:13px; }
.banner.warn{ background:var(--warn-soft); border:1px solid #F1D9A6; color:#6B4700; }
.banner.danger{ background:var(--danger-soft); border:1px solid #F0C4BE; color:var(--danger); }
.banner span{ flex:1; }

/* ---------- campi ---------- */
.grid-2{ display:grid; grid-template-columns:repeat(2,1fr); gap:14px; }
.grid-3{ display:grid; grid-template-columns:repeat(3,1fr); gap:14px; }
.grid-4{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.span-all{ grid-column:1/-1; }
@media (max-width:900px){ .grid-3, .grid-4{ grid-template-columns:repeat(2,1fr); } }
@media (max-width:560px){ .grid-2, .grid-3, .grid-4{ grid-template-columns:1fr; } }
.field{ display:flex; flex-direction:column; gap:5px; min-width:0; }
.field label{ font-size:12px; font-weight:550; color:var(--ink-soft); }
.field input, .field select, .field textarea, .toolbar input, .toolbar select, .mini-input, .edit-table input, .edit-table select, .dc-table input{
  font-family:var(--font-body); font-size:14px; color:var(--ink);
  background:rgba(255,255,255,.78); border:1px solid rgba(24,60,38,.14); border-radius:var(--radius);
  padding:8px 10px; width:100%; transition:border-color .15s, box-shadow .15s, background .15s;
}
.field textarea{ resize:vertical; line-height:1.45; }
.field input:focus, .field select:focus, .field textarea:focus, .toolbar input:focus, .toolbar select:focus, .mini-input:focus, .edit-table input:focus, .edit-table select:focus, .dc-table input:focus{
  outline:none; border-color:var(--brand); box-shadow:0 0 0 3px rgba(24,145,74,.22); background:#fff;
}
.field input[type="color"]{ padding:2px; height:38px; }
.input-with-btn{ display:flex; gap:6px; }
.input-with-btn input{ flex:1; }
.mini-input{ width:90px; padding:4px 8px; font-family:var(--font-mono); font-size:13px; }
.chk-inline{ display:inline-flex; align-items:center; gap:7px; font-size:13px; cursor:pointer; color:var(--ink); }
.chk-inline input{ accent-color:var(--brand); width:16px; height:16px; }
.form-error{ color:var(--danger); font-size:12.5px; min-height:18px; margin-top:10px; }
details.azienda-det, details.dc-det{ margin-top:14px; }
details > summary{ cursor:pointer; font-size:13px; color:var(--brand-dark); font-weight:550; }

/* ---------- pulsanti ---------- */
.btn{
  font-family:var(--font-body); font-size:13px; font-weight:600; letter-spacing:0;
  border:1px solid transparent; border-radius:999px; padding:9px 18px; cursor:pointer; white-space:nowrap;
  background:var(--ink); color:#fff; transition:transform .08s ease, filter .15s, background .15s, box-shadow .15s;
}
.btn:hover{ filter:brightness(1.06); }
.btn:active{ transform:scale(.98); }
.btn:disabled{ opacity:.45; cursor:not-allowed; filter:none; transform:none; }
.btn.blue{ background:var(--brand); box-shadow:0 4px 14px rgba(24,145,74,.30); }
.btn.green{ background:linear-gradient(135deg, var(--brand-2), var(--brand) 55%, var(--teal)); box-shadow:0 4px 14px rgba(0,84,87,.25); }
.btn.secondary{ background:rgba(255,255,255,.7); color:var(--ink); border-color:rgba(24,60,38,.14); }
.btn.secondary:hover{ background:#fff; }
.btn.danger{ background:rgba(255,255,255,.7); color:var(--danger); border-color:rgba(194,59,46,.35); }
.btn.danger:hover{ background:var(--danger-soft); }
.btn.small{ padding:5px 12px; font-size:12px; }
.btn.icon{ padding:5px 9px; }
.btn-block{ width:100%; margin-top:8px; padding:11px; }
.btn-row{ display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.btn-row.right{ justify-content:flex-end; }
.spacer{ flex:1; }

/* ---------- categorie e pannelli ---------- */
.cat-tabs{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:18px; }
.cat-tab{
  font:inherit; font-size:12.5px; font-weight:550; padding:7px 14px; border-radius:999px; cursor:pointer;
  border:1px solid rgba(24,60,38,.12); background:rgba(255,255,255,.65); color:var(--ink-soft); display:flex; align-items:center; gap:7px;
  transition:all .15s;
}
.cat-tab:hover{ background:#fff; color:var(--ink); }
.cat-tab .dot{ width:8px; height:8px; border-radius:50%; display:inline-block; }
.cat-tab.active{ background:var(--brand); border-color:var(--brand); color:#fff; box-shadow:0 4px 12px rgba(24,145,74,.28); }
.cat-tab.active .dot{ background:#fff !important; }
.cat-panel{ display:none; }
.cat-panel.active{ display:block; }
.split{ display:grid; grid-template-columns:1.15fr 1fr; gap:22px; align-items:start; }
@media (max-width:900px){ .split{ grid-template-columns:1fr; } }
.split-2{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
@media (max-width:520px){ .split-2{ grid-template-columns:1fr; } }
#f-finitura-options{ border:1px dashed var(--line-strong) !important; border-radius:14px !important; background:rgba(255,255,255,.35); }

.preview-box{
  position:sticky; top:150px; background:rgba(255,255,255,.55); border:1px solid rgba(255,255,255,.8); border-radius:18px;
  padding:16px; display:flex; flex-direction:column; align-items:center; gap:12px; box-shadow:inset 0 1px 0 #fff;
}
#live-preview{ width:100%; display:flex; justify-content:center; }
#live-preview svg{ max-width:100%; height:auto; }
.preview-figures{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; width:100%; }
.preview-figures > div{ background:rgba(255,255,255,.75); border-radius:12px; padding:8px 10px; font-size:11.5px; color:var(--ink-soft); text-align:center; }
.preview-figures b{ display:block; color:var(--ink); font-size:16px; font-weight:650; font-variant-numeric:tabular-nums; }
#pv-totale{ color:var(--brand-dark); }
.pv-badge{ font-size:11.5px; border-radius:10px; padding:6px 10px; width:100%; text-align:center; }
.pv-badge.info{ background:var(--blue-soft); color:var(--brand-dark); }
.pv-badge.warn{ background:var(--warn-soft); color:var(--warn); }

/* ---------- tabelle ---------- */
.table-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; }
table{ width:100%; border-collapse:collapse; font-size:13px; }
thead th{ font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.04em; color:var(--ink-soft); text-align:left; padding:8px; border-bottom:1px solid var(--line-strong); background:transparent; }
tbody td{ padding:8px; border-bottom:1px solid var(--line); vertical-align:middle; }
tbody tr:hover td{ background:rgba(255,255,255,.45); }
td.num, th.num{ text-align:right; font-variant-numeric:tabular-nums; }
td.r{ text-align:right; }
.thumb-cell svg{ display:block; }
.empty-row td{ text-align:center; color:var(--ink-soft); padding:28px; font-size:13px; }
.cat-dot{ width:8px; height:8px; border-radius:50%; display:inline-block; margin-right:6px; }
.detail-sub{ color:var(--ink-soft); font-size:11.5px; }
tfoot td{ padding:8px; font-variant-numeric:tabular-nums; }
tfoot tr.grand td{ font-size:17px; font-weight:700; border-top:2px solid var(--ink); color:var(--ink); }
tfoot tr.grand td.num{ color:var(--brand-dark); }
.inline-note{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:14px; padding:10px 12px; background:rgba(255,255,255,.45); border-radius:12px; font-size:13px; }
.inline-note input{ width:110px; }
.iva-input{ width:56px; }

/* ---------- distinta di calcolo ---------- */
.distinta-head{ display:flex; gap:18px; align-items:flex-end; flex-wrap:wrap; }
.distinta-kpi{ display:flex; gap:8px; flex-wrap:wrap; }
.kpi{ background:rgba(255,255,255,.72); border-radius:12px; padding:7px 12px; min-width:104px; }
.kpi span{ display:block; font-size:11px; color:var(--ink-soft); }
.kpi b{ font-size:15px; font-variant-numeric:tabular-nums; }
.kpi.accent{ background:var(--brand); color:#fff; }
.kpi.accent span{ color:rgba(255,255,255,.85); }
.dc-avviso{ margin-top:12px; font-size:12.5px; border-radius:10px; padding:8px 12px; background:var(--warn-soft); color:#6B4700; }
.dc-avviso + .dc-avviso{ margin-top:6px; }
.dc-table{ width:100%; border-collapse:collapse; font-size:12.5px; margin-top:10px; }
.dc-table th{ font-size:10.5px; }
.dc-table td{ padding:5px 8px; }
.dc-table tr.gruppo td{ background:rgba(24,145,74,.08); font-weight:650; font-size:12px; }
.dc-table tr.off td{ color:var(--ink-soft); text-decoration:line-through; opacity:.6; }
.dc-table td.err{ color:var(--danger); }
.dc-table tr.sub td{ font-weight:600; border-top:1px solid var(--line-strong); }
.missing{ color:var(--danger); font-weight:600; }

/* ---------- editor (listini, distinte, articoli) ---------- */
.toolbar{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-bottom:14px; }
.toolbar input[type="search"]{ flex:1; min-width:220px; }
.toolbar select{ width:auto; }
.edit-table td{ padding:4px 6px; }
.edit-table input, .edit-table select{ padding:5px 8px; font-size:13px; }
.edit-table input.num{ text-align:right; font-variant-numeric:tabular-nums; }
.edit-table tr.dirty td{ background:rgba(255,236,179,.35); }
.split-list{ display:grid; grid-template-columns:280px 1fr; gap:20px; align-items:start; }
@media (max-width:900px){ .split-list{ grid-template-columns:1fr; } }
.side-list{ display:flex; flex-direction:column; gap:6px; }
.side-item{ text-align:left; font:inherit; background:rgba(255,255,255,.6); border:1px solid rgba(24,60,38,.1); border-radius:12px; padding:9px 12px; cursor:pointer; color:var(--ink); }
.side-item:hover{ background:#fff; }
.side-item.active{ border-color:var(--brand); box-shadow:0 0 0 3px rgba(24,145,74,.18); background:#fff; }
.side-item b{ display:block; font-size:13px; font-weight:600; }
.side-item span{ font-size:11.5px; color:var(--ink-soft); }
.editor-col{ min-width:0; }
.match-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }
@media (max-width:900px){ .match-grid{ grid-template-columns:repeat(2,1fr); } }
.box{ background:rgba(255,255,255,.45); border-radius:14px; padding:14px; margin:14px 0; }
.box h4{ margin:0 0 10px; font-size:13px; font-weight:650; }

.listino-group{ margin-bottom:18px; padding:14px; background:rgba(255,255,255,.4); border-radius:14px; }
.listino-group h3{ font-size:13px; font-weight:650; margin:0 0 10px; display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.listino-row{ display:flex; align-items:center; gap:10px; margin-bottom:6px; }
.listino-row label{ width:200px; font-size:13px; color:var(--ink); }
.listino-row input{ width:110px; font-family:var(--font-body); font-variant-numeric:tabular-nums; border:1px solid rgba(24,60,38,.14); border-radius:var(--radius); padding:6px 8px; background:rgba(255,255,255,.8); }
.listino-row span.unit{ font-size:11.5px; color:var(--ink-soft); }

/* ---------- storico ---------- */
.storico-table td{ padding:10px 8px; }
.storico-table .n{ font-weight:650; white-space:nowrap; }
.storico-table select{ font:inherit; font-size:12px; border-radius:999px; border:1px solid var(--line-strong); padding:3px 8px; background:rgba(255,255,255,.8); }
.vers-item{ display:flex; justify-content:space-between; align-items:center; gap:12px; padding:10px 4px; border-bottom:1px solid var(--line); }
.vers-item:last-child{ border-bottom:none; }
.vers-item .meta{ font-size:12px; color:var(--ink-soft); }
.vers-item.corrente{ background:rgba(24,145,74,.07); border-radius:10px; padding:10px; }

/* ---------- documenti ---------- */
.doc-actions{ display:flex; flex-direction:column; gap:10px; }
.doc-action{ display:flex; justify-content:space-between; align-items:center; gap:14px; flex-wrap:wrap; background:rgba(255,255,255,.45); border-radius:14px; padding:12px 14px; }
.doc-action b{ display:block; font-size:14px; }

/* ---------- toggle cantiere ---------- */
.toggle-card{ grid-column:1/-1; display:flex; align-items:center; gap:13px; padding:11px 13px; border:1px solid rgba(24,60,38,.12); border-radius:14px; background:rgba(255,255,255,.6); transition:border-color .15s, box-shadow .15s; }
.toggle-card.is-on{ border-color:rgba(24,145,74,.5); box-shadow:inset 3px 0 0 var(--brand); }
.toggle-switch{ position:relative; flex-shrink:0; width:46px; height:28px; cursor:pointer; }
.toggle-switch input{ position:absolute; opacity:0; width:100%; height:100%; margin:0; cursor:pointer; z-index:2; }
.toggle-track{ position:absolute; inset:0; background:rgba(30,41,35,.18); border-radius:999px; transition:background .18s ease; }
.toggle-thumb{ position:absolute; top:3px; left:3px; width:22px; height:22px; background:#fff; border-radius:50%; box-shadow:0 2px 4px rgba(0,0,0,.2); transition:transform .2s cubic-bezier(.4,.1,.2,1); }
.toggle-switch input:checked ~ .toggle-track{ background:var(--brand); }
.toggle-switch input:checked ~ .toggle-thumb{ transform:translateX(18px); }
.toggle-text{ flex:1; }
.toggle-text .toggle-title{ font-weight:600; font-size:13px; display:block; }
.toggle-text .toggle-hint{ font-size:11.5px; color:var(--ink-soft); }
.toggle-state{ flex-shrink:0; font-size:11px; font-weight:600; padding:3px 9px; border-radius:999px; background:rgba(30,41,35,.08); color:var(--ink-soft); }
.toggle-card.is-on .toggle-state{ background:var(--blue-soft); color:var(--brand-dark); }

/* ---------- comando vocale e sezioni (dal vecchio programma) ---------- */
.voice-bar{ margin:0 0 16px; }
.voice-btn{ display:inline-flex; align-items:center; gap:8px; font:inherit; font-size:12.5px; font-weight:600; color:#fff; background:var(--teal); border:0; border-radius:999px; padding:8px 14px; cursor:pointer; }
.voice-btn.listening{ background:var(--danger); }
.voice-btn.listening .voice-mic{ animation:voicePulse 1s infinite; }
@keyframes voicePulse{ 0%,100%{ opacity:1; } 50%{ opacity:.25; } }
.voice-hint{ display:block; font-size:11.5px; color:var(--ink-soft); margin-top:6px; }
.voice-panel{ margin-top:10px; border-radius:12px; background:rgba(255,255,255,.7); padding:12px 14px; }
.voice-status{ font-size:11px; font-weight:600; text-transform:uppercase; letter-spacing:.05em; color:var(--brand-dark); margin-bottom:6px; }
.voice-transcript{ font-size:13px; min-height:18px; }
.voice-transcript .interim{ color:var(--ink-soft); }
.voice-parsed{ margin-top:10px; font-size:12px; display:none; }
.voice-parsed ul{ margin:6px 0 0; padding-left:18px; }
.voice-unsupported{ color:var(--danger); font-size:12px; }
.sezioni-grid{ display:flex; flex-direction:column; gap:6px; margin-top:6px; }
.sezione-row{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; padding:4px 0; border-bottom:1px dashed var(--line); }
.sezione-row:last-child{ border-bottom:none; }
.sezione-row .sezione-label{ font-size:11px; font-weight:600; color:var(--brand-dark); min-width:54px; }
.sezione-row select{ padding:5px 7px; width:auto; }
.sez-sub{ display:inline-flex; gap:6px; flex-wrap:wrap; }

/* ---------- accesso ---------- */
.overlay-center{ position:fixed; inset:0; z-index:200; display:flex; align-items:center; justify-content:center; padding:20px; }
.login-card{ width:100%; max-width:380px; border-radius:26px; padding:32px 28px 24px; }
.login-card .field{ margin-bottom:12px; }
.login-logo{ display:block; height:54px; width:auto; margin:0 auto 18px; }
.login-title{ font-family:var(--font-display); font-size:22px; font-weight:700; text-align:center; margin:0; letter-spacing:-.01em; }
.login-sub{ text-align:center; color:var(--ink-soft); font-size:13px; margin:4px 0 20px; }

/* ---------- modali, toast, attesa ---------- */
.modal{ position:fixed; inset:0; background:rgba(20,35,27,.35); -webkit-backdrop-filter:blur(4px); backdrop-filter:blur(4px); z-index:150; display:flex; align-items:center; justify-content:center; padding:20px; }
.modal-box{ width:100%; max-width:540px; max-height:90vh; overflow:auto; border-radius:22px; padding:22px 24px; background:rgba(255,255,255,.88); }
.modal-box.wide{ max-width:820px; }
.modal-box h2{ font-family:var(--font-display); font-size:18px; margin:0 0 14px; }
.modal-box .field{ margin-bottom:10px; }
.toast{ position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(20px); background:rgba(30,41,35,.92); color:#fff; font-size:13px; padding:10px 18px; border-radius:999px; opacity:0; pointer-events:none; transition:all .25s ease; z-index:300; max-width:90vw; text-align:center; }
.toast.show{ opacity:1; transform:translateX(-50%) translateY(0); }
.busy{ position:fixed; inset:0; z-index:250; display:flex; align-items:center; justify-content:center; background:rgba(20,35,27,.18); }
.busy-box{ border-radius:16px; padding:16px 22px; display:flex; align-items:center; gap:12px; font-weight:550; }
.spinner{ width:18px; height:18px; border-radius:50%; border:2.5px solid rgba(24,145,74,.25); border-top-color:var(--brand); animation:spin .8s linear infinite; }
@keyframes spin{ to{ transform:rotate(360deg); } }
.foot{ text-align:center; font-size:11.5px; color:var(--ink-soft); padding:10px 0 30px; }

.solo-admin{ display:none !important; }
body.is-admin .solo-admin{ display:inline-block !important; }

@media (max-width:700px){
  .topbar-inner{ flex-wrap:wrap; gap:10px; padding:8px 14px; }
  .topbar-logo{ height:28px; }
  #main-nav{ order:3; width:100%; overflow-x:auto; }
  .docbar{ position:static; }
  .wrap{ padding:14px 12px 30px; }
  .card{ padding:16px; border-radius:18px; }
  .preview-box{ position:static; }
}

/* ==========================================================================
   FOGLI DI STAMPA (preventivo cliente e produzione) — usati anche per il PDF
   ========================================================================== */
#produzione-sheet, #quote-print-sheet{ display:none; }
.pdf-host{ position:fixed; left:-10000px; top:0; width:794px; background:#fff; z-index:-1; }
.pdf-sheet{ background:#fff; color:#1E2923; font-family:var(--font-body); font-size:12.5px; line-height:1.45; padding:0; width:718px; }
.stampa-logo{ text-align:left; margin-bottom:14px; }
.stampa-logo img{ max-height:54px; width:auto; display:block; }
.prod-title{ font-family:var(--font-display); font-weight:700; font-size:20px; margin:0 0 4px; }
.prod-meta{ font-size:11px; color:var(--ink-soft); margin-bottom:18px; padding-bottom:12px; border-bottom:2px solid var(--brand); }
.prod-card{ border:1px solid #D9E2DC; border-radius:10px; padding:14px; margin-bottom:18px; break-inside:avoid; page-break-inside:avoid; background:#fff; }
.prod-card h4{ font-size:12.5px; margin:0 0 10px; padding-bottom:8px; border-bottom:1px solid #D9E2DC; display:flex; justify-content:space-between; gap:10px; }
.prod-card .prod-svg-wrap{ display:flex; justify-content:center; padding:6px 0; }
.prod-card .prod-svg-wrap svg{ max-width:100%; height:auto; }
.prod-card .prod-detail{ font-size:11.5px; color:#46524B; margin-top:10px; line-height:1.7; }
.prod-card .prod-detail b{ color:#1E2923; }
.prod-comp-table{ width:100%; border-collapse:collapse; font-size:10.5px; }
.prod-comp-table th{ text-align:left; border-bottom:1px solid #7C8A82; padding:3px 5px; font-size:9.5px; color:#46524B; text-transform:uppercase; }
.prod-comp-table td{ border-bottom:1px solid #E3E9E5; padding:3px 5px; vertical-align:middle; }
.prod-comp-table td.num, .prod-comp-table th.num{ text-align:right; }
.prod-comp-table tr.gruppo td{ font-weight:700; background:#F0F6F2; }

.qp-meta-row{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:16px; font-size:12.5px; }
.qp-oggetto{ font-family:var(--font-display); font-weight:700; font-size:15px; margin:10px 0 4px; color:#1E2923; }
.qp-intro{ font-size:12.5px; margin:0 0 14px; }
.qp-cat-title{ font-weight:700; font-size:13px; text-transform:uppercase; letter-spacing:.04em; color:#fff; background:var(--brand); border-radius:6px 6px 0 0; padding:6px 10px; margin:18px 0 0; -webkit-print-color-adjust:exact; print-color-adjust:exact; break-after:avoid; page-break-after:avoid; }
.qp-cat-desc{ font-size:12px; border:1px solid #D9E2DC; border-top:none; padding:8px 10px; white-space:pre-line; }
.qp-cat-desc b{ display:block; }
table.qp-table{ width:100%; border-collapse:collapse; font-size:11.5px; }
table.qp-table th{ font-size:9.5px; text-transform:uppercase; color:#46524B; background:#F0F6F2; border:1px solid #D9E2DC; padding:5px 6px; text-align:left; -webkit-print-color-adjust:exact; print-color-adjust:exact; }
table.qp-table td{ border:1px solid #D9E2DC; padding:6px; vertical-align:top; }
table.qp-table tr{ break-inside:avoid; page-break-inside:avoid; }
table.qp-table td.qp-num{ text-align:right; white-space:nowrap; font-variant-numeric:tabular-nums; }
table.qp-table td.qp-draw{ width:130px; text-align:center; }
table.qp-table td.qp-draw svg{ width:120px; max-width:120px; height:auto; }
.qp-row-tipo{ font-weight:700; font-size:12px; margin-bottom:3px; }
.qp-row-desc{ font-size:11.5px; }
.qp-row-sub{ font-size:10.5px; color:#46524B; margin-top:3px; }
.qp-render{ margin-top:6px; text-align:left; }
.qp-render img{ max-width:230px; max-height:170px; width:auto; height:auto; display:block; }
.cad-box{ margin-top:6px; font-size:12px; }
.cad-thumb{ display:block; max-width:110px; max-height:80px; margin-bottom:4px; background:#f3f4f2; border:1px solid #d9ddd8; border-radius:4px; }
.cad-busy{ color:#46524B; }
.cad-err{ color:#b3261e; }
.qp-row-sub b{ color:#1E2923; }
.qp-cat-total{ text-align:right; font-weight:700; font-size:12.5px; border:1px solid #D9E2DC; border-top:none; padding:6px 10px; background:#F7FAF8; }
.qp-summary{ margin-top:22px; max-width:400px; margin-left:auto; break-inside:avoid; page-break-inside:avoid; }
.qp-summary-row{ display:flex; justify-content:space-between; font-size:12.5px; border-bottom:1px solid #E3E9E5; padding:5px 4px; font-variant-numeric:tabular-nums; }
.qp-summary-row.qp-grand{ font-size:16px; font-weight:700; border-top:2px solid var(--brand); border-bottom:none; margin-top:4px; padding-top:8px; color:var(--brand-dark); }
.qp-sezione{ border:1px solid #D9E2DC; border-top:none; padding:10px; text-align:center; break-inside:avoid; page-break-inside:avoid; }
.qp-sezione-label{ font-size:9.5px; text-transform:uppercase; letter-spacing:.04em; color:#46524B; margin-bottom:6px; }
.qp-sezione svg{ width:100%; max-width:420px; height:auto; display:block; margin:0 auto; }
#live-preview-section svg{ width:100%; height:auto; display:block; }
.qp-cond{ margin-top:24px; font-size:11.5px; line-height:1.6; break-inside:avoid; page-break-inside:avoid; }
.qp-cond h5{ font-size:10.5px; text-transform:uppercase; letter-spacing:.04em; margin:12px 0 3px; color:var(--brand-dark); }
.qp-closing{ margin-top:24px; font-size:12.5px; line-height:1.6; break-inside:avoid; page-break-inside:avoid; }
.qp-closing .qp-firm{ margin-top:14px; font-weight:700; }

@media print{
  body{ background:#fff !important; }
  .bg-blobs, .no-print, .topbar, .docbar, .banner, .foot, .toast, .modal, .busy{ display:none !important; }
  .wrap{ max-width:100%; padding:0; }
  .page{ display:none !important; }
  @page{ size:A4; margin:14mm; }
  body.print-produzione #produzione-sheet{ display:block !important; }
  body.print-quote #quote-print-sheet{ display:block !important; }
  .prod-card{ break-inside:avoid; page-break-inside:avoid; }
  body.print-continua .prod-card, body.print-continua .qp-cat-title, body.print-continua .qp-cat-desc,
  body.print-continua table.qp-table tr, body.print-continua table.qp-table{ break-inside:auto !important; page-break-inside:auto !important; }
}

/* ---------- posa per voce ---------- */
.posa-select{ margin-top:4px; font:inherit; font-size:11.5px; padding:2px 6px; border-radius:999px; border:1px solid var(--line-strong); background:rgba(255,255,255,.8); color:var(--ink-soft); }

/* ---------- forme e ante ---------- */
.forma-box{ border:1px dashed var(--line-strong); border-radius:14px; padding:12px; background:rgba(255,255,255,.35); }
.forma-box .detail-sub{ margin-top:6px; }
.ante-table{ width:auto; min-width:260px; border-collapse:collapse; font-size:13px; }
.ante-table th{ font-size:10.5px; padding:4px 8px 4px 0; }
.ante-table td{ padding:3px 8px 3px 0; border:none; }
.ante-table input, .ante-table select{ font:inherit; font-size:13px; padding:5px 8px; border:1px solid rgba(24,60,38,.14); border-radius:var(--radius); background:rgba(255,255,255,.8); }
.ante-table input{ width:110px; }
