/* ==========================================================================
   Polizia Locale Calderara di Reno — interfaccia v102
   Sistema grafico istituzionale: sobrio, leggibile, coerente su PC e smartphone.
   Questo foglio viene caricato DOPO styles-v101.css e ne sostituisce l'aspetto.
   ========================================================================== */

:root{
  --navy-950:#08172e;
  --navy-900:#0b1f3a;
  --navy-800:#0f2a52;
  --navy-700:#16386a;
  --primary:#1b4d8f;
  --primary-hover:#153f76;
  --primary-50:#eef3fa;
  --primary-100:#dbe6f5;
  --gold:#b8913a;

  --bg:#f2f4f7;
  --surface:#ffffff;
  --surface-2:#f8f9fb;
  --border:#dde2e9;
  --border-strong:#c4ccd7;
  --text:#18212f;
  --text-2:#475366;
  --text-3:#6b7689;

  --ok:#1d7a4c;   --ok-bg:#e7f4ec;   --ok-bd:#b9dfc8;
  --warn:#8f5b00; --warn-bg:#fdf3e0; --warn-bd:#f0d49c;
  --danger:#b1261d; --danger-bg:#fbeaea; --danger-bd:#efc0bc;
  --info:#1b5fae; --info-bg:#e9f1fb; --info-bd:#bcd3ef;

  --r-sm:6px; --r:8px; --r-lg:12px;
  --sh-1:0 1px 2px rgba(16,24,40,.06);
  --sh-2:0 4px 16px rgba(16,24,40,.08);
  --sh-3:0 16px 40px rgba(16,24,40,.18);
  --font:"Segoe UI Variable Text","Segoe UI",system-ui,-apple-system,BlinkMacSystemFont,Roboto,"Helvetica Neue",Arial,sans-serif;
  --mono:ui-monospace,"Cascadia Mono",Consolas,Menlo,monospace;
  --sidebar-w:264px;
  --topbar-h:60px;

  /* token legacy rimappati: tutte le regole di styles-v101.css ereditano la nuova palette */
  --card:#ffffff; --card-soft:#ffffff; --muted:var(--text-2); --line:var(--border);
  --primary-2:var(--primary-hover); --primary-3:var(--primary-50);
  --accent:var(--gold); --accent-2:#f6eedb; --warning:var(--warn);
  --shadow:var(--sh-1); --radius:var(--r-lg);
  font-family:var(--font);
}

html{ -webkit-text-size-adjust:100%; }
body.ui102{
  margin:0; background:var(--bg) !important; color:var(--text);
  font:15px/1.5 var(--font); letter-spacing:0;
  -webkit-font-smoothing:antialiased;
}
body.ui102 *{ font-family:inherit; }
body.ui102 code, body.ui102 kbd, body.ui102 .mono{ font-family:var(--mono); }
body.ui102 ::selection{ background:var(--primary-100); }
body.ui102 :focus-visible{ outline:2px solid var(--primary); outline-offset:2px; }
[hidden]{ display:none !important; }

/* ---------- elementi legacy nascosti ---------- */
body.ui102 #appLoginGate,
body.ui102 .legacyHidden,
body.ui102 .tabs.compactTabs,
body.ui102 .appSystemBar,
body.ui102 .sectionHomeBar,
body.ui102 #loginCard,
body.ui102 .moduleBtn > span:first-child{ display:none !important; }

.bootError{ position:fixed; inset:auto 16px 16px; z-index:9999; background:var(--danger-bg); color:var(--danger); border:1px solid var(--danger-bd); padding:12px 16px; border-radius:var(--r); }

/* ==========================================================================
   STRUTTURA: sidebar + topbar
   ========================================================================== */
.app102{ display:block; min-height:100vh; }
body.booting .app102, body.locked .app102{ visibility:hidden; }

