:root{
  --bg:#F4F3EF; --surface:#FFFFFF; --surface-2:#ECEAE3; --border:#DCD9D0;
  --fg:#1E1D1A; --fg-muted:#726F66;
  --accent:#1B3A6B; --accent-soft:#E7ECF4;
  --warn:#C9742C; --warn-soft:#F6E9DC;
  --good:#2F7D4F; --good-soft:#E4F2E9;
  --bad:#B3432B; --bad-soft:#F7E7E2;
  --info:#1E7A8C; --info-soft:#DCEEF1;
  --neutral-soft:#ECEAE3;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#15171C; --surface:#1D2027; --surface-2:#242730; --border:#373B46;
    --fg:#EDEDEA; --fg-muted:#9A9A92;
    --accent:#7C9CD4; --accent-soft:#22304A;
    --warn:#E2A159; --warn-soft:#3C2C1C;
    --good:#5FBF83; --good-soft:#1C3326;
    --bad:#E2836A; --bad-soft:#3A241F;
    --info:#5FC7DE; --info-soft:#17323A;
    --neutral-soft:#2A2D36;
    color-scheme:dark;
  }
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:var(--bg); color:var(--fg);
  font-family:"IBM Plex Sans",system-ui,-apple-system,sans-serif;
  padding:0 16px; padding-block:24px 48px;
}
.wrap{max-width:1180px;margin:0 auto}
h1{font-size:1.5rem;font-weight:700;letter-spacing:-0.01em;margin:0 0 2px}
.sub{color:var(--fg-muted);font-size:.9rem;margin:0}
a{color:var(--accent)}

/* ---------- login ---------- */
.loginwrap{max-width:360px;margin:12vh auto 0;background:var(--surface);border:1px solid var(--border);
  border-radius:14px;padding:28px 26px}
.loginwrap h1{font-size:1.25rem;margin-bottom:4px}
.loginwrap .sub{margin-bottom:20px}
.loginwrap label{display:block;font-size:.78rem;color:var(--fg-muted);margin:14px 0 4px;font-weight:600}
.loginwrap input{
  width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;
  font-family:inherit;font-size:.92rem;background:var(--surface);color:var(--fg);
}
.loginwrap input:focus{outline:none;border-color:var(--accent)}
.loginwrap button{width:100%;margin-top:18px}
.loginerr{color:var(--bad);font-size:.82rem;margin-top:12px;min-height:1em}
.loginlink{display:block;text-align:center;margin-top:14px;font-size:.82rem}

/* ---------- topbar / app shell ---------- */
.topbar{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.topbar-user{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.roletag{font-size:.7rem;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}
.backbtn{background:none;border:1px solid var(--border);border-radius:8px;padding:8px 14px;
  font-size:.82rem;font-weight:600;color:var(--fg);cursor:pointer;font-family:inherit;white-space:nowrap}
.backbtn:hover{background:var(--surface-2)}
.linkbtn{background:none;border:none;color:var(--fg-muted);font-size:.8rem;cursor:pointer;font-family:inherit;text-decoration:underline;padding:0}

.tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin-bottom:22px}
.tile{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 16px}
.tile .label{font-size:.72rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.05em;margin-bottom:6px}
.tile .value{font-family:"IBM Plex Mono",monospace;font-weight:600;font-size:1.3rem;font-variant-numeric:tabular-nums}
.tile .value.good{color:var(--good)}
.tile .value.bad{color:var(--bad)}

.catgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin-bottom:22px}
.catcard{display:flex;gap:12px;align-items:flex-start;background:var(--surface);border:1px solid var(--border);
  border-radius:12px;padding:16px;cursor:pointer;transition:border-color .15s}
.catcard:hover{border-color:var(--accent)}
.catcard:focus{outline:2px solid var(--accent);outline-offset:2px}
.catcard-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.15rem;flex-shrink:0}
.catcard-body h3{margin:0 0 2px;font-size:.98rem;font-weight:700}
.catcard-sub{margin:0 0 10px;font-size:.78rem;color:var(--fg-muted);line-height:1.3}
.catcard-stats{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:.78rem}
.catcard-count{color:var(--fg-muted)}
.catcard-val{font-family:"IBM Plex Mono",monospace;font-weight:600;font-variant-numeric:tabular-nums}
.homefoot{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap}

.cview-header{display:flex;gap:12px;align-items:center;margin-bottom:16px}
.cview-icon{width:44px;height:44px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.3rem;flex-shrink:0}
.cview-header h2{margin:0 0 2px;font-size:1.2rem;font-weight:700}
.cview-header .sub{margin:0}

.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.toolbar .status{font-size:.78rem;color:var(--fg-muted)}
button.add{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:9px 14px;
  font-size:.86rem;font-weight:600;cursor:pointer;font-family:inherit}