.sidebar102{
  position:fixed; inset:0 auto 0 0; width:var(--sidebar-w); z-index:60;
  display:flex; flex-direction:column;
  background:var(--navy-900); color:#c9d3e3;
  border-right:1px solid rgba(255,255,255,.04);
}
.sbBrand{ display:flex; align-items:center; gap:12px; padding:18px 18px 16px; border-bottom:1px solid rgba(255,255,255,.08); }
.sbBrand img{ width:40px; height:40px; border-radius:50%; background:#fff; object-fit:contain; flex:none; }
.sbBrand span{ display:block; font-size:11px; letter-spacing:.06em; text-transform:uppercase; color:#8fa0bb; line-height:1.3; }
.sbBrand strong{ display:block; font-size:16px; color:#fff; font-weight:650; line-height:1.25; }

.sbNav{ flex:1; overflow-y:auto; padding:10px 10px 18px; scrollbar-width:thin; scrollbar-color:rgba(255,255,255,.18) transparent; }
.sbGroup{ margin-top:14px; }
.sbGroup:first-child{ margin-top:4px; }
.sbGroupLabel{ padding:6px 10px; font-size:11px; font-weight:650; letter-spacing:.08em; text-transform:uppercase; color:#7489a8; }
.sbItem{
  all:unset; box-sizing:border-box; cursor:pointer;
  display:flex; align-items:center; gap:11px; width:100%;
  padding:8px 10px; margin:1px 0; border-radius:var(--r-sm);
  font-size:14px; line-height:1.3; color:#cdd6e4;
}
.sbItem svg{ width:18px; height:18px; flex:none; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; opacity:.85; }
.sbItem:hover{ background:rgba(255,255,255,.06); color:#fff; }
.sbItem:focus-visible{ outline:2px solid #8fb4ea; outline-offset:-2px; }
.sbItem.active{ background:#1d3a66; color:#fff; box-shadow:inset 3px 0 0 var(--gold); }
.sbItem.active svg{ opacity:1; }
.sbItem .sbLabel{ flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sbBadge{ min-width:20px; padding:1px 6px; border-radius:10px; background:#c2402f; color:#fff; font-size:11px; font-weight:700; text-align:center; }
.sbBadge.soft{ background:rgba(255,255,255,.14); color:#e5ebf4; }
.sbItem .roMark{ font-size:10px; letter-spacing:.04em; text-transform:uppercase; color:#8398b7; border:1px solid rgba(255,255,255,.14); padding:0 5px; border-radius:4px; }
.sbFoot{ padding:12px 18px; border-top:1px solid rgba(255,255,255,.08); font-size:12px; color:#6f84a3; }

.main102{ margin-left:var(--sidebar-w); min-height:100vh; display:flex; flex-direction:column; }
.topbar102{
  position:sticky; top:0; z-index:40; height:var(--topbar-h);
  display:flex; align-items:center; gap:14px; padding:0 24px;
  background:rgba(255,255,255,.96); backdrop-filter:saturate(1.2) blur(6px);
  border-bottom:1px solid var(--border);
}
.tbTitle{ flex:1; min-width:0; }
.tbGroup{ display:block; font-size:12px; color:var(--text-3); line-height:1.2; }
.tbTitle h1{ margin:0 !important; font-size:18px !important; line-height:1.25 !important; font-weight:650 !important; color:var(--text) !important; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; letter-spacing:0 !important; }
.tbRight{ display:flex; align-items:center; gap:10px; }
.iconBtn{ all:unset; cursor:pointer; display:inline-grid; place-items:center; width:38px; height:38px; border-radius:var(--r-sm); color:var(--text-2); }
.iconBtn:hover{ background:var(--surface-2); color:var(--text); }
.iconBtn svg{ width:22px; height:22px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; }
.sbToggle{ display:none; }

.syncPill{
  all:unset; cursor:pointer; display:inline-flex; align-items:center; gap:8px;
  height:32px; padding:0 12px; border-radius:16px; font-size:13px; color:var(--text-2);
  border:1px solid var(--border); background:var(--surface);
}
.syncPill:hover{ border-color:var(--border-strong); }
.syncPill .dot{ width:8px; height:8px; border-radius:50%; background:#9aa6b8; flex:none; }
.syncPill[data-state="ok"] .dot{ background:#2c9a62; }
.syncPill[data-state="busy"] .dot{ background:#d59a1c; animation:pulse102 1s infinite; }
.syncPill[data-state="pending"] .dot{ background:#d59a1c; }
.syncPill[data-state="offline"] .dot, .syncPill[data-state="error"] .dot{ background:#c2402f; }
@keyframes pulse102{ 50%{ opacity:.35; } }

.userMenu{ position:relative; }
.userBtn{ all:unset; cursor:pointer; display:flex; align-items:center; gap:10px; padding:4px 8px 4px 4px; border-radius:22px; }
.userBtn:hover{ background:var(--surface-2); }
.avatar{ width:34px; height:34px; border-radius:50%; display:grid; place-items:center; background:var(--navy-800); color:#fff; font-size:13px; font-weight:650; flex:none; }
.userMeta{ display:flex; flex-direction:column; line-height:1.2; max-width:180px; }
.userMeta strong{ font-size:14px; font-weight:600; color:var(--text); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.userMeta small{ font-size:12px; color:var(--text-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.chev{ width:16px; height:16px; fill:none; stroke:var(--text-3); stroke-width:2; }
.menu102{
  position:absolute; right:0; top:calc(100% + 6px); min-width:240px; z-index:80;
  background:var(--surface); border:1px solid var(--border); border-radius:var(--r); box-shadow:var(--sh-3); padding:6px;
}
.menu102 button{ all:unset; box-sizing:border-box; cursor:pointer; display:block; width:100%; padding:9px 12px; border-radius:var(--r-sm); font-size:14px; color:var(--text); }
.menu102 button:hover, .menu102 button:focus-visible{ background:var(--surface-2); }
.menu102 button.danger{ color:var(--danger); }
.menu102 hr{ border:0; border-top:1px solid var(--border); margin:6px 0; }

.roBanner{ display:flex; align-items:center; gap:10px; margin:16px 24px 0; padding:10px 14px; border-radius:var(--r); background:var(--info-bg); border:1px solid var(--info-bd); color:#123f73; font-size:14px; }
.roBanner svg{ width:18px; height:18px; fill:none; stroke:currentColor; stroke-width:2; flex:none; }

/* contenitore contenuti */
body.ui102 main.shell{ width:100% !important; max-width:1440px !important; margin:0 auto !important; padding:22px 24px 64px !important; background:none !important; }
body.ui102 .panel{ display:none; background:none !important; border:0 !important; box-shadow:none !important; padding:0 !important; animation:none !important; }
body.ui102 .panel.active{ display:block; }

/* ==========================================================================
   TIPOGRAFIA E COMPONENTI GENERALI (sovrascrivono lo stile precedente)
   ========================================================================== */
body.ui102 h1, body.ui102 h2, body.ui102 h3, body.ui102 h4{ color:var(--text); letter-spacing:0 !important; font-weight:650; text-shadow:none !important; }
body.ui102 .panel h2{ font-size:22px !important; line-height:1.25 !important; margin:0 0 6px !important; }
body.ui102 .panel h3{ font-size:17px !important; line-height:1.3 !important; margin:0 0 8px !important; }
body.ui102 .panel h4{ font-size:15px !important; margin:0 0 6px !important; }
body.ui102 p{ line-height:1.55; }
body.ui102 .muted{ color:var(--text-2) !important; }
body.ui102 .eyebrow{ font-size:12px !important; letter-spacing:.06em !important; color:var(--text-3) !important; font-weight:650 !important; }
body.ui102 a{ color:var(--primary); }
body.ui102 a:hover{ text-decoration:underline; }

/* intestazione di sezione */
body.ui102 .sectionTitle{
  display:flex !important; align-items:flex-start !important; justify-content:space-between !important; gap:16px !important; flex-wrap:wrap;
  margin:0 0 16px !important; padding:0 0 14px !important;
  background:none !important; border:0 !important; border-bottom:1px solid var(--border) !important; border-radius:0 !important; box-shadow:none !important; color:var(--text) !important;
}
body.ui102 .sectionTitle *{ color:inherit; text-shadow:none !important; }
body.ui102 .sectionTitle .muted, body.ui102 .sectionTitle p{ color:var(--text-2) !important; max-width:900px; margin:0 !important; font-size:14px; }
body.ui102 .sectionTitle h2{ font-size:22px !important; }
body.ui102 .sectionTitle .eyebrow{ margin:0 0 2px !important; }

/* card */
body.ui102 .card, body.ui102 .editorBox, body.ui102 article.card, body.ui102 .dashboardBlock, body.ui102 .chartCard{
  background:var(--surface) !important; background-image:none !important;
  border:1px solid var(--border) !important; border-radius:var(--r-lg) !important;
  box-shadow:var(--sh-1) !important; padding:20px !important; color:var(--text) !important;
}
body.ui102 .card + .card, body.ui102 .editorBox + .editorBox{ margin-top:16px; }
body.ui102 .card .card{ box-shadow:none !important; background:var(--surface-2) !important; }
body.ui102 .card *{ text-shadow:none !important; }

/* pulsanti */
body.ui102 button, body.ui102 .buttonLike{
  font:600 14px/1.2 var(--font) !important; letter-spacing:0 !important; text-transform:none !important;
  min-height:38px; padding:9px 16px !important; border-radius:var(--r-sm) !important;
  background:var(--primary) !important; background-image:none !important; color:#fff !important;
  border:1px solid var(--primary) !important; box-shadow:none !important; text-shadow:none !important;
  transform:none !important; cursor:pointer; transition:background .12s, border-color .12s, color .12s;
  display:inline-flex; align-items:center; justify-content:center; gap:8px; white-space:normal; text-align:center;
}
body.ui102 button:hover, body.ui102 .buttonLike:hover{ background:var(--primary-hover) !important; border-color:var(--primary-hover) !important; }
body.ui102 button.ghost, body.ui102 .buttonLike.ghost, body.ui102 button.secondary, body.ui102 .btnSecondary{
  background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important;
}
body.ui102 button.ghost:hover, body.ui102 .buttonLike.ghost:hover, body.ui102 button.secondary:hover, body.ui102 .btnSecondary:hover{ background:var(--surface-2) !important; border-color:#9ea9b8 !important; }
body.ui102 button.dangerText, body.ui102 button.danger, body.ui102 .btnDanger{ background:var(--surface) !important; color:var(--danger) !important; border-color:var(--danger-bd) !important; }
body.ui102 button.dangerText:hover, body.ui102 button.danger:hover, body.ui102 .btnDanger:hover{ background:var(--danger-bg) !important; }
body.ui102 button.btnDangerSolid{ background:var(--danger) !important; border-color:var(--danger) !important; color:#fff !important; }
body.ui102 button.ok, body.ui102 button.ghost.ok{ background:var(--ok-bg) !important; color:var(--ok) !important; border-color:var(--ok-bd) !important; }
body.ui102 button[disabled], body.ui102 button:disabled{ opacity:.5 !important; cursor:not-allowed !important; }
body.ui102 button svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
body.ui102 .btnBlock{ width:100%; }
body.ui102 button.btnLink{ all:unset; cursor:pointer; color:var(--primary) !important; font-size:14px; padding:6px 0 !important; min-height:0; background:none !important; border:0 !important; }
body.ui102 button.btnLink:hover{ text-decoration:underline; background:none !important; }
body.ui102 button.btnSm{ min-height:30px; padding:5px 10px !important; font-size:13px !important; }
body.ui102 .actions{ display:flex !important; flex-wrap:wrap; gap:8px !important; align-items:center; }

/* campi */
body.ui102 label{ display:block; font-size:13px !important; font-weight:600 !important; color:var(--text-2) !important; margin:0 0 5px !important; letter-spacing:0 !important; text-transform:none !important; }
body.ui102 input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]),
body.ui102 select, body.ui102 textarea{
  width:100%; box-sizing:border-box; min-height:40px; padding:8px 11px !important;
  font:14px/1.4 var(--font) !important; color:var(--text) !important;
  background:var(--surface) !important; background-image:none !important;
  border:1px solid var(--border-strong) !important; border-radius:var(--r-sm) !important; box-shadow:none !important;
  transition:border-color .12s, box-shadow .12s;
}
body.ui102 select{ appearance:none; -webkit-appearance:none; padding-right:32px !important;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23475366' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") !important;
  background-repeat:no-repeat !important; background-position:right 11px center !important; }
body.ui102 select[multiple]{ background-image:none !important; padding-right:11px !important; min-height:110px; }
body.ui102 textarea{ min-height:90px; resize:vertical; }
body.ui102 input:focus, body.ui102 select:focus, body.ui102 textarea:focus{ outline:none !important; border-color:var(--primary) !important; box-shadow:0 0 0 3px rgba(27,77,143,.15) !important; }
body.ui102 input[readonly], body.ui102 input:disabled, body.ui102 select:disabled, body.ui102 textarea:disabled{ background:var(--surface-2) !important; color:var(--text-2) !important; }
body.ui102 input[type=checkbox], body.ui102 input[type=radio]{ accent-color:var(--primary); width:16px; height:16px; }
body.ui102 input[type=file]{ padding:7px !important; }
body.ui102 .formGrid{ gap:14px !important; }
body.ui102 .formGrid > div{ min-width:0; }

/* tabelle */
body.ui102 .tableScroll{ overflow:auto; border:1px solid var(--border); border-radius:var(--r); background:var(--surface); max-width:100%; }
body.ui102 table{ border-collapse:separate !important; border-spacing:0 !important; width:100%; font-size:14px; background:var(--surface); }
body.ui102 th{
  position:sticky; top:0; z-index:1;
  background:var(--surface-2) !important; color:var(--text-2) !important; background-image:none !important;
  font-size:12px !important; font-weight:650 !important; text-transform:uppercase; letter-spacing:.04em !important;
  text-align:left; padding:10px 12px !important; border-bottom:1px solid var(--border) !important; border-top:0 !important; white-space:nowrap;
}
body.ui102 td{ padding:10px 12px !important; border-bottom:1px solid #edf0f4 !important; border-top:0 !important; vertical-align:top; color:var(--text); background:transparent; }
body.ui102 tbody tr:hover td{ background:#f7f9fc; }
body.ui102 tbody tr:last-child td{ border-bottom:0 !important; }
body.ui102 tr[data-open-todo], body.ui102 tr[data-open-calendar-event], body.ui102 tr.clickable{ cursor:pointer; }

/* etichette di stato */
body.ui102 .pill, body.ui102 .badge102{
  display:inline-flex; align-items:center; gap:4px; padding:2px 9px !important; border-radius:12px !important;
  font-size:12px !important; font-weight:600 !important; line-height:1.5 !important;
  background:var(--surface-2) !important; color:var(--text-2) !important; border:1px solid var(--border) !important; box-shadow:none !important; white-space:nowrap;
}
body.ui102 .pill.ok, body.ui102 .badge102.ok{ background:var(--ok-bg) !important; color:var(--ok) !important; border-color:var(--ok-bd) !important; }
body.ui102 .pill.warn, body.ui102 .badge102.warn{ background:var(--warn-bg) !important; color:var(--warn) !important; border-color:var(--warn-bd) !important; }
body.ui102 .pill.danger, body.ui102 .pill.bad, body.ui102 .badge102.danger{ background:var(--danger-bg) !important; color:var(--danger) !important; border-color:var(--danger-bd) !important; }
body.ui102 .badge102.info{ background:var(--info-bg) !important; color:var(--info) !important; border-color:var(--info-bd) !important; }
body.ui102 .badge102.dark{ background:var(--navy-800) !important; color:#fff !important; border-color:var(--navy-800) !important; }
body.ui102 .status{ font-size:12px !important; padding:3px 10px !important; border-radius:12px !important; background:var(--surface-2) !important; border:1px solid var(--border) !important; color:var(--text-2) !important; }

/* avvisi */
body.ui102 .notice{
  background:var(--info-bg) !important; background-image:none !important; color:#15416f !important;
  border:1px solid var(--info-bd) !important; border-left:3px solid var(--info) !important; border-radius:var(--r) !important;
  padding:12px 14px !important; box-shadow:none !important; font-size:14px;
}
body.ui102 .notice.warn{ background:var(--warn-bg) !important; color:#6d4600 !important; border-color:var(--warn-bd) !important; border-left-color:var(--warn) !important; }
body.ui102 .notice.ok{ background:var(--ok-bg) !important; color:#175e3b !important; border-color:var(--ok-bd) !important; border-left-color:var(--ok) !important; }
body.ui102 .empty{ padding:28px 16px !important; text-align:center; color:var(--text-3) !important; background:var(--surface-2) !important; border:1px dashed var(--border-strong) !important; border-radius:var(--r) !important; font-size:14px; }

/* sotto-menu di sezione -> schede a linguetta */
body.ui102 .moduleMenu{
  display:flex !important; flex-wrap:nowrap !important; gap:2px !important; overflow-x:auto; scrollbar-width:none;
  margin:0 0 18px !important; padding:0 !important; background:none !important; border:0 !important;
  border-bottom:1px solid var(--border) !important; border-radius:0 !important; box-shadow:none !important; grid-template-columns:none !important;
}
body.ui102 .moduleMenu::-webkit-scrollbar{ display:none; }
body.ui102 .moduleMenu .moduleBtn, body.ui102 .droneSubNav button{
  flex:none; min-height:0 !important; padding:10px 14px !important; margin:0 0 -1px !important;
  background:transparent !important; color:var(--text-2) !important; border:0 !important; border-bottom:2px solid transparent !important;
  border-radius:0 !important; box-shadow:none !important; font-weight:600 !important; font-size:14px !important; white-space:nowrap !important;
  width:auto !important; min-width:0 !important; height:auto !important; justify-content:flex-start;
}
body.ui102 .moduleMenu .moduleBtn:hover, body.ui102 .droneSubNav button:hover{ color:var(--text) !important; background:transparent !important; border-bottom-color:var(--border-strong) !important; }
body.ui102 .moduleMenu .moduleBtn.active, body.ui102 .droneSubNav button.active{ color:var(--primary) !important; border-bottom-color:var(--primary) !important; background:transparent !important; }
body.ui102 .moduleMenu .moduleBtn::before, body.ui102 .moduleMenu .moduleBtn::after{ display:none !important; }
body.ui102 .sectionModule{ animation:none !important; }

/* dialoghi */
body.ui102 dialog{
  border:1px solid var(--border) !important; border-radius:var(--r-lg) !important; box-shadow:var(--sh-3) !important;
  padding:0 !important; background:var(--surface) !important; color:var(--text) !important; max-width:min(960px, calc(100vw - 24px));
}
body.ui102 dialog::backdrop{ background:rgba(8,23,46,.55); }
body.ui102 dialog .dialogBody{ padding:22px !important; }

/* statistiche */
body.ui102 .statCard, body.ui102 [class*="kpi"], body.ui102 [class*="Kpi"]{ background-image:none !important; }
body.ui102 .statCard{ background:var(--surface) !important; border:1px solid var(--border) !important; box-shadow:none !important; border-radius:var(--r) !important; }
body.ui102 .statCard span{ color:var(--navy-800) !important; }

/* ==========================================================================
   SCHERMATA DI ACCESSO
   ========================================================================== */
.auth102{ position:fixed; inset:0; z-index:200; display:grid; grid-template-columns:minmax(360px,520px) 1fr; background:var(--surface); overflow:auto; }
body:not(.locked):not(.booting) .auth102{ display:none; }
.authPanel{ display:flex; flex-direction:column; justify-content:center; padding:40px 56px; min-height:100%; box-sizing:border-box; }
.authBrand{ display:flex; align-items:center; gap:14px; margin-bottom:40px; }
.authBrand img{ width:64px; height:64px; border-radius:50%; object-fit:contain; }
.authOrg{ display:block; font-size:12px; letter-spacing:.06em; text-transform:uppercase; color:var(--text-3); }
.authTitle{ display:block; font-size:22px; font-weight:700; color:var(--navy-800); line-height:1.2; }
.authSub{ display:block; font-size:14px; color:var(--text-2); }
.authForm{ display:flex; flex-direction:column; max-width:380px; width:100%; }
.authForm h1{ font-size:26px !important; margin:0 0 4px !important; font-weight:700 !important; color:var(--text) !important; }
.authHint{ margin:0 0 22px; color:var(--text-2); font-size:14px; }
.authForm label{ margin-top:12px !important; }
.authForm .btnPrimary{ margin-top:22px; min-height:44px !important; font-size:15px !important; }
.authForm .btnLink{ align-self:flex-start; margin-top:12px; }
.authMsg{ min-height:22px; margin:12px 0 0; font-size:14px; color:var(--danger); }
.authMsg.ok{ color:var(--ok); }
.authWarn{ margin:6px 0 0; font-size:13px; color:var(--warn); }
.authFoot{ margin-top:auto; padding-top:40px; font-size:12px; color:var(--text-3); max-width:380px; }
.authSide{ background:linear-gradient(160deg,var(--navy-800) 0%,var(--navy-950) 100%); position:relative; overflow:hidden; display:flex; align-items:flex-end; }
.authSide::before{ content:""; position:absolute; right:-120px; top:-120px; width:520px; height:520px; border-radius:50%; border:1px solid rgba(255,255,255,.06); box-shadow:0 0 0 70px rgba(255,255,255,.025), 0 0 0 140px rgba(255,255,255,.02); }
.authSide::after{ content:""; position:absolute; left:0; right:0; top:0; height:4px; background:linear-gradient(90deg,#1f7a3f 0 33.3%,#fff 33.3% 66.6%,#b52a2a 66.6%); opacity:.9; }
.authSideInner{ position:relative; padding:56px; max-width:560px; color:#dbe4f2; }
.authSideKicker{ display:block; font-size:13px; letter-spacing:.08em; text-transform:uppercase; color:var(--gold); margin-bottom:12px; font-weight:650; }
.authSideText{ font-size:20px; line-height:1.5; margin:0; color:#e8eef7; }
.pwField{ position:relative; }
.pwField input{ padding-right:72px !important; }
body.ui102 .pwToggle{ position:absolute; right:4px; top:4px; min-height:32px !important; padding:4px 10px !important; background:transparent !important; color:var(--primary) !important; border:0 !important; font-size:13px !important; }
body.ui102 .pwToggle:hover{ background:var(--primary-50) !important; }
.pwMeter{ height:4px; background:#e6eaf0; border-radius:2px; margin:8px 0 6px; overflow:hidden; }
.pwMeter span{ display:block; height:100%; width:0; background:var(--danger); transition:width .2s, background .2s; }
.pwRules{ list-style:none; margin:4px 0 4px; padding:0; display:grid; grid-template-columns:1fr 1fr; gap:3px 12px; font-size:13px; color:var(--text-3); }
.pwRules li::before{ content:"○"; margin-right:6px; }
.pwRules li.ok{ color:var(--ok); }
.pwRules li.ok::before{ content:"●"; }

/* ==========================================================================
   HOME
   ========================================================================== */
.home102{ display:flex; flex-direction:column; gap:20px; }
.homeHead{ display:flex; align-items:flex-end; justify-content:space-between; gap:16px; flex-wrap:wrap; }
.homeHead h2{ font-size:24px !important; margin:0 !important; }
.homeHead p{ margin:2px 0 0; color:var(--text-2); }
.kpiRow{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:14px; }
.kpi102{ all:unset; box-sizing:border-box; cursor:pointer; display:flex; flex-direction:column; gap:4px; padding:16px 18px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); }
.kpi102:hover{ border-color:var(--border-strong); box-shadow:var(--sh-2); }
.kpi102 .kLabel{ font-size:13px; color:var(--text-2); font-weight:600; display:flex; align-items:center; gap:8px; }
.kpi102 .kLabel svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; color:var(--text-3); }
.kpi102 .kValue{ font-size:28px; font-weight:700; color:var(--text); line-height:1.15; font-variant-numeric:tabular-nums; }
.kpi102 .kSub{ font-size:13px; color:var(--text-3); }
.kpi102 .kSub.danger{ color:var(--danger); font-weight:600; }
.kpi102 .kSub.warn{ color:var(--warn); font-weight:600; }
.homeGrid{ display:grid; grid-template-columns:minmax(0,1.35fr) minmax(0,1fr); gap:20px; align-items:start; }
.homeCol{ display:flex; flex-direction:column; gap:20px; min-width:0; }
.panel102{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); min-width:0; }
.panel102 > header{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:14px 18px; border-bottom:1px solid var(--border); }
.panel102 > header h3{ margin:0 !important; font-size:15px !important; }
.panel102 > .pBody{ padding:6px 18px 12px; }
.panel102 > .pBody.flush{ padding:0; }
.listRow{ display:flex; gap:12px; align-items:flex-start; padding:11px 0; border-bottom:1px solid #eef1f5; }
.listRow:last-child{ border-bottom:0; }
.listRow.clickable{ cursor:pointer; }
.listRow.clickable:hover .lrTitle{ color:var(--primary); }
.lrMain{ flex:1; min-width:0; }
.lrTitle{ font-weight:600; color:var(--text); font-size:14px; line-height:1.35; }
.lrMeta{ font-size:13px; color:var(--text-3); margin-top:2px; }
.lrDate{ flex:none; width:48px; text-align:center; border:1px solid var(--border); border-radius:var(--r-sm); overflow:hidden; font-variant-numeric:tabular-nums; }
.lrDate b{ display:block; font-size:18px; line-height:1.2; padding:3px 0 1px; color:var(--text); }
.lrDate span{ display:block; font-size:11px; text-transform:uppercase; background:var(--surface-2); color:var(--text-2); padding:1px 0; border-top:1px solid var(--border); }
.quickGrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:10px; padding:14px 18px 18px; }
.quickTile{ all:unset; box-sizing:border-box; cursor:pointer; display:flex; align-items:center; gap:12px; padding:12px 14px; border:1px solid var(--border); border-radius:var(--r); background:var(--surface); }
.quickTile:hover{ border-color:var(--primary); background:var(--primary-50); }
.quickTile svg{ width:20px; height:20px; flex:none; fill:none; stroke:var(--primary); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.quickTile span{ font-size:14px; font-weight:600; color:var(--text); line-height:1.3; }
.quickTile small{ display:block; font-weight:400; color:var(--text-3); font-size:12px; }

/* priorità */
.prio{ width:4px; align-self:stretch; border-radius:2px; background:#c9d1dc; flex:none; }
.prio.urgente, .prio.red, .prio.Alta{ background:var(--danger); }
.prio.importante, .prio.orange, .prio.yellow{ background:#d59a1c; }
.prio.green{ background:#2c9a62; }
.prio.blue{ background:var(--primary); }

/* ==========================================================================
   PAGINE NUOVE (bacheca, diario, rubrica, utenti...)
   ========================================================================== */
.page102{ display:flex; flex-direction:column; gap:18px; }
.pageHead{ display:flex; align-items:flex-start; justify-content:space-between; gap:16px; flex-wrap:wrap; padding-bottom:14px; border-bottom:1px solid var(--border); }
.pageHead h2{ margin:0 !important; font-size:22px !important; }
.pageHead p{ margin:4px 0 0; color:var(--text-2); font-size:14px; max-width:820px; }
.toolbar102{ display:flex; gap:10px; flex-wrap:wrap; align-items:center; }
.toolbar102 input[type=search], .toolbar102 .searchInput{ max-width:340px; }
.toolbar102 select{ width:auto !important; min-width:160px; }
.chipRow{ display:flex; gap:6px; flex-wrap:wrap; }
.chip{ all:unset; cursor:pointer; padding:5px 12px; border-radius:16px; font-size:13px; font-weight:600; color:var(--text-2); border:1px solid var(--border); background:var(--surface); }
.chip:hover{ border-color:var(--border-strong); color:var(--text); }
.chip.active{ background:var(--navy-800); color:#fff; border-color:var(--navy-800); }

.post102{ display:flex; gap:14px; padding:16px 18px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); }
.post102.pinned{ border-color:#d8c79d; background:#fffdf7; }
.post102 .postBody{ flex:1; min-width:0; }
.post102 h3{ margin:0 0 4px !important; font-size:16px !important; }
.post102 .postMeta{ font-size:13px; color:var(--text-3); display:flex; gap:8px; flex-wrap:wrap; align-items:center; }
.post102 .postText{ margin:10px 0 0; white-space:pre-wrap; color:var(--text); font-size:14.5px; line-height:1.6; }
.post102 .postFoot{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; margin-top:12px; font-size:13px; color:var(--text-3); }
.post102.unread{ box-shadow:inset 3px 0 0 var(--primary), var(--sh-1); }

.shiftCard{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); }
.shiftCard.open{ border-color:#9cc3a9; box-shadow:0 0 0 3px rgba(29,122,76,.08); }
.shiftCard header{ display:flex; justify-content:space-between; align-items:flex-start; gap:12px; padding:16px 18px; border-bottom:1px solid var(--border); flex-wrap:wrap; }
.shiftCard header h3{ margin:0 !important; }
.shiftFacts{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); gap:10px 18px; padding:14px 18px; border-bottom:1px solid var(--border); }
.fact small{ display:block; font-size:12px; color:var(--text-3); }
.fact strong{ font-size:14px; font-weight:600; }
.quickEvents{ display:flex; gap:8px; flex-wrap:wrap; padding:14px 18px; border-bottom:1px solid var(--border); background:var(--surface-2); }
.timeline{ list-style:none; margin:0; padding:8px 18px 14px; }
.timeline li{ display:grid; grid-template-columns:58px 1fr auto; gap:12px; padding:10px 0; border-bottom:1px solid #eef1f5; }
.timeline li:last-child{ border-bottom:0; }
.timeline time{ font-variant-numeric:tabular-nums; font-weight:650; color:var(--navy-800); font-size:14px; }
.timeline .tType{ font-size:12px; font-weight:650; text-transform:uppercase; letter-spacing:.04em; color:var(--text-3); }
.timeline .tDesc{ font-size:14px; white-space:pre-wrap; }
.timeline .tLoc{ font-size:13px; color:var(--text-2); }

.contactGrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; }
.contact102{ display:flex; flex-direction:column; gap:6px; padding:14px 16px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); }
.contact102 .cName{ font-weight:650; font-size:15px; }
.contact102 .cCat{ font-size:12px; color:var(--text-3); text-transform:uppercase; letter-spacing:.04em; }
.contact102 a.tel{ font-size:17px; font-weight:650; color:var(--primary); text-decoration:none; font-variant-numeric:tabular-nums; }
.contact102 .cNotes{ font-size:13px; color:var(--text-2); }
.contact102 .cActions{ display:flex; gap:6px; margin-top:4px; }

/* matrice permessi */
.permTable td, .permTable th{ padding:8px 10px !important; }
.permTable td:first-child{ font-weight:600; }
.permTable .seg{ display:inline-flex; border:1px solid var(--border-strong); border-radius:var(--r-sm); overflow:hidden; }
.permTable .seg label{ margin:0 !important; font-weight:600 !important; font-size:12.5px !important; color:var(--text-2) !important; }
.permTable .seg input{ position:absolute; opacity:0; pointer-events:none; }
.permTable .seg span{ display:block; padding:5px 11px; cursor:pointer; border-left:1px solid var(--border-strong); background:var(--surface); user-select:none; }
.permTable .seg label:first-child span{ border-left:0; }
.permTable .seg input:checked + span{ background:var(--navy-800); color:#fff; }
.permTable .seg input[value=none]:checked + span{ background:#6b7689; }
.permTable .seg input:focus-visible + span{ outline:2px solid var(--primary); outline-offset:-2px; }
.permGroupRow td{ background:var(--surface-2) !important; font-size:12px !important; text-transform:uppercase; letter-spacing:.05em; color:var(--text-3) !important; font-weight:650 !important; }

.userRow .uName{ font-weight:600; }
.userRow .uSub{ font-size:12.5px; color:var(--text-3); }
.avatarSm{ width:30px; height:30px; font-size:12px; border-radius:50%; display:inline-grid; place-items:center; background:var(--primary-100); color:var(--navy-800); font-weight:700; flex:none; }

.kv{ display:grid; grid-template-columns:max-content 1fr; gap:6px 16px; font-size:14px; }
.kv dt{ color:var(--text-3); }
.kv dd{ margin:0; font-weight:600; }
.secretBox{ display:flex; align-items:center; gap:10px; padding:12px 14px; border:1px dashed var(--gold); background:#fffaf0; border-radius:var(--r); }
.secretBox code{ font-size:18px; font-weight:700; letter-spacing:.06em; color:var(--text); }

/* ==========================================================================
   MODALE E NOTIFICHE
   ========================================================================== */
.modal102{ position:fixed; inset:0; z-index:300; display:grid; place-items:center; padding:16px; background:rgba(8,23,46,.55); }
.modal102 .mBox{ width:min(640px,100%); max-height:calc(100vh - 32px); display:flex; flex-direction:column; background:var(--surface); border-radius:var(--r-lg); box-shadow:var(--sh-3); overflow:hidden; }
.modal102.wide .mBox{ width:min(980px,100%); }
.modal102 .mHead{ display:flex; align-items:center; justify-content:space-between; gap:12px; padding:16px 20px; border-bottom:1px solid var(--border); }
.modal102 .mHead h2{ margin:0 !important; font-size:18px !important; }
.modal102 .mBody{ padding:18px 20px; overflow:auto; }
.modal102 .mFoot{ display:flex; justify-content:flex-end; gap:8px; flex-wrap:wrap; padding:14px 20px; border-top:1px solid var(--border); background:var(--surface-2); }
.modal102 .mFoot .spacer{ flex:1; }
.formRows{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.formRows .full{ grid-column:1/-1; }
.checkLine{ display:flex !important; align-items:center; gap:8px; font-weight:500 !important; color:var(--text) !important; font-size:14px !important; cursor:pointer; margin:0 !important; }
.fieldHint{ font-size:12.5px; color:var(--text-3); margin-top:4px; }

.toast102{ position:fixed; left:50%; bottom:24px; transform:translateX(-50%); z-index:400; display:flex; flex-direction:column; gap:8px; align-items:center; pointer-events:none; }
.toast102 .t{ pointer-events:auto; min-width:260px; max-width:min(560px,calc(100vw - 32px)); padding:11px 16px; border-radius:var(--r); background:var(--navy-900); color:#fff; box-shadow:var(--sh-3); font-size:14px; animation:toastIn .18s ease-out; }
.toast102 .t.ok{ background:#17603c; }
.toast102 .t.error{ background:#8f1f18; }
.toast102 .t.warn{ background:#7a4d00; }
@keyframes toastIn{ from{ transform:translateY(8px); opacity:0; } }

/* sola lettura: evidenzia che i comandi di modifica sono inattivi */
body.ui102 .panel.readOnlySection .sectionModule [data-write-control], body.ui102 .panel.readOnlySection .writeOnly{ display:none !important; }

/* ==========================================================================
   RESPONSIVE
   ========================================================================== */
@media (max-width: 1180px){
  .kpiRow{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .homeGrid{ grid-template-columns:1fr; }
}
@media (max-width: 980px){
  .sidebar102{ transform:translateX(-100%); transition:transform .2s ease; box-shadow:none; width:min(300px,86vw); }
  body.sbOpen .sidebar102{ transform:none; box-shadow:var(--sh-3); }
  .sbScrim{ position:fixed; inset:0; z-index:55; background:rgba(8,23,46,.45); display:none; }
  body.sbOpen .sbScrim{ display:block; }
  .main102{ margin-left:0; }
  .sbToggle{ display:inline-grid; }
  .topbar102{ padding:0 12px; gap:8px; }
  .userMeta{ display:none; }
  .auth102{ grid-template-columns:1fr; }
  .authSide{ display:none; }
  .authPanel{ padding:32px 24px; }
}
@media (max-width: 640px){
  body.ui102{ font-size:15px; }
  body.ui102 main.shell{ padding:16px 12px 56px !important; }
  .syncPill span{ display:none; }
  .syncPill{ padding:0 10px; }
  .kpiRow{ gap:10px; }
  .kpi102{ padding:12px 14px; }
  .kpi102 .kValue{ font-size:24px; }
  .formRows{ grid-template-columns:1fr; }
  body.ui102 .card, body.ui102 .editorBox{ padding:14px !important; border-radius:var(--r) !important; }
  body.ui102 .formGrid.two, body.ui102 .formGrid.three, body.ui102 .formGrid.four{ grid-template-columns:1fr !important; }
  .timeline li{ grid-template-columns:50px 1fr; }
  .timeline li .tAct{ grid-column:2; }
  .roBanner{ margin:12px 12px 0; }
  .modal102{ padding:0; place-items:end stretch; }
  .modal102 .mBox{ width:100%; max-height:92vh; border-radius:var(--r-lg) var(--r-lg) 0 0; }
  .pwRules{ grid-template-columns:1fr; }
  body.ui102 button, body.ui102 .buttonLike{ min-height:42px; }
}

/* stampa: solo il contenuto */
@media print{
  .sidebar102, .topbar102, .roBanner, .sbScrim, .toast102{ display:none !important; }
  .main102{ margin:0 !important; }
  body.ui102{ background:#fff !important; }
}

/* avvio: mostra solo il marchio finché non si sa se l'utente è già collegato */
body.booting .authForm, body.booting .authFoot{ visibility:hidden; }


/* ==========================================================================
   Pulsanti "componente": annullano lo stile globale dei pulsanti (anche quello precedente)
   ========================================================================== */
html body.ui102 :is(.sbItem,.syncPill,.userBtn,.iconBtn,.kpi102,.quickTile,.chip,.menu102 button){
  min-height:0 !important; box-shadow:none !important; transform:none !important; text-transform:none !important;
  background-image:none !important; letter-spacing:0 !important; width:auto;
}
html body.ui102 .sbItem{
  display:flex !important; justify-content:flex-start !important; text-align:left !important; width:100% !important;
  padding:8px 10px !important; margin:1px 0 !important; border:0 !important; border-radius:var(--r-sm) !important;
  background:transparent !important; color:#cdd6e4 !important; font:500 14px/1.3 var(--font) !important; gap:11px !important;
}
html body.ui102 .sbItem:hover{ background:rgba(255,255,255,.07) !important; color:#fff !important; }
html body.ui102 .sbItem.active{ background:#1d3a66 !important; color:#fff !important; box-shadow:inset 3px 0 0 var(--gold) !important; font-weight:600 !important; }
html body.ui102 .iconBtn{ display:inline-grid !important; place-items:center; width:38px !important; height:38px !important; padding:0 !important; border:0 !important; border-radius:var(--r-sm) !important; background:transparent !important; color:var(--text-2) !important; }
html body.ui102 .iconBtn:hover{ background:var(--surface-2) !important; color:var(--text) !important; }
html body.ui102 .syncPill{ display:inline-flex !important; height:32px !important; padding:0 12px !important; border-radius:16px !important; border:1px solid var(--border) !important; background:var(--surface) !important; color:var(--text-2) !important; font:500 13px/1 var(--font) !important; gap:8px !important; }
html body.ui102 .syncPill:hover{ border-color:var(--border-strong) !important; background:var(--surface-2) !important; }
html body.ui102 .userBtn{ display:flex !important; padding:4px 8px 4px 4px !important; border:0 !important; border-radius:22px !important; background:transparent !important; color:var(--text) !important; gap:10px !important; text-align:left !important; justify-content:flex-start !important; }
html body.ui102 .userBtn:hover{ background:var(--surface-2) !important; }
html body.ui102 .userMeta strong{ color:var(--text) !important; }
html body.ui102 .userMeta small{ color:var(--text-3) !important; }
html body.ui102 .menu102 button{ display:block !important; width:100% !important; text-align:left !important; justify-content:flex-start !important; padding:9px 12px !important; border:0 !important; border-radius:var(--r-sm) !important; background:transparent !important; color:var(--text) !important; font:500 14px/1.3 var(--font) !important; }
html body.ui102 .menu102 button:hover{ background:var(--surface-2) !important; }
html body.ui102 .menu102 button.danger{ color:var(--danger) !important; }
html body.ui102 .kpi102{ display:flex !important; flex-direction:column; align-items:flex-start !important; justify-content:flex-start !important; text-align:left !important; gap:4px !important; padding:16px 18px !important; border:1px solid var(--border) !important; border-radius:var(--r-lg) !important; background:var(--surface) !important; color:var(--text) !important; box-shadow:var(--sh-1) !important; font:inherit !important; width:100% !important; }
html body.ui102 .kpi102:hover{ border-color:var(--border-strong) !important; box-shadow:var(--sh-2) !important; background:var(--surface) !important; }
html body.ui102 .kpi102 .kLabel{ font-weight:600; font-size:13px; }
html body.ui102 .quickTile{ display:flex !important; align-items:center !important; justify-content:flex-start !important; text-align:left !important; gap:12px !important; padding:12px 14px !important; border:1px solid var(--border) !important; border-radius:var(--r) !important; background:var(--surface) !important; color:var(--text) !important; font:inherit !important; width:100% !important; }
html body.ui102 .quickTile:hover{ border-color:var(--primary) !important; background:var(--primary-50) !important; }
html body.ui102 .quickTile span{ color:var(--text) !important; font-weight:600 !important; font-size:14px !important; }
html body.ui102 .quickTile small{ color:var(--text-3) !important; font-weight:400 !important; }
html body.ui102 .chip{ display:inline-flex !important; padding:5px 12px !important; border-radius:16px !important; border:1px solid var(--border) !important; background:var(--surface) !important; color:var(--text-2) !important; font:600 13px/1.3 var(--font) !important; }
html body.ui102 .chip:hover{ border-color:var(--border-strong) !important; color:var(--text) !important; }
html body.ui102 .chip.active{ background:var(--navy-800) !important; border-color:var(--navy-800) !important; color:#fff !important; }
html body.ui102 .authForm .btnPrimary{ background:var(--navy-800) !important; border-color:var(--navy-800) !important; }
html body.ui102 .authForm .btnPrimary:hover{ background:var(--navy-700) !important; }
html body.ui102 .authForm .checkLine{ margin-top:14px !important; font-weight:500 !important; }
html body.ui102 .pwToggle{ min-height:32px !important; width:auto !important; }
html body.ui102 .sbToggle{ display:none !important; }
@media (max-width: 980px){ html body.ui102 .sbToggle{ display:inline-grid !important; } }
html body.ui102 .panel102 header .btnSm{ min-height:30px !important; }


/* ==========================================================================
   Priorità definitiva sui pulsanti precedenti (":not(#_)" aumenta la specificità)
   ========================================================================== */
html body.ui102 button:not(#_), html body.ui102 .buttonLike:not(#_){
  background:var(--primary) !important; background-image:none !important; color:#fff !important;
  border:1px solid var(--primary) !important; border-radius:var(--r-sm) !important; box-shadow:none !important;
  font:600 14px/1.2 var(--font) !important; text-shadow:none !important;
}
html body.ui102 button:not(#_):hover{ background:var(--primary-hover) !important; border-color:var(--primary-hover) !important; }
html body.ui102 :is(button.ghost, button.secondary, .buttonLike.ghost, .btnSecondary):not(#_){ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; }
html body.ui102 :is(button.ghost, button.secondary, .buttonLike.ghost, .btnSecondary):not(#_):hover{ background:var(--surface-2) !important; border-color:#9ea9b8 !important; }
html body.ui102 :is(button.dangerText, button.danger, .btnDanger):not(#_){ background:var(--surface) !important; color:var(--danger) !important; border:1px solid var(--danger-bd) !important; }
html body.ui102 :is(button.dangerText, button.danger, .btnDanger):not(#_):hover{ background:var(--danger-bg) !important; }
html body.ui102 button.btnDangerSolid:not(#_){ background:var(--danger) !important; border-color:var(--danger) !important; color:#fff !important; }
html body.ui102 :is(button.ok, button.ghost.ok):not(#_){ background:var(--ok-bg) !important; color:var(--ok) !important; border-color:var(--ok-bd) !important; }
html body.ui102 button.btnLink:not(#_){ background:none !important; border:0 !important; color:var(--primary) !important; padding:6px 0 !important; min-height:0 !important; }
html body.ui102 button.btnLink:not(#_):hover{ text-decoration:underline; background:none !important; }
html body.ui102 .pwToggle:not(#_){ background:transparent !important; border:0 !important; color:var(--primary) !important; font-size:13px !important; }
html body.ui102 .authForm .btnPrimary:not(#_){ background:var(--navy-800) !important; border-color:var(--navy-800) !important; }
html body.ui102 .authForm .btnPrimary:not(#_):hover{ background:var(--navy-700) !important; }

html body.ui102 .sbItem:not(#_){ background:transparent !important; color:#cdd6e4 !important; border:0 !important; font:500 14px/1.3 var(--font) !important; }
html body.ui102 .sbItem:not(#_):hover{ background:rgba(255,255,255,.07) !important; color:#fff !important; }
html body.ui102 .sbItem.active:not(#_){ background:#1d3a66 !important; color:#fff !important; font-weight:600 !important; box-shadow:inset 3px 0 0 var(--gold) !important; }
html body.ui102 .iconBtn:not(#_){ background:transparent !important; color:var(--text-2) !important; border:0 !important; }
html body.ui102 .iconBtn:not(#_):hover{ background:var(--surface-2) !important; color:var(--text) !important; }
html body.ui102 .syncPill:not(#_){ background:var(--surface) !important; color:var(--text-2) !important; border:1px solid var(--border) !important; border-radius:16px !important; font:500 13px/1 var(--font) !important; }
html body.ui102 .syncPill:not(#_):hover{ background:var(--surface-2) !important; }
html body.ui102 .userBtn:not(#_){ background:transparent !important; color:var(--text) !important; border:0 !important; border-radius:22px !important; font:inherit !important; }
html body.ui102 .userBtn:not(#_):hover{ background:var(--surface-2) !important; }
html body.ui102 .menu102 button:not(#_){ background:transparent !important; color:var(--text) !important; border:0 !important; font:500 14px/1.3 var(--font) !important; }
html body.ui102 .menu102 button:not(#_):hover{ background:var(--surface-2) !important; }
html body.ui102 .menu102 button.danger:not(#_){ color:var(--danger) !important; }
html body.ui102 .kpi102:not(#_){ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r-lg) !important; font:inherit !important; box-shadow:var(--sh-1) !important; }
html body.ui102 .kpi102:not(#_):hover{ border-color:var(--border-strong) !important; box-shadow:var(--sh-2) !important; }
html body.ui102 .quickTile:not(#_){ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r) !important; font:inherit !important; }
html body.ui102 .quickTile:not(#_):hover{ background:var(--primary-50) !important; border-color:var(--primary) !important; }
html body.ui102 .chip:not(#_){ background:var(--surface) !important; color:var(--text-2) !important; border:1px solid var(--border) !important; border-radius:16px !important; font:600 13px/1.3 var(--font) !important; }
html body.ui102 .chip.active:not(#_){ background:var(--navy-800) !important; color:#fff !important; border-color:var(--navy-800) !important; }
html body.ui102 .moduleMenu .moduleBtn:not(#_), html body.ui102 .droneSubNav button:not(#_){ background:transparent !important; color:var(--text-2) !important; border:0 !important; border-bottom:2px solid transparent !important; border-radius:0 !important; font:600 14px/1.2 var(--font) !important; }
html body.ui102 .moduleMenu .moduleBtn:not(#_):hover, html body.ui102 .droneSubNav button:not(#_):hover{ color:var(--text) !important; border-bottom-color:var(--border-strong) !important; background:transparent !important; }
html body.ui102 .moduleMenu .moduleBtn.active:not(#_), html body.ui102 .droneSubNav button.active:not(#_){ color:var(--primary) !important; border-bottom-color:var(--primary) !important; background:transparent !important; }
html body.ui102 .calEventV85:not(#_){ min-height:0 !important; padding:2px 6px !important; font-size:12px !important; font-weight:500 !important; border-radius:4px !important; justify-content:flex-start !important; text-align:left !important; }
html body.ui102 .calEventV85.blue:not(#_){ background:var(--info-bg) !important; color:var(--info) !important; border-color:var(--info-bd) !important; }
html body.ui102 .calEventV85.orange:not(#_), html body.ui102 .calEventV85.yellow:not(#_){ background:var(--warn-bg) !important; color:var(--warn) !important; border-color:var(--warn-bd) !important; }
html body.ui102 .calEventV85.red:not(#_){ background:var(--danger-bg) !important; color:var(--danger) !important; border-color:var(--danger-bd) !important; }
html body.ui102 .calEventV85.green:not(#_){ background:var(--ok-bg) !important; color:var(--ok) !important; border-color:var(--ok-bd) !important; }

/* pannelli "hero" e riquadri colorati delle versioni precedenti -> superfici sobrie */
html body.ui102 :is(.heroNote,.resultCard,.excerpt,.infoItem.highlight,.catastoBox,.pcTimerBox,.clothingLoadedGrid .miniInfo,.clothingSheet.compactSheet,.cadastreAssistCard,
  .clothingOrderHero,.clothingSummaryTop,.clothingSummaryAgentCard,.manualAppPro .manualHeroTitle,.manualV44 .manualHeroTitle,.clothingWorkflowHelp,.kpiCard,
  .sectionTitle.residenceHero,.dronesHero,.subModuleHero,.uasHeroKpi,.preflightCardV80,.pgKpiV81,.uasCommandCardV81,.missionEvalCardV82,.hazardEditorV82,
  .evaluationPanelV83,.todoHeroV85,.calendarHeroV85,.todoDashboardCardV85,.contactDashboardCardV91,.contactPrimaryBlockV91,.contactHeroV91,.manualV43 details.manualFunctionDetail summary){
  background:var(--surface) !important; background-image:none !important; color:var(--text) !important;
  border:1px solid var(--border) !important; border-radius:var(--r-lg) !important; box-shadow:none !important; text-shadow:none !important;
}
html body.ui102 :is(.todoHeroV85,.calendarHeroV85,.contactHeroV91,.sectionTitle.residenceHero,.dronesHero,.manualAppPro .manualHeroTitle,.manualV44 .manualHeroTitle) *{ color:inherit !important; text-shadow:none !important; }
html body.ui102 :is(.todoHeroV85,.calendarHeroV85,.contactHeroV91,.sectionTitle.residenceHero,.dronesHero,.manualAppPro .manualHeroTitle,.manualV44 .manualHeroTitle) :is(p,.muted,small){ color:var(--text-2) !important; }
html body.ui102 :is(.metricTileV87,.resHeroKpiV85,.todoKpi,.statCard,.uasCommandCardV81.primary){
  background:var(--surface) !important; background-image:none !important; color:var(--text) !important; border:1px solid var(--border) !important;
  border-left:4px solid var(--border-strong) !important; border-radius:var(--r) !important; box-shadow:none !important;
}
html body.ui102 :is(.metricTileV87,.resHeroKpiV85,.todoKpi) *{ color:inherit !important; text-shadow:none !important; }
html body.ui102 :is(.metricTileV87.total,.resHeroKpiV85.total){ border-left-color:var(--navy-800) !important; }
html body.ui102 :is(.metricTileV87.open,.resHeroKpiV85.open){ border-left-color:var(--primary) !important; }
html body.ui102 :is(.metricTileV87.yellow,.todoKpi.yellow,.resHeroKpiV85.yellow,.metricTileV87.orange,.todoKpi.orange){ border-left-color:#d59a1c !important; }
html body.ui102 :is(.metricTileV87.red,.todoKpi.red,.resHeroKpiV85.red){ border-left-color:var(--danger) !important; }
html body.ui102 :is(.metricTileV87.done,.metricTileV87.green,.todoKpi.green,.resHeroKpiV85.done){ border-left-color:var(--ok) !important; }
html body.ui102 :is(.barFill,.barLine div i,.resProgressV87 b,.barRowV87 div i){ background:var(--primary) !important; background-image:none !important; }
html body.ui102 .card :is(.streetHint,.hint,.streetCardText){ background:var(--surface-2) !important; background-image:none !important; }

/* riquadri indicatori che nel codice precedente sono <button> */
html body.ui102 :is(button.resHeroKpiV85, button.todoKpi, button.kpiCard, button.pgKpiV81, button.metricTileV87):not(#_){
  background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-left:4px solid var(--border-strong) !important;
  border-radius:var(--r) !important; text-align:left !important; justify-content:flex-start !important; align-items:flex-start !important;
  font:inherit !important; padding:14px 16px !important; min-height:0 !important; box-shadow:none !important;
  display:flex !important; flex-direction:column !important; gap:2px !important; width:100% !important;
}
html body.ui102 :is(button.resHeroKpiV85, button.todoKpi, button.kpiCard, button.pgKpiV81, button.metricTileV87):not(#_):hover{ background:var(--surface-2) !important; border-color:var(--border-strong) !important; }
html body.ui102 :is(button.resHeroKpiV85, button.todoKpi, button.kpiCard, button.pgKpiV81, button.metricTileV87) *{ color:inherit !important; text-shadow:none !important; }
html body.ui102 :is(button.resHeroKpiV85, button.todoKpi, button.kpiCard, button.pgKpiV81) :is(b, strong, .num, big){ font-size:26px !important; line-height:1.1 !important; font-weight:700 !important; color:var(--text) !important; }
html body.ui102 :is(button.resHeroKpiV85, button.kpiCard, button.pgKpiV81) span{ font-size:13px !important; color:var(--text-2) !important; font-weight:600 !important; order:-1; }
html body.ui102 :is(button.resHeroKpiV85, button.kpiCard, button.pgKpiV81) small{ font-size:12.5px !important; color:var(--text-3) !important; font-weight:400 !important; }
html body.ui102 :is(button.resHeroKpiV85.total, button.pgKpiV81.blue){ border-left-color:var(--navy-800) !important; }
html body.ui102 :is(button.resHeroKpiV85.open, button.pgKpiV81.purple){ border-left-color:var(--primary) !important; }
html body.ui102 :is(button.resHeroKpiV85.yellow, button.pgKpiV81.warn, button.todoKpi.yellow, button.todoKpi.orange, button.kpiCard.warn){ border-left-color:#d59a1c !important; }
html body.ui102 :is(button.resHeroKpiV85.red, button.pgKpiV81.bad, button.todoKpi.red, button.kpiCard.bad){ border-left-color:var(--danger) !important; }
html body.ui102 :is(button.resHeroKpiV85.done, button.pgKpiV81.ok, button.todoKpi.green, button.kpiCard.ok){ border-left-color:var(--ok) !important; }

/* l'avviso "sola lettura" ora è il banner sotto la barra superiore */
html body.ui102 .readOnlySection{ outline:0 !important; border:0 !important; background:none !important; padding:0 !important; }
html body.ui102 .readOnlySection::before{ content:none !important; display:none !important; }
@media (max-width:640px){ .toast102{ bottom:auto; top:70px; } }

/* ==========================================================================
   Nucleo droni v102
   ========================================================================== */
html body.ui102 #drones .moduleMenu.groupedMenu102{ display:flex !important; flex-wrap:wrap !important; gap:4px 22px !important; overflow:visible; padding-bottom:0 !important; }
.navGroup102{ display:flex; align-items:flex-end; flex-wrap:wrap; }
.navGroupLabel102{ display:block; width:100%; font-size:11px; font-weight:650; letter-spacing:.06em; text-transform:uppercase; color:var(--text-3); padding:6px 14px 0; }
html body.ui102 #drones .groupedMenu102 .moduleBtn:not(#_){ padding:6px 14px 10px !important; }

.readyBanner{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:14px 18px; border-radius:var(--r-lg); border:1px solid var(--border); background:var(--surface); border-left:5px solid var(--border-strong); }
.readyBanner p{ margin:6px 0 0; color:var(--text-2); font-size:14px; }
.readyBanner.ok{ border-left-color:var(--ok); background:#f5fbf7; }
.readyBanner.warn{ border-left-color:#d59a1c; background:#fffaf0; }
.readyBanner.danger{ border-left-color:var(--danger); background:#fdf6f5; }
.readyBanner .badge102{ font-size:13px !important; }
.kpi102 .kValue small{ font-size:15px; color:var(--text-3); font-weight:600; }

.flow102{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; padding:14px 18px 18px; counter-reset:step; }
html body.ui102 .flowStep:not(#_){ display:flex !important; align-items:flex-start !important; justify-content:flex-start !important; text-align:left !important; gap:10px !important; padding:12px 14px !important;
  background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r) !important; font:inherit !important; min-height:0 !important; width:100%; position:relative; }
html body.ui102 .flowStep:not(#_):hover{ border-color:var(--primary) !important; background:var(--primary-50) !important; }
.flowStep b{ flex:none; width:26px; height:26px; border-radius:50%; display:grid; place-items:center; background:var(--navy-800); color:#fff; font-size:13px; }
.flowStep span{ font-weight:650; font-size:14px; line-height:1.3; }
.flowStep small{ display:block; font-weight:400; font-size:12.5px; color:var(--text-3); margin-top:3px; }

.flowBar102{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; margin:0 0 14px; padding:8px 10px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); }
html body.ui102 .flowBar102 button:not(#_){ background:transparent !important; color:var(--text-3) !important; border:0 !important; padding:4px 8px !important; min-height:0 !important; font:600 13px/1.2 var(--font) !important; gap:6px !important; }
.flowBar102 button b{ width:20px; height:20px; border-radius:50%; display:inline-grid; place-items:center; background:#e3e8ef; color:var(--text-2); font-size:11px; }
html body.ui102 .flowBar102 button.cur:not(#_){ color:var(--primary) !important; }
.flowBar102 button.cur b{ background:var(--primary); color:#fff; }
.flowBar102 button.done b{ background:var(--ok); color:#fff; }
.flowBar102 .sep{ color:var(--text-3); }

.hbar{ display:grid; grid-template-columns:170px 1fr 110px; gap:10px; align-items:center; padding:6px 0; font-size:14px; }
.hbar i{ height:8px; background:#e8ecf2; border-radius:4px; overflow:hidden; }
.hbar i b{ display:block; height:100%; background:var(--primary); border-radius:4px; }
.hbar em{ font-style:normal; color:var(--text-2); font-variant-numeric:tabular-nums; text-align:right; }

.legacyDetails102{ margin-top:18px; border:1px solid var(--border); border-radius:var(--r-lg); background:var(--surface); }
.legacyDetails102 > summary{ cursor:pointer; padding:14px 18px; font-weight:650; color:var(--text-2); }
.legacyDetails102[open] > summary{ border-bottom:1px solid var(--border); }
.legacyDetails102 > *:not(summary){ margin:14px; }

/* filtri affiancati invece che impilati */
html body.ui102 .filterGrid{ display:grid !important; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)) !important; gap:12px !important; }
html body.ui102 .filterGrid > div{ margin:0 !important; }
/* matrici e tabelle larghe: scorrimento orizzontale invece del taglio */
html body.ui102 #drones :is(.riskMatrixClassic, [id*="Matrix"], .uasDashboardGridV80 > *){ max-width:100%; overflow-x:auto; }
html body.ui102 #drones .uasDashboardGridV80{ display:grid !important; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)) !important; gap:14px !important; }
html body.ui102 #drones .grid.two{ display:grid; grid-template-columns:repeat(auto-fit,minmax(320px,1fr)); gap:14px; }

@media (max-width: 980px){ .flow102{ grid-template-columns:1fr 1fr; } }
@media (max-width: 640px){ .flow102{ grid-template-columns:1fr; } .hbar{ grid-template-columns:110px 1fr 90px; } .readyBanner{ flex-direction:column; align-items:flex-start; } }
.droneSelect102{ display:none !important; }
@media (max-width: 640px){
  html body.ui102 #drones .droneSelect102{ display:block !important; margin:0 0 14px; font-weight:600 !important; }
  html body.ui102 #drones .moduleMenu.groupedMenu102{ display:none !important; }
}

/* ==========================================================================
   Riferimenti catastali v102
   ========================================================================== */
.cadSearch{ display:grid; grid-template-columns:auto 1fr 1fr; gap:10px; align-items:center; }
.cadInline{ display:flex; gap:8px; }
html body.ui102 .cadGpsBtn:not(#_){ min-height:46px !important; padding:10px 20px !important; font-size:15px !important; background:var(--navy-800) !important; border-color:var(--navy-800) !important; }
.cadHero{ display:flex; flex-wrap:wrap; gap:14px; align-items:stretch; padding:18px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); }
.cadRef{ min-width:130px; padding:12px 18px; border-radius:var(--r); background:var(--primary-50); border:1px solid var(--primary-100); display:flex; flex-direction:column; }
.cadRef span{ font-size:12px; font-weight:650; text-transform:uppercase; letter-spacing:.06em; color:var(--text-2); }
.cadRef strong{ font-size:38px; line-height:1.1; font-weight:750; color:var(--navy-800); font-variant-numeric:tabular-nums; }
.cadRef.small{ min-width:90px; background:var(--surface-2); border-color:var(--border); }
.cadRef.small strong{ font-size:26px; }
.cadMeta{ flex:1; min-width:280px; display:flex; flex-direction:column; gap:10px; }
.cadMeta .badge102{ white-space:normal !important; }
.cadGrid{ display:grid; grid-template-columns:minmax(0,1.6fr) minmax(260px,1fr); gap:16px; align-items:start; }
.cadActions{ display:flex; flex-direction:column; gap:8px; padding:14px 18px !important; }
.cadActions hr{ border:0; border-top:1px solid var(--border); margin:4px 0; width:100%; }
html body.ui102 .cadActions .buttonLike:not(#_), html body.ui102 .cadActions button:not(#_){ width:100%; justify-content:center; text-decoration:none; }
.mono{ font-family:var(--mono); font-size:13px; }
.cadMap{ width:100%; height:auto; display:block; border-radius:var(--r); border:1px solid var(--border); }
.cadMap .bg{ fill:#f4f2ea; }
.cadMap .nb{ fill:#fff; stroke:#9aa1ad; stroke-width:1; }
.cadMap .sel{ fill:rgba(27,77,143,.16); stroke:#1b4d8f; stroke-width:2.5; }
.cadMap .near{ fill:rgba(213,154,28,.16); stroke:#b07d10; stroke-width:2.5; stroke-dasharray:6 4; }
.cadMap .lbl{ font:600 11px var(--font); fill:#5b6473; text-anchor:middle; }
.cadMap .lblSel{ font:750 15px var(--font); fill:var(--navy-800); text-anchor:middle; }
.cadMap .pt{ fill:#1a73e8; stroke:#fff; stroke-width:2.5; }
.cadMap .acc{ fill:rgba(26,115,232,.12); stroke:rgba(26,115,232,.45); }
.cadMap .north{ fill:var(--navy-800); }
.cadMap .bar{ stroke:var(--navy-800); stroke-width:2; fill:none; }
#cadResult102{ display:flex; flex-direction:column; gap:14px; }
@media (max-width: 980px){ .cadSearch{ grid-template-columns:1fr; } .cadGrid{ grid-template-columns:1fr; } }
@media (max-width: 640px){ .cadRef{ min-width:0; flex:1; } .cadRef strong{ font-size:32px; } }
body.catastoMode #streets > .sectionTitle, body.catastoMode #streets > .moduleMenu{ display:none !important; }

/* ==========================================================================
   v103 — Eventi e manifestazioni, calcolatori, notifiche push
   ========================================================================== */
.tabs103{ display:flex; gap:2px; border-bottom:1px solid var(--border); margin:0 0 16px; overflow-x:auto; scrollbar-width:none; }
.tabs103::-webkit-scrollbar{ display:none; }
html body.ui102 .tabs103 button:not(#_){ background:transparent !important; color:var(--text-2) !important; border:0 !important; border-bottom:2px solid transparent !important; border-radius:0 !important; box-shadow:none !important; padding:10px 14px !important; min-height:0 !important; font:600 14px/1.2 var(--font) !important; white-space:nowrap; cursor:pointer; }
html body.ui102 .tabs103 button:not(#_):hover{ color:var(--text) !important; background:transparent !important; border-bottom-color:var(--border-strong) !important; }
html body.ui102 .tabs103 button.active:not(#_){ color:var(--navy-800) !important; border-bottom-color:var(--primary) !important; }
html body.ui102 .tabs103 button:not(#_):focus-visible{ outline:2px solid var(--primary); outline-offset:-2px; }

.evOpGrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:12px; margin:0 0 16px; }
.evOpCard{ background:var(--surface); border:1px solid var(--border); border-left:4px solid var(--primary); border-radius:var(--r-lg); padding:14px 16px; box-shadow:var(--sh-1); cursor:pointer; }
.evOpCard:hover{ border-color:var(--border-strong); }
.evOpCard h3{ margin:6px 0 2px !important; font-size:16px !important; }
.evOpHead{ display:flex; justify-content:space-between; align-items:center; gap:8px; font-size:14px; }
.evOpLine{ display:flex; gap:6px; align-items:flex-start; font-size:13px; color:var(--text-2); margin-top:8px; }
.evOpLine svg{ width:16px; height:16px; flex:none; stroke:currentColor; fill:none; stroke-width:1.8; margin-top:2px; }
.evDocBtns{ display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }
.evDocBtns svg, .parereBar svg, .toolbar102 svg{ width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.8; vertical-align:-3px; margin-right:4px; }
.evDocBtns.big{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; }
html body.ui102 .evDocBtns.big button:not(#_){ justify-content:flex-start; min-height:52px; text-align:left; }
.evDocBtns.big small{ display:block; font-weight:500; color:var(--text-3); }
.evList{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); overflow:hidden; }
.evList .listRow{ padding:12px 14px; border-bottom:1px solid var(--border); margin:0; }
.evList .listRow:last-child{ border-bottom:0; }

.ckSummary{ display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px; }
.ckList{ list-style:none; margin:0; padding:0; display:grid; gap:6px; }
.ck{ display:flex; gap:10px; align-items:flex-start; padding:8px 10px; border-radius:var(--r); border:1px solid var(--border); background:var(--surface-2); }
.ck.ko{ background:var(--danger-bg); border-color:var(--danger-bd); }
.ck.warn{ background:var(--warn-bg); border-color:var(--warn-bd); }
.ck.ok{ background:var(--ok-bg); border-color:var(--ok-bd); }
.ckIco{ width:22px; height:22px; flex:none; border-radius:50%; display:grid; place-items:center; font-weight:700; font-size:12px; color:#fff; background:var(--text-3); }
.ck.ok .ckIco{ background:var(--ok); } .ck.warn .ckIco{ background:var(--warn); } .ck.ko .ckIco{ background:var(--danger); } .ck.info .ckIco{ background:var(--info); }
.ckLabel{ font-weight:600; font-size:14px; } .ckLabel small{ display:block; font-weight:600; font-size:11px; text-transform:uppercase; letter-spacing:.04em; color:var(--text-3); }
.ckNote{ font-size:13px; color:var(--text-2); }
.aiDocs{ display:grid; gap:4px; max-height:180px; overflow:auto; padding:8px; border:1px solid var(--border); border-radius:var(--r); background:var(--surface-2); }
.aiResult{ margin-top:14px; padding:14px; border:1px solid var(--info-bd); background:var(--info-bg); border-radius:var(--r-lg); }
.aiResult h4{ margin:12px 0 4px; font-size:14px; }
.aiHead{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:6px; }
.plainList{ margin:4px 0; padding-left:18px; display:grid; gap:4px; }
.spinner103{ display:inline-block; width:14px; height:14px; border:2px solid var(--info-bd); border-top-color:var(--info); border-radius:50%; animation:spin103 .8s linear infinite; vertical-align:-2px; margin-right:6px; }
@keyframes spin103{ to{ transform:rotate(360deg); } }
.panel102 header h3 svg{ width:18px; height:18px; stroke:currentColor; fill:none; stroke-width:1.8; vertical-align:-3px; }

.parereBar{ display:flex; justify-content:space-between; align-items:center; gap:12px; flex-wrap:wrap; padding:12px 14px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); margin-bottom:12px; }
.parereSheet{ background:#fff; border:1px solid var(--border); border-radius:var(--r-lg); padding:28px 32px; box-shadow:var(--sh-1); max-width:820px; }
.parereDoc{ font-family:Calibri,Carlito,"Segoe UI",Arial,sans-serif; font-size:14.5px; color:#111; line-height:1.4; }
.parereDoc .pdHead{ display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:22px; }
.parereDoc .pdLogoL{ height:54px; } .parereDoc .pdHeadR{ text-align:right; font-family:Georgia,serif; } .parereDoc .pdLogoR{ height:34px; display:block; margin-left:auto; }
.parereDoc p{ margin:0 0 4px; } .parereDoc .pdTop{ margin-bottom:14px; } .parereDoc .pdDest{ text-align:right; margin-bottom:14px; }
.parereDoc .pdH{ text-align:center; font-weight:700; margin:10px 0 4px; } .parereDoc .pdItem{ padding-left:16px; text-indent:-16px; }
.parereDoc .pdSign{ text-align:right; font-size:13px; margin-top:12px; }
.parereEditor h3{ margin:18px 0 6px !important; font-size:15px !important; }
.parereEditor textarea{ width:100%; }
.premRow{ display:grid; grid-template-columns:170px 1fr auto; gap:8px; align-items:start; margin-bottom:6px; }
.premRow select{ font-weight:700; }
.premBtns{ display:flex; gap:2px; }
html body.ui102 .premBtns .iconBtn:not(#_){ width:30px; height:30px; font-size:14px; }
.presLib{ display:grid; gap:4px; }
html body.ui102 .presLib button:not(#_){ justify-content:flex-start; text-align:left; white-space:normal; height:auto; }
.docViewer{ height:min(75vh,900px); background:#525659; border-radius:var(--r); overflow:hidden; display:flex; align-items:center; justify-content:center; }
.docViewer iframe{ width:100%; height:100%; border:0; background:#fff; }
.docViewer img{ max-width:100%; max-height:100%; object-fit:contain; }
.checkGrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:6px 16px; margin:10px 0; }
.pointsGrid{ grid-template-columns:repeat(auto-fill,minmax(340px,1fr)); }

.calcCards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; margin:16px 0 12px; }
.calcCard{ border:1px solid var(--border); border-radius:var(--r-lg); padding:12px 14px; background:var(--surface-2); display:flex; flex-direction:column; gap:2px; }
.calcCard small{ font-size:12px; font-weight:600; color:var(--text-3); text-transform:uppercase; letter-spacing:.03em; }
.calcCard b{ font-size:24px; line-height:1.2; color:var(--navy-800); font-variant-numeric:tabular-nums; }
.calcCard span{ font-size:13px; color:var(--text-2); }
.calcCard.ok{ background:var(--ok-bg); border-color:var(--ok-bd); } .calcCard.ok b{ color:var(--ok); }
.calcCard.warn{ background:var(--warn-bg); border-color:var(--warn-bd); } .calcCard.warn b{ color:var(--warn); }
.calcCard.bad{ background:var(--danger-bg); border-color:var(--danger-bd); } .calcCard.bad b{ color:var(--danger); }
.calcCard.off b{ color:var(--text-3); font-size:18px; }
.calcOut dd{ font-variant-numeric:tabular-nums; }
.pushBox{ display:flex; justify-content:space-between; align-items:center; gap:10px; flex-wrap:wrap; padding:10px 12px; border:1px dashed var(--border-strong); border-radius:var(--r); }
.pushBox.on{ border-style:solid; border-color:var(--ok-bd); background:var(--ok-bg); }

@media (max-width:720px){
  .premRow{ grid-template-columns:1fr; }
  .premBtns{ justify-content:flex-end; }
  .parereSheet{ padding:16px; }
  .calcCard b{ font-size:21px; }
  .pointsGrid{ grid-template-columns:1fr; }
}

/* ==========================================================================
   v104 — Turni di servizio, rubrica estesa
   ========================================================================== */
.shCode{ display:inline-flex; align-items:center; justify-content:center; min-width:34px; height:24px; padding:0 6px; border-radius:6px; font:700 12px/1 var(--font); border:1px solid var(--border-strong); background:#fff; color:var(--text); }
.shCode.sM, .shGrid td.sM{ background:#dbeafe; border-color:#93c5fd; color:#1e3a8a; }
.shCode.sP, .shGrid td.sP{ background:#fef3c7; border-color:#fcd34d; color:#78350f; }
.shCode.sS, .shGrid td.sS{ background:#ede9fe; border-color:#c4b5fd; color:#4c1d95; }
.shCode.sN, .shGrid td.sN{ background:#e0e7ff; border-color:#a5b4fc; color:#312e81; }
.shCode.sG, .shGrid td.sG{ background:#dcfce7; border-color:#86efac; color:#14532d; }
.shCode.sX, .shGrid td.sX{ background:#e0f2fe; border-color:#7dd3fc; color:#0c4a6e; }
.shCode.rest, .shGrid td.rest{ background:#f1f5f9; border-color:#cbd5e1; color:#475569; }
.shCode.abs, .shGrid td.abs{ background:#fee2e2; border-color:#fca5a5; color:#7f1d1d; }
.shCode.unk, .shGrid td.unk{ background:#fff; border-style:dashed; }
.shDayNav{ align-items:center; }
.shDayNav input[type=date]{ max-width:170px; }
.shGroups{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:12px; }
.shGroup .pBody{ display:grid; gap:6px; }
.shGroup.M header{ border-left:4px solid #3b82f6; } .shGroup.P header{ border-left:4px solid #f59e0b; } .shGroup.riposo header, .shGroup.assenza header, .shGroup.nd header{ opacity:.85; }
.shPerson{ display:grid; grid-template-columns:auto 1fr auto; gap:10px; align-items:center; padding:6px 8px; border-radius:var(--r); }
.shPerson.me{ background:var(--primary-50); outline:1px solid var(--primary-100); }
.shPerson b{ display:block; font-size:14px; } .shPerson small{ color:var(--text-3); font-size:12px; }
.shPerson a.tel{ font-weight:650; color:var(--primary); text-decoration:none; font-size:14px; white-space:nowrap; }
.shMine{ display:grid; gap:4px; max-width:620px; }
.shMineRow{ display:grid; grid-template-columns:110px auto 1fr auto; gap:10px; align-items:center; padding:7px 10px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); }
.shMineRow .d b{ font-size:16px; } .shMineRow.today{ border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-100); }
.shMineRow.past{ opacity:.55; } .shMineRow.hol .d{ color:var(--danger); }
.shGridWrap{ overflow:auto; border:1px solid var(--border); border-radius:var(--r-lg); background:var(--surface); max-height:70vh; }
.shGrid{ border-collapse:separate; border-spacing:0; font-size:12px; min-width:100%; }
.shGrid th, .shGrid td{ border-right:1px solid var(--border); border-bottom:1px solid var(--border); padding:4px 3px; text-align:center; min-width:32px; white-space:nowrap; }
.shGrid thead th{ position:sticky; top:0; background:var(--surface-2); z-index:2; font-weight:700; line-height:1.1; }
.shGrid thead th small{ display:block; font-weight:600; color:var(--text-3); font-size:10px; }
.shGrid thead th.sat{ background:#f1f5f9; } .shGrid thead th.hol{ background:#fee2e2; color:#991b1b; }
.shGrid th.nm{ position:sticky; left:0; background:var(--surface); z-index:1; text-align:left; padding:4px 8px; min-width:180px; font-weight:600; }
.shGrid thead th.nm{ z-index:3; background:var(--surface-2); }
.shGrid tr.me th.nm{ background:var(--primary-50); }
.shGrid td.today, .shGrid th.today{ box-shadow:inset 2px 0 0 var(--primary), inset -2px 0 0 var(--primary); }
.shGrid td[data-cell], .shGrid th[data-link]{ cursor:pointer; } .shGrid td[data-cell]:hover{ filter:brightness(.93); }
.shGrid tfoot td, .shGrid tfoot th{ background:var(--surface-2); color:var(--text-2); font-weight:600; }
.shLegendInline{ display:flex; flex-wrap:wrap; gap:8px 16px; margin:10px 0; font-size:13px; color:var(--text-2); }
.shLegTable input, .shLegTable select{ min-width:0; } .shLegTable tr.todo td{ background:var(--warn-bg); }
.shPick{ display:flex; flex-wrap:wrap; gap:6px; }
.contact102.reserved{ border-left:4px solid var(--warn); }
.contact102 a.tel small{ font-size:12px; font-weight:500; color:var(--text-3); }
.contact102 .cMail{ font-size:13px; word-break:break-all; }
.chip small{ opacity:.7; font-weight:500; }
.pbPhoneRow{ display:grid; grid-template-columns:1fr 1fr auto; gap:6px; margin-bottom:6px; }
@media (max-width:720px){ .shMineRow{ grid-template-columns:90px auto 1fr; } .shMineRow .badge102{ display:none; } .pbPhoneRow{ grid-template-columns:1fr auto; } .pbPhoneRow [data-pl]{ grid-column:1; } }
html body.ui102 .shGrid th:not(#_), html body.ui102 .shGrid td:not(#_){ padding:4px 3px !important; font-size:12px !important; text-transform:none !important; letter-spacing:0 !important; line-height:1.2 !important; height:auto !important; }
html body.ui102 .shGrid th.nm:not(#_){ padding:4px 8px !important; font-size:12.5px !important; }
html body.ui102 .shGrid thead th:not(#_){ font-weight:700 !important; color:var(--text) !important; }
.pageHead .actions{ display:flex; flex-wrap:wrap; gap:8px; max-width:100%; }
.pageHead > div{ min-width:0; }
@media (max-width:720px){ .pageHead .actions{ width:100%; } html body.ui102 .pageHead .actions button:not(#_){ flex:1 1 auto; } }
html body.ui102 .contact102 .badge102:not(#_){ white-space:normal !important; height:auto !important; line-height:1.3 !important; padding:3px 8px !important; }
.contact102{ min-width:0; overflow-wrap:anywhere; }

/* ==========================================================================
   v105 — barra superiore (versione, installa, segnala), segnalazioni, calcolatore date
   ========================================================================== */
.verBadge{ font:600 12px/1 var(--font); color:var(--text-3); background:var(--surface-2); border:1px solid var(--border); border-radius:12px; padding:5px 8px; white-space:nowrap; }
html body.ui102 .tbBtn:not(#_){ display:inline-flex; align-items:center; gap:6px; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:20px !important; padding:6px 12px !important; min-height:34px !important; font:600 13px/1 var(--font) !important; box-shadow:none !important; }
html body.ui102 .tbBtn:not(#_):hover{ border-color:var(--border-strong) !important; background:var(--surface-2) !important; }
html body.ui102 #tbReport:not(#_){ color:var(--primary) !important; border-color:var(--primary-100) !important; background:var(--primary-50) !important; }
.tbBtn svg{ width:16px; height:16px; stroke:currentColor; fill:none; stroke-width:1.9; }
@media (max-width:900px){ .tbBtn span{ display:none; } html body.ui102 .tbBtn:not(#_){ padding:6px 9px !important; } }
@media (max-width:520px){ .verBadge{ display:none; } }
.tkTypes{ display:grid; grid-template-columns:repeat(auto-fill,minmax(180px,1fr)); gap:8px; }
.tkType{ display:flex; gap:8px; align-items:flex-start; padding:10px 12px; border:1px solid var(--border); border-radius:var(--r); cursor:pointer; background:var(--surface); }
.tkType:has(input:checked){ border-color:var(--primary); background:var(--primary-50); }
.tkType b{ display:block; font-size:14px; } .tkType small{ color:var(--text-3); font-size:12px; }
.tkThread{ display:grid; gap:8px; }
.tkMsg{ padding:10px 12px; border-radius:var(--r); background:var(--surface-2); border:1px solid var(--border); max-width:92%; }
.tkMsg.adm{ background:var(--primary-50); border-color:var(--primary-100); margin-left:auto; }
.tkMsg.int{ background:var(--warn-bg); border-color:var(--warn-bd); }
.tkMsg.sys{ background:transparent; border-style:dashed; font-size:13px; color:var(--text-2); max-width:100%; }
.tkMeta{ font-size:12px; color:var(--text-3); margin-bottom:4px; } .tkText{ white-space:pre-wrap; }
.calcSplit{ display:grid; grid-template-columns:1fr 1fr; gap:24px; }
.calcSplit > section{ min-width:0; }
@media (max-width:980px){ .calcSplit{ grid-template-columns:1fr; } }
html body.ui102 .tkType:not(#_){ display:flex !important; flex-direction:row !important; align-items:flex-start !important; gap:8px !important; margin:0 !important; font-weight:400 !important; }
html body.ui102 .tkType input:not(#_){ width:auto !important; min-height:0 !important; margin:3px 0 0 !important; flex:none; }
@media (max-width:520px){ .tkTypes{ grid-template-columns:1fr 1fr; } .tkType small{ display:none; } }

/* ==========================================================================
   v107 — Supporto operatori (procedure, frasi multilingua, formazione), Albo
   ========================================================================== */
.tabBadge{ display:inline-block; min-width:18px; padding:1px 6px; margin-left:4px; border-radius:10px; background:var(--danger); color:#fff; font-size:11px; font-weight:700; line-height:16px; }
.cards107{ display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:10px; }
html body.ui102 .card107:not(#_){ display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:4px !important; text-align:left !important; padding:14px 16px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r-lg) !important; box-shadow:var(--sh-1) !important; min-height:0 !important; height:auto !important; font-weight:400 !important; white-space:normal !important; width:100% !important; text-transform:none !important; }
html body.ui102 .card107:not(#_):hover{ border-color:var(--primary) !important; }
.card107 b{ font-size:15px; } .card107 small{ color:var(--text-3); font-size:12px; } .card107 .muted{ font-size:12.5px; }
.card107 .meta107{ font-size:12.5px; color:var(--text-2); margin-top:2px; }
.prog107{ display:flex; align-items:center; gap:10px; margin:10px 0; font-size:13px; color:var(--text-2); }
.prog107 .bar{ flex:1; height:8px; background:var(--surface-2); border-radius:6px; overflow:hidden; border:1px solid var(--border); }
.prog107 .bar span{ display:block; height:100%; background:var(--ok, #16a34a); transition:width .2s; }
.steps107{ list-style:none; padding:0; margin:0 0 14px; display:grid; gap:6px; counter-reset:st; }
.steps107 li{ counter-increment:st; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); }
.steps107 li.done{ background:var(--ok-bg, #f0fdf4); border-color:var(--ok-bd, #bbf7d0); }
html body.ui102 .steps107 label:not(#_){ display:flex !important; gap:12px !important; align-items:flex-start !important; padding:12px 14px !important; margin:0 !important; cursor:pointer; font-weight:400 !important; }
html body.ui102 .steps107 input:not(#_){ width:22px !important; height:22px !important; min-height:0 !important; margin:1px 0 0 !important; flex:none; }
.steps107 b{ display:block; font-size:15px; } .steps107 b::before{ content:counter(st) ". "; color:var(--text-3); }
.steps107 small{ display:block; margin-top:3px; color:var(--text-2); font-size:13.5px; line-height:1.45; }
.steps107 li.done b{ text-decoration:line-through; text-decoration-color:var(--text-3); }
.langBar107{ display:flex; gap:6px; overflow-x:auto; padding:2px 0 10px; scrollbar-width:thin; }
html body.ui102 .lang107:not(#_){ display:flex !important; flex-direction:column !important; align-items:center !important; gap:2px !important; min-width:74px !important; padding:8px 10px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r) !important; height:auto !important; font-weight:400 !important; text-transform:none !important; }
html body.ui102 .lang107.active:not(#_){ border-color:var(--primary) !important; background:var(--primary-50) !important; box-shadow:0 0 0 2px var(--primary-100) !important; }
.lang107 b{ font-size:13px; letter-spacing:.04em; } .lang107 span{ font-size:12px; color:var(--text-2); white-space:nowrap; }
.freeRow107{ display:grid; grid-template-columns:1fr auto; gap:10px; align-items:start; }
.freeBtns107{ display:flex; flex-direction:column; gap:6px; }
@media (max-width:620px){ .freeRow107{ grid-template-columns:1fr; } .freeBtns107{ flex-direction:row; flex-wrap:wrap; } }
.phr107{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:10px; }
@media (max-width:520px){ .phr107{ grid-template-columns:1fr; } }
.phrCard107{ display:flex; gap:6px; align-items:stretch; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); overflow:hidden; }
.phrCard107.free{ margin-top:10px; border-color:var(--primary-100); }
html body.ui102 .phrMain107:not(#_){ flex:1; display:flex !important; flex-direction:column !important; align-items:flex-start !important; gap:4px !important; text-align:start !important; padding:12px 14px !important; background:transparent !important; color:var(--text) !important; border:0 !important; border-radius:0 !important; height:auto !important; min-height:0 !important; font-weight:400 !important; white-space:normal !important; text-transform:none !important; box-shadow:none !important; }
html body.ui102 .phrMain107:not(#_):active{ background:var(--primary-50) !important; }
.phrMain107 .tr{ font-size:18px; font-weight:600; line-height:1.35; width:100%; }
.phrMain107 .tr[dir=rtl]{ text-align:right; font-size:20px; }
.phrMain107 .it{ font-size:13px; color:var(--text-3); }
.phrMain107 .note{ font-size:12px; color:var(--warn); }
.phrBtns107{ display:flex; flex-direction:column; justify-content:center; gap:4px; padding:6px; border-left:1px solid var(--border); background:var(--surface-2); }
.spk107.playing{ color:var(--primary) !important; animation:pulse107 1s infinite; }
@keyframes pulse107{ 50%{ opacity:.45; } }
.big107{ font-size:clamp(28px,6vw,54px); font-weight:700; line-height:1.25; text-align:center; padding:24px 8px; overflow-wrap:anywhere; }
.big107Box{ max-width:min(960px,96vw) !important; }
.heard107{ margin-top:10px; padding:12px 14px; background:var(--primary-50); border:1px solid var(--primary-100); border-radius:var(--r); display:grid; gap:4px; }
.heard107 small{ color:var(--text-3); } .heard107 b{ font-size:17px; }
.trList107{ display:grid; gap:6px; margin-top:10px; }
html body.ui102 .trRow107:not(#_){ display:grid !important; grid-template-columns:auto 1fr auto; gap:12px !important; align-items:center !important; text-align:left !important; padding:12px 14px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r) !important; height:auto !important; min-height:0 !important; font-weight:400 !important; white-space:normal !important; text-transform:none !important; width:100% !important; }
html body.ui102 .trRow107.read:not(#_){ opacity:.75; }
.trRow107 .trIco svg{ width:22px; height:22px; stroke:var(--primary); fill:none; stroke-width:1.8; }
.trRow107 .trMain{ display:flex; flex-direction:column; min-width:0; } .trRow107 .trMain small{ color:var(--text-3); font-size:12.5px; }
.trRow107 .trTags{ display:flex; flex-wrap:wrap; gap:4px; justify-content:flex-end; }
@media (max-width:620px){ html body.ui102 .trRow107:not(#_){ grid-template-columns:auto 1fr; } .trRow107 .trTags{ grid-column:2; justify-content:flex-start; } }
.trBody107{ white-space:pre-wrap; line-height:1.55; }
.audGrid107{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:2px 12px; max-height:240px; overflow:auto; }
.albo107{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:8px 0; }

/* ==========================================================================
   v108 — Codici e leggi
   ========================================================================== */
.lawSearch108{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); padding:14px 16px; margin-bottom:14px; }
.lawSearchRow108{ display:grid; grid-template-columns:1fr minmax(160px,280px); gap:8px; }
html body.ui102 .lawSearchRow108 input:not(#_){ font-size:17px !important; min-height:46px !important; }
@media (max-width:640px){ .lawSearchRow108{ grid-template-columns:1fr; } }
.lawSearch108 .fieldHint a{ color:var(--primary); }
.lawBadge108{ display:inline-flex; align-items:center; justify-content:center; min-width:46px; padding:3px 8px; border-radius:8px; background:var(--navy-800, #0f2747); color:#fff; font:700 12px/1.2 var(--font); letter-spacing:.02em; white-space:nowrap; vertical-align:middle; }
.lawGrid108{ display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:10px; }
@media (max-width:520px){ .lawGrid108{ grid-template-columns:1fr; } }
html body.ui102 .lawCard108:not(#_){ display:grid !important; grid-template-columns:auto 1fr; grid-template-rows:auto auto; gap:4px 12px !important; align-items:start !important; text-align:left !important; padding:14px 16px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r-lg) !important; box-shadow:var(--sh-1) !important; height:auto !important; min-height:0 !important; font-weight:400 !important; white-space:normal !important; text-transform:none !important; width:100% !important; }
html body.ui102 .lawCard108:not(#_):hover{ border-color:var(--primary) !important; }
html body.ui102 .lawCard108.link:not(#_) .lawBadge108{ background:var(--surface-2); color:var(--text-2); border:1px solid var(--border); }
.lawCard108 .lawBadge108{ grid-row:1 / span 2; margin-top:2px; }
.lawMain108{ display:flex; flex-direction:column; gap:2px; min-width:0; } .lawMain108 b{ font-size:15px; line-height:1.3; } .lawMain108 small{ color:var(--text-3); font-size:12.5px; }
.lawMeta108{ grid-column:2; font-size:12.5px; color:var(--text-2); }
.quick108{ display:grid; gap:10px; padding-top:10px !important; padding-bottom:14px !important; }
.quickGroup108{ display:grid; grid-template-columns:140px 1fr; gap:8px; align-items:start; }
.quickGroup108 > span{ font-size:12px; font-weight:700; text-transform:uppercase; letter-spacing:.05em; color:var(--text-3); padding-top:6px; }
@media (max-width:640px){ .quickGroup108{ grid-template-columns:1fr; gap:4px; } }
html body.ui102 a.lawChip108:not(#_){ display:inline-flex; flex-direction:column; align-items:flex-start; gap:0; text-decoration:none; padding:5px 10px !important; height:auto !important; line-height:1.25 !important; color:var(--text) !important; max-width:240px; }
.lawChip108 small{ font-size:11px; color:var(--text-3); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:220px; }
.lawResGroup108{ margin-bottom:16px; }
.lawResGroup108 h3{ display:flex; align-items:center; gap:8px; font-size:15px !important; margin:0 0 8px !important; }
.lawResGroup108 h3 small{ color:var(--text-3); font-weight:600; }
.lawRes108{ display:block; text-decoration:none; color:var(--text); background:var(--surface); border:1px solid var(--border); border-radius:var(--r); padding:10px 14px; margin-bottom:6px; }
.lawRes108:hover{ border-color:var(--primary); }
.lawRes108 b{ display:block; font-size:14.5px; margin-bottom:3px; } .lawRes108 span{ display:block; font-size:13.5px; color:var(--text-2); line-height:1.45; }
.lawRes108.ab{ opacity:.6; }
.lawRes108 mark, .art108 mark{ background:#fde68a; color:inherit; border-radius:2px; padding:0 1px; }
.lawTools108{ flex-wrap:wrap; gap:8px; margin-bottom:12px; }
.lawTools108 > input{ flex:1 1 240px; min-width:0; }
.lawGo108{ display:flex; gap:6px; } html body.ui102 .lawGo108 input:not(#_){ width:90px !important; min-width:0 !important; }
.toc108{ display:grid; gap:4px; }
.tocHead108{ font-weight:800; font-size:14px; letter-spacing:.02em; margin:14px 0 4px; color:var(--navy-800, #0f2747); }
.tocItem108{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r); }
.tocItem108.lvl0{ border-left:4px solid var(--navy-800, #0f2747); }
.tocItem108 > summary{ display:flex; justify-content:space-between; gap:10px; padding:10px 14px; cursor:pointer; font-weight:600; font-size:14px; list-style:none; }
.tocItem108 > summary::-webkit-details-marker{ display:none; }
.tocItem108 > summary::before{ content:'▸'; color:var(--text-3); margin-right:2px; } .tocItem108[open] > summary::before{ content:'▾'; }
.tocItem108 > summary span{ flex:1; } .tocItem108 > summary small{ color:var(--text-3); font-weight:500; white-space:nowrap; }
.artList108{ display:grid; border-top:1px solid var(--border); }
.artList108.flat{ border:1px solid var(--border); border-radius:var(--r); background:var(--surface); }
.artRow108{ display:grid; grid-template-columns:96px 1fr auto auto; gap:10px; align-items:baseline; padding:8px 14px; text-decoration:none; color:var(--text); border-bottom:1px solid var(--border); font-size:14px; }
.artRow108:last-child{ border-bottom:0; } .artRow108:hover{ background:var(--primary-50); }
.artRow108 b{ white-space:nowrap; color:var(--primary); } .artRow108 span{ min-width:0; }
.artRow108.ab{ color:var(--text-3); } .artRow108.ab b{ color:var(--text-3); } .artRow108 small{ font-size:11px; color:var(--text-3); }
.star108{ color:#d97706; font-style:normal; }
@media (max-width:520px){ .artRow108{ grid-template-columns:78px 1fr auto; } .artRow108 small{ display:none; } }
.art108Head h2{ display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px; margin:6px 0 4px !important; line-height:1.25; }
.rub108{ flex-basis:100%; font-size:17px; font-weight:600; color:var(--text-2); }
.crumb108{ font-size:12.5px; color:var(--text-3); margin-top:4px; }
.artTools108{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:12px 0; }
html body.ui102 .artTools108 .on:not(#_){ color:#b45309 !important; border-color:#f59e0b !important; background:#fffbeb !important; }
html body.ui102 a.buttonLike.btnSm:not(#_){ min-height:30px !important; padding:5px 10px !important; font-size:13px !important; text-decoration:none; }
html body.ui102 a.buttonLike:not(#_){ text-decoration:none; display:inline-flex; align-items:center; gap:6px; }
.art108{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-1); padding:18px 22px; line-height:1.65; max-width:900px; }
.art108 p{ margin:0 0 .75em; overflow-wrap:anywhere; }
.comma108{ color:var(--primary); }
ins.mod108{ text-decoration:none; background:#fef9c3; box-shadow:inset 0 -2px 0 #facc15; border-radius:2px; }
.legend108{ font-size:12px; color:var(--text-3); margin-top:10px !important; }
.src108{ font-size:12.5px; color:var(--text-3); font-style:italic; }
a.lawRef{ color:var(--primary); text-decoration:underline; text-decoration-style:dotted; text-underline-offset:2px; }
.notes108{ margin-top:12px; border-top:1px dashed var(--border); padding-top:8px; font-size:.86em; color:var(--text-2); }
.notes108 summary{ cursor:pointer; font-weight:600; color:var(--text); margin-bottom:6px; }
.note108{ margin-top:14px; max-width:900px; } .note108 header small{ font-size:12px; }
.artNav108{ display:flex; justify-content:space-between; gap:10px; margin:14px 0 6px; max-width:900px; }
@media (max-width:620px){ .art108{ padding:14px 14px; } .artTools108 .spacer{ display:none; } }

/* ==========================================================================
   v109 — Ordinanze: scheda da documento con IA
   ========================================================================== */
.drop109{ display:flex !important; flex-direction:column; align-items:center; justify-content:center; gap:4px; padding:26px 16px; margin-top:6px !important; border:2px dashed var(--border-strong); border-radius:var(--r-lg); background:var(--surface-2); cursor:pointer; text-align:center; font-weight:400 !important; }
.drop109.over, .drop109:hover{ border-color:var(--primary); background:var(--primary-50); }
.dropIco109{ font-size:30px; } .drop109 b{ font-size:15px; } .drop109 small{ color:var(--text-3); font-size:12.5px; }
.qItem109{ border:1px solid var(--border); border-radius:var(--r-lg); padding:14px 16px; margin-top:14px; background:var(--surface); box-shadow:var(--sh-1); }
.qItem109.done{ background:var(--ok-bg, #f0fdf4); border-color:var(--ok-bd, #bbf7d0); }
.qHead109{ display:flex; justify-content:space-between; align-items:center; gap:10px; margin-bottom:8px; } .qHead109 b{ overflow-wrap:anywhere; }
.spin109{ height:6px; border-radius:4px; background:linear-gradient(90deg, var(--primary-100) 25%, var(--primary) 50%, var(--primary-100) 75%); background-size:200% 100%; animation:spin109 1.2s linear infinite; }
@keyframes spin109{ from{ background-position:200% 0; } to{ background-position:0 0; } }
.ordAiDetail109{ margin:12px 0; } .ordAiDetail109 h4{ margin:12px 0 6px; }
.aiTag109{ display:inline-block; font-size:12.5px; color:var(--text-2); background:var(--primary-50); border:1px solid var(--primary-100); border-radius:8px; padding:6px 10px; }

/* ==========================================================================
   v110 — Eventi: checklist CL-EVENTI
   ========================================================================== */
.clStats{ display:flex; flex-wrap:wrap; gap:6px; }
.clStat{ display:inline-flex; align-items:baseline; gap:6px; padding:5px 10px; border:1px solid var(--border); border-radius:8px; background:var(--surface-2); font-size:12.5px; color:var(--text-2); }
.clStat b{ font-size:15px; color:var(--text); }
.clStat.ko{ background:#fee2e2; border-color:#fecaca; } .clStat.pa{ background:#fef3c7; border-color:#fde68a; } .clStat.ok{ background:#dcfce7; border-color:#bbf7d0; } .clStat.na{ background:#f1f5f9; }
.cl110Subs{ margin:12px 0; }
.clFilters{ flex-wrap:wrap; gap:8px; margin-bottom:6px; }
.clMod{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); margin-bottom:8px; box-shadow:var(--sh-1); }
.clMod.pl{ border-left:4px solid var(--primary); }
.clMod > summary{ display:flex; justify-content:space-between; align-items:center; gap:10px; padding:12px 14px; cursor:pointer; list-style:none; }
.clMod > summary::-webkit-details-marker{ display:none; }
.clModT{ display:flex; flex-direction:column; gap:2px; min-width:0; } .clModH{ font-weight:600; } .clModT b{ color:var(--primary); margin-right:4px; } .clModH .badge102{ margin-left:6px; vertical-align:middle; } .clModT small{ color:var(--text-3); font-size:12px; font-weight:400; }
.clModC{ display:flex; flex-wrap:wrap; gap:4px; justify-content:flex-end; flex:none; max-width:45%; }
.clItems{ border-top:1px solid var(--border); }
.clItem{ display:grid; grid-template-columns:minmax(0,1.6fr) auto minmax(0,1fr); gap:10px 14px; padding:10px 14px; border-bottom:1px solid var(--border); align-items:start; }
.clItem.flash{ animation:clFlash 1.6s; } @keyframes clFlash{ 0%,60%{ background:var(--primary-50); } 100%{ background:transparent; } }
.clQ{ font-size:14px; line-height:1.4; } .clQ b{ color:var(--primary); margin-right:4px; } .clQ small{ display:block; color:var(--text-3); font-size:12px; margin-top:3px; }
.clSels{ display:flex; gap:6px; }
html body.ui102 .clSel:not(#_){ display:flex !important; flex-direction:column !important; gap:2px !important; margin:0 !important; font-size:11px !important; font-weight:700 !important; color:var(--text-3) !important; }
html body.ui102 .clSel select:not(#_){ min-width:128px; font-size:13px !important; min-height:36px !important; padding:4px 8px !important; }
html body.ui102 .clSel.ok select:not(#_){ background-color:#dcfce7 !important; border-color:#86efac !important; }
html body.ui102 .clSel.ko select:not(#_){ background-color:#fee2e2 !important; border-color:#fca5a5 !important; }
html body.ui102 .clSel.pa select:not(#_){ background-color:#fef3c7 !important; border-color:#fcd34d !important; }
html body.ui102 .clSel.na select:not(#_){ background-color:#f1f5f9 !important; }
html body.ui102 .clNote textarea:not(#_){ min-height:58px !important; font-size:13px !important; }
.clModAct{ padding:8px 14px 12px; }
.clCount{ display:block; text-align:right; font-size:11px; color:var(--text-3); }
.clTerms{ display:grid; gap:10px; } .clTerm{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:12px; align-items:start; padding:10px 0; border-bottom:1px dashed var(--border); }
.clTerm small{ display:block; color:var(--text-3); font-size:12.5px; margin-top:2px; }
.clTable td{ padding:3px !important; } html body.ui102 .clTable input:not(#_){ min-width:120px; min-height:34px !important; font-size:13px !important; }
.clCalc{ margin-top:8px; font-size:13px; color:var(--text-2); }
.clBar{ display:flex; height:14px; border-radius:7px; overflow:hidden; background:var(--surface-2); border:1px solid var(--border); margin:4px 0; }
.clBar span{ display:block; height:100%; } .clBar .ok{ background:#22c55e; } .clBar .ko{ background:#ef4444; } .clBar .pa{ background:#f59e0b; } .clBar .na{ background:#94a3b8; }
.clList{ margin:0; padding-left:18px; display:grid; gap:6px; font-size:13.5px; }
@media (max-width:900px){ .clItem{ grid-template-columns:1fr; } .clSels{ flex-wrap:wrap; } html body.ui102 .clSel select:not(#_){ min-width:140px; } .clTerm{ grid-template-columns:1fr; } .clModC{ max-width:none; } .clMod > summary{ flex-direction:column; align-items:flex-start; } }

/* ===================== v111: sinistri, relazioni, dotazioni, sequestri, quadro del giorno, cruscotto, 2FA ===================== */
body.ui102 label.buttonLike{ display:inline-flex; align-items:center; gap:6px; cursor:pointer; }
body.ui102 .buttonLike svg, .row111 .ic111 svg{ width:16px; height:16px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }
body.ui102 .notice.danger{ background:var(--danger-bg) !important; color:var(--danger) !important; border-color:var(--danger-bd) !important; border-left-color:var(--danger) !important; }
body.ui102 .notice.info{ background:var(--info-bg) !important; color:#174b86 !important; border-color:var(--info-bd) !important; border-left-color:var(--info) !important; }
.kpi102.static{ cursor:default; }
.list111{ display:grid; gap:8px; }
.row111{ display:grid; grid-template-columns:40px 1fr auto; gap:12px; align-items:center; padding:12px 14px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); }
.row111.clickable{ cursor:pointer; } .row111.clickable:hover{ border-color:var(--border-strong); background:var(--surface-2); }
.row111 .ic111{ width:40px; height:40px; border-radius:10px; display:grid; place-items:center; background:var(--primary-50); color:var(--primary); }
.row111 .ic111 svg{ width:22px; height:22px; }
.row111 .ic111.warn{ background:var(--warn-bg); color:var(--warn); } .row111 .ic111.danger{ background:var(--danger-bg); color:var(--danger); }
.row111 .tx111{ display:flex; flex-direction:column; gap:2px; min-width:0; }
.row111 .tx111 span{ color:var(--text-2); font-size:14px; } .row111 .tx111 small{ color:var(--text-3); font-size:12.5px; overflow:hidden; text-overflow:ellipsis; }
.row111 .st111{ display:flex; flex-direction:column; align-items:flex-end; gap:4px; } .row111 .st111 small{ color:var(--text-3); font-size:12px; }
.inl111{ display:flex; gap:6px; align-items:center; } .inl111 > input{ flex:1; min-width:0; }
.chk111{ display:flex; flex-wrap:wrap; gap:6px 18px; }
.let111{ display:inline-grid; place-items:center; width:26px; height:26px; border-radius:6px; background:var(--primary); color:#fff; font-weight:700; margin-right:4px; }
.mic111.rec111, body.ui102 button.mic111.rec111:not(#_){ background:var(--danger) !important; color:#fff !important; border-color:var(--danger) !important; animation:pulse111 1.4s infinite; }
@keyframes pulse111{ 0%,100%{ box-shadow:0 0 0 0 rgba(177,38,29,.4); } 50%{ box-shadow:0 0 0 6px rgba(177,38,29,0); } }
.ph111{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:12px; }
.ph111.small{ grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); }
.ph111 figure{ margin:0; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); overflow:hidden; display:flex; flex-direction:column; }
.ph111 img{ width:100%; aspect-ratio:4/3; object-fit:cover; background:var(--surface-2); cursor:zoom-in; display:block; }
.ph111 figcaption{ padding:8px; font-size:12.5px; color:var(--text-2); display:grid; gap:6px; }
.ph111 figcaption input{ font-size:13px; } .ph111 .phAct{ display:flex; gap:6px; justify-content:flex-end; }
.sk111 canvas{ width:100%; height:auto; aspect-ratio:3/2; border:1px solid var(--border-strong); border-radius:var(--r); touch-action:none; background:#fff; cursor:crosshair; display:block; margin:8px 0; }
.sk111 .chipRow .spacer{ flex:1; }
.viol111{ align-items:flex-start !important; padding:8px 0; border-bottom:1px solid var(--border); } .viol111 small{ color:var(--text-2); }
.plain111{ margin:0; padding-left:18px; display:grid; gap:6px; font-size:14px; }
.ex111{ display:grid; gap:6px; margin-top:10px; } .ex111 small{ display:inline-block; min-width:110px; color:var(--text-3); font-weight:600; }
.mini111{ width:100%; border-collapse:collapse; font-size:13.5px; } .mini111 td, .mini111 th{ padding:6px 8px; border-bottom:1px solid var(--border); text-align:left; vertical-align:top; }
tr.rowDanger td{ background:var(--danger-bg); } tr.rowWarn td{ background:var(--warn-bg); }
.dl111, .it111{ display:grid; grid-template-columns:1.6fr 1fr .8fr auto; gap:6px; margin-bottom:6px; }
.it111{ grid-template-columns:2fr .5fr .8fr 1fr auto; }
.cust111 li{ grid-template-columns:130px 1fr auto !important; }
.td111grp{ display:flex; gap:10px; align-items:baseline; padding:6px 0; border-bottom:1px solid var(--border); font-size:14px; } .td111grp:last-child{ border-bottom:0; }
.td111grp > b{ min-width:92px; color:var(--text-2); font-size:13px; } .td111grp.clickable{ cursor:pointer; }
.td111ev{ padding:8px 0; border-bottom:1px solid var(--border); font-size:14px; display:grid; gap:2px; } .td111ev:last-child{ border-bottom:0; } .td111ev small{ color:var(--text-3); font-weight:600; }
.td111ev.clickable{ cursor:pointer; }
.td111st{ border-bottom:1px solid var(--border); padding:6px 0; } .td111st summary{ cursor:pointer; font-size:14px; }
.td111ord{ padding:6px 0 6px 14px; border-left:3px solid var(--warn-bd); margin:6px 0; font-size:14px; }
.map111{ position:relative; height:380px; overflow:hidden; background:#e8ecef; touch-action:none; cursor:grab; user-select:none; border-radius:0 0 var(--r-lg) var(--r-lg); }
.map111 .tile111{ position:absolute; width:256px; height:256px; pointer-events:none; user-select:none; }
.m111{ position:absolute; width:16px; height:16px; border-radius:50%; border:2px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,.45); transform:translate(-50%,-50%); padding:0 !important; min-height:0 !important; display:inline-block; }
body.ui102 button.m111{ padding:0 !important; min-height:0 !important; border-radius:50% !important; border:2px solid #fff !important; }
.m111.ev, body.ui102 button.m111.ev{ background:#1b5fae !important; } .m111.ord, body.ui102 button.m111.ord{ background:#d97706 !important; } .m111.cr, body.ui102 button.m111.cr{ background:#c62828 !important; }
i.m111{ position:static; transform:none; width:12px; height:12px; vertical-align:-1px; margin-right:4px; }
.mapLeg111{ display:flex; gap:14px; flex-wrap:wrap; padding:8px 12px; font-size:12.5px; color:var(--text-2); }
.mapCtl111{ position:absolute; right:8px; top:8px; display:flex; flex-direction:column; gap:4px; z-index:2; }
body.ui102 .mapCtl111 button{ min-height:0 !important; width:32px; height:32px; padding:0 !important; background:#fff !important; color:#111 !important; border:1px solid #bbb !important; font-size:18px !important; }
.mapAttr111{ position:absolute; right:0; bottom:0; background:rgba(255,255,255,.85); font-size:11px; padding:1px 6px; z-index:2; }
.mapTip111{ position:absolute; transform:translate(-50%,-130%); background:#111; color:#fff; font-size:12.5px; padding:4px 8px; border-radius:6px; white-space:nowrap; z-index:3; pointer-events:none; }
.kpiGrid111{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:12px; margin-bottom:16px; }
.kCmp111{ font-size:12px; color:var(--text-3); } .up111{ color:var(--ok); font-weight:700; } .down111{ color:var(--danger); font-weight:700; }
.bars111{ display:grid; gap:6px; } .bars111 > div{ display:grid; grid-template-columns:minmax(90px,38%) 1fr 34px; gap:8px; align-items:center; font-size:13px; }
.bars111 span{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--text-2); } .bars111 i{ display:block; height:12px; border-radius:6px; background:var(--primary); } .bars111 b{ text-align:right; font-variant-numeric:tabular-nums; }
.trend111{ display:grid; grid-template-columns:repeat(12,1fr); gap:6px; align-items:end; height:150px; }
.trend111 > div{ display:flex; flex-direction:column; align-items:center; gap:4px; height:100%; } .trend111 small{ font-size:11px; color:var(--text-3); }
.tb111{ flex:1; width:100%; display:flex; gap:2px; align-items:flex-end; } .tb111 i{ flex:1; display:block; min-height:1px; border-radius:2px 2px 0 0; }
.tb111 .c, .lg111.c{ background:#c62828; } .tb111 .r, .lg111.r{ background:#1b5fae; } .tb111 .a, .lg111.a{ background:#94a3b8; }
i.lg111{ display:inline-block; width:12px; height:12px; border-radius:3px; vertical-align:-1px; margin-right:4px; }
.qr111{ display:flex; justify-content:center; margin:8px 0; } .qr111 svg{ width:220px; height:220px; background:#fff; }
.steps111{ margin:0 0 6px; padding-left:20px; display:grid; gap:4px; font-size:14px; }
.codes111{ display:grid; grid-template-columns:repeat(2,1fr); gap:8px; margin:10px 0; } .codes111 code{ font-size:17px; letter-spacing:1px; padding:8px; background:var(--surface-2); border:1px solid var(--border); border-radius:6px; text-align:center; user-select:all; }
@media (max-width:700px){
  .row111{ grid-template-columns:32px 1fr; } .row111 .st111{ grid-column:2; flex-direction:row; align-items:center; justify-content:flex-start; }
  .row111 .ic111{ width:32px; height:32px; }
  .dl111, .it111{ grid-template-columns:1fr 1fr; } .map111{ height:300px; }
  .cust111 li{ grid-template-columns:1fr !important; }
}
html body.ui102 button.m111:not(#_){ padding:0 !important; min-height:0 !important; width:16px; height:16px; border-radius:50% !important; border:2px solid #fff !important; }
html body.ui102 button.m111.ev:not(#_){ background:#1b5fae !important; } html body.ui102 button.m111.ord:not(#_){ background:#d97706 !important; } html body.ui102 button.m111.cr:not(#_){ background:#c62828 !important; }
i.m111.ev{ background:#1b5fae; } i.m111.ord{ background:#d97706; } i.m111.cr{ background:#c62828; }
.shDayNav input[type=month], .shDayNav input[type=date]{ width:auto !important; max-width:190px; }
.pageHead .actions select{ width:auto !important; min-width:150px; }
html body.ui102 .mapCtl111 button:not(#_){ min-height:0 !important; width:32px; height:32px; padding:0 !important; background:#fff !important; color:#111 !important; border:1px solid #bbb !important; font-size:18px !important; }

/* ===================== v112: procedure operative con bivi, cronometri e verifica ===================== */
.steps112 li.next{ border-color:var(--primary); box-shadow:0 0 0 2px var(--primary-100); }
.steps112 .stepX112{ padding:0 14px 12px 48px; display:grid; gap:6px; justify-items:start; }
.steps112 .stepX112 small, .askIn112 > small{ display:block; color:var(--text-2); font-size:13.5px; line-height:1.45; }
.steps112 em.at112{ font-style:normal; font-size:12px; color:var(--ok); margin-left:6px; }
.steps112 li.ask112{ background:var(--info-bg); border-color:var(--info-bd); } .steps112 li.ask112.done{ background:var(--surface); border-color:var(--border); }
.askIn112{ padding:12px 14px 12px 48px; position:relative; display:grid; gap:8px; }
.askIn112 b::before{ content:"?" !important; position:absolute; left:16px; top:11px; width:22px; height:22px; border-radius:50%; background:var(--info); color:#fff; display:grid; place-items:center; font-size:13px; }
.askOpts112{ display:flex; flex-wrap:wrap; gap:8px; }
html body.ui102 .askOpts112 button:not(#_){ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; min-height:40px; }
html body.ui102 .askOpts112 button.sel:not(#_){ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }
.tmBox112{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; font-size:13px; padding:6px 10px; border-radius:var(--r-sm); background:var(--warn-bg); border:1px solid var(--warn-bd); color:var(--warn); }
.tmBox112.over{ background:var(--danger-bg); border-color:var(--danger-bd); color:var(--danger); font-weight:600; }
.timers112{ display:grid; gap:8px; margin:0 0 12px; }
html body.ui102 button.tm112:not(#_){ display:flex; gap:10px; align-items:center; justify-content:flex-start; text-align:left; background:var(--warn-bg) !important; color:var(--warn) !important; border:1px solid var(--warn-bd) !important; }
html body.ui102 button.tm112.over:not(#_){ background:var(--danger-bg) !important; color:var(--danger) !important; border-color:var(--danger-bd) !important; }
.tm112 span{ font-weight:400; font-size:13px; }
.rev112{ color:var(--warn); font-weight:600; } .ok112{ color:var(--ok); font-weight:600; }
html body.ui102 .chip.warnChip112:not(#_){ border-color:var(--warn-bd) !important; color:var(--warn) !important; }
html body.ui102 .chip.warnChip112.active:not(#_){ background:var(--warn) !important; color:#fff !important; }
.verify112{ margin:12px 0 4px; padding:10px 12px; border-radius:var(--r); font-size:13.5px; display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; }
.verify112.todo{ background:var(--warn-bg); border:1px solid var(--warn-bd); color:#6d4600; } .verify112.ok{ background:var(--ok-bg); border:1px solid var(--ok-bd); color:#175e3b; }
.procDetail112 a.lawRef{ color:var(--primary); text-decoration:underline; text-underline-offset:2px; }
@media (max-width:700px){ .steps112 .stepX112, .askIn112{ padding-left:14px; } .askIn112 b::before{ display:none; } html body.ui102 .askOpts112 button:not(#_){ flex:1 1 40%; } }
.steps112 li.ask112{ counter-increment:none; }
.steps112 .tmBox112 b::before, .steps112 .stepX112 b::before{ content:none !important; }
.steps112 .tmBox112 b, .steps112 li.ask112 b, .steps112 .stepX112 b{ text-decoration:none !important; }
.steps112 li.ask112.done b{ color:var(--text-2); }

/* ===================== v114: lettere, misure, foto con dati certi, agenda ===================== */
html body.ui102 label.buttonLike.big114:not(#_){ font-size:16px !important; padding:12px 20px !important; }
.res114{ margin:14px 0 6px; padding:14px 16px; border-radius:var(--r); background:var(--primary-50); border:1px solid var(--primary-100); }
.res114 .big114, .res114 > .big114{ font-size:28px; font-weight:700; color:var(--primary); line-height:1.2; } .res114 small{ font-size:15px; font-weight:600; }
.mmSvg114{ position:absolute; left:0; top:0; pointer-events:none; }
.map111.meas114{ height:420px; border-radius:var(--r); cursor:crosshair; }
.conv114{ display:grid; grid-template-columns:repeat(auto-fill,minmax(320px,1fr)); gap:12px; }
.conv114 .panel102{ margin:0; }
.convRow114{ display:grid; grid-template-columns:repeat(auto-fill,minmax(130px,1fr)); gap:8px; }
.convRow114 label{ display:grid; gap:4px; font-size:12.5px; color:var(--text-2); font-weight:600; }
.cal114{ display:grid; grid-template-columns:repeat(7,1fr); gap:4px; }
.cal114 .wd{ text-align:center; font-size:12px; color:var(--text-3); font-weight:600; padding:2px 0; }
html body.ui102 .cal114 button.dc:not(#_){ min-height:52px; padding:4px !important; display:flex; flex-direction:column; align-items:center; justify-content:flex-start; gap:4px; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; font-weight:600 !important; }
html body.ui102 .cal114 button.dc.today:not(#_){ border-color:var(--primary) !important; color:var(--primary) !important; }
html body.ui102 .cal114 button.dc.sel:not(#_){ background:var(--primary) !important; color:#fff !important; }
.cal114 .dc i{ display:flex; gap:3px; } .cal114 .dc i b{ width:6px; height:6px; border-radius:50%; background:var(--danger); display:block; } .cal114 .dc i b.au{ background:var(--info); }
.cal114 .dc.sel i b{ background:#fff; }
.ag114{ display:grid; grid-template-columns:56px 1fr; gap:10px; padding:8px 0; border-bottom:1px solid var(--border); align-items:start; } .ag114:last-child{ border-bottom:0; }
.ag114 .d{ font-weight:700; color:var(--primary); font-variant-numeric:tabular-nums; } .ag114 small{ display:block; color:var(--text-3); font-size:12.5px; } .ag114 em{ font-style:normal; color:var(--info); }
.ph111 figcaption span{ display:block; }
@media (max-width:700px){ html body.ui102 .cal114 button.dc:not(#_){ min-height:42px; } .map111.meas114{ height:340px; } }

/* ===================== v115: ordini di servizio ===================== */
.odsSlot115{ margin-bottom:12px; } .odsSlot115 h4{ margin:4px 0 8px; font-size:13px; letter-spacing:.06em; color:var(--text-2); text-transform:uppercase; }
.odsSlot115{ display:grid; grid-template-columns:repeat(auto-fill,minmax(280px,1fr)); gap:10px; } .odsSlot115 h4{ grid-column:1/-1; }
.ods115{ border:1px solid var(--border); border-radius:var(--r); background:var(--surface); padding:10px 12px; display:grid; gap:5px; font-size:14px; }
.ods115.me{ border-color:var(--ok); box-shadow:0 0 0 2px var(--ok-bd); background:var(--ok-bg); }
.odsT115{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; } .odsT115 b{ font-size:16px; font-variant-numeric:tabular-nums; }
.odsTitle115{ font-weight:600; color:var(--text); }
.odsM115{ color:var(--text-2); } .odsM115 .meName{ font-weight:700; color:var(--ok); }
.odsV115{ font-size:13px; color:var(--text-2); }
.plate115{ font:600 12px/1 ui-monospace,Menlo,Consolas,monospace; border:1px solid var(--border-strong); border-radius:4px; padding:2px 5px; background:#fff; color:#111; }
.odsN115{ margin:2px 0 0; padding-left:18px; font-size:13px; color:var(--text-2); display:grid; gap:2px; } .odsN115.c{ padding-left:0; }
.odsPrev115{ margin-bottom:14px; } .odsPrev115 h4{ margin:0 0 6px; } .odsPrev115 h4 .dl115{ text-transform:capitalize; }
.odsMine115 .pBody{ display:grid; gap:8px; }
.shDayNav .spacer{ flex:1; }
.odsGrid115 .odsSlot115{ grid-template-columns:repeat(auto-fill,minmax(240px,1fr)); }

/* ===================== v116: chiedi all'app, briefing, segnaletica ===================== */
.ans116{ background:var(--surface); border:1px solid var(--border); border-left:4px solid var(--primary); border-radius:var(--r-lg); padding:14px 16px; margin:12px 0; font-size:15px; line-height:1.55; }
.ans116.nf{ border-left-color:var(--warn); } .ans116 p{ margin:0 0 8px; } .ans116 ul{ margin:0 0 8px 18px; padding:0; }
html body.ui102 button.cite116:not(#_){ display:inline-flex; min-height:0 !important; padding:0 6px !important; margin:0 2px; font-size:11px !important; line-height:18px; border-radius:9px !important; background:var(--primary-50) !important; color:var(--primary) !important; border:1px solid var(--primary-100) !important; vertical-align:1px; }
.srcs116{ margin-top:12px; display:grid; gap:6px; } .srcs116 > b{ font-size:13px; color:var(--text-2); }
html body.ui102 button.src116:not(#_){ display:flex; gap:10px; align-items:flex-start; justify-content:flex-start !important; text-align:left; width:100%; background:var(--surface-2) !important; color:var(--text) !important; border:1px solid var(--border) !important; font-weight:400 !important; padding:8px 10px !important; }
.src116 .sid{ font:700 12px/22px ui-monospace,monospace; min-width:30px; text-align:center; border-radius:6px; background:var(--primary); color:#fff; }
.src116 small{ display:block; color:var(--text-3); font-size:12px; margin-top:2px; } .src116 b{ font-size:14px; }
.brief116{ font-size:17px; line-height:1.6; background:var(--surface-2); border-radius:var(--r); padding:14px 16px; max-height:50vh; overflow:auto; }
.thumb116{ width:40px; height:40px; object-fit:cover; border-radius:10px; background:var(--surface-2); }
.m111.ok116, html body.ui102 button.m111.ok116:not(#_), i.m111.ok116{ background:#1d7a4c !important; }

/* ==========================================================================
   v117 – allerte meteo, avvisi al cittadino, revisione atti, controllo veicolo, manuale
   ========================================================================== */
/* allerte */
.al117{ --al:#1d7a4c; --al-bg:#eaf6ef; border:1px solid var(--al); border-left:8px solid var(--al); background:var(--al-bg); border-radius:var(--r-lg); padding:12px 14px; margin:0 0 14px; display:grid; gap:8px; }
.al117.lv-y{ --al:#c99a00; --al-bg:#fff8db; } .al117.lv-o{ --al:#e06c00; --al-bg:#fff0e1; } .al117.lv-r{ --al:#c41e1e; --al-bg:#fde9e9; } .al117.lv-n{ --al:#8a94a6; --al-bg:#f3f5f8; }
.al117 .alHead{ display:flex; gap:10px; align-items:flex-start; } .al117 .alHead b{ font-size:17px; display:block; } .al117 .alHead span{ color:var(--text-2); font-size:13.5px; }
.al117 .alDot{ width:14px; height:14px; border-radius:50%; background:var(--al); flex:0 0 auto; margin-top:5px; box-shadow:0 0 0 3px rgba(255,255,255,.8); }
.al117.lv-o .alDot, .al117.lv-r .alDot{ animation:alPulse 1.6s infinite; } @keyframes alPulse{ 50%{ box-shadow:0 0 0 7px rgba(255,255,255,0); transform:scale(1.15); } }
.al117 .alPh{ display:flex; flex-wrap:wrap; gap:6px; }
.alChip{ display:inline-flex; gap:6px; align-items:center; padding:4px 10px; border-radius:999px; font-size:13.5px; border:1px solid; background:#fff; }
.alChip.lv-y{ border-color:#c99a00; background:#ffe680; color:#4a3800; } .alChip.lv-o{ border-color:#e06c00; background:#ffb366; color:#4a2000; } .alChip.lv-r{ border-color:#c41e1e; background:#e53935; color:#fff; } .alChip.lv-g{ border-color:#1d7a4c; background:#c9ecd7; }
.al117 .alTodo{ margin:0; padding-left:20px; font-size:14px; } .al117 .alTodo li{ margin:2px 0; }
.al117 .alProcs{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; } .al117 .alProcs > span{ font-weight:600; font-size:13.5px; margin-right:4px; }
.al117 .alNext, .al117 .alMon{ font-size:14px; } .al117 .alMon > div{ background:rgba(255,255,255,.7); border-radius:var(--r); padding:6px 9px; margin-top:2px; }
.al117 .alFoot{ display:flex; flex-wrap:wrap; gap:6px 14px; align-items:center; font-size:12.5px; color:var(--text-2); } .al117 .alFoot a{ color:var(--primary); }
.al117 .alMeteo summary{ cursor:pointer; font-size:13.5px; color:var(--text-2); } .al117 .alMeteo p{ margin:4px 0 0; font-size:13.5px; }
.al117.slim{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; padding:8px 12px; border-left-width:6px; } .al117.slim .alDot{ margin:0; }
.al117.compact{ padding:10px 12px; } .homeAl117 .al117{ cursor:pointer; margin-bottom:16px; }
/* avvisi */
.ntModels{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:12px; margin-bottom:12px; }
.ntModel{ display:grid; gap:4px; text-align:left; padding:16px; border:1px solid var(--border); border-radius:var(--r-lg); background:var(--surface); color:var(--text) !important; box-shadow:var(--sh-1); cursor:pointer; }
.ntModel:hover{ border-color:var(--primary); } .ntModel .ic{ font-size:28px; } .ntModel b{ font-size:16px; } .ntModel small{ color:var(--text-2); font-size:13px; font-weight:400; }
.nt117grid{ display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:14px; } @media (max-width:980px){ .nt117grid{ grid-template-columns:1fr; } }
.nt117prev{ border:1px solid var(--border); border-radius:var(--r); padding:14px; background:#fff; max-height:75vh; overflow:auto; }
.nt117doc header{ border-bottom:2px solid var(--navy-800); padding-bottom:6px; margin-bottom:8px; color:var(--navy-800); }
.nt117doc h1{ font-size:20px; margin:6px 0 10px; } .nt117doc h1 span{ display:block; font-size:16px; color:var(--text-2); font-weight:600; }
.nt117doc .nt2{ margin:0 0 7px; } .nt117doc .nt2 .it{ font-weight:600; } .nt117doc .nt2 .tr{ color:var(--text-2); }
.nt117doc table{ width:100%; border-collapse:collapse; margin:8px 0; } .nt117doc th, .nt117doc td{ border:1px solid var(--border-strong); padding:5px 7px; text-align:left; vertical-align:top; font-size:13.5px; }
.nt117doc th{ background:var(--primary-50); width:38%; } .nt117doc th small, .nt117doc td small{ display:block; font-weight:400; color:var(--text-2); }
.nt117doc footer{ display:flex; flex-wrap:wrap; justify-content:space-between; gap:8px; font-size:12px; color:var(--text-3); border-top:1px solid var(--border); padding-top:6px; }
.nt117doc [dir=rtl]{ text-align:right; }
.nt117full{ position:fixed; inset:0; z-index:9999; background:#fff; color:#111; overflow:auto; padding:14px 18px 40px; }
.nt117full .ntBar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; justify-content:space-between; position:sticky; top:0; background:#fff; padding-bottom:8px; border-bottom:1px solid #ddd; }
.nt117full .ntBody{ max-width:900px; margin:18px auto 0; } .nt117full h1{ font-size:clamp(26px,6vw,44px); line-height:1.15; margin:0 0 16px; }
.nt117full p{ font-size:clamp(20px,4.4vw,30px); line-height:1.35; margin:0 0 14px; } .nt117full dl{ display:grid; grid-template-columns:auto 1fr; gap:6px 16px; font-size:clamp(18px,3.8vw,26px); margin-top:18px; }
.nt117full dt{ color:#555; } .nt117full dd{ margin:0; font-weight:700; }
/* revisione */
.rv117 .rvTop{ margin-bottom:8px; } .rv117 .rvMode{ display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:6px 0 10px; } @media (max-width:640px){ .rv117 .rvMode{ grid-template-columns:1fr; } }
.rvOpt{ display:flex; gap:10px; align-items:flex-start; border:1px solid var(--border); border-radius:var(--r); padding:10px; cursor:pointer; background:var(--surface); }
.rvOpt:has(input:checked){ border-color:var(--primary); background:var(--primary-50); } .rvOpt small{ display:block; color:var(--text-2); font-size:12.5px; } .rvOpt input{ margin-top:3px; }
.rvSum{ border-radius:var(--r); padding:10px 12px; margin:6px 0 10px; border:1px solid; } .rvSum b{ display:block; } .rvSum span{ font-size:13.5px; } .rvSum p{ margin:6px 0 0; font-size:14px; }
.rvSum.ok{ background:var(--ok-bg); border-color:var(--ok-bd); } .rvSum.warn{ background:var(--warn-bg); border-color:var(--warn-bd); } .rvSum.danger{ background:var(--danger-bg); border-color:var(--danger-bd); }
.rvList{ margin:0; padding-left:22px; display:grid; gap:8px; } .rvList li{ padding:8px 10px; border:1px solid var(--border); border-radius:var(--r); background:var(--surface); }
.rvList li.g-alta{ border-left:4px solid var(--danger); } .rvList li.g-media{ border-left:4px solid #e0a100; } .rvList li.g-bassa{ border-left:4px solid var(--info); }
.rvH{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:3px; } .rvT{ font-weight:600; font-size:13.5px; }
.rvList blockquote{ margin:5px 0; padding:4px 8px; background:var(--surface-2); border-left:3px solid var(--border-strong); font-size:13.5px; font-style:italic; } .rvS{ font-size:13.5px; color:var(--ok); }
.rvRefs, .rvText{ margin-top:10px; } .rvRefs summary, .rvText summary{ cursor:pointer; font-weight:600; } .rvRefs ul{ margin:6px 0 0 18px; font-size:13.5px; }
.rvHl{ white-space:normal; font-size:14px; line-height:1.55; border:1px solid var(--border); border-radius:var(--r); padding:10px; margin-top:6px; max-height:420px; overflow:auto; background:#fff; } .rvHl mark{ background:#ffe08a; padding:0 2px; border-radius:2px; }
.rvFix{ margin-top:14px; border-top:1px solid var(--border); padding-top:10px; } .rvMods{ margin:4px 0 8px 18px; font-size:13.5px; }
.rvDiff{ border:1px solid var(--border); border-radius:var(--r); padding:10px; font-size:14px; line-height:1.6; background:#fff; max-height:480px; overflow:auto; }
.rvDiff del{ background:#fde2e1; color:#8d1b13; text-decoration:line-through; } .rvDiff ins{ background:#dff3e5; color:#14532d; text-decoration:none; }
/* controllo veicolo */
.vcBig{ min-height:46px; font-size:16px !important; }
.vcCards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(230px,1fr)); gap:10px; }
.vcCard{ display:grid; gap:3px; text-align:left; padding:12px; border:1px solid var(--border); border-left:6px solid var(--border-strong); border-radius:var(--r-lg); background:var(--surface); color:var(--text) !important; cursor:pointer; font-weight:400; }
.vcCard.ok{ border-left-color:var(--ok); } .vcCard.warn{ border-left-color:#e0a100; } .vcCard.bad{ border-left-color:var(--danger); } .vcCard span, .vcCard small{ color:var(--text-2); font-size:13px; } .vcCard .badge102{ justify-self:start; }
.vcForm{ max-width:760px; } .vcSel{ font-size:16px; min-height:44px; } .vcInfo{ font-size:13.5px; color:var(--text-2); margin:6px 0 10px; }
.vcSeg{ display:flex; gap:6px; flex-wrap:wrap; } body.ui102 .vcSeg button{ flex:1 1 60px; min-height:44px; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; }
body.ui102 .vcSeg button.on{ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }
.vcItems{ display:grid; gap:8px; } .vcItem{ display:grid; grid-template-columns:1fr auto; gap:6px 10px; align-items:center; padding:8px 0; border-bottom:1px solid var(--border); }
.vcItem .vcL small{ display:block; color:var(--text-3); font-size:12.5px; } .vcItem .vcNote{ grid-column:1 / -1; }
.vcOk{ display:flex; gap:6px; } body.ui102 .vcOk button{ min-width:72px; min-height:42px; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; }
body.ui102 .vcOk button.on.ok{ background:var(--ok) !important; color:#fff !important; border-color:var(--ok) !important; } body.ui102 .vcOk button.on.ko{ background:var(--danger) !important; color:#fff !important; border-color:var(--danger) !important; }
.vcThumbs{ display:flex; flex-wrap:wrap; gap:6px; margin:6px 0; } .vcThumbs img{ width:86px; height:86px; object-fit:cover; border-radius:var(--r); border:1px solid var(--border); cursor:pointer; }
.vcDmg{ display:grid; grid-template-columns:auto 1fr auto; gap:8px; align-items:center; margin-bottom:8px; } @media (max-width:640px){ .vcDmg{ grid-template-columns:1fr; } }
.vcProb{ list-style:none; margin:0; padding:0; display:grid; gap:8px; } .vcProb li{ display:flex; justify-content:space-between; gap:10px; align-items:flex-start; padding:8px 10px; border:1px solid var(--warn-bd); background:var(--warn-bg); border-radius:var(--r); }
.vcProb li.bad{ border-color:var(--danger-bd); background:var(--danger-bg); }
@media (max-width:640px){ .vcItem{ grid-template-columns:1fr; } body.ui102 .vcOk button{ flex:1; } }
/* manuale */
.mn117{ display:grid; grid-template-columns:240px minmax(0,1fr); gap:16px; align-items:start; } @media (max-width:900px){ .mn117{ grid-template-columns:1fr; } .mnToc{ display:none; } }
.mnToc{ position:sticky; top:calc(var(--topbar-h) + 10px); max-height:calc(100vh - var(--topbar-h) - 30px); overflow:auto; font-size:13.5px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); padding:10px; }
.mnToc b{ display:block; margin:8px 0 2px; color:var(--navy-800); } .mnToc a{ display:block; padding:2px 6px; color:var(--text-2); text-decoration:none; border-radius:4px; } .mnToc a:hover{ background:var(--primary-50); color:var(--primary); } .mnToc a.off{ opacity:.4; }
.mnMain section > h3{ margin:14px 0 8px !important; color:var(--navy-800); }
.mn117item{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); margin-bottom:8px; } .mn117item > summary{ cursor:pointer; padding:11px 14px; font-size:15.5px; }
.mn117item .mnBody{ padding:0 16px 14px; } .mn117item .mnBody p{ margin:0 0 8px; } .mn117item h4{ margin:10px 0 4px !important; font-size:14px; color:var(--text-2); } .mn117item ol, .mn117item ul{ margin:0 0 6px 20px; padding:0; } .mn117item li{ margin:3px 0; }
body.ui102 .vcOk button:not(.on):hover, body.ui102 .vcSeg button:not(.on):hover{ background:var(--primary-50) !important; color:var(--text) !important; }
body.ui102 .ntModel, body.ui102 .vcCard{ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; }
body.ui102 .vcCard{ border-left:6px solid var(--border-strong) !important; } body.ui102 .vcCard.ok{ border-left-color:var(--ok) !important; } body.ui102 .vcCard.warn{ border-left-color:#e0a100 !important; } body.ui102 .vcCard.bad{ border-left-color:var(--danger) !important; }
body.ui102 .ntModel:hover, body.ui102 .vcCard:hover{ background:var(--primary-50) !important; border-color:var(--primary) !important; }
/* v117: prevale sulla regola generale dei pulsanti (html body.ui102 button:not(#_)) */
html body.ui102 .vcOk button:not(#_), html body.ui102 .vcSeg button:not(#_){ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; }
html body.ui102 .vcOk button:not(#_):not(.on):hover, html body.ui102 .vcSeg button:not(#_):not(.on):hover{ background:var(--primary-50) !important; }
html body.ui102 .vcSeg button.on:not(#_){ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }
html body.ui102 .vcOk button.on.ok:not(#_){ background:var(--ok) !important; color:#fff !important; border-color:var(--ok) !important; }
html body.ui102 .vcOk button.on.ko:not(#_){ background:var(--danger) !important; color:#fff !important; border-color:var(--danger) !important; }
html body.ui102 .ntModel:not(#_), html body.ui102 .vcCard:not(#_){ background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; display:grid; justify-items:start; text-align:left; font-weight:400; }
html body.ui102 .vcCard:not(#_){ border-left:6px solid var(--border-strong) !important; }
html body.ui102 .vcCard.ok:not(#_){ border-left-color:var(--ok) !important; } html body.ui102 .vcCard.warn:not(#_){ border-left-color:#e0a100 !important; } html body.ui102 .vcCard.bad:not(#_){ border-left-color:var(--danger) !important; }
html body.ui102 .ntModel:not(#_):hover, html body.ui102 .vcCard:not(#_):hover{ background:var(--primary-50) !important; }

/* ==========================================================================
   v118 – meteo e qualità dell'aria
   ========================================================================== */
.aria118{ --al:#1d7a4c; --al-bg:#eaf6ef; display:flex; gap:10px; align-items:flex-start; border:1px solid var(--al); border-left:8px solid var(--al); background:var(--al-bg); border-radius:var(--r-lg); padding:12px 14px; margin:0 0 14px; }
.aria118.lv-r{ --al:#c41e1e; --al-bg:#fde9e9; } .aria118.lv-n, .aria118.lv-off{ --al:#8a94a6; --al-bg:#f3f5f8; }
.aria118 b{ display:block; font-size:16px; } .aria118 span{ color:var(--text-2); font-size:13.5px; } .aria118 .alDot{ width:14px; height:14px; border-radius:50%; background:var(--al); flex:0 0 auto; margin-top:4px; }
.aria118.slim{ padding:8px 12px; border-left-width:6px; cursor:pointer; align-items:center; } .aria118.slim b{ font-size:14.5px; } .aria118 .ariaGo{ margin-left:auto; white-space:nowrap; color:var(--primary); font-weight:600; }
.aria118 > div{ display:grid; gap:2px; } .aria118 a{ margin-left:auto; color:var(--primary); }
.ariaList{ margin:0; padding-left:20px; display:grid; gap:5px; font-size:14px; } .ariaList.on li::marker{ color:var(--danger); }
.pm118{ display:grid; grid-template-columns:repeat(4,1fr); gap:8px; } .pm118 > div{ display:grid; justify-items:center; gap:2px; padding:8px; border-radius:var(--r); background:var(--ok-bg); border:1px solid var(--ok-bd); }
.pm118 > div.near{ background:var(--warn-bg); border-color:var(--warn-bd); } .pm118 > div.over{ background:var(--danger-bg); border-color:var(--danger-bd); } .pm118 b{ font-size:22px; } .pm118 span, .pm118 small{ font-size:12px; color:var(--text-2); }
.mt118now{ display:grid; grid-template-columns:auto 1fr auto; gap:16px; align-items:center; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); padding:16px 18px; margin-bottom:14px; box-shadow:var(--sh-1); }
.mt118now .big{ font-size:56px; line-height:1; } .mt118now .t{ font-size:40px; line-height:1; display:block; } .mt118now span{ display:block; font-weight:600; } .mt118now small{ color:var(--text-2); }
.mt118now dl{ display:grid; grid-template-columns:auto auto; gap:2px 12px; margin:0; font-size:13.5px; } .mt118now dt{ color:var(--text-3); } .mt118now dd{ margin:0; font-weight:600; }
@media (max-width:640px){ .mt118now{ grid-template-columns:auto 1fr; } .mt118now dl{ grid-column:1 / -1; } }
.mtHz{ display:grid; gap:8px; } .mtHz > div{ display:flex; gap:10px; padding:8px 10px; border-radius:var(--r); border:1px solid var(--warn-bd); background:var(--warn-bg); } .mtHz > div.lv-r{ border-color:var(--danger-bd); background:var(--danger-bg); } .mtHz > div.lv-y{ background:#fffbe6; }
.mtHz span{ font-size:24px; } .mtHz p{ margin:2px 0 0; font-size:13.5px; }
.mt118hours{ display:flex; gap:6px; overflow-x:auto; padding-bottom:6px; } .mt118hours > div{ flex:0 0 64px; display:grid; justify-items:center; gap:1px; padding:6px 2px; border:1px solid var(--border); border-radius:var(--r); background:var(--surface-2); }
.mt118hours > div.warn{ border-color:var(--warn-bd); background:var(--warn-bg); } .mt118hours .i{ font-size:22px; } .mt118hours small{ font-size:11.5px; color:var(--text-2); }
.mt118days{ display:grid; gap:6px; } .mt118days > div{ display:grid; grid-template-columns:80px 34px 1fr auto auto auto; gap:10px; align-items:center; padding:6px 0; border-bottom:1px solid var(--border); font-size:13.5px; }
.mt118days .i{ font-size:22px; } .mt118days .tt b{ font-size:15px; } @media (max-width:760px){ .mt118days > div{ grid-template-columns:70px 30px 1fr auto; } .mt118days > div > span:nth-last-child(-n+2){ grid-column:3 / -1; color:var(--text-2); font-size:12.5px; } }
/* v119 – bollettino aria: immagine, conferma, diagnosi */
.aria118img{ margin:10px 0; } .aria118img img{ max-width:100%; border:1px solid var(--border); border-radius:var(--r); background:#fff; } .aria118img figcaption{ font-size:12.5px; color:var(--text-2); }
.ariaConf{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin:8px 0; padding:8px 10px; border:1px dashed var(--border-strong); border-radius:var(--r); } .ariaConf span{ font-size:13.5px; font-weight:600; }
.ariaDiag{ margin:6px 0 10px; font-size:13px; } .ariaDiag summary{ cursor:pointer; color:var(--text-2); } .ariaDiag ul{ margin:4px 0 4px 18px; }
/* v120 – descrizione foto */
.pd120thumbs{ display:flex; flex-wrap:wrap; gap:10px; } .pd120thumbs figure{ margin:0; position:relative; width:150px; } .pd120thumbs img{ width:150px; height:112px; object-fit:cover; border-radius:var(--r); border:1px solid var(--border); }
.pd120thumbs figcaption{ font-size:12px; color:var(--text-2); } .pd120thumbs button{ position:absolute; top:4px; right:4px; min-height:0 !important; padding:2px 7px !important; }
.pd120foto{ display:grid; grid-template-columns:260px 1fr; gap:14px; padding:14px 0; border-top:1px solid var(--border); margin-top:12px; } .pd120foto figure{ margin:0; } .pd120foto img{ width:100%; border-radius:var(--r); border:1px solid var(--border); }
.pd120foto figcaption{ font-size:12.5px; color:var(--text-2); } .pd120foto h4{ margin:8px 0 4px !important; font-size:14px; } .pd120foto ul{ margin:0 0 6px 18px; padding:0; } @media (max-width:760px){ .pd120foto{ grid-template-columns:1fr; } }
.pd120pick{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:10px; } .pd120pick label{ display:grid; gap:4px; font-size:12.5px; cursor:pointer; } .pd120pick img{ width:100%; height:100px; object-fit:cover; border-radius:var(--r); }
.list111 .row111.sel{ outline:2px solid var(--primary); }
/* v121 – disposizioni di servizio */
.ds121text{ margin-top:10px; padding:12px 14px; background:var(--surface-2); border:1px solid var(--border); border-radius:var(--r); font-size:14.5px; line-height:1.6; } .ds121text p{ margin:0 0 10px; }
.ds121ack{ border-left:6px solid #e0a100; } .ds121ack.ok{ border-left-color:var(--ok); }
.ds121bar{ height:10px; border-radius:999px; background:var(--border); overflow:hidden; margin-bottom:10px; } .ds121bar i{ display:block; height:100%; background:var(--ok); } .ds121bar.sm{ height:6px; margin:0 0 3px; width:120px; }
.ds121users{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:4px 12px; max-height:260px; overflow:auto; border:1px solid var(--border); border-radius:var(--r); padding:8px; margin-top:6px; }
.ds121due{ margin-bottom:12px; }
.pd120err{ color:var(--danger); font-size:13.5px; font-weight:600; }
/* v122 – ricerca generale */
.sr122home{ margin:0 0 16px; } .sr122bar{ display:flex; align-items:center; gap:10px; background:var(--surface); border:1.5px solid var(--border-strong); border-radius:999px; padding:4px 6px 4px 16px; box-shadow:var(--sh-1); }
.sr122bar:focus-within{ border-color:var(--primary); box-shadow:0 0 0 3px var(--primary-100); } .sr122bar svg{ width:20px; height:20px; fill:none; stroke:var(--text-3); stroke-width:2; flex:0 0 auto; }
.sr122bar input{ flex:1; border:0 !important; box-shadow:none !important; background:transparent !important; font-size:16px; min-height:40px; outline:none; padding:0 !important; }
.sr122rec{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; } .sr122rec .chip{ font-size:12.5px; }
.sr122out{ margin-top:10px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); padding:6px 10px 10px; box-shadow:var(--sh-2); max-height:70vh; overflow:auto; }
.sr122g h4{ margin:10px 4px 4px !important; font-size:12.5px; text-transform:uppercase; letter-spacing:.4px; color:var(--text-3); } .sr122g h4 small{ font-weight:400; }
html body.ui102 .sr122it:not(#_){ display:flex; width:100%; gap:10px; align-items:center; justify-content:flex-start; text-align:left; background:transparent !important; color:var(--text) !important; border:0 !important; border-radius:var(--r) !important; padding:7px 8px !important; min-height:0; font-weight:400 !important; }
html body.ui102 .sr122it:not(#_):hover, html body.ui102 .sr122it:not(#_):focus{ background:var(--primary-50) !important; }
.sr122it .ic svg{ width:18px; height:18px; fill:none; stroke:var(--primary); stroke-width:1.8; } .sr122it .tx{ display:grid; flex:1; min-width:0; } .sr122it .tx b{ font-weight:600; } .sr122it .tx small{ color:var(--text-2); font-size:12.5px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sr122it mark{ background:#fde68a; padding:0 1px; border-radius:2px; } .sr122it .tel{ text-decoration:none; font-size:18px; } .sr122more{ margin:2px 0 4px 34px; } .sr122ask{ margin-top:10px; border-top:1px solid var(--border); padding-top:8px; }
/* v122 – planimetria del sinistro */
body.csOpen{ overflow:hidden; } .cs122{ position:fixed; inset:0; z-index:9000; background:var(--bg); display:flex; flex-direction:column; }
.csTop{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:8px 12px; background:var(--surface); border-bottom:1px solid var(--border); } .csTop .spacer{ flex:1; }
.csWrap{ flex:1; display:grid; grid-template-columns:270px 1fr; min-height:0; } @media (max-width:820px){ .csWrap{ grid-template-columns:1fr; grid-template-rows:auto 1fr; } .csTools{ max-height:38vh; } }
.csTools{ overflow:auto; padding:8px 10px; background:var(--surface); border-right:1px solid var(--border); font-size:13.5px; } .csTools details{ margin-bottom:8px; } .csTools summary{ font-weight:700; cursor:pointer; padding:4px 0; }
.csTools label{ display:block; margin:6px 0; font-size:12.5px; color:var(--text-2); } .csTools select, .csTools input:not([type=range]){ width:100%; } .csTools input[type=range]{ width:100%; }
.csBtns{ display:flex; flex-wrap:wrap; gap:5px; margin:6px 0; } html body.ui102 .csBtns button:not(#_){ min-height:32px; padding:4px 9px !important; font-size:12.5px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; }
html body.ui102 .csBtns button.active:not(#_){ background:var(--primary) !important; color:#fff !important; } html body.ui102 .csBtns button.danger:not(#_){ color:var(--danger) !important; border-color:var(--danger-bd) !important; }
html body.ui102 .csBtns .csVeh:not(#_){ background:var(--c) !important; color:#fff !important; border-color:var(--c) !important; font-weight:700 !important; min-width:38px; }
.csFase{ display:flex; gap:4px; } .csFase .chip{ font-size:12px; } .csHint{ color:var(--text-3); font-size:12px; margin:4px 0; }
.csStage{ overflow:auto; padding:10px; display:flex; align-items:flex-start; justify-content:center; } #csCanvas{ width:100%; max-width:1200px; } #csCanvas svg{ width:100%; height:auto; background:#fff; border:1px solid var(--border-strong); border-radius:var(--r); touch-action:none; user-select:none; }
body.csOpen .modal102{ z-index:9600 !important; } body.csOpen .toastWrap102, body.csOpen #toastRoot102, body.csOpen .toast102{ z-index:9700 !important; }
/* v123 – editor planimetrie */
body.plOpen{ overflow:hidden; } .pl123{ position:fixed; inset:0; z-index:9000; background:var(--bg); display:flex; flex-direction:column; }
.plTop{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; padding:7px 10px; background:var(--surface); border-bottom:1px solid var(--border); } .plTop .spacer{ flex:1; } .plTitle{ font-size:15px; max-width:40vw; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; }
.plGroup{ display:inline-flex; gap:2px; } html body.ui102 .plTop button:not(#_){ min-height:34px; padding:4px 10px !important; font-size:13px !important; } html body.ui102 .plGroup button:not(#_){ min-width:36px; font-size:16px !important; }
.plChk{ display:inline-flex !important; align-items:center; gap:4px; font-size:12.5px; color:var(--text-2); margin:0 !important; } .plChk input{ width:auto !important; min-height:0 !important; }
.plWrap{ flex:1; display:grid; grid-template-columns:290px 1fr; min-height:0; }
.plSide{ overflow:auto; padding:8px 10px 20px; background:var(--surface); border-right:1px solid var(--border); font-size:13px; }
.plSide h4{ margin:10px 0 6px !important; font-size:12px; text-transform:uppercase; letter-spacing:.4px; color:var(--text-3); }
.plTabs{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:8px; } .plTabs .chip{ font-size:12px; }
.plPal{ display:grid; grid-template-columns:repeat(auto-fill,minmax(84px,1fr)); gap:5px; }
html body.ui102 .plPal button:not(#_){ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px; min-height:40px; padding:5px 4px !important; font-size:11.5px !important; line-height:1.15; font-weight:500 !important; text-align:center; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; border-radius:var(--r) !important; }
html body.ui102 .plPal button.active:not(#_){ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }
html body.ui102 .plPal .plVeh:not(#_){ background:var(--c) !important; color:#fff !important; border-color:var(--c) !important; } html body.ui102 .plPal .plVeh.active:not(#_){ outline:3px solid #facc15; }
.plVeh b{ font-size:17px; } .plVeh small{ font-size:10.5px; opacity:.9; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; max-width:100%; }
.plPhase{ display:flex; flex-wrap:wrap; gap:4px; margin-bottom:6px; } .plPhase .chip{ font-size:12px; }
.plAddVeh{ display:flex; gap:5px; margin-top:6px; } .plAddVeh select{ flex:1; min-width:0; }
.plSel{ margin-top:10px; border-top:1px solid var(--border); padding-top:4px; } .plSelName{ font-weight:700; margin:4px 0 6px; }
.plSel label{ display:block; margin:6px 0; font-size:12.5px; color:var(--text-2); } .plSel input:not([type=range]):not([type=checkbox]):not([type=color]), .plSel select{ width:100%; } .plSel input[type=range]{ width:100%; } .plSel .plChk{ display:flex !important; }
.plNum{ display:flex; align-items:center; gap:4px; } .plNum input{ flex:1; min-width:0; }
.plRow{ display:flex; flex-wrap:wrap; gap:4px; margin:6px 0; } html body.ui102 .plRow button:not(#_){ min-height:30px; padding:3px 8px !important; font-size:12px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; }
html body.ui102 .plRow button.danger:not(#_){ color:var(--danger) !important; border-color:var(--danger-bd) !important; }
.plHint{ color:var(--text-3); font-size:12px; margin:4px 0; } .plNotes{ margin-top:10px; } .plNotes summary{ font-weight:700; cursor:pointer; } .plNotes ul{ padding-left:18px; margin:4px 0; font-size:12.5px; }
.plStage{ position:relative; min-height:0; min-width:0; overflow:hidden; background:#e7e5e4; } #plCanvas{ position:absolute; inset:0; } #plCanvas svg{ width:100%; height:100%; display:block; background:#f5f5f4; touch-action:none; user-select:none; -webkit-user-select:none; cursor:default; }
#plCanvas svg.pan{ cursor:grabbing; } #plCanvas svg.tool{ cursor:crosshair; } #plCanvas .pl-o{ cursor:move; } #plCanvas .pl-o.locked{ cursor:default; }
#plCanvas .pl-h{ fill:#fff; stroke:#2563eb; cursor:pointer; } #plCanvas .pl-h.rot{ fill:#2563eb; cursor:grab; } #plCanvas .pl-h.rs{ cursor:nwse-resize; } #plCanvas .pl-h.add{ fill:#dcfce7; stroke:#16a34a; }
.plHintBar{ position:absolute; z-index:2; top:8px; left:50%; transform:translateX(-50%); background:rgba(15,23,42,.85); color:#fff; font-size:12.5px; padding:5px 12px; border-radius:20px; pointer-events:none; max-width:90%; text-align:center; } .plHintBar:empty{ display:none; }
.plZoomInfo{ position:absolute; z-index:2; right:8px; bottom:8px; background:rgba(255,255,255,.9); border:1px solid var(--border); font-size:11.5px; padding:3px 8px; border-radius:12px; pointer-events:none; }
@media (max-width:820px){ .plWrap{ grid-template-columns:1fr; grid-template-rows:1fr minmax(0,40vh); } .plSide{ order:2; border-right:0; border-top:1px solid var(--border); } .plStage{ order:1; } .plTop{ flex-wrap:nowrap; overflow-x:auto; padding:6px 8px; } .plTop .spacer{ display:none; } .plTitle{ max-width:34vw; flex:0 0 auto; font-size:13px; } .plTop > *{ flex:0 0 auto; } .plPal{ grid-template-columns:repeat(auto-fill,minmax(74px,1fr)); } }
body.plOpen .modal102{ z-index:9600 !important; } body.plOpen .toastWrap102, body.plOpen #toastRoot102, body.plOpen .toast102{ z-index:9700 !important; }
.pln123grid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; } .pln123card{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); overflow:hidden; display:flex; flex-direction:column; box-shadow:var(--sh-1); }
.pln123card .th{ aspect-ratio:16/10; background:#f5f5f4; display:flex; align-items:center; justify-content:center; border-bottom:1px solid var(--border); } .pln123card .th img{ width:100%; height:100%; object-fit:contain; } .pln123card .th span{ font-size:40px; }
.pln123card .tx{ display:grid; gap:2px; padding:8px 10px; } .pln123card .tx small{ color:var(--text-2); } .pln123card .chipRow{ display:flex; flex-wrap:wrap; gap:5px; padding:0 10px 10px; }
.plHintBar button{ pointer-events:auto; margin-left:4px; }
/* v124 – sfondo satellitare e stampa delle planimetrie */
.sat124bar{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin:8px 0; } .sat124bar input{ flex:1 1 200px; min-width:0; } .sat124bar select{ flex:0 1 auto; max-width:100%; } .sat124bar label{ margin:0 !important; font-size:13px; }
.sat124map{ position:relative; height:min(52vh,380px); border:1px solid var(--border-strong); border-radius:var(--r); overflow:hidden; background:#d6d3d1; touch-action:none; cursor:grab; user-select:none; } .sat124map canvas{ display:block; }
.sat124ctl{ position:absolute; right:8px; top:8px; display:flex; flex-direction:column; gap:4px; } html body.ui102 .sat124ctl button:not(#_){ width:36px; min-height:36px; padding:0 !important; font-size:18px !important; background:#fff !important; color:#0f172a !important; border:1px solid var(--border-strong) !important; }
.sat124attr{ position:absolute; right:6px; bottom:4px; font-size:10.5px; color:#fff; text-shadow:0 0 3px #000; pointer-events:none; } .sat124msg{ position:absolute; left:8px; bottom:8px; right:120px; background:rgba(127,29,29,.9); color:#fff; font-size:12.5px; padding:6px 10px; border-radius:8px; }
html body.ui102 .plBig:not(#_){ width:100%; min-height:48px; font-size:14px !important; margin-top:6px; }
.plBgInfo{ display:grid; gap:2px; background:var(--primary-50); border:1px solid var(--border); border-radius:var(--r); padding:8px 10px; margin-bottom:6px; } .plBgInfo small{ color:var(--text-2); font-size:11.5px; }
.pp124chk{ display:grid; gap:6px; } .pp124chk label{ display:flex !important; gap:8px; align-items:center; font-weight:400 !important; margin:0 !important; } .pp124chk input{ width:auto !important; min-height:0 !important; }
/* v125 – planimetrie: segnali, matita, schizzo, sfondo da immagine, area di stampa */
.plSide h4{ margin-top:12px !important; } .plPal.plSig{ grid-template-columns:repeat(auto-fill,minmax(70px,1fr)); }
html body.ui102 .plPal button.sg:not(#_){ min-height:64px; font-size:10.5px !important; } .plPal button.sg span{ display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; }
html body.ui102 .sk125col:not(#_){ width:30px; min-width:30px; min-height:30px; height:30px; padding:0 !important; border-radius:50% !important; background:var(--c) !important; border:2px solid var(--border-strong) !important; }
html body.ui102 .sk125col.active:not(#_){ outline:3px solid var(--primary); outline-offset:2px; }
.sk125 canvas{ width:100%; height:auto; max-height:62vh; object-fit:contain; background:#fff; border:1px solid var(--border-strong); border-radius:var(--r); touch-action:none; display:block; margin-top:6px; }
.sk125tools{ gap:6px; align-items:center; margin-bottom:6px; } .sk125tools .spacer{ flex:1; }
.ib125steps{ margin:0 0 10px; padding-left:20px; font-size:13.5px; } .ib125steps li{ margin:3px 0; }
.ib125prev{ margin-top:8px; min-height:60px; border:1px dashed var(--border-strong); border-radius:var(--r); display:flex; align-items:center; justify-content:center; color:var(--text-3); font-size:13px; padding:6px; } .ib125prev img{ max-width:100%; max-height:220px; }
.pp125area{ display:flex; flex-wrap:wrap; gap:8px 14px; align-items:center; } .pp125area select{ width:auto; }
.pln125type{ color:var(--primary) !important; font-weight:600; }
html body.ui102 .plBig.secondary:not(#_){ background:var(--surface) !important; color:var(--primary) !important; border:1px solid var(--primary) !important; }
/* v125 – avvisi al cittadino: nuova grafica, loghi, anteprima rotolo */
.nt125.nt117doc header{ border:0; color:inherit; margin:0; }
.nt125 .ntHead{ display:flex; align-items:center; gap:12px; padding-bottom:8px; border-bottom:3px solid #1d3a6b !important; } .nt125 .ntHead .lg{ height:64px; width:auto; } .nt125 .ntHead .ht{ flex:1; text-align:center; line-height:1.25; }
.nt125 .ntHead .c1{ font-size:12px; font-weight:600; letter-spacing:.6px; text-transform:uppercase; color:#334155; } .nt125 .ntHead .c2{ font-size:20px; font-weight:800; letter-spacing:1.5px; text-transform:uppercase; color:#1d3a6b; } .nt125 .ntHead .c3, .nt125 .ntHead .c4{ font-size:11px; color:#475569; }
.nt125 .ntTitle{ margin:12px 0 10px; background:var(--acc); color:#fff; border-radius:6px; padding:9px 12px; } .nt125 .ntTitle h1{ margin:0; font-size:19px; line-height:1.2; text-transform:uppercase; color:#fff; } .nt125 .ntTitle h1 span{ display:block; font-size:15px; font-weight:600; text-transform:none; color:#fff; opacity:.95; }
.nt125 .lines{ border-left:4px solid var(--acc); padding-left:10px; margin-bottom:10px; }
.nt125 table{ border-collapse:separate; border-spacing:0; border:1px solid #94a3b8; border-radius:6px; overflow:hidden; } .nt125 th, .nt125 td{ border:0 !important; border-bottom:1px solid #cbd5e1 !important; } .nt125 tr:last-child th, .nt125 tr:last-child td{ border-bottom:0 !important; } .nt125 th{ background:#eef2f7; } .nt125 tr.to td{ text-align:center; font-weight:700; font-size:15px; }
.nt125 footer{ display:grid; grid-template-columns:1fr 1fr 1.2fr; gap:10px; margin-top:12px; border-top:1px solid #94a3b8; padding-top:6px; color:#111; } .nt125 footer span{ display:block; font-size:10.5px; text-transform:uppercase; color:#475569; } .nt125 footer .sign i{ display:block; border-bottom:1px solid #111; height:24px; }
.nt117prev.roll{ max-width:330px; margin:0 auto; padding:10px 12px; box-shadow:0 2px 10px rgba(0,0,0,.12); } .nt117prev.roll.r58{ max-width:250px; }
.nt117prev.roll .nt125 .ntHead{ flex-wrap:wrap; justify-content:center; gap:14px; border-bottom:4px solid #000 !important; } .nt117prev.roll .nt125 .ntHead .lg{ height:48px; filter:grayscale(1) contrast(1.4); } .nt117prev.roll .nt125 .ntHead .ht{ flex-basis:100%; order:3; } .nt117prev.roll .nt125 *{ color:#000; }
.nt117prev.roll .nt125 .ntTitle{ background:#000; border-radius:0; text-align:center; } .nt117prev.roll .nt125 .ntTitle h1, .nt117prev.roll .nt125 .ntTitle h1 span{ color:#fff; font-size:16px; } .nt117prev.roll .nt125 .lines{ border-left:0; padding-left:0; }
.nt117prev.roll .nt125 table, .nt117prev.roll .nt125 tbody, .nt117prev.roll .nt125 tr, .nt117prev.roll .nt125 th, .nt117prev.roll .nt125 td{ display:block; width:auto; } .nt117prev.roll .nt125 table{ border:0; border-top:2px dashed #000; border-radius:0; } .nt117prev.roll .nt125 tr{ border-bottom:1px dashed #000; padding:5px 0; } .nt117prev.roll .nt125 th{ background:none !important; text-transform:uppercase; font-size:11px; padding:0; } .nt117prev.roll .nt125 td{ padding:0; } .nt117prev.roll .nt125 footer{ grid-template-columns:1fr; }
.ntFullHead{ display:flex; align-items:center; justify-content:center; gap:16px; margin-bottom:14px; } .ntFullHead img{ height:72px; } .ntFullHead div{ display:grid; text-align:center; } .ntFullHead b{ font-size:22px; text-transform:uppercase; letter-spacing:1px; } .ntFullHead span{ font-size:14px; opacity:.85; }
/* v126 – avvisi: riquadro informazioni del Comando */
.nt125 .ntHead .lg{ border-radius:50%; } .nt125 .ntInfo{ margin-top:10px; padding:7px 10px; background:#f1f5f9; border-radius:6px; font-size:11px; line-height:1.5; color:#334155; text-align:center; }
.nt117prev.roll .nt125 .ntInfo{ background:none; border-top:1px dashed #000; border-radius:0; color:#000; }
/* v126 – menu per argomenti, preferiti, ricerca funzioni */
.mnFind{ position:sticky; top:-10px; z-index:2; display:flex; align-items:center; gap:8px; margin:0 0 8px; padding:8px 10px; background:rgba(255,255,255,.07); border:1px solid rgba(255,255,255,.12); border-radius:10px; }
.mnFind svg{ width:16px; height:16px; fill:none; stroke:#8fa0bb; stroke-width:2; flex:none; }
html body.ui102 .mnFind input:not(#_){ flex:1; min-width:0; background:transparent !important; border:0 !important; box-shadow:none !important; color:#fff !important; font-size:14px; min-height:26px; padding:0 !important; outline:none; }
.mnFind input::placeholder{ color:#8fa0bb; }
.mnFixed{ margin:4px 0 10px; }
.mnGroup{ margin:2px 0; border-radius:10px; } .mnGroup.open{ background:rgba(255,255,255,.035); padding-bottom:4px; }
html body.ui102 .mnHead:not(#_){ display:flex; align-items:center; gap:10px; width:100%; min-height:40px; padding:6px 10px !important; background:transparent !important; border:0 !important; color:#dbe4f2 !important; font-size:13.5px !important; font-weight:650 !important; text-align:left; border-radius:10px !important; justify-content:flex-start; }
html body.ui102 .mnHead:not(#_):hover{ background:rgba(255,255,255,.06) !important; }
.mnHead .e{ width:20px; text-align:center; font-size:15px; } .mnHead .t{ flex:1; } .mnHead .n{ font-size:11px; color:#7489a8; font-weight:500; } .mnHead .chev{ color:#7489a8; transition:transform .15s; font-size:16px; } .mnGroup.open .mnHead .chev{ transform:rotate(90deg); }
.mnHead .dot{ width:8px; height:8px; border-radius:50%; background:#f87171; }
.mnItems{ display:none; padding-left:6px; } .mnGroup.open .mnItems{ display:block; }
.mnItem{ position:relative; } .mnItem.small{ min-height:32px; font-size:13px; }
.mnStar{ font-size:15px; color:#7489a8; padding:0 2px; line-height:1; opacity:0; transition:opacity .12s; cursor:pointer; } .mnItem:hover .mnStar, .mnStar.on, .mnItem:focus .mnStar{ opacity:1; } .mnStar.on{ color:#facc15; }
@media (hover:none){ .mnStar{ opacity:.55; } }
.mnRes .mnEmpty{ color:#8fa0bb; font-size:13px; padding:6px 10px; }
html body.ui102 .mnAll:not(#_), html body.ui102 .mnTools button:not(#_){ width:100%; margin-top:8px; background:rgba(255,255,255,.06) !important; color:#c9d3e3 !important; border:1px dashed rgba(255,255,255,.2) !important; font-size:12.5px !important; min-height:34px; font-weight:500 !important; }
.mnTools{ display:flex; gap:6px; margin-top:10px; } html body.ui102 .mnTools button:not(#_){ margin-top:0; font-size:11.5px !important; }
.hf126 header{ display:flex; align-items:baseline; gap:10px; flex-wrap:wrap; } .hfBar input{ width:100%; font-size:15px; }
.hfCats{ display:flex; flex-wrap:wrap; gap:6px; margin:10px 0; } .hfCats .chip{ font-size:12.5px; }
.hf126 h4{ margin:12px 0 6px !important; font-size:13px; color:var(--text-2); }
.hfGrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:8px; }
html body.ui102 .hfTile:not(#_){ display:flex; align-items:center; gap:10px; text-align:left; justify-content:flex-start; padding:10px 12px !important; min-height:58px; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:12px !important; font-weight:400 !important; box-shadow:var(--sh-1); }
html body.ui102 .hfTile:not(#_):hover{ border-color:var(--primary) !important; background:var(--primary-50) !important; }
.hfTile .ic{ width:36px; height:36px; border-radius:10px; background:var(--primary-50); display:flex; align-items:center; justify-content:center; flex:none; } .hfTile .ic svg{ width:20px; height:20px; fill:none; stroke:var(--primary); stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.hfTile .tx{ flex:1; min-width:0; display:grid; } .hfTile .tx b{ font-size:14px; font-weight:650; } .hfTile .tx small{ color:var(--text-2); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.hfTile .mnStar{ opacity:.6; color:var(--text-3); font-size:17px; } .hfTile .mnStar.on{ opacity:1; color:#eab308; }
/* v126 – chiamata rapida alle pattuglie */
.pt126fab{ position:fixed; right:16px; bottom:calc(16px + env(safe-area-inset-bottom)); z-index:9500; display:flex; align-items:center; gap:8px; }
html body.ui102 .pt126fab:not(#_){ min-height:52px; padding:0 18px 0 14px !important; border-radius:28px !important; background:#16a34a !important; color:#fff !important; border:0 !important; box-shadow:0 6px 18px rgba(22,163,74,.45); font-size:15px !important; font-weight:700 !important; }
.pt126fab span{ font-size:20px; } body:has(.modal102) .pt126fab, body:has(.pt126sheet) .pt126fab, body:has(.nt117full) .pt126fab{ display:none; }
body.plOpen .pt126fab{ display:none; } @media (max-width:600px){ .pt126fab b{ display:none; } html body.ui102 .pt126fab:not(#_){ width:56px; min-height:56px; padding:0 !important; justify-content:center; } }
.pt126sheet{ position:fixed; inset:0; z-index:9800; background:rgba(15,23,42,.45); display:flex; align-items:flex-end; justify-content:flex-end; padding:16px; }
.ptBox{ width:min(380px,100%); background:var(--surface); border-radius:16px; box-shadow:var(--sh-3); padding:12px; display:grid; gap:8px; }
.ptHead{ display:flex; align-items:center; justify-content:space-between; font-size:16px; padding:2px 4px; }
.ptCall{ display:flex; align-items:center; gap:12px; padding:10px 12px; border:1px solid var(--border); border-radius:12px; text-decoration:none; color:var(--text); }
.ptCall.main{ border-color:#16a34a; background:#f0fdf4; } .ptCall .i{ font-size:22px; } .ptCall .t{ flex:1; display:grid; } .ptCall .t b{ font-size:15.5px; } .ptCall .t small{ font-size:15px; color:var(--text-2); letter-spacing:.3px; }
.ptCall .go{ background:#16a34a; color:#fff; font-weight:700; border-radius:20px; padding:6px 12px; font-size:13px; } .ptCall:not(.main) .go{ background:var(--surface-2, #e2e8f0); color:var(--text); }
.ptFoot{ display:flex; gap:6px; justify-content:space-between; }
.pt126sb{ display:grid; grid-template-columns:1fr 1fr; gap:6px; padding:8px 10px 0; border-top:1px solid rgba(255,255,255,.08); }
.pt126sb a{ display:grid; text-decoration:none; color:#fff; background:rgba(22,163,74,.22); border:1px solid rgba(74,222,128,.35); border-radius:10px; padding:6px 8px; font-size:12px; } .pt126sb a b{ font-weight:650; } .pt126sb a small{ color:#bbf7d0; font-size:11.5px; }
html body.ui102 .tbCall126:not(#_){ color:#15803d !important; border-color:#86efac !important; background:#f0fdf4 !important; font-weight:650 !important; }
@media (max-width:820px){ .tbCall126 span{ display:none; } }
.mnFind{ top:-10px; background:#1a2b47; box-shadow:0 -10px 0 var(--navy-900), 0 6px 10px -6px rgba(0,0,0,.4); }
.mnFixed:first-child, .mnFind + .mnBody > .mnFixed:first-child{ margin-top:10px; }
html body.ui102 .pt126sb a, html body.ui102 .pt126sb a:visited{ color:#fff; } html body.ui102 .pt126sb a b{ color:#fff; } html body.ui102 .pt126sb a small{ color:#bbf7d0; }
html body.ui102 .plTop .plCall126:not(#_){ color:#15803d !important; border-color:#86efac !important; background:#f0fdf4 !important; font-weight:650 !important; }
/* v127 – checklist eventi Rev. 4: esito “Altra Competenza” */
html body.ui102 .clSel.ac select:not(#_){ background-color:#ede9fe !important; color:#5b21b6 !important; } .clStat.ac{ background:#ede9fe; border-color:#ddd6fe; } .clBar .ac{ background:#8b5cf6; }
/* v128 – bollettino Liberiamo l'aria disegnato dal PDF */
.aria118img .ariaPages{ display:grid; gap:10px; max-width:1100px; } .aria118img canvas.ariaPage{ width:100%; height:auto; border:1px solid var(--border); border-radius:var(--r); background:#fff; box-shadow:var(--sh-1); }
/* v129 – modalità guida */
body.drvOpen{ overflow:hidden; } body.drvOpen .pt126fab{ display:none; }
.drv129{ position:fixed; inset:0; z-index:9300; background:#f8fafc; color:#0f172a; display:flex; flex-direction:column; padding:max(12px, env(safe-area-inset-top)) 14px 14px; gap:12px; }
.drv129.night{ background:#05070d; color:#e2e8f0; }
.dvTop{ display:flex; align-items:center; gap:12px; flex-wrap:wrap; } .dvClock{ font-size:40px; font-weight:800; letter-spacing:1px; } .dvShift{ flex:1; font-size:15px; opacity:.85; min-width:160px; }
html body.ui102 .dvSmall:not(#_){ min-height:48px; padding:0 18px !important; font-size:16px !important; border-radius:14px !important; background:#e2e8f0 !important; color:#0f172a !important; border:0 !important; }
.drv129.night html body.ui102 .dvSmall, html body.ui102 .drv129.night .dvSmall:not(#_){ background:#1e293b !important; color:#e2e8f0 !important; }
.dvGrid{ flex:1; display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); grid-auto-rows:minmax(110px,1fr); gap:12px; overflow:auto; }
html body.ui102 .dvBtn:not(#_), .dvBtn{ display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px; text-decoration:none; border-radius:20px !important; border:2px solid #cbd5e1 !important; background:#fff !important; color:#0f172a !important; font-weight:700 !important; padding:10px !important; min-height:110px; text-align:center; }
.dvBtn span{ font-size:42px; line-height:1; } .dvBtn b{ font-size:21px; } .dvBtn small{ font-size:14px; opacity:.75; font-weight:500; }
html body.ui102 .dvBtn.call:not(#_), .dvBtn.call{ background:#16a34a !important; border-color:#16a34a !important; color:#fff !important; } html body.ui102 .dvBtn.dict:not(#_){ background:#1d4ed8 !important; border-color:#1d4ed8 !important; color:#fff !important; } html body.ui102 .dvBtn.sos:not(#_), .dvBtn.sos{ background:#dc2626 !important; border-color:#dc2626 !important; color:#fff !important; }
html body.ui102 .drv129.night .dvBtn:not(#_), .drv129.night .dvBtn{ background:#0f172a !important; color:#e2e8f0 !important; border-color:#334155 !important; }
html body.ui102 .drv129.night .dvBtn.call:not(#_), .drv129.night .dvBtn.call{ background:#14532d !important; border-color:#166534 !important; } html body.ui102 .drv129.night .dvBtn.dict:not(#_){ background:#1e3a8a !important; border-color:#1e40af !important; } html body.ui102 .drv129.night .dvBtn.sos:not(#_), .drv129.night .dvBtn.sos{ background:#7f1d1d !important; border-color:#991b1b !important; }
body.drvOpen .modal102{ z-index:9600 !important; } body.drvOpen .toastWrap102, body.drvOpen #toastRoot102, body.drvOpen .toast102{ z-index:9700 !important; }
html body.ui102 .tbDrive129:not(#_){ font-weight:650 !important; } @media (max-width:820px){ .tbDrive129 span{ display:none; } }
html body.ui102 .dict129:not(#_){ background:#1d4ed8 !important; color:#fff !important; border-color:#1d4ed8 !important; }
/* v129 – consegne, scadenzario, inviti */
.ho129card{ border-left:4px solid #f59e0b; } details.ho129card > summary{ cursor:pointer; padding:12px 16px; font-weight:650; } .ho129 .hoHead{ display:grid; gap:2px; margin-bottom:8px; } .ho129 .hoHead small{ color:var(--text-2); }
.ho129 .hoNotes{ background:#fffbeb; border:1px solid #fde68a; border-radius:var(--r); padding:8px 10px; margin:6px 0; } .ho129 h4{ margin:10px 0 4px !important; font-size:13px; } .ho129 ul{ margin:0; padding-left:20px; font-size:13.5px; } .ho129 .hoSum{ font-size:13.5px; color:var(--text-2); }
.dl129banner{ display:flex; align-items:center; gap:12px; margin:10px 0; padding:10px 14px; border:1px solid #fde68a; background:#fffbeb; border-radius:var(--r-lg); } .dl129banner.ko{ border-color:#fecaca; background:#fef2f2; } .dl129banner.inv{ border-color:#bfdbfe; background:#eff6ff; }
.dl129banner .ic{ font-size:22px; } .dl129banner > div{ flex:1; display:grid; } .dl129banner span{ font-size:13px; color:var(--text-2); }
.dl129{ display:flex; align-items:center; gap:12px; padding:8px 4px; border-bottom:1px solid var(--border); } .dl129:last-child{ border-bottom:0; } .dl129 .ic{ font-size:20px; width:28px; text-align:center; } .dl129 .tx{ flex:1; display:grid; } .dl129 .tx small{ color:var(--text-2); }
.dl129 .dt{ display:grid; text-align:right; font-weight:650; font-size:13.5px; } .dl129 .dt small{ font-weight:500; color:var(--text-2); } .dl129 .dt.ko{ color:#b91c1c; } .dl129 .dt.warn{ color:#b45309; }
.dl129g.ko header h3{ color:#b91c1c; } .dl129g.warn header h3{ color:#b45309; }
.agPartSel{ display:flex; flex-wrap:wrap; gap:6px; margin-bottom:6px; } .agP small{ color:var(--text-2); margin-left:4px; } .agP button{ border:0; background:none; cursor:pointer; padding:0 0 0 6px; font-size:12px; min-height:0; }
.agPartList{ border:1px solid var(--border); border-radius:var(--r); margin-top:4px; max-height:220px; overflow:auto; background:var(--surface); box-shadow:var(--sh-2); }
html body.ui102 .agPartList button:not(#_){ display:flex; width:100%; justify-content:space-between; gap:8px; background:transparent !important; color:var(--text) !important; border:0 !important; border-bottom:1px solid var(--border) !important; border-radius:0 !important; min-height:38px; font-weight:500 !important; }
.agPartList button small{ color:var(--text-2); }
/* v129 – ordinanza dalla planimetria */
.po129{ display:grid; gap:14px; } .po129 h4{ margin:0 0 6px !important; } .po129t{ width:100%; border-collapse:collapse; font-size:13.5px; } .po129t th{ text-align:left; background:var(--primary-50); padding:4px 8px; } .po129t td{ padding:3px 8px; border-bottom:1px solid var(--border); } .po129t td.n{ text-align:right; font-weight:650; width:60px; }
.po129 textarea{ width:100%; font-family:inherit; }

/* v130 – compilazione assistita della checklist e lettura dei documenti */
html body.ui102 .clRv:not(#_){ display:grid; grid-template-columns:auto minmax(0,1fr); gap:10px; padding:9px 14px; border-bottom:1px solid var(--border); align-items:start; cursor:pointer; font-weight:400; margin:0; }
html body.ui102 .clRv:not(#_) input{ margin-top:3px; width:18px; height:18px; }
html body.ui102 .clRv:not(#_) .rvO{ display:inline-block; padding:1px 9px; border-radius:999px; font-size:12px; margin:5px 0 3px; background:#f1f5f9; border:1px solid var(--border); color:var(--text-2, #334155); }
html body.ui102 .clRv:not(#_) .rvO.ok{ background:#dcfce7; border-color:#86efac; color:#14532d; }
html body.ui102 .clRv:not(#_) .rvO.ko{ background:#fee2e2; border-color:#fca5a5; color:#7f1d1d; }
html body.ui102 .clRv:not(#_) .rvO.pa{ background:#fef3c7; border-color:#fcd34d; color:#78350f; }
html body.ui102 .clRv:not(#_) .rvO.ac{ background:#ede9fe; border-color:#ddd6fe; color:#5b21b6; }
html body.ui102 .clRv:not(#_) .badge102{ margin-left:4px; }
html body.ui102 .clRv:not(#_) small{ color:var(--muted); display:block; margin-top:2px; }
html body.ui102 .clReview:not(#_){ max-height:52vh; overflow:auto; border:1px solid var(--border); border-radius:10px; }
html body.ui102 .clReview:not(#_) .clMod{ margin:0; border-radius:0; border-left:0; border-right:0; }
html body.ui102 .aiDocsRead:not(#_){ font-size:13px; margin:8px 0; }
html body.ui102 .aiDocsRead:not(#_) ul{ margin:4px 0 0; padding-left:18px; }
html body.ui102 .aiDocsRead:not(#_) li{ margin:3px 0; }

/* v132 – Formazione e quiz */
html body.ui102 .trCards:not(#_){ display:grid; grid-template-columns:repeat(auto-fill,minmax(260px,1fr)); gap:12px; }
html body.ui102 .trCard:not(#_){ border:1px solid var(--border); border-radius:12px; padding:14px; display:flex; flex-direction:column; gap:6px; background:var(--surface, #fff); }
html body.ui102 .trCard.todo:not(#_){ border-left:4px solid #f59e0b; } html body.ui102 .trCard.late:not(#_){ border-left:4px solid #dc2626; } html body.ui102 .trCard.done:not(#_){ border-left:4px solid #16a34a; }
html body.ui102 .trCardH:not(#_){ display:flex; justify-content:space-between; gap:8px; align-items:flex-start; }
html body.ui102 .trCard:not(#_) small{ color:var(--muted); }
html body.ui102 .trCard:not(#_) button{ margin-top:auto; align-self:flex-start; }
html body.ui102 .trQ:not(#_){ border:1px solid var(--border); border-radius:10px; padding:10px 14px; margin:0 0 10px; }
html body.ui102 .trQ:not(#_) legend{ padding:0 4px; font-weight:400; line-height:1.4; }
html body.ui102 .trQ.ok:not(#_){ border-color:#86efac; background:rgba(22,163,74,.05); } html body.ui102 .trQ.ko:not(#_){ border-color:#fca5a5; background:rgba(220,38,38,.05); }
html body.ui102 .trOpt:not(#_){ display:flex !important; gap:8px; padding:6px 8px; border-radius:8px; margin:2px 0 !important; font-weight:400; cursor:pointer; }
html body.ui102 .trOpt:not(#_):hover{ background:rgba(100,116,139,.08); }
html body.ui102 .trOpt.right:not(#_){ background:#dcfce7; color:#14532d; font-weight:600; } html body.ui102 .trOpt.wrong:not(#_){ background:#fee2e2; color:#7f1d1d; text-decoration:line-through; }
html body.ui102 .trFb:not(#_){ font-size:13px; margin-top:6px; } html body.ui102 .trFb:not(#_):empty{ display:none; }
html body.ui102 .trEd:not(#_){ border:1px solid var(--border); border-radius:10px; padding:10px 12px; margin:10px 0; }
html body.ui102 .trEd:not(#_) textarea{ width:100%; }
html body.ui102 .trEdOpt:not(#_){ display:flex; gap:8px; align-items:center; margin:4px 0; } html body.ui102 .trEdOpt:not(#_) input[type=radio]{ width:20px; height:20px; flex:none; } html body.ui102 .trEdOpt:not(#_) input:not([type]){ flex:1; }
html body.ui102 .crMatrix:not(#_) td.crCell{ text-align:center; font-size:12px; white-space:nowrap; }
html body.ui102 .crMatrix:not(#_) td.crCell.ok{ background:#dcfce7; color:#14532d; } html body.ui102 .crMatrix:not(#_) td.crCell.warn{ background:#fef3c7; color:#78350f; } html body.ui102 .crMatrix:not(#_) td.crCell.ko{ background:#fee2e2; color:#7f1d1d; font-weight:700; } html body.ui102 .crMatrix:not(#_) td.crCell.none{ color:var(--muted); }
html body.ui102 .crMatrix:not(#_) th{ font-size:12px; }
/* v132 – Oggetti smarriti e animali */
html body.ui102 .lfPh:not(#_){ display:flex; flex-wrap:wrap; gap:8px; margin:4px 0 8px; }
html body.ui102 .lfThumb:not(#_){ position:relative; display:inline-flex; align-items:center; }
html body.ui102 .lfThumb:not(#_) img{ width:96px; height:72px; object-fit:cover; border-radius:8px; border:1px solid var(--border); cursor:pointer; }
html body.ui102 .lfThumb:not(#_) .iconBtn{ position:absolute; top:-6px; right:-6px; width:22px; height:22px; min-height:0; padding:0; border-radius:50%; background:#fff; font-size:11px; }
/* v133 – pulsanti PDF */
html body.ui102 .pdf133bar:not(#_){ display:flex; justify-content:flex-end; gap:8px; margin:6px 0; }
html body.ui102 .pdf133bar.top:not(#_){ margin:0 0 10px; }
html body.ui102 .rowPdf133:not(#_){ width:30px; height:30px; min-height:0; padding:0; font-size:15px; margin-left:4px; vertical-align:middle; }
html body.ui102 .pdf133m:not(#_){ font-size:18px; margin-right:4px; }
html body.ui102 .lfDate:not(#_){ display:inline-flex; align-items:center; gap:4px; font-size:13px; margin:0; font-weight:600; }
html body.ui102 .lfDate:not(#_) input{ width:auto; min-height:36px; }

/* ==========================================================================
   v137 — Home fissa nel menu e Nucleo droni UAS
   ========================================================================== */
.mnHome{ width:100%; margin:0 0 8px; font-weight:600; }
.mnSub{ margin:2px 0 6px 18px; border-left:2px solid var(--border); padding-left:6px; display:flex; flex-direction:column; gap:1px; }
.mnSubI{ display:flex; align-items:center; gap:6px; width:100%; text-align:left; background:none; border:0; color:var(--text-2); font:inherit; font-size:.86rem; padding:5px 8px; border-radius:var(--r-sm); cursor:pointer; min-height:0; box-shadow:none; }
.mnSubI .l{ flex:1; }
.mnSubI:hover{ background:var(--primary-50); color:var(--primary); }
.mnSubI.active{ background:var(--primary-50); color:var(--primary); font-weight:600; }
#dronesLegacy{ display:none !important; }

.uasMain{ min-width:0; display:flex; flex-direction:column; gap:14px; }
.uasMain .pageHead{ margin-bottom:0; }
.uasT{ width:100%; border-collapse:collapse; font-size:.9rem; }
.uasT th,.uasT td{ border-bottom:1px solid var(--border); padding:7px 8px; text-align:left; vertical-align:top; }
.uasT thead th{ background:var(--surface-2); font-size:.8rem; color:var(--text-2); font-weight:600; }
.uasT tbody tr[data-uas-open]{ cursor:pointer; }
.uasT tbody tr[data-uas-open]:hover{ background:var(--primary-50); }
.uasT input,.uasT select,.uasT textarea{ width:100%; min-width:90px; font-size:.86rem; padding:5px 6px; }
.uasCk td:first-child{ width:28px; color:var(--text-3); }
.uasRadio{ display:inline-flex; gap:4px; align-items:center; margin-right:10px; white-space:nowrap; font-weight:600; color:var(--ok); }
.uasRadio.no{ color:var(--danger); }
.uasSteps{ display:flex; flex-wrap:wrap; gap:6px; }
.uasStep{ background:var(--surface); border:1px solid var(--border); color:var(--text-2); border-radius:999px; padding:5px 12px; font-size:.84rem; min-height:0; cursor:pointer; box-shadow:none; }
.uasStep.done{ border-color:var(--ok-bd); color:var(--ok); background:var(--ok-bg); }
.uasStep.active{ background:var(--primary); border-color:var(--primary); color:#fff; }
.uasChecks{ display:flex; flex-direction:column; gap:4px; }
.uasMulti{ display:flex; flex-wrap:wrap; gap:4px 14px; padding:6px 0; }
.uasMulti .checkLine{ margin:0; }
.uasProcs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); gap:12px; }
.uasProc{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); padding:14px; display:flex; flex-direction:column; }
.uasProc h4{ margin:0 0 6px; }
.uasProc p{ margin:0 0 10px; color:var(--text-2); font-size:.88rem; flex:1; }
.uasH3{ margin:8px 0 0; font-size:1rem; }
.uasEmer{ display:grid; grid-template-columns:repeat(auto-fill,minmax(220px,1fr)); gap:10px; }
.uasEmer>div{ border:1px solid var(--danger-bd); background:var(--danger-bg); border-radius:var(--r); padding:10px; }
.uasEmer p{ margin:4px 0 0; font-size:.86rem; }
.uasTimer{ font-size:1.4rem; padding:10px 14px; border-radius:var(--r); background:var(--warn-bg); border:1px solid var(--warn-bd); display:inline-block; }
.uasAlerts{ list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:4px; }
.uasAlerts li{ border-left:4px solid var(--info); padding:4px 8px; background:var(--surface-2); border-radius:0 var(--r-sm) var(--r-sm) 0; }
.uasAlerts li.l1{ border-left-color:var(--danger); }
.uasAlerts li.l2{ border-left-color:var(--warn); }
.uasAlerts a{ color:inherit; text-decoration:none; }
.uasRow{ border-bottom:1px solid var(--border); padding:8px 0; }
.uasFly{ display:flex; flex-direction:column; gap:10px; margin-bottom:10px; }
.uasSortie{ border:1px solid var(--border); border-radius:var(--r); padding:10px; background:var(--surface-2); }
.uasEvBtns{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
.uasLog{ border-left:3px solid var(--border-strong); padding:4px 10px; margin-bottom:6px; }
.uasPre{ white-space:pre-wrap; font-family:var(--font); background:var(--surface-2); padding:8px; border-radius:var(--r-sm); }
.uasSop{ border:1px solid var(--info-bd); background:var(--info-bg); border-radius:var(--r); padding:8px 12px; }
.uasSop summary{ cursor:pointer; font-weight:600; }
.uasSop ol{ margin:6px 0 0; padding-left:20px; }
.uasSecT{ border-top:1px solid var(--border); padding-top:10px; margin-top:6px; }
.uasSecT h4{ margin:0; }
.uasFile{ display:inline-flex; gap:4px; align-items:center; margin:0 10px 4px 0; }
.uasHist{ margin-top:12px; font-size:.86rem; }
.uasLive a{ font-weight:600; }
.uasActs,.uasMit,.uasFind{ grid-column:1/-1; }
.uasActs h4,.uasMit h4,.uasFind h4{ margin:6px 0; }
.uasMatrices{ display:flex; flex-wrap:wrap; gap:20px; }
.uasMatrices h4{ margin:0 0 6px; }
.uasMatrix{ border-collapse:collapse; }
.uasMatrix th,.uasMatrix td{ width:38px; height:32px; text-align:center; border:1px solid var(--border); font-size:.85rem; }
.uasMatrix td.hm.ok{ background:var(--ok-bg); } .uasMatrix td.hm.info{ background:var(--info-bg); } .uasMatrix td.hm.warn{ background:var(--warn-bg); } .uasMatrix td.hm.ko{ background:var(--danger-bg); }
.uasMatrix td.hm{ font-weight:700; }
.uasHash{ font-size:.72rem; word-break:break-all; }
.uasAdopt{ display:flex; flex-wrap:wrap; gap:4px 12px; align-items:center; padding:4px 0; border-bottom:1px dashed var(--border); }
.uasAdopt .checkLine{ flex:1 1 320px; margin:0; }
.uasAdopt input[data-adn]{ flex:1 1 200px; }
.req{ color:var(--danger); }
/* v137: i pulsanti di navigazione non prendono lo stile dei pulsanti d'azione */
html body.ui102 .mnSubI:not(#_){ display:flex !important; justify-content:flex-start !important; text-align:left !important; width:100% !important; min-height:0 !important; margin:0 !important; border:0 !important; border-radius:var(--r-sm) !important; background:transparent !important; gap:8px !important; color:#aebbd0 !important; font:500 13px/1.3 var(--font) !important; padding:5px 8px !important; }
html body.ui102 .mnSubI:hover:not(#_){ background:rgba(255,255,255,.07) !important; color:#fff !important; }
html body.ui102 .mnSubI.active:not(#_){ background:rgba(255,255,255,.1) !important; color:#fff !important; font-weight:600 !important; }
html body.ui102 .mnSub{ border-left-color:rgba(255,255,255,.15); }
html body.ui102 .mnHome:not(#_){ font-weight:600 !important; color:#fff !important; background:rgba(255,255,255,.06) !important; margin-bottom:8px !important; }
html body.ui102 .uasStep:not(#_){ min-height:0 !important; padding:5px 12px !important; border-radius:999px !important; background:var(--surface) !important; color:var(--text-2) !important; border:1px solid var(--border) !important; font:500 13px/1.3 var(--font) !important; }
html body.ui102 .uasStep.done:not(#_){ background:var(--ok-bg) !important; color:var(--ok) !important; border-color:var(--ok-bd) !important; }
html body.ui102 .uasStep.active:not(#_){ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }

/* v137: navigazione del Nucleo droni in una barra orizzontale compatta (la pagina usa tutta la larghezza) */
.uasWrap{ display:flex; flex-direction:column; gap:14px; }
.uasBar{ position:sticky; top:var(--topbar-h); z-index:5; background:var(--bg); padding:2px 0 8px; border-bottom:1px solid var(--border); display:flex; flex-direction:column; gap:6px; }
.uasAreas,.uasPages{ display:flex; gap:4px; overflow-x:auto; scrollbar-width:thin; }
.uasNavSel{ display:none; width:100%; }
html body.ui102 .uasArea:not(#_){ min-height:0 !important; padding:6px 12px !important; border-radius:999px !important; background:transparent !important; color:var(--text-2) !important; border:1px solid transparent !important; font:600 13px/1.2 var(--font) !important; white-space:nowrap !important; flex:0 0 auto; gap:6px !important; }
html body.ui102 .uasArea:hover:not(#_){ background:var(--surface) !important; border-color:var(--border) !important; }
html body.ui102 .uasArea.active:not(#_){ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }
html body.ui102 .uasPg:not(#_){ min-height:0 !important; padding:5px 10px !important; border-radius:var(--r-sm) !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; font:500 13px/1.2 var(--font) !important; white-space:nowrap !important; flex:0 0 auto; gap:6px !important; }
html body.ui102 .uasPg:hover:not(#_){ border-color:var(--primary) !important; }
html body.ui102 .uasPg.active:not(#_){ background:var(--primary-50) !important; color:var(--primary) !important; border-color:var(--primary) !important; font-weight:600 !important; }
@media (max-width: 760px){
  .uasAreas,.uasPages{ display:none; }
  .uasNavSel{ display:block; }
  .uasBar{ position:static; border-bottom:0; padding:0; }
}
.uasAreas,.uasPages{ flex-wrap:wrap; overflow:visible; }
html body.ui102 .uasArea .sbBadge, html body.ui102 .uasPg .sbBadge{ position:static !important; margin:0 !important; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:var(--danger) !important; color:#fff !important; font:700 11px/18px var(--font) !important; display:inline-block; text-align:center; }
html body.ui102 .uasArea .sbBadge.soft, html body.ui102 .uasPg .sbBadge.soft{ background:var(--border-strong) !important; color:var(--text) !important; }

/* v138: menu laterale nascondibile su schermo largo */
html body.ui102 .sbToggle{ display:inline-grid !important; }
.sidebar102{ transition:transform .18s ease; }
.main102{ transition:margin-left .18s ease; }
@media (min-width: 981px){
  body.sbHidden .sidebar102{ transform:translateX(-100%); box-shadow:none; }
  body.sbHidden .main102{ margin-left:0; }
}
/* v138: attività del Nucleo droni direttamente nel gruppo del menu */
.mnUasG{ font-size:10.5px; text-transform:uppercase; letter-spacing:.06em; color:#7f8ea6; font-weight:700; padding:9px 10px 3px 14px; }
html body.ui102 .mnUasI:not(#_){ display:flex !important; align-items:center; justify-content:flex-start !important; text-align:left !important; width:100% !important; min-height:0 !important; margin:0 !important; padding:5px 10px 5px 14px !important; border:0 !important; border-radius:var(--r-sm) !important; background:transparent !important; color:#cdd6e4 !important; font:500 13.5px/1.3 var(--font) !important; gap:9px !important; }
html body.ui102 .mnUasI:hover:not(#_){ background:rgba(255,255,255,.07) !important; color:#fff !important; }
html body.ui102 .mnUasI.active:not(#_){ background:#1d3a66 !important; color:#fff !important; box-shadow:inset 3px 0 0 var(--gold) !important; font-weight:600 !important; }
.mnUasI .ic{ width:18px; text-align:center; flex:0 0 18px; }
.mnUasI .sbLabel{ flex:1; }

/* v139: richieste turni e generazione */
.shrRules{ margin-top:0; font-size:13.5px; line-height:1.55; }
.shrMonths{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:8px; margin:10px 0 12px; }
.shrMonth{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r); padding:8px 10px; display:flex; flex-direction:column; gap:3px; }
.shrMonth b{ text-transform:capitalize; } .shrMonth small{ color:var(--text-3); } .shrMonth.closed{ opacity:.75; }
.shrT{ width:100%; border-collapse:collapse; font-size:13.5px; }
.shrT th,.shrT td{ border-bottom:1px solid var(--border); padding:7px 8px; text-align:left; vertical-align:top; }
.shrT thead th{ background:var(--surface-2); font-size:12px; color:var(--text-2); }
.shrT input:not([type=checkbox]),.shrT select{ width:100%; min-width:70px; padding:5px 6px; font-size:13px; }
.shrT .nowrap{ white-space:nowrap; }
.shrCheck{ margin-top:10px; }
.shrSlots{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:6px 0; } .shrSlots b{ min-width:150px; }
.shrSlot{ display:inline-flex; align-items:center; gap:4px; font-weight:600; } .shrSlot input{ width:64px; }
.shrBig{ font-size:15px; }
html body.ui102 .shrLock:not(#_){ cursor:pointer; user-select:none; }
.shrRep{ display:flex; flex-wrap:wrap; gap:8px; margin-bottom:10px; }
.shrRep>div{ border-radius:var(--r); padding:6px 10px; font-size:13.5px; border:1px solid; }
.shrRep .ok{ background:var(--ok-bg); border-color:var(--ok-bd); color:var(--ok); } .shrRep .ko{ background:var(--warn-bg); border-color:var(--warn-bd); color:var(--warn); }
.shGrid td.rqOk,.shGrid td.rqKo,.shGrid td.rqFix,.shGrid td.rqMan{ position:relative; }
.shGrid td.rqOk{ box-shadow:inset 0 0 0 2px #16a34a; } .shGrid td.rqKo{ box-shadow:inset 0 0 0 2px #dc2626; }
.shGrid td.rqFix::after,.shGrid td.rqMan::after{ content:''; position:absolute; top:1px; right:1px; width:0; height:0; border-style:solid; border-width:0 7px 7px 0; border-color:transparent #7c3aed transparent transparent; }
.shGrid td.rqMan::after{ border-color:transparent #0ea5e9 transparent transparent; }
.shGrid td.rqPend{ outline:2px dashed #d97706; outline-offset:-3px; }
.shGrid tfoot td.over{ background:var(--danger-bg); color:var(--danger); font-weight:700; }
.shGrid tfoot td small{ color:var(--text-3); font-size:9px; }
.shrDraft td{ cursor:pointer; }
.shrLeg{ display:inline-flex; flex-wrap:wrap; gap:6px; align-items:center; font-size:12px; color:var(--text-2); }
.shrLeg .lg{ display:inline-block; width:14px; height:14px; border-radius:3px; background:var(--surface); vertical-align:middle; margin-left:6px; }
.shrLeg .lg.rqOk{ box-shadow:inset 0 0 0 2px #16a34a; } .shrLeg .lg.rqKo{ box-shadow:inset 0 0 0 2px #dc2626; }
.shrLeg .lg.rqFix{ background:linear-gradient(225deg,#7c3aed 30%,var(--surface) 30%); } .shrLeg .lg.rqMan{ background:linear-gradient(225deg,#0ea5e9 30%,var(--surface) 30%); }
/* v140: richieste sul quadro del mese */
.shrMonth[data-mym]{ cursor:pointer; } .shrMonth.sel{ border-color:var(--primary); box-shadow:inset 0 0 0 1px var(--primary); background:var(--primary-50); }
.shrMode{ margin:4px 0 10px; }
.shrQBar{ position:sticky; top:calc(var(--topbar-h) + 4px); z-index:4; display:flex; flex-wrap:wrap; gap:6px; align-items:center; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); padding:8px 10px; margin-bottom:10px; min-height:44px; }
.shrPrefPick{ display:inline-flex; flex-wrap:wrap; align-items:center; gap:4px; padding-right:8px; border-right:1px solid var(--border); margin-right:4px; font-weight:600; }
html body.ui102 .shrPrefPick .btnSm:not(#_){ padding:3px 5px !important; min-height:0 !important; background:var(--surface) !important; border-color:var(--border) !important; }
.shGrid td.prev{ opacity:.55; }
.shGrid tr.me td.prev{ opacity:.8; }
.shGrid td.mine{ cursor:pointer; }
.shGrid td.mine:hover{ outline:2px solid var(--primary); outline-offset:-2px; opacity:1; }
.shGrid td.sel{ opacity:1; background:var(--primary) !important; color:#fff !important; box-shadow:inset 0 0 0 2px #0b1f3a; }
.shGrid td.mineReq{ cursor:pointer; font-weight:700; }
.shGrid td.rqAppr{ box-shadow:inset 0 0 0 2px #16a34a; }
.shGrid tr.me th.nm{ background:var(--primary-50); }
.shrLeg .lg.sel{ background:var(--primary); } .shrLeg .lg.rqPend{ outline:2px dashed #d97706; outline-offset:-2px; } .shrLeg .lg.rqAppr{ box-shadow:inset 0 0 0 2px #16a34a; }
/* v141: quadro con richieste, assenze dei colleghi, dettaglio */
.shrQ header{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; justify-content:space-between; }
.shrQ header .actions{ display:flex; gap:6px; align-items:center; }
.shrQBar{ flex-direction:column; align-items:stretch; }
.shrBarHead{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.shrBarHead input{ flex:1 1 260px; min-width:0; }
.shrBarBtns{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.shGrid td.othReq{ font-weight:600; opacity:.9; }
.shGrid td.mineReq sup,.shGrid td.othReq sup{ font-size:9px; }
.shGrid td.empty.mine{ background:var(--surface); }
/* v142: gruppi, colonne festive, formato di stampa */
.shGrid td.holc{ background-image:linear-gradient(rgba(220,38,38,.10),rgba(220,38,38,.10)); }
.shGrid td.holc.empty{ background-color:#fff5f5; }
.shGrid thead th small{ text-transform:lowercase; }
.shGrid tr.grpRow th.nm,.shGrid tr.grpRow td{ background:#e2e8f0 !important; color:#0f172a; font-weight:700; text-align:left; border-top:2px solid #94a3b8; }
.shGrid tr.grpRow th.nm small{ font-weight:500; color:var(--text-3); }
.shrGroup{ border:1px solid var(--border); border-radius:var(--r); padding:10px; margin-bottom:10px; background:var(--surface-2); }
.shrGHead{ display:flex; gap:8px; align-items:center; } .shrGHead input{ flex:1; font-weight:600; }
.shrGNums{ display:flex; flex-wrap:wrap; gap:10px 16px; align-items:center; margin:8px 0; font-size:13px; } .shrGNums input{ width:64px; margin-left:4px; }
.shrGMem{ display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:2px 10px; max-height:220px; overflow:auto; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-sm); padding:6px 8px; }
.shrGMem .checkLine{ margin:0; font-size:13px; }
.shrFmt{ display:flex; gap:10px; flex-wrap:wrap; }
/* v143: funzioni e avvisi */
.featRow{ display:flex; gap:12px; align-items:flex-start; padding:10px 0; border-bottom:1px solid var(--border); cursor:pointer; }
.featRow input{ margin-top:4px; width:18px; height:18px; } .featRow span:nth-child(2){ flex:1; display:flex; flex-direction:column; gap:2px; } .featRow small{ color:var(--text-2); }
/* v143: chiamata ai colleghi in servizio */
.ptBox{ max-height:calc(100vh - 32px); overflow:auto; }
.ptDuty{ border:1px solid var(--border); border-radius:12px; padding:6px 8px; }
.ptDuty summary{ cursor:pointer; font-weight:700; padding:4px 2px; } .ptDuty summary small{ font-weight:500; color:var(--text-3); }
.ptDutyL{ display:grid; gap:6px; margin-top:6px; max-height:46vh; overflow:auto; }
.ptCall.duty{ padding:7px 10px; } .ptCall.duty .t b{ font-size:14.5px; } .ptCall.duty .t small{ font-size:12.5px; letter-spacing:0; }
.ptCall.duty.now{ border-color:#16a34a; } .ptCall.duty.off{ opacity:.65; } .ptCall.duty .go{ font-size:12.5px; white-space:nowrap; }
.ptNote{ margin:0; font-size:13px; color:var(--text-2); padding:2px 4px; }
.pt126sheet{ z-index:9800; } body.drvOpen .pt126sheet{ z-index:9850; }
.ptDutyH{ font-weight:700; padding:4px 2px; } .ptDutyH small{ font-weight:500; color:var(--text-3); }
/* v145: ordine di servizio nell'app, prontuario e norme */
.oe145modal .mBox{ max-width:980px; }
.oeTools{ display:flex; gap:6px; flex-wrap:wrap; align-items:flex-end; }
.oeSvc{ border:1px solid var(--border); border-radius:var(--r); padding:10px 12px; margin:10px 0; background:var(--surface-2); }
.oeHead{ display:flex; gap:10px; align-items:center; margin-bottom:6px; }
.oeTimes{ display:flex; gap:8px; } .oeTimes>div{ flex:1; }
.oeMem{ display:flex; flex-wrap:wrap; gap:5px; }
html body.ui102 .oeChip:not(#_){ min-height:0 !important; padding:4px 10px !important; border-radius:999px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; font:500 13px/1.3 var(--font) !important; }
html body.ui102 .oeChip.duty:not(#_){ border-color:#16a34a !important; }
html body.ui102 .oeChip.abs:not(#_){ opacity:.55; text-decoration:line-through; }
html body.ui102 .oeChip.on:not(#_){ background:var(--primary) !important; color:#fff !important; border-color:var(--primary) !important; }
.oeChip small{ opacity:.75; font-size:11px; }
.pg145bar{ display:flex; gap:8px; } .pg145bar input{ flex:1; font-size:16px; }
.pg145chips{ margin:8px 0; }
.pg145out{ display:flex; flex-direction:column; gap:6px; min-height:120px; }
.pg145h{ margin:10px 0 2px; } .pg145h small{ color:var(--text-3); font-weight:500; }
.pg145item{ border:1px solid var(--border); border-radius:var(--r); background:var(--surface); }
.pg145item summary{ cursor:pointer; padding:8px 10px; display:flex; flex-direction:column; gap:2px; }
.pg145item summary small{ color:var(--text-3); } .pg145snip{ font-size:13px; color:var(--text-2); }
.pg145body{ padding:4px 12px 10px; border-top:1px solid var(--border); font-size:14px; } .pg145body p{ margin:6px 0; }
.pg145quote{ border-left:3px solid var(--border-strong); padding-left:8px; color:var(--text-2); }
.pg145top{ display:flex; gap:8px; align-items:center; background:var(--surface); border:1px solid var(--border); border-radius:var(--r-lg); padding:8px 12px; margin:0 0 14px; }
.pg145top input{ flex:1; }
.drv129 .dvBtn small{ line-height:1.2; }

/* v149 – quadro turni: navigazione, ricerca, modifica rapida */
.shMonthBar{ flex-wrap:wrap; gap:8px; }
.shMonthNav{ display:inline-flex; align-items:center; gap:4px; }
.shMonthNav select{ min-width:150px; }
#shFind{ max-width:220px; min-width:150px; }
.shPaintBar{ display:flex; flex-wrap:wrap; align-items:center; gap:8px; padding:8px 12px; margin:0 0 8px; border:1px solid var(--primary, #1f4e79); border-radius:10px; background:var(--primary-50, #eef4fb); position:sticky; top:0; z-index:5; }
.shPaintBar .spacer{ flex:1; }
.shPaintCodes{ display:flex; flex-wrap:wrap; gap:6px; }
.shPaintCodes .shCode{ cursor:pointer; min-width:38px; min-height:34px; font-weight:700; border-width:1px; border-style:solid; }
.shPaintCodes .shCode.on{ outline:3px solid var(--primary, #1f4e79); outline-offset:1px; }
.shPaintCodes .shCode.empty{ background:#fff; border-color:#cbd5e1; }
.shGridWrap.painting .shGrid td[data-cell]{ cursor:crosshair; user-select:none; }
.shGrid td.flash{ animation:shFlash149 .6s ease-out; }
@keyframes shFlash149{ from{ box-shadow:inset 0 0 0 2px var(--primary, #1f4e79); } to{ box-shadow:none; } }
.shGrid thead th.xh{ background:var(--primary-50, #dbeafe); color:var(--primary, #1f4e79); }
.shGrid tbody tr:hover th.nm{ background:var(--primary-50, #eef4fb); }
.shGrid th.tot, .shGrid td.tot{ font-weight:700; color:var(--text-2, #475569); background:var(--surface-2, #f8fafc); min-width:40px; }
.shGrid tbody tr[hidden]{ display:none; }
@media (max-width:700px){
  .shGrid th.nm{ min-width:120px; max-width:140px; overflow:hidden; text-overflow:ellipsis; }
  #shFind{ max-width:none; flex:1 1 100%; }
  .shPaintCodes .shCode{ min-width:42px; min-height:40px; }
}

/* v149 – pulsanti della modifica rapida con i colori dei codici */
html body.ui102 .shPaintCodes button.shCode:not(#_){ min-width:42px !important; min-height:36px !important; padding:4px 10px !important; font:700 14px/1 var(--font) !important; border:1px solid !important; border-radius:8px !important; box-shadow:none !important; }
html body.ui102 .shPaintCodes button.shCode.sM:not(#_), html body.ui102 .shPaintCodes button.shCode.sM:not(#_):hover{ background:#dbeafe !important; border-color:#93c5fd !important; color:#1e3a8a !important; }
html body.ui102 .shPaintCodes button.shCode.sP:not(#_), html body.ui102 .shPaintCodes button.shCode.sP:not(#_):hover{ background:#fef3c7 !important; border-color:#fcd34d !important; color:#78350f !important; }
html body.ui102 .shPaintCodes button.shCode.sS:not(#_), html body.ui102 .shPaintCodes button.shCode.sS:not(#_):hover{ background:#ede9fe !important; border-color:#c4b5fd !important; color:#4c1d95 !important; }
html body.ui102 .shPaintCodes button.shCode.sN:not(#_), html body.ui102 .shPaintCodes button.shCode.sN:not(#_):hover{ background:#e0e7ff !important; border-color:#a5b4fc !important; color:#312e81 !important; }
html body.ui102 .shPaintCodes button.shCode.sG:not(#_), html body.ui102 .shPaintCodes button.shCode.sG:not(#_):hover{ background:#dcfce7 !important; border-color:#86efac !important; color:#14532d !important; }
html body.ui102 .shPaintCodes button.shCode.sX:not(#_), html body.ui102 .shPaintCodes button.shCode.sX:not(#_):hover{ background:#e0f2fe !important; border-color:#7dd3fc !important; color:#0c4a6e !important; }
html body.ui102 .shPaintCodes button.shCode.rest:not(#_), html body.ui102 .shPaintCodes button.shCode.rest:not(#_):hover{ background:#f1f5f9 !important; border-color:#cbd5e1 !important; color:#475569 !important; }
html body.ui102 .shPaintCodes button.shCode.abs:not(#_), html body.ui102 .shPaintCodes button.shCode.abs:not(#_):hover{ background:#fee2e2 !important; border-color:#fca5a5 !important; color:#7f1d1d !important; }
html body.ui102 .shPaintCodes button.shCode.unk:not(#_), html body.ui102 .shPaintCodes button.shCode.unk:not(#_):hover{ background:#ffffff !important; border-color:#cbd5e1 !important; color:#334155 !important; }
html body.ui102 .shPaintCodes button.shCode.empty:not(#_), html body.ui102 .shPaintCodes button.shCode.empty:not(#_):hover{ background:#ffffff !important; border-color:#cbd5e1 !important; color:#334155 !important; }
html body.ui102 .shPaintCodes button.shCode.on:not(#_){ outline:3px solid var(--primary, #1f4e79) !important; outline-offset:1px; }
html body.ui102 .shPaintCodes button.shCode:not(#_):hover{ filter:brightness(.95); }
/* v149 – revisione del quadro turni */
.shRev{ display:inline-block; font-weight:700; font-size:13px; padding:3px 9px; border:1.5px solid var(--primary, #1f4e79); color:var(--primary, #1f4e79); border-radius:6px; white-space:nowrap; }

/* v150 - Assistente dell'app */
.as150Fab{ position:fixed; right:16px; bottom:calc(84px + env(safe-area-inset-bottom)); z-index:9400; display:inline-flex; align-items:center; gap:8px; cursor:pointer; }
html body.ui102 .as150Fab:not(#_){ min-height:44px; padding:0 16px 0 12px !important; border-radius:24px !important; background:var(--navy-800) !important; color:#fff !important; border:0 !important; box-shadow:var(--sh-3); font-weight:600; font-size:14px; }
html body.ui102 .as150Fab:not(#_):hover{ background:var(--navy-700) !important; }
.as150Fab.on, body:has(.modal102) .as150Fab, body:has(.nt117full) .as150Fab, body.plOpen .as150Fab, body.drvOpen .as150Fab{ display:none; }
body.as150Open .pt126fab{ display:none !important; }
.as150{ position:fixed; right:16px; bottom:calc(16px + env(safe-area-inset-bottom)); z-index:9600; width:min(420px, calc(100vw - 32px)); height:min(620px, calc(100vh - 36px)); display:flex; flex-direction:column; background:var(--surface); color:var(--text); border:1px solid var(--border); border-radius:var(--r-lg); box-shadow:var(--sh-3); overflow:hidden; }
.as150[hidden]{ display:none; }
.as150Head{ display:flex; align-items:center; justify-content:space-between; gap:8px; padding:12px 14px; background:var(--navy-800); color:#fff; }
.as150Head small{ display:block; font-size:11.5px; opacity:.8; margin-top:2px; }
html body.ui102 .as150X:not(#_){ background:transparent !important; border:0 !important; color:#fff !important; font-size:24px !important; line-height:1; padding:2px 8px !important; min-height:0 !important; box-shadow:none !important; }
.as150Body{ flex:1; overflow:auto; padding:12px; display:flex; flex-direction:column; gap:10px; background:var(--bg); }
.as150Msg{ max-width:94%; padding:9px 12px; border-radius:var(--r); font-size:14px; line-height:1.45; }
.as150Msg p{ margin:0 0 6px; } .as150Msg p:last-child{ margin-bottom:0; }
.as150Msg.bot{ align-self:flex-start; background:var(--surface); border:1px solid var(--border); }
.as150Msg.me{ align-self:flex-end; background:var(--primary); color:#fff; }
.as150Ans{ border:1px solid var(--border); border-radius:var(--r-sm); padding:6px 10px; margin:6px 0; background:var(--surface-2); }
.as150Ans summary{ cursor:pointer; font-weight:600; }
.as150Ans ol, .as150Ans ul{ margin:6px 0 6px 18px; padding:0; } .as150Ans li{ margin:2px 0; }
.as150Tips{ color:var(--text-2); font-size:13px; }
.as150Sec{ font-weight:400; font-size:11.5px; color:var(--text-3); margin-left:4px; }
.as150Acts{ display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-top:6px; }
.as150More span, .as150Hint{ color:var(--text-2); font-size:12.5px; }
.as150Nav{ display:flex; flex-wrap:wrap; gap:4px; }
.as150Chips{ display:flex; flex-wrap:wrap; gap:6px; padding:8px 12px; border-top:1px solid var(--border); background:var(--surface); max-height:112px; overflow:auto; }
.as150Here{ font-size:12px; color:var(--text-3); align-self:center; }
html body.ui102 button.as150Chip:not(#_){ padding:5px 11px !important; min-height:0 !important; height:auto !important; border-radius:999px !important; border:1px solid var(--border-strong) !important; background:var(--surface) !important; color:var(--navy-800) !important; font-size:12.5px !important; font-weight:500 !important; box-shadow:none !important; line-height:1.3 !important; }
html body.ui102 button.as150Chip:not(#_):hover{ background:var(--primary-50) !important; }
.as150Form{ display:flex; gap:6px; padding:10px 12px; border-top:1px solid var(--border); background:var(--surface); }
.as150Form input{ flex:1; min-width:0; }
body.locked .as150Fab, body.locked .as150{ display:none !important; }
@media print{ .as150Fab, .as150{ display:none !important; } }
@media (max-width:760px){
  html body.ui102 .as150Fab:not(#_){ width:52px; min-height:52px; padding:0 !important; justify-content:center; } .as150Fab span{ display:none; }
  .as150{ inset:0; width:auto; height:auto; right:0; bottom:0; border-radius:0; border:0; }
}

/* v151 - Reno, il collega: avatar e tono */
.rnFace{ width:40px; height:40px; flex:none; border-radius:50%; display:block; }
.rnEyes{ transform-origin:32px 39px; animation:rnBlink 5s infinite; }
@keyframes rnBlink{ 0%,94%,100%{ transform:scaleY(1); } 96%{ transform:scaleY(.1); } }
@media (prefers-reduced-motion: reduce){ .rnEyes{ animation:none; } }
html body.ui102 .as150Fab:not(#_){ padding:0 16px 0 4px !important; min-height:48px; }
.as150Fab .rnFace{ width:40px; height:40px; box-shadow:0 0 0 2px #fff; }
.rnWho{ display:flex; align-items:center; gap:10px; } .rnWho .rnFace{ width:44px; height:44px; box-shadow:0 0 0 2px rgba(255,255,255,.85); }
.rnWho b{ font-size:16px; }
.rnDot{ display:inline-block; width:8px; height:8px; border-radius:50%; background:#4ade80; margin-right:5px; vertical-align:middle; }
.rnRow{ display:flex; align-items:flex-end; gap:8px; max-width:100%; }
.rnRow .rnFace{ width:30px; height:30px; }
.rnRow .as150Msg.bot{ max-width:calc(100% - 38px); border-bottom-left-radius:4px; }
.as150Msg.me{ border-bottom-right-radius:4px; }
.rnTyping{ display:flex; gap:4px; padding:12px 14px !important; }
.rnTyping span{ width:7px; height:7px; border-radius:50%; background:var(--text-3); animation:rnDots 1s infinite; }
.rnTyping span:nth-child(2){ animation-delay:.15s; } .rnTyping span:nth-child(3){ animation-delay:.3s; }
@keyframes rnDots{ 0%,60%,100%{ opacity:.3; transform:translateY(0); } 30%{ opacity:1; transform:translateY(-3px); } }
.srOnly{ position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); }
@media (max-width:760px){ html body.ui102 .as150Fab:not(#_){ width:56px; min-height:56px; padding:0 !important; } .as150Fab .rnFace{ width:48px; height:48px; } }

/* v152 - Reno con l'IA del Comune */
.as150Head{ position:relative; }
html body.ui102 .rnAiBtn:not(#_){ margin-left:auto; margin-right:4px; min-height:0 !important; padding:4px 10px !important; border-radius:999px !important; font-size:12px !important; font-weight:700 !important; letter-spacing:.04em; background:transparent !important; color:rgba(255,255,255,.75) !important; border:1px solid rgba(255,255,255,.45) !important; box-shadow:none !important; }
html body.ui102 .rnAiBtn.on:not(#_){ background:#4ade80 !important; color:#06331a !important; border-color:#4ade80 !important; }
.rnAiBtn[hidden]{ display:none !important; }
.rnAiNote{ margin:0; padding:0 12px 10px; font-size:11.5px; color:var(--text-3); background:var(--surface); line-height:1.35; }
.rnWarn{ background:var(--warn-bg); border:1px solid var(--warn-bd); color:var(--warn); padding:6px 9px; border-radius:var(--r-sm); font-size:13px; }
.rnSteps{ margin:6px 0 6px 18px; padding:0; } .rnSteps li{ margin:3px 0; }
.rnFrom{ margin-top:8px; } .rnFrom > span{ font-size:12px; color:var(--text-3); }
.rnAiTag{ font-size:11.5px; color:var(--text-3); margin-top:8px !important; border-top:1px dashed var(--border); padding-top:6px; }

/* v153 - Le mie note */
.ntBar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:16px 0 4px; }
.ntBar input[type=search]{ flex:1 1 220px; max-width:360px; }
.ntDay{ margin:18px 0 8px; font-size:14px; text-transform:capitalize; color:var(--text-2); }
.nt153{ display:flex; gap:14px; padding:12px 14px; margin-bottom:8px; background:var(--surface); border:1px solid var(--border); border-radius:var(--r); box-shadow:var(--sh-1); }
.nt153.pin{ border-left:4px solid var(--gold); }
.nt153.done .ntText{ text-decoration:line-through; color:var(--text-3); }
.ntTime{ flex:none; width:58px; text-align:center; } .ntTime b{ display:block; font-size:18px; font-variant-numeric:tabular-nums; } .ntTime small{ font-size:11px; color:var(--text-3); }
.ntMain{ flex:1; min-width:0; }
.ntText{ margin:0 0 4px; white-space:pre-wrap; overflow-wrap:anywhere; font-size:15px; line-height:1.45; }
.ntMeta{ color:var(--text-3); font-size:12px; }
.ntActs{ display:flex; flex-wrap:wrap; gap:6px; margin-top:8px; }
html body.ui102 .linkBtn:not(#_){ background:none !important; border:0 !important; padding:0 !important; min-height:0 !important; color:var(--primary) !important; text-decoration:underline; font:inherit !important; box-shadow:none !important; cursor:pointer; }
.ntHist{ border:1px solid var(--border); border-radius:var(--r-sm); padding:8px 10px; margin:8px 0; } .ntHist.cur{ border-color:var(--primary); } .ntHist p{ margin:4px 0 0; white-space:pre-wrap; }
@media (max-width:600px){ .nt153{ gap:10px; padding:10px; } .ntTime{ width:46px; } .ntTime b{ font-size:16px; } }

/* v153 - Reno: voce e note */
html body.ui102 .rnMic:not(#_){ flex:none; width:42px; min-height:40px !important; padding:0 !important; border-radius:50% !important; background:var(--surface-2) !important; border:1px solid var(--border-strong) !important; color:var(--navy-800) !important; box-shadow:none !important; display:inline-flex; align-items:center; justify-content:center; }
html body.ui102 .rnMic.on:not(#_){ background:#dc2626 !important; border-color:#dc2626 !important; color:#fff !important; animation:rnPulse 1.2s infinite; }
@keyframes rnPulse{ 0%{ box-shadow:0 0 0 0 rgba(220,38,38,.5); } 70%{ box-shadow:0 0 0 10px rgba(220,38,38,0); } 100%{ box-shadow:0 0 0 0 rgba(220,38,38,0); } }
.rnMic[hidden], .rnSpk[hidden]{ display:none !important; }
html body.ui102 .rnSpk:not(#_){ margin-left:auto; min-height:0 !important; padding:3px 8px !important; border-radius:999px !important; background:transparent !important; border:1px solid rgba(255,255,255,.45) !important; color:#fff !important; box-shadow:none !important; display:inline-flex; align-items:center; }
html body.ui102 .rnSpk:not(#_) + .rnAiBtn{ margin-left:0; }
.rnNote{ margin:6px 0; padding:8px 10px; border-left:3px solid var(--gold); background:var(--surface-2); border-radius:0 var(--r-sm) var(--r-sm) 0; white-space:pre-wrap; }
.rnNotes{ margin:4px 0 4px 18px; padding:0; } .rnNotes li{ margin:3px 0; }
@media (prefers-reduced-motion: reduce){ html body.ui102 .rnMic.on:not(#_){ animation:none; } }

/* v154 - Controlli su strada */
.rcBar{ display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:6px 0 12px; }
.rcBar .chipRow{ align-items:center; } .rcMonth{ min-width:130px; text-align:center; text-transform:capitalize; }
.rcBar select{ width:auto; } .rcBar input[type=search]{ flex:1 1 260px; }
.rcKpi{ display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin-bottom:14px; }
.rcKpi > div{ background:var(--surface); border:1px solid var(--border); border-radius:var(--r); padding:10px 12px; }
.rcKpi b{ display:block; font-size:22px; font-variant-numeric:tabular-nums; } .rcKpi span{ font-size:12px; color:var(--text-2); }
.rcKpi.small{ grid-template-columns:repeat(4,minmax(0,1fr)); margin:12px 0 0; } .rcKpi.small b{ font-size:18px; }
.rcList{ display:flex; flex-direction:column; gap:8px; }
html body.ui102 button.rcCard:not(#_){ display:flex; align-items:center; gap:14px; width:100%; text-align:left; padding:12px 14px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border) !important; border-radius:var(--r) !important; box-shadow:var(--sh-1) !important; min-height:0 !important; font-weight:400 !important; }
html body.ui102 button.rcCard.live:not(#_){ border-left:4px solid #16a34a !important; }
html body.ui102 button.rcCard:not(#_):hover{ border-color:var(--primary) !important; }
.rcWhen{ flex:none; width:92px; } .rcWhen b{ display:block; } .rcWhen small, .rcWhat small{ display:block; color:var(--text-3); font-size:12px; }
.rcWhat{ flex:1; min-width:0; } .rcNums{ display:flex; gap:10px; align-items:center; flex:none; font-variant-numeric:tabular-nums; } .rcNums .warn{ color:var(--danger); font-weight:700; }
.badge102.live{ background:#dcfce7; color:#166534; }
.rcHead dl{ display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px 16px; margin:0; }
.rcHead dl .wide{ grid-column:span 2; } .rcHead dt{ font-size:11px; text-transform:uppercase; color:var(--text-3); } .rcHead dd{ margin:0; font-weight:600; } .pre{ white-space:pre-wrap; }
.rcAddBar{ margin:14px 0; }
html body.ui102 .rcAddBtn:not(#_){ width:100%; min-height:52px !important; font-size:16px !important; }
.rcTable td{ vertical-align:top; } .mono{ font-family:var(--mono); font-weight:700; letter-spacing:.03em; white-space:nowrap; }
.rcSan{ font-size:12.5px; } .rcRowAct{ white-space:nowrap; }
.rcOut{ display:inline-block; padding:1px 8px; border-radius:999px; font-size:12px; font-weight:600; background:var(--ok-bg); color:var(--ok); border:1px solid var(--ok-bd); }
.rcOut.sanzionato{ background:var(--danger-bg); color:var(--danger); border-color:var(--danger-bd); } .rcOut.altro{ background:var(--warn-bg); color:var(--warn); border-color:var(--warn-bd); }
.rcMob{ display:none; } .rcItem{ border:1px solid var(--border); border-radius:var(--r); padding:10px 12px; margin-bottom:8px; } .rcItem header{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; margin-bottom:4px; } .rcItem > div{ margin:2px 0; } .rcNote{ color:var(--text-2); }
.rcAgents{ display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:2px 12px; max-height:200px; overflow:auto; border:1px solid var(--border); border-radius:var(--r-sm); padding:6px 10px; }
.rcAgentAdd, .rcPlace{ display:flex; gap:6px; margin-top:6px; } .rcAgentAdd input, .rcPlace input{ flex:1; min-width:0; }
.rcPlateIn{ font-size:18px !important; text-transform:uppercase; }
.rcOutSel{ display:flex; flex-wrap:wrap; gap:6px 16px; align-items:center; } .rcOutSel input[type=text], .rcOutSel input:not([type]){ flex:1 1 240px; }
.rcSanRow{ display:grid; grid-template-columns:1.3fr 2fr .9fr .8fr .6fr auto; gap:6px; margin-bottom:6px; }
.rcPrev{ margin:0; } .rcOpen{ margin-bottom:12px; }
.rcTypeRow{ display:flex; gap:6px; align-items:center; margin-bottom:6px; } .rcTypeRow input{ flex:1; }
.rcLog{ margin-top:14px; font-size:13px; color:var(--text-2); } .rcLog ul{ margin:6px 0 0 18px; padding:0; }
@media (max-width:760px){
  .rcKpi{ grid-template-columns:repeat(3,minmax(0,1fr)); } .rcKpi > div{ padding:8px; } .rcKpi b{ font-size:18px; }
  .rcHead dl{ grid-template-columns:repeat(2,minmax(0,1fr)); }
  .rcDesk{ display:none; } .rcMob{ display:block; }
  html body.ui102 button.rcCard:not(#_){ flex-wrap:wrap; gap:6px 12px; } .rcNums{ width:100%; }
  .rcSanRow{ grid-template-columns:1fr 1fr; } .rcSanRow .sDesc{ grid-column:span 2; }
}
.rcRowAct button{ padding:2px 8px !important; margin-left:2px; }
/* v154 - filtri e resoconto */
.rcFilters .pBody{ display:flex; flex-direction:column; gap:10px; }
.rcPer{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; } .rcDates{ display:flex; gap:6px; align-items:center; font-size:13px; color:var(--text-2); } .rcDates input{ width:auto; }
.rcSel{ display:flex; flex-wrap:wrap; gap:8px; align-items:center; } .rcSel select{ width:auto; max-width:230px; } .rcSel input[type=search]{ flex:1 1 240px; }
.rcTabs{ display:flex; gap:4px; align-items:flex-end; border-bottom:1px solid var(--border); margin:4px 0 14px; flex-wrap:wrap; }
html body.ui102 .rcTabs > button:not(#_){ background:transparent !important; border:0 !important; border-bottom:3px solid transparent !important; border-radius:0 !important; color:var(--text-2) !important; padding:8px 12px !important; min-height:0 !important; box-shadow:none !important; font-weight:600 !important; }
html body.ui102 .rcTabs > button.on:not(#_){ color:var(--primary) !important; border-bottom-color:var(--primary) !important; }
.rcTabAct{ margin-left:auto; display:flex; gap:6px; padding-bottom:6px; }
.rcKpi6{ grid-template-columns:repeat(6,minmax(0,1fr)); }
.rcRepGrid{ display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; } .rcRepGrid .panel102{ margin:0; }
.rcRep .num{ text-align:right; font-variant-numeric:tabular-nums; } .rcRep{ margin-bottom:6px; }
.rcBars div{ display:grid; grid-template-columns:56px 1fr 36px; gap:8px; align-items:center; margin:4px 0; font-size:13px; } .rcBars i{ display:block; height:12px; border-radius:3px; background:var(--primary); min-width:2px; } .rcBars b{ text-align:right; }
.rcChecks{ display:flex; flex-wrap:wrap; gap:6px; }
.rcTog{ position:relative; cursor:pointer; } .rcTog input{ position:absolute; opacity:0; pointer-events:none; }
.rcTog span{ display:inline-block; padding:5px 10px; border:1px solid var(--border-strong); border-radius:999px; font-size:13px; background:var(--surface); }
.rcTog input:checked + span{ background:var(--primary); border-color:var(--primary); color:#fff; } .rcTog.warn input:checked + span{ background:var(--danger); border-color:var(--danger); }
.rcTog input:focus-visible + span{ outline:2px solid var(--primary); outline-offset:2px; }
.rcSub{ display:block; font-size:11.5px; color:var(--text-3); } .rcSub.warn{ color:var(--danger); }
.formRows .span3{ grid-column:span 3; } .rcAuto{ margin:0; }
@media (max-width:760px){ .rcRepGrid{ grid-template-columns:1fr; } .rcKpi6{ grid-template-columns:repeat(2,minmax(0,1fr)); } .rcTabAct{ margin-left:0; width:100%; } .formRows .span3{ grid-column:auto; } .rcSel select{ max-width:none; flex:1 1 45%; } }
.formRows.rcForm{ grid-template-columns:repeat(4,minmax(0,1fr)); } .formRows.rcForm > .full{ grid-column:1 / -1; }
@media (max-width:760px){ .formRows.rcForm{ grid-template-columns:repeat(2,minmax(0,1fr)); } .formRows.rcForm .span3{ grid-column:1 / -1; } }
@media (max-width:420px){ .formRows.rcForm{ grid-template-columns:1fr; } }
.formRows.rcForm .span2{ grid-column:span 2; } @media (max-width:420px){ .formRows.rcForm .span2{ grid-column:auto; } }
.rcDates{ flex-wrap:nowrap; } html body.ui102 .rcDates input[type=date]:not(#_){ width:150px !important; min-width:0; flex:none; }
.rcSel select{ flex:0 1 220px; }
@media (max-width:760px){ .rcDates{ flex-wrap:wrap; } html body.ui102 .rcDates input[type=date]:not(#_){ width:140px !important; } }
html body.ui102 input.rcPlateIn:not(#_){ font-size:18px !important; letter-spacing:.06em; }

/* v155 - lista di attenzione, più persone, rimorchio */
.rcWatchAlert{ border:2px solid var(--danger); background:var(--danger-bg); color:var(--text); border-radius:var(--r); padding:10px 12px; margin:0 0 12px; }
.rcWatchAlert > b{ display:block; color:var(--danger); font-size:15px; margin-bottom:4px; }
.rcWatchItem{ border-top:1px solid var(--danger-bd); padding:6px 0 2px; } .rcWatchItem:first-of-type{ border-top:0; }
.rcWatchItem p{ margin:4px 0; white-space:pre-wrap; font-weight:600; } .rcWatchItem small{ color:var(--text-2); }
.rcWatchItem.danger{ background:rgba(220,38,38,.08); margin:0 -12px; padding:6px 12px 4px; }
.rcWatchBadge{ display:inline-block; margin:3px 0 0 4px; padding:1px 7px; border-radius:999px; background:var(--danger); color:#fff; font-size:11.5px; font-weight:700; white-space:nowrap; }
.rcWatchBar{ margin-bottom:10px; align-items:center; }
.rcWatchAdd{ border-top:1px dashed var(--border); padding-top:10px; } .rcWatchAdd .formRows{ margin-top:8px; }
.rcPerRow{ display:grid; grid-template-columns:2fr 1.1fr 1.3fr 1.3fr auto; gap:8px; align-items:end; padding:8px; margin-bottom:6px; border:1px solid var(--border); border-radius:var(--r-sm); background:var(--surface-2); }
.rcPerRow label{ font-size:12px; } .rcPerRow .pDel{ margin-bottom:4px; }
.rcTrRow{ display:grid; grid-template-columns:1fr 1.3fr .6fr 1.3fr auto; gap:8px; align-items:center; }
.rcSub.inl{ display:inline; }
@media (max-width:760px){ .rcPerRow{ grid-template-columns:1fr 1fr; } .rcPerRow .pN{ grid-column:1 / -1; } .rcTrRow{ grid-template-columns:1fr 1fr; } .rcKpi6{ grid-template-columns:repeat(2,minmax(0,1fr)); } }
.rcTable td.rcDocs{ white-space:nowrap; font-size:13px; }

/* v157 - ordine di servizio: fasce distinte, evidenza, ordinamento */
.oeSlot{ border:2px solid var(--border); border-radius:var(--r-lg); padding:10px 14px 4px; margin:14px 0; background:var(--surface); }
.oeSlot > header{ display:flex; align-items:center; gap:10px; flex-wrap:wrap; border-bottom:1px solid var(--border); padding-bottom:8px; margin-bottom:6px; }
.oeSlot > header h3{ margin:0; font-size:16px; text-transform:uppercase; letter-spacing:.05em; }
.oeSlotM{ border-color:#93c5fd; } .oeSlotM > header h3{ color:#1d4ed8; }
.oeSlotP{ border-color:#fcd34d; } .oeSlotP > header h3{ color:#b45309; }
.oeSlotS{ border-color:#c4b5fd; } .oeSlotS > header h3{ color:#6d28d9; }
.oeSlotN{ border-color:#a5b4fc; } .oeSlotN > header h3{ color:#312e81; }
.oeFree{ margin:4px 0 6px; font-size:12.5px; color:var(--warn); }
.oeSvc.hl{ border:2px solid #f59e0b; background:#fffbeb; }
.oeHl{ display:flex; gap:10px; align-items:center; flex-wrap:wrap; } .oeHl input:not([type]){ flex:1 1 240px; }
html body.ui102 .oeChip.on.off:not(#_){ background:#fee2e2 !important; border-color:#dc2626 !important; color:#7f1d1d !important; }
html body.ui102 .oeChip.busy:not(.on):not(#_){ opacity:.6; }
.oeHead .btnLink[disabled]{ opacity:.3; }
.ods115.hl{ border:2px solid #f59e0b !important; background:#fffbeb !important; }
.badge102.hl157{ background:#f59e0b; color:#fff; }
.odsSlot115{ border:1px solid var(--border); border-radius:var(--r); padding:10px; background:var(--surface-2); }
.odsSlot115.slotM{ border-top:4px solid #1d4ed8; } .odsSlot115.slotP{ border-top:4px solid #d97706; } .odsSlot115.slotS{ border-top:4px solid #7c3aed; } .odsSlot115.slotN{ border-top:4px solid #312e81; }
.odsSlot115 h4 small{ text-transform:none; letter-spacing:0; font-weight:400; }
.odsT115 .spacer{ flex:1; } .odsT115 .btnLink{ padding:0 4px; font-size:16px; } .odsT115 .btnLink[disabled]{ opacity:.3; }

/* v157 - rapporto di servizio */
.extChip{ display:inline-block; margin-left:6px; padding:1px 8px; border-radius:999px; font-size:11.5px; font-weight:700; vertical-align:middle; border:1px solid transparent; cursor:default; }
button.extChip{ cursor:pointer; min-height:0 !important; }
html body.ui102 .extChip.ext:not(#_){ background:#dcfce7 !important; color:#166534 !important; border-color:#86efac !important; }
html body.ui102 .extChip.int:not(#_){ background:#e0e7ff !important; color:#3730a3 !important; border-color:#a5b4fc !important; }
html body.ui102 .extChip.unk:not(#_){ background:var(--surface-2) !important; color:var(--text-3) !important; border-color:var(--border) !important; }
html body.ui102 button.extChip:not(#_){ padding:1px 8px !important; font-size:11.5px !important; box-shadow:none !important; }
.extFact em{ display:block; font-style:normal; font-size:12px; color:var(--text-3); } .extFact.ok strong{ color:#166534; } .extFact.ok em{ color:#166534; font-weight:600; }
.odsTodo{ margin:6px 18px 0; border:1px dashed #f59e0b; border-radius:var(--r); background:#fffbeb; padding:6px 10px; }
.odsTodo h4{ margin:4px 0; font-size:13px; color:#92400e; }
.timeline li.todo time{ color:var(--text-3); }
.timeline time small{ display:block; font-size:11px; color:var(--text-3); }
.odsPickList{ display:grid; gap:8px; }
html body.ui102 button.odsPick:not(#_){ display:block; text-align:left; width:100%; padding:10px 12px !important; background:var(--surface) !important; color:var(--text) !important; border:1px solid var(--border-strong) !important; border-radius:var(--r) !important; box-shadow:none !important; min-height:0 !important; font-weight:400 !important; }
html body.ui102 button.odsPick:not(#_):hover{ border-color:var(--primary) !important; background:var(--primary-50) !important; }
.odsPick small{ display:block; color:var(--text-2); margin-top:2px; }
.plannedList{ display:grid; gap:4px; border:1px solid var(--border); border-radius:var(--r-sm); padding:6px 10px; }
.evTimes{ display:flex; gap:8px; } .evTimes > div{ flex:1; }
.extSel{ display:flex; gap:8px; align-items:center; flex-wrap:wrap; }
.extOpt{ position:relative; cursor:pointer; } .extOpt input{ position:absolute; opacity:0; pointer-events:none; }
.extOpt span{ display:inline-block; padding:8px 14px; border:2px solid var(--border-strong); border-radius:var(--r); font-weight:700; }
.extOpt input:checked + span{ border-color:var(--primary); background:var(--primary-50); color:var(--primary); }
.extOpt input:focus-visible + span{ outline:2px solid var(--primary); outline-offset:2px; }
.indBar{ align-items:center; } .indMonth{ min-width:130px; text-align:center; text-transform:capitalize; }
.indTable td{ vertical-align:top; } .indTable .indN{ font-size:18px; } .indTable details ul{ margin:4px 0 0 16px; padding:0; font-size:12.5px; }
.caps157{ display:grid; gap:6px; } .caps157 .checkLine{ align-items:flex-start; }
/* v158: fasce senza servizi compatte */
.odsSlot115.noSvc{ display:block; padding:6px 10px; } .odsSlot115.noSvc h4{ margin:0; }