button.add:hover{opacity:.92}
button.add:disabled{opacity:.5;cursor:not-allowed}
button.add.small{padding:6px 12px;font-size:.78rem;margin-top:8px}
button.add.ghost{background:none;border:1px solid var(--border);color:var(--fg)}

.tablewrap{overflow-x:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
table{border-collapse:collapse;width:100%;min-width:900px}
.tablewrap.subtable table{min-width:540px}
.tablewrap.usertable table{min-width:640px}
thead th{text-align:left;font-size:.72rem;text-transform:uppercase;letter-spacing:.04em;color:var(--fg-muted);
  font-weight:600;padding:11px 12px;border-bottom:1px solid var(--border);white-space:nowrap;
  position:sticky;top:0;background:var(--surface)}
th.num,td.num{text-align:right}
tbody td{padding:8px 12px;border-bottom:1px solid var(--border);vertical-align:middle}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:var(--surface-2)}

input.cell, select.cell, textarea.cell{
  width:100%;background:transparent;border:1px solid transparent;border-radius:6px;
  padding:5px 6px;font-family:inherit;font-size:.86rem;color:var(--fg)}
input.cell:hover, select.cell:hover, textarea.cell:hover{border-color:var(--border)}
input.cell:focus, select.cell:focus, textarea.cell:focus{outline:none;border-color:var(--accent);background:var(--surface)}
input.num{font-family:"IBM Plex Mono",monospace;text-align:right;font-variant-numeric:tabular-nums}
input.cell::placeholder{color:var(--fg-muted);opacity:.7}
input.cell:disabled, select.cell:disabled, textarea.cell:disabled{opacity:.7;cursor:default}
td.name input.cell{font-weight:600}
textarea.cell{resize:vertical;min-height:34px;font-size:.8rem;color:var(--fg-muted)}

.pill{display:inline-block;padding:3px 9px;border-radius:99px;font-size:.74rem;font-weight:600;white-space:nowrap;border:1px solid transparent}
select.cell.pillselect{border:1px solid transparent;font-weight:600;font-size:.74rem;padding:4px 8px;border-radius:99px;
  appearance:none;-webkit-appearance:none;cursor:pointer;background-position:right 7px center;background-repeat:no-repeat}
.st-preparazione{background:var(--neutral-soft);color:var(--fg-muted)}
.st-preventivo{background:var(--warn-soft);color:var(--warn)}
.st-iniziare{background:var(--info-soft);color:var(--info)}
.st-incorso{background:var(--accent-soft);color:var(--accent)}
.st-completato{background:var(--good-soft);color:var(--good)}
.st-perso{background:var(--bad-soft);color:var(--bad)}
.ms-daprezzo{background:var(--neutral-soft);color:var(--fg-muted)}
.ms-richiesto{background:var(--warn-soft);color:var(--warn)}
.ms-ordinato{background:var(--accent-soft);color:var(--accent)}
.ms-arrivato{background:var(--good-soft);color:var(--good)}
.rl-admin{background:var(--bad-soft);color:var(--bad)}
.rl-capo_cantiere{background:var(--accent-soft);color:var(--accent)}
.rl-tecnico{background:var(--info-soft);color:var(--info)}
.rl-ufficio{background:var(--warn-soft);color:var(--warn)}

.margin-val{font-family:"IBM Plex Mono",monospace;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}
.margin-val.good{color:var(--good)}
.margin-val.bad{color:var(--bad)}
.margin-pct{font-size:.72rem;color:var(--fg-muted);display:block;font-family:"IBM Plex Mono",monospace}
.margin-display{min-height:34px;display:flex;flex-direction:column;justify-content:center;padding:5px 6px}
.dash{color:var(--fg-muted)}

.delbtn{background:none;border:1px solid var(--border);border-radius:6px;color:var(--fg-muted);
  width:28px;height:28px;cursor:pointer;font-size:.9rem;line-height:1;flex-shrink:0}
.delbtn:hover{border-color:var(--bad);color:var(--bad);background:var(--bad-soft)}
.delbtn.confirm{background:var(--bad);color:#fff;border-color:var(--bad);font-size:.68rem;width:auto;padding:0 8px}
.delbtn:disabled{opacity:.5;cursor:not-allowed}

tfoot td{padding:11px 12px;font-weight:700;border-top:2px solid var(--border);font-family:"IBM Plex Mono",monospace;font-variant-numeric:tabular-nums}
tfoot td.label{font-family:"IBM Plex Sans",sans-serif;font-weight:600;color:var(--fg-muted);font-size:.8rem}

.empty{padding:48px 20px;text-align:center;color:var(--fg-muted)}
.subempty{padding:10px 2px;color:var(--fg-muted);font-size:.82rem}
.globalmsg{background:var(--bad-soft);color:var(--bad);border:1px solid var(--bad);border-radius:8px;padding:8px 12px;font-size:.82rem;margin-bottom:14px}
.globalmsg.ok{background:var(--good-soft);color:var(--good);border-color:var(--good)}

.ccard{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:16px;margin-bottom:14px}
.ccard-top{display:flex;gap:12px;align-items:flex-start;margin-bottom:10px}
.ccard-fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:10px;flex:1}
.field label{display:block;font-size:.68rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:3px}
.field.span2{grid-column:span 2}
.field.wide{grid-column:1/-1;margin-top:4px}

.ccard-section{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
.ccard-section-titlerow{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;flex-wrap:wrap}
.ccard-section-title{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);font-weight:600}
.bolle-total{font-size:.78rem;color:var(--fg-muted);font-family:"IBM Plex Mono",monospace}

.bollegrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:8px}
.bollacard{display:flex;flex-direction:column;gap:5px;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:8px}
.bolla-head{display:flex;justify-content:flex-end}
.bolla-thumb-wrap{width:100%;aspect-ratio:4/3;border-radius:8px;overflow:hidden;background:var(--bg);display:flex;align-items:center;justify-content:center}
.bolla-thumb{width:100%;height:100%;object-fit:cover;display:block}
.bolla-thumb-wrap.placeholder{color:var(--fg-muted);font-size:.7rem;text-align:center;padding:6px}

/* ---------- preventivi / documenti allegati (disponibili in ogni stato) ---------- */
.prevwidget{display:flex;flex-direction:column;gap:6px}
.prevwidget.compact{min-width:170px}
.prevlist{display:flex;flex-direction:column;gap:4px}
.previtem{display:flex;align-items:center;gap:6px;background:var(--surface-2);border:1px solid var(--border);
  border-radius:8px;padding:4px 4px 4px 8px}
.prevlink{flex:1;font-size:.8rem;color:var(--accent);background:none;border:none;font-family:inherit;
  text-align:left;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer;padding:4px 0}
.prevlink:hover{text-decoration:underline}
.prevempty{font-size:.76rem;color:var(--fg-muted)}
.prevaddbtn{align-self:flex-start}

/* ---------- manodopera ---------- */
.manodopera-summary{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0 10px}
.manodopera-summary .pill{background:var(--neutral-soft);color:var(--fg)}
.manodopera-summary .pill.mezzo{background:var(--info-soft);color:var(--info)}
.btnrow{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.btnrow button.add.small{margin-top:8px}
.mezzipick summary{list-style:none;cursor:pointer;font-size:.86rem;min-height:30px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:260px}
.mezzipick summary::-webkit-details-marker{display:none}
.mezzipick summary.muted{color:var(--fg-muted)}
.mezzipick summary:hover{border-color:var(--border)}
.mezzipick[open] summary{border-color:var(--accent);background:var(--surface)}
.mezzipick-box{background:var(--surface);border:1px solid var(--border);
  border-radius:8px;padding:8px 10px;display:flex;flex-direction:column;gap:6px;margin-top:4px}
.mezzipick-box label{display:flex;align-items:center;gap:6px;font-size:.84rem;white-space:nowrap;cursor:pointer}
.mezzipick-box input[type=checkbox]{width:18px;height:18px}
.tablewrap.subtable table{min-width:720px}
.exporttools{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-left:auto}
.exporttools label{font-size:.72rem;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.04em}
.exporttools input.cell{width:auto;border-color:var(--border);background:var(--surface)}

/* ---------- admin: operai e mezzi ---------- */
.ccard.anag{margin-top:18px}
.ccard.anag h3{margin:0 0 4px;font-size:1rem}
.anag-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:18px}
.anag-list{display:flex;flex-direction:column;gap:4px;margin:6px 0 8px}
.anag-item{display:flex;align-items:center;gap:8px;background:var(--surface-2);border:1px solid var(--border);border-radius:8px;padding:4px 6px}
.anag-item input.cell{flex:1}
.anag-item.off input.cell{color:var(--fg-muted);text-decoration:line-through}
.anag-attivo{display:flex;align-items:center;gap:4px;font-size:.76rem;color:var(--fg-muted);white-space:nowrap}
.anag-add{display:flex;gap:8px;align-items:center}
.anag-add input.cell{flex:1;border-color:var(--border);background:var(--surface)}
.anag-add button.add.small{margin-top:0}

/* ---------- admin: gestione utenti ---------- */
.userrow-cantieri{display:flex;flex-wrap:wrap;gap:4px 10px;font-size:.78rem}
.userrow-cantieri label{display:flex;align-items:center;gap:4px;white-space:nowrap;color:var(--fg-muted)}
.hint{font-size:.78rem;color:var(--fg-muted);margin:-4px 0 14px}

/* costo manodopera calcolato sotto il campo costi */
.costo-man-hint{font-size:11px;color:#6b7280;margin-top:2px;white-space:nowrap}

/* pulsanti bolla (input file dentro la label: compatibile con telefono) */
.bolla-btnrow{ display:flex; flex-wrap:wrap; gap:8px; margin-top:8px; }
.bolla-pick{ position:relative; overflow:hidden; cursor:pointer; display:inline-flex; align-items:center; }
.bolla-pick .bolla-file{ position:absolute; left:0; top:0; width:1px; height:1px; opacity:0; }
.bolla-status{ margin-top:8px; padding:8px 10px; border-radius:8px; font-size:14px; }
.bolla-status.ok{ background:#e8f5e9; color:#1b5e20; }
.bolla-status.err{ background:#fdecea; color:#b71c1c; }
label.bolla-pick{background:var(--accent);color:#fff;border-radius:8px;padding:10px 14px;
  font-size:.9rem;font-weight:600;font-family:inherit;margin-top:0;-webkit-tap-highlight-color:transparent}
label.bolla-pick:active{opacity:.85}

/* sopralluoghi */
.soplist{ display:flex; flex-direction:column; gap:8px; margin:6px 0 8px; }
.sopbox{ border:1px solid var(--border); border-radius:10px; background:var(--card, #fff); }
.sopsum{ cursor:pointer; padding:10px 12px; font-weight:600; list-style:none; }
.sopsum::-webkit-details-marker{ display:none; }
.sopbox[open] > .sopsum{ border-bottom:1px solid var(--border); }
.sopbody{ padding:10px 12px; }
.sophead{ display:grid; grid-template-columns: 160px 1fr auto; gap:10px; align-items:end; }
@media (max-width:600px){ .sophead{ grid-template-columns: 1fr auto; } .sophead .span2{ grid-column:1 / -1; } }
.sopnote{ min-height:110px; width:100%; font-size:1rem; }
.sop-audio{ display:flex; flex-direction:column; gap:6px; padding:8px; }
.sop-audio audio{ width:100%; }
button.add.rec{ background:#c62828; }

/* annotazione foto */
.annot-ov{ position:fixed; inset:0; z-index:9999; background:#111; display:flex; flex-direction:column; }
.annot-bar{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:8px; background:#222; }
.annot-btn{ background:#333; color:#fff; border:1px solid #555; border-radius:8px; padding:9px 12px; font-size:.95rem; }
.annot-btn.on{ background:#1e88e5; border-color:#1e88e5; }
.annot-btn.annot-save{ background:#2e7d32; border-color:#2e7d32; font-weight:700; }
.annot-color{ width:34px; height:34px; border-radius:50%; border:2px solid #666; }
.annot-color.on{ border:3px solid #fff; transform:scale(1.1); }
.annot-txt{ width:110px; padding:8px; border-radius:8px; border:1px solid #555; font-size:1rem; }
.annot-size{ padding:8px; border-radius:8px; }
.annot-spacer{ flex:1; }
.annot-wrap{ flex:1; display:flex; align-items:center; justify-content:center; overflow:hidden; padding:6px; }
.annot-cv{ max-width:100%; max-height:100%; touch-action:none; background:#fff; }
.annot-open{ margin:6px 0; }

/* avvisi */
.badge{ display:inline-block; min-width:18px; padding:1px 6px; border-radius:10px; background:#c62828; color:#fff; font-size:.72rem; font-weight:700; margin-left:4px; }
.avv-filters{ display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; }
.avv-chip{ border:1px solid var(--border); background:transparent; border-radius:16px; padding:6px 12px; cursor:pointer; font-family:inherit; }
.avv-chip.on{ background:var(--accent); color:#fff; border-color:var(--accent); }
.avvbox{ border:1px solid var(--border); border-radius:10px; margin-bottom:8px; background:var(--card,#fff); }
.avvbox.nuovo{ border-left:4px solid #c62828; }
.avvsum{ cursor:pointer; padding:10px 12px; list-style:none; display:flex; flex-wrap:wrap; gap:8px; align-items:baseline; }
.avvsum::-webkit-details-marker{ display:none; }
.avv-tipo{ font-size:.8rem; opacity:.8; }
.avv-tit{ font-weight:600; flex:1; }
.avv-data{ font-size:.8rem; opacity:.7; }
.avvbody{ padding:4px 14px 12px; line-height:1.45; position:relative; }
.avvbody h4{ margin:12px 0 4px; }
.avvbody ul{ margin:4px 0 4px 18px; padding:0; }
.avvbody p{ margin:3px 0; }
.avv-gap{ height:6px; }
.avv-tbl{ font-size:.85rem; }
.avv-del{ position:absolute; top:4px; right:8px; }

/* ======================= NUOVA GRAFICA (body.v2) ======================= */
body.v2{ background:#F4F2EE; padding:0 0 120px; }
body.v2 #appScreen{ max-width:760px; margin:0 auto; padding:0 16px; }
body.v2 #appScreen > .topbar, body.v2 #homeView, body.v2 #catView{ display:none !important; }
body.v2 .globalmsg{ position:sticky; top:8px; z-index:50; }
.v2-screen{ display:flex; flex-direction:column; gap:12px; padding-top:18px; color:#14213D; }
.v2-head{ display:flex; justify-content:space-between; align-items:center; gap:10px; }
.v2-head-left{ justify-content:flex-start; }
.v2-date{ font-size:.85rem; color:#5A6275; }
.v2-h1{ font-size:1.6rem; font-weight:700; line-height:1.15; }
.v2-h1s{ font-size:1.3rem; }
.v2-h2{ font-size:1.15rem; font-weight:700; margin-top:6px; }
.v2-headbtns{ display:flex; gap:8px; align-items:center; }
.v2-round{ position:relative; min-width:44px; height:44px; border-radius:22px; background:#fff; border:1px solid #E3DED5; display:flex; align-items:center; justify-content:center; cursor:pointer; color:#14213D; font-family:inherit; }
.v2-round.v2-small{ padding:0 14px; font-size:.85rem; font-weight:600; }
.v2-badge{ position:absolute; top:4px; right:4px; min-width:16px; height:16px; padding:0 4px; border-radius:8px; background:#E8601C; color:#fff; font-size:10px; font-weight:700; display:flex; align-items:center; justify-content:center; }
.v2-navbtn .v2-badge{ top:2px; right:14px; }
.v2-brief{ background:#1B3A6B; color:#fff; border-radius:16px; padding:16px; display:flex; flex-direction:column; gap:10px; }
.v2-brief-k{ font-size:.75rem; letter-spacing:.08em; text-transform:uppercase; opacity:.75; }
.v2-brief-body{ display:flex; flex-direction:column; gap:10px; font-size:.95rem; line-height:1.35; }
.v2-brief-row{ display:flex; gap:10px; align-items:flex-start; }
.v2-num{ flex:none; width:22px; height:22px; border-radius:11px; background:rgba(255,255,255,.2); font-size:.75rem; font-weight:700; display:flex; align-items:center; justify-content:center; }
.v2-num.first{ background:#E8601C; }
.v2-brief-link{ align-self:flex-start; background:none; border:none; color:#fff; font-weight:600; font-size:.85rem; padding:4px 0; cursor:pointer; font-family:inherit; opacity:.9; }
.v2-tiles{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
@media (min-width:640px){ .v2-tiles{ grid-template-columns:repeat(3,minmax(0,1fr)); } }
.v2-tile{ background:#fff; border:1px solid #E3DED5; border-radius:16px; padding:14px; min-height:92px; display:flex; flex-direction:column; justify-content:space-between; align-items:flex-start; gap:8px; text-align:left; cursor:pointer; font-family:inherit; color:#14213D; font-size:1rem; font-weight:600; }
.v2-tile:active, .v2-card:active{ transform:scale(.98); }
.v2-micwrap{ display:flex; flex-direction:column; align-items:center; gap:8px; margin-top:6px; }
.v2-mic{ width:76px; height:76px; border-radius:38px; border:none; background:#E8601C; box-shadow:0 6px 18px rgba(232,96,28,.35); display:flex; align-items:center; justify-content:center; cursor:pointer; }
.v2-mic.rec{ background:#C62828; animation:v2pulse 1.2s infinite; }
@keyframes v2pulse{ 0%{ box-shadow:0 0 0 0 rgba(198,40,40,.5);} 70%{ box-shadow:0 0 0 18px rgba(198,40,40,0);} 100%{ box-shadow:0 0 0 0 rgba(198,40,40,0);} }
.v2-mictxt{ font-size:.85rem; color:#5A6275; text-align:center; max-width:360px; }
.v2-nav{ position:fixed; left:0; right:0; bottom:0; height:70px; padding-bottom:env(safe-area-inset-bottom); background:#fff; border-top:1px solid #E3DED5; display:flex; justify-content:space-around; align-items:center; z-index:40; }
.v2-navbtn{ position:relative; background:none; border:none; display:flex; flex-direction:column; align-items:center; gap:2px; font-size:.7rem; color:#5A6275; min-width:70px; min-height:52px; justify-content:center; cursor:pointer; font-family:inherit; }
.v2-navbtn.on{ color:#1B3A6B; font-weight:700; }
.v2-chips{ display:flex; gap:8px; flex-wrap:wrap; }
.v2-tabs{ flex-wrap:nowrap; overflow-x:auto; padding-bottom:2px; }
.v2-chip{ flex:none; padding:9px 14px; border-radius:18px; background:#fff; border:1px solid #E3DED5; font-size:.85rem; cursor:pointer; font-family:inherit; color:#14213D; }
.v2-chip.on{ background:#14213D; color:#fff; border-color:#14213D; font-weight:600; }
.v2-card{ width:100%; text-align:left; background:#fff; border:1px solid #E3DED5; border-radius:16px; padding:14px; display:flex; flex-direction:column; gap:6px; cursor:pointer; font-family:inherit; color:#14213D; }
div.v2-card{ cursor:default; }
.v2-card-warn{ border:2px solid #E8601C; }
.v2-card-row{ flex-direction:row; justify-content:space-between; align-items:center; }
.v2-card-top{ display:flex; justify-content:space-between; align-items:center; gap:8px; }
.v2-card-title{ font-size:1.02rem; font-weight:700; }
.v2-card-sub{ font-size:.85rem; color:#5A6275; }
.v2-card-info{ font-size:.85rem; color:#3A4256; }
.v2-card-info.warn{ color:#8A3A08; font-weight:600; }
.v2-card-imp{ font-weight:600; }
.v2-chipst{ display:inline-block; padding:3px 10px; border-radius:12px; font-size:.75rem; font-weight:600; white-space:nowrap; }
.chip-green{ background:#E3F1E4; color:#1E5E22; } .chip-orange{ background:#FDEBD8; color:#8A3A08; }
.chip-blue{ background:#E6ECF6; color:#1B3A6B; } .chip-grey{ background:#ECEAE3; color:#5A6275; }
.v2-titlebox{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.v2-panel > .ccard-section, .v2-panel > .prevwidget, .v2-panel > .ccard{ background:#fff; border:1px solid #E3DED5; border-radius:16px; padding:14px; margin:0; }
.v2-stats{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; }
.v2-stat{ background:#fff; border:1px solid #E3DED5; border-radius:12px; padding:10px; display:flex; flex-direction:column; }
.v2-stat span{ font-size:.75rem; color:#5A6275; } .v2-stat strong{ font-size:1.3rem; }
.v2-sec{ font-size:.78rem; font-weight:700; color:#3A4256; text-transform:uppercase; letter-spacing:.06em; margin-top:8px; }
.v2-row-btns{ display:flex; gap:8px; flex-wrap:wrap; }
.v2-btn-primary{ height:44px; padding:0 16px; border-radius:12px; border:none; background:#1B3A6B; color:#fff; font-family:inherit; font-size:.9rem; font-weight:600; cursor:pointer; display:inline-flex; align-items:center; gap:6px; }
.v2-card .v2-btn-primary{ background:#E8601C; }
.v2-btn-ghost{ height:44px; padding:0 16px; border-radius:12px; border:1px solid #E3DED5; background:#fff; color:#14213D; font-family:inherit; font-size:.9rem; font-weight:600; cursor:pointer; }
.v2-btn-ghost.good{ color:#1E5E22; }
.small.v2-btn-primary, .small.v2-btn-ghost{ height:40px; padding:0 12px; }
.v2-sheet-ov{ position:fixed; inset:0; background:rgba(20,33,61,.45); z-index:200; display:flex; align-items:flex-end; justify-content:center; }
.v2-sheet{ width:100%; max-width:560px; max-height:80vh; overflow:auto; background:#fff; border-radius:20px 20px 0 0; padding:18px 16px calc(18px + env(safe-area-inset-bottom)); display:flex; flex-direction:column; gap:8px; color:#14213D; font-family:"IBM Plex Sans",system-ui,sans-serif; }
.v2-sheet-title{ font-size:1.1rem; font-weight:700; margin-bottom:4px; }
.v2-sheet-item{ text-align:left; padding:12px; border-radius:12px; border:1px solid #E3DED5; background:#F7F5F1; display:flex; flex-direction:column; gap:2px; cursor:pointer; font-family:inherit; color:#14213D; font-size:.95rem; }
.v2-sheet-item span{ font-size:.8rem; color:#5A6275; }
.v2-sheet-cancel{ margin-top:6px; height:44px; border:none; background:none; color:#5A6275; font-family:inherit; font-size:.95rem; cursor:pointer; }
.v2-heard{ font-style:italic; color:#3A4256; background:#F7F5F1; padding:10px; border-radius:10px; }
.v2-confirm{ font-size:.95rem; line-height:1.45; }
.v2-hint{ font-size:.82rem; color:#8A3A08; }
.v2-sheet-row{ display:flex; gap:8px; flex-wrap:wrap; margin-top:6px; }
body.v2 #avvisiView, body.v2 #adminView{ padding-top:4px; }

/* ---------- verbale di sopralluogo avanzato ---------- */
.vb-start{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.vb-start select.cell{width:auto;max-width:100%;border:1px solid var(--border);background:var(--surface)}
.vb-start button.add.small{margin-top:0}
.vb-bar{position:sticky;top:env(safe-area-inset-top,0px);z-index:4;background:var(--bg);display:flex;flex-wrap:wrap;gap:6px;align-items:center;padding:8px 0;margin-bottom:6px}
.vb-pill{font-size:.76rem;font-weight:600;padding:3px 9px;border-radius:99px;background:var(--surface-2);font-variant-numeric:tabular-nums;white-space:nowrap}
.vb-pill b{font-family:"IBM Plex Mono",ui-monospace,monospace}
.vb-pok{background:var(--good-soft);color:var(--good)}.vb-pcrit{background:var(--bad-soft);color:var(--bad)}.vb-pdub{background:var(--warn-soft);color:var(--warn)}
.vb-save{margin-left:auto;font-size:.74rem;color:var(--fg-muted)}
.vb-save.ok{color:var(--good)}.vb-save.err{color:var(--bad)}
.vb-prog{flex-basis:100%;height:4px;background:var(--border);border-radius:2px;overflow:hidden}
.vb-prog i{display:block;height:100%;width:0;background:var(--accent);transition:width .3s}
.vb-sez{border:1px solid var(--border);border-radius:10px;background:var(--surface);padding:0 12px;margin-top:10px}
.vb-sez>summary{cursor:pointer;font-weight:700;font-size:.95rem;padding:11px 0}
.vb-sez[open]>summary{border-bottom:1px solid var(--border);margin-bottom:10px}
.vb-sez[open]{padding-bottom:12px}
.vb-cnt{font-weight:500;font-size:.75rem;color:var(--fg-muted);margin-left:6px}
.vb-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px 12px}
.vb-f{display:grid;gap:4px;min-width:0}
.vb-full{grid-column:1/-1}
.vb-lbl{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);font-weight:600}
.vb .cell{border:1px solid var(--border);background:var(--bg);font-size:.9rem;padding:8px 9px;min-height:40px;width:100%}
.vb textarea.cell{color:var(--fg);font-size:.88rem}
.vb-item{display:grid;gap:7px;padding:10px 0;border-top:1px solid var(--border)}
.vb-sez>summary+.vb-item{border-top:0;padding-top:0}
.vb-q{font-weight:600;font-size:.92rem}
.vb-hint{font-size:.8rem;color:var(--fg-muted);margin-top:-4px}
.vb-seg{display:flex;flex-wrap:wrap;gap:6px}
.vb-seg button{flex:1 1 0;min-width:84px;min-height:42px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--fg);font:inherit;font-size:.86rem;cursor:pointer}
.vb-seg button[aria-pressed="true"].vb-ok{background:var(--good-soft);color:var(--good);border-color:var(--good);font-weight:700}
.vb-seg button[aria-pressed="true"].vb-crit{background:var(--bad-soft);color:var(--bad);border-color:var(--bad);font-weight:700}
.vb-seg button[aria-pressed="true"].vb-dub{background:var(--warn-soft);color:var(--warn);border-color:var(--warn);font-weight:700}
.vb-seg button[aria-pressed="true"].vb-sel{background:var(--accent);color:var(--surface);border-color:var(--accent);font-weight:700}
.vb-vals{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.vb-tw{overflow-x:auto}
table.vb-mis{width:100%;border-collapse:collapse;min-width:680px;font-size:.86rem}
table.vb-mis th{font-size:.68rem;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);text-align:left;padding:5px 4px;border-bottom:1px solid var(--border)}
table.vb-mis td{padding:5px 4px;border-bottom:1px solid var(--border);vertical-align:top}
table.vb-mis .num{text-align:right}
table.vb-mis td:nth-child(1){width:64px}table.vb-mis td:nth-child(3){width:64px}table.vb-mis td:nth-child(4){width:90px}table.vb-mis td:nth-child(5){width:150px}table.vb-mis td:nth-child(6){width:76px}table.vb-mis td:nth-child(8){width:44px}
.vb-r{text-align:right;font-variant-numeric:tabular-nums}
.vb-res{font-family:"IBM Plex Mono",ui-monospace,monospace;font-size:.72rem;color:var(--fg-muted);margin-top:2px}
.vb-delta{display:inline-block;font-family:"IBM Plex Mono",ui-monospace,monospace;font-weight:600;font-size:.8rem;padding:2px 6px;border-radius:5px}
.vb-d-ok{background:var(--good-soft);color:var(--good)}.vb-d-warn{background:var(--warn-soft);color:var(--warn)}.vb-d-bad{background:var(--bad-soft);color:var(--bad)}
.vb-muted{color:var(--fg-muted)}
.vb-x{border:1px solid var(--border);background:var(--surface);color:var(--fg);border-radius:8px;min-height:38px;min-width:38px;cursor:pointer;font:inherit;font-size:.8rem}
.vb-qrow{display:flex;gap:8px;align-items:flex-start;margin-bottom:8px}
.vb-qrow input[type=checkbox]{width:22px;height:22px;margin-top:9px;flex:none;accent-color:var(--accent)}
@media (max-width:640px){
  table.vb-mis{min-width:0}
  table.vb-mis thead{display:none}
  table.vb-mis,table.vb-mis tbody{display:block}
  table.vb-mis tr{display:grid;grid-template-columns:70px 1fr 1fr;gap:6px 8px;padding:10px 0;border-bottom:1px solid var(--border)}
  table.vb-mis td{display:block;border:0;padding:0;width:auto!important;text-align:left}
  table.vb-mis td::before{content:attr(data-l);display:block;font-size:.62rem;text-transform:uppercase;letter-spacing:.05em;color:var(--fg-muted);font-weight:600;margin-bottom:2px}
  table.vb-mis td:nth-child(2){grid-column:2/4}
  table.vb-mis td:nth-child(5){grid-column:1/3}
  table.vb-mis td:nth-child(6){align-self:center}
  table.vb-mis td:nth-child(7){grid-column:1/3}
  table.vb-mis td:nth-child(8){align-self:end;justify-self:end}
  .vb-tw{overflow:visible}
}

/* ---------- Listino prezzi e preventivo rapido ---------- */
.v2-screen input.v2-search{ width:100%; height:48px; border-radius:14px; border:1px solid #E3DED5; background:#fff; padding:0 14px; font-size:1rem; font-family:inherit; color:#14213D; }
.v2-screen input.v2-search:focus{ outline:none; border-color:#1B3A6B; }
.v2-list{ display:flex; flex-direction:column; gap:10px; }
.v2-detail{ border-top:1px solid #EFEBE4; margin-top:6px; padding-top:6px; display:flex; flex-direction:column; gap:8px; }
.v2-detrow{ display:flex; justify-content:space-between; align-items:flex-start; gap:10px; font-size:.88rem; color:#3A4256; flex-wrap:wrap; }
.v2-detrow strong{ color:#14213D; }
.v2-field{ display:flex; flex-direction:column; gap:4px; font-size:.8rem; color:#5A6275; font-weight:600; }
.v2-field .cell{ width:100%; height:44px; border:1px solid #E3DED5; border-radius:12px; background:#fff; padding:0 12px; font-size:1rem; font-weight:500; color:#14213D; }
.v2-field textarea.cell{ height:auto; min-height:72px; padding:10px 12px; font-size:.95rem; color:#14213D; }
.v2-form{ gap:10px; cursor:default; }
.v2-two{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.v2-sec-row{ display:flex; justify-content:space-between; align-items:center; gap:10px; margin-top:8px; }
.v2-sec-row .v2-sec{ margin-top:0; }
.v2-riga{ gap:8px; cursor:default; }
.v2-riga-top{ display:flex; justify-content:space-between; align-items:center; gap:8px; }
.v2-riga-top select.cell.pillselect{ background:#F7F5F1; color:#14213D; }
.v2-riga-grid{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.v2-riga-grid .v2-field .cell{ padding:0 8px; font-size:.95rem; }
@media (max-width:420px){ .v2-riga-grid{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.v2-ac{ position:relative; }
.v2-ac .cell{ width:100%; height:44px; border:1px solid #E3DED5; border-radius:12px; background:#fff; padding:0 12px; font-size:1rem; color:#14213D; }
.v2-sugg{ position:absolute; left:0; right:0; top:48px; background:#fff; border:1px solid #E3DED5; border-radius:12px; box-shadow:0 8px 24px rgba(20,33,61,.15); z-index:30; overflow:hidden; }
.v2-sugg-item{ width:100%; text-align:left; display:grid; grid-template-columns:1fr auto; gap:2px 10px; padding:10px 12px; border:none; border-bottom:1px solid #EFEBE4; background:#fff; font-family:inherit; color:#14213D; font-size:.92rem; cursor:pointer; }
.v2-sugg-item:last-child{ border-bottom:none; }
.v2-sugg-item:hover{ background:#F7F5F1; }
.v2-sugg-item strong{ white-space:nowrap; }
.v2-sugg-item small{ grid-column:1/3; color:#5A6275; }
.v2-tot{ cursor:default; background:#14213D; color:#fff; border-color:#14213D; }
.v2-tot-row{ display:flex; justify-content:space-between; align-items:center; gap:10px; font-size:1rem; }
.v2-tot-row strong{ font-size:1.35rem; }
.v2-tot-sub{ font-size:.82rem; opacity:.85; }
