/*
 * Scala strutturale condivisa Sirio HSE.
 * Desktop/laptop (>= 992px): riferimento utile 1600x900; da 1600px in su
 * la misura desktop resta 1, sotto scala tramite --ui-scale. Tablet/telefono:
 * --ui-scale torna a 1 e
 * restano attivi i normali breakpoint/reflow delle singole pagine.
 * Nessun transform/zoom: layout, hit area, sticky, dropdown e modali usano
 * sempre le dimensioni effettivamente disegnate dal browser.
 */
:root {
  --ui-scale: 1;
  /* Il canvas può ridursi molto sui laptop 1366×768; il testo conserva una
     scala minima separata per non scendere sotto una misura leggibile. */
  --ui-type-scale: clamp(.875, var(--ui-scale), 1);
  --ui-shell-scale: var(--ui-scale);
  --sidebar-w: calc(240px * var(--ui-shell-scale));
  --topbar-h: calc(58px * var(--ui-shell-scale));
  --radius: calc(8px * var(--ui-scale));
  --radius-lg: calc(12px * var(--ui-scale));
  --radius-xl: calc(16px * var(--ui-scale));
}

@media (min-width: 992px) {
  /* La shell è grande e stabile sui desktop; sui viewport laptop usa la
     stessa densità compatta dei contenuti, senza dipendere dal touch. */
  :root { --ui-shell-scale: 1 !important; }
  html.sirio-compact-desktop { --ui-shell-scale: var(--ui-scale) !important; }
  html, body { font-size:calc(14px * var(--ui-type-scale)) !important; }
  /* Titoli e sottotitoli delle sezioni seguono la stessa scala dei controlli. */
  .page-content h2 { font-size:calc(18px * var(--ui-type-scale)) !important; }
  .page-content h2 + p { font-size:calc(13px * var(--ui-type-scale)) !important; }
  .page-content h3 { font-size:calc(16px * var(--ui-type-scale)) !important; }
  .page-content .page-subheading { font-size:calc(13px * var(--ui-type-scale)) !important; }

  /* Struttura portale */
  .app-sidebar { width:var(--sidebar-w) !important; }
  .app-main { margin-left:var(--sidebar-w) !important; }
  .sidebar-logo { height:var(--topbar-h) !important; gap:calc(10px * var(--ui-shell-scale)) !important; padding:0 calc(20px * var(--ui-shell-scale)) !important; }
  .sidebar-logo-icon,.sidebar-logo-icon img { width:calc(42px * var(--ui-shell-scale)) !important; height:calc(42px * var(--ui-shell-scale)) !important; border-radius:calc(8px * var(--ui-shell-scale)) !important; }
  .sidebar-logo-text { font-size:calc(13px * var(--ui-shell-scale)) !important; }
  .sidebar-logo-sub { font-size:calc(10px * var(--ui-shell-scale)) !important; }
  .sidebar-debug-shortcut { width:calc(28px * var(--ui-shell-scale)) !important; height:calc(28px * var(--ui-shell-scale)) !important; margin-right:calc(12px * var(--ui-shell-scale)) !important; border-radius:calc(8px * var(--ui-shell-scale)) !important; }
  .sidebar-nav { padding:calc(12px * var(--ui-shell-scale)) calc(10px * var(--ui-shell-scale)) !important; }
  .sidebar-section-label { padding:calc(12px * var(--ui-shell-scale)) calc(10px * var(--ui-shell-scale)) calc(4px * var(--ui-shell-scale)) !important; font-size:calc(10px * var(--ui-shell-scale)) !important; }
  .nav-item-link { gap:calc(10px * var(--ui-shell-scale)) !important; padding:calc(8px * var(--ui-shell-scale)) calc(12px * var(--ui-shell-scale)) !important; margin-bottom:calc(2px * var(--ui-shell-scale)) !important; font-size:calc(13px * var(--ui-shell-scale)) !important; }
  .nav-item-link i { width:calc(18px * var(--ui-shell-scale)) !important; font-size:calc(15px * var(--ui-shell-scale)) !important; }
  .sidebar-footer { padding:calc(12px * var(--ui-shell-scale)) calc(10px * var(--ui-shell-scale)) !important; font-size:calc(11px * var(--ui-shell-scale)) !important; }

  /* Pagina e intestazioni */
  .page-content { padding:calc(24px * var(--ui-scale)) !important; }
  .page-header { gap:calc(16px * var(--ui-scale)) !important; margin-bottom:calc(20px * var(--ui-scale)) !important; }
  .page-heading { gap:calc(8px * var(--ui-scale)) !important; margin-bottom:calc(2px * var(--ui-scale)) !important; font-size:calc(20px * var(--ui-type-scale)) !important; }
  .page-heading-icon { font-size:calc(20px * var(--ui-type-scale)) !important; }
  .page-subheading { font-size:calc(13px * var(--ui-type-scale)) !important; }

  /* Griglie, card e riepiloghi */
  .grid { gap:calc(16px * var(--ui-scale)) !important; }
  .card,.card-panel,.stat-card { border-radius:var(--radius-lg) !important; }
  .card-header.panel-header { padding:calc(16px * var(--ui-scale)) calc(20px * var(--ui-scale)) !important; gap:calc(12px * var(--ui-scale)) !important; }
  /* Le classi di componente devono prevalere sulle regole generiche h2/h2+p
     della pagina, altrimenti titolo e sottotitolo della card risultano grandi
     come l'intestazione principale. */
  .page-content .panel-title { font-size:calc(14px * var(--ui-type-scale)) !important; }
  .page-content .panel-subtitle { margin-top:calc(2px * var(--ui-scale)) !important; font-size:calc(12px * var(--ui-type-scale)) !important; }
  .card-body { padding:calc(20px * var(--ui-scale)) !important; }
  .card-body.p-0 { padding:0 !important; }
  .card-body.p-4 { padding:calc(24px * var(--ui-scale)) !important; }
  .stat-card { padding:calc(20px * var(--ui-scale)) !important; }
  .stat-card::after { width:calc(80px * var(--ui-scale)) !important; height:calc(80px * var(--ui-scale)) !important; }
  .stat-top { margin-bottom:calc(12px * var(--ui-scale)) !important; }
  .stat-icon { width:calc(40px * var(--ui-scale)) !important; height:calc(40px * var(--ui-scale)) !important; font-size:calc(16px * var(--ui-type-scale)) !important; }
  .stat-label { margin-bottom:calc(4px * var(--ui-scale)) !important; font-size:calc(11px * var(--ui-type-scale)) !important; }
  .stat-value { font-size:calc(28px * var(--ui-type-scale)) !important; }
  .stat-note { margin-top:calc(6px * var(--ui-scale)) !important; font-size:calc(12px * var(--ui-type-scale)) !important; }

  /* Form e filtri */
  .form-label { margin-bottom:calc(6px * var(--ui-scale)) !important; font-size:calc(13px * var(--ui-type-scale)) !important; }
  .form-control,.form-select {
    min-height:calc(38px * var(--ui-scale)) !important;
    padding:calc(8px * var(--ui-scale)) calc(12px * var(--ui-scale)) !important;
    border-radius:var(--radius) !important;
    font-size:calc(13px * var(--ui-type-scale)) !important;
  }
  .form-select { padding-right:calc(32px * var(--ui-scale)) !important; background-position:right calc(10px * var(--ui-scale)) center !important; background-size:calc(12px * var(--ui-scale)) !important; }
  /* Testo effettivo di entry, combobox e controlli personalizzati. :where()
     mantiene bassa la specificita, mentre !important supera gli stili inline
     storici che lasciavano il testo alla dimensione nativa del browser. */
  :where(
    input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
    select,textarea,[role="combobox"],[role="listbox"],
    .choices__inner,.choices__input,.choices__item,.select2-selection,.select2-results__option,
    .ts-control,.ts-dropdown,.dropdown-menu,.dropdown-item
  ) {
    font-family:var(--font-sans) !important;
    font-size:calc(13px * var(--ui-type-scale)) !important;
    line-height:1.25 !important;
  }
  :where(input,textarea)::placeholder { font:inherit !important; }
  select option,optgroup { font-family:var(--font-sans); font-size:calc(13px * var(--ui-type-scale)); }
  /* Un portatile touch riceve la classe sirio-mobile-device anche con un
     viewport desktop. La protezione iOS da 16px del foglio base non deve
     quindi prevalere oltre il breakpoint mobile. */
  html.sirio-mobile-device input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="hidden"]),
  html.sirio-mobile-device select,
  html.sirio-mobile-device textarea,
  html.sirio-mobile-device [role="combobox"],
  html.sirio-mobile-device [role="listbox"],
  html.sirio-mobile-device .choices__inner,
  html.sirio-mobile-device .choices__input,
  html.sirio-mobile-device .choices__item,
  html.sirio-mobile-device .select2-selection,
  html.sirio-mobile-device .select2-results__option,
  html.sirio-mobile-device .ts-control,
  html.sirio-mobile-device .ts-dropdown,
  html.sirio-mobile-device .dropdown-menu,
  html.sirio-mobile-device .dropdown-item {
    font-family:var(--font-sans) !important;
    font-size:calc(13px * var(--ui-type-scale)) !important;
    line-height:1.25 !important;
  }
  html.sirio-mobile-device input::placeholder,
  html.sirio-mobile-device textarea::placeholder { font:inherit !important; }
  html.sirio-mobile-device input[type="date"],
  html.sirio-mobile-device input[type="time"],
  html.sirio-mobile-device input[type="datetime-local"],
  html.sirio-mobile-device input[type="month"],
  html.sirio-mobile-device input[type="week"] { font-size:calc(12px * var(--ui-type-scale)) !important; }
  .filter-bar { padding:calc(16px * var(--ui-scale)) calc(20px * var(--ui-scale)) !important; margin-bottom:calc(16px * var(--ui-scale)) !important; border-radius:var(--radius-lg) !important; }
  .filter-grid { gap:calc(12px * var(--ui-scale)) !important; }
  .filter-actions { gap:calc(8px * var(--ui-scale)) !important; }
  .search-wrap .bi-search { left:calc(10px * var(--ui-scale)) !important; font-size:calc(13px * var(--ui-type-scale)) !important; }
  .search-wrap .form-control { padding-left:calc(32px * var(--ui-scale)) !important; }

  /* Campi data/ora nativi: scala anche larghezza intrinseca, testo e icona. */
  input[type="date"],input[type="time"],input[type="datetime-local"],input[type="month"],input[type="week"] {
    min-inline-size:calc(126px * var(--ui-scale));
    min-height:calc(32px * var(--ui-scale));
    padding-block:calc(5px * var(--ui-scale));
    padding-inline:calc(8px * var(--ui-scale));
    border-radius:var(--radius);
    font-size:calc(12px * var(--ui-type-scale)) !important;
    line-height:1.2;
  }
  input[type="date"]::-webkit-calendar-picker-indicator,
  input[type="datetime-local"]::-webkit-calendar-picker-indicator,
  input[type="month"]::-webkit-calendar-picker-indicator,
  input[type="week"]::-webkit-calendar-picker-indicator {
    inline-size:calc(14px * var(--ui-scale));
    block-size:calc(14px * var(--ui-scale));
    margin:0;
    padding:calc(2px * var(--ui-scale));
  }
  input[type="date"]::-webkit-datetime-edit,
  input[type="datetime-local"]::-webkit-datetime-edit,
  input[type="month"]::-webkit-datetime-edit,
  input[type="week"]::-webkit-datetime-edit,
  input[type="date"]::-webkit-datetime-edit-fields-wrapper,
  input[type="datetime-local"]::-webkit-datetime-edit-fields-wrapper,
  input[type="month"]::-webkit-datetime-edit-fields-wrapper,
  input[type="week"]::-webkit-datetime-edit-fields-wrapper,
  input[type="date"]::-webkit-datetime-edit-text,
  input[type="datetime-local"]::-webkit-datetime-edit-text,
  input[type="month"]::-webkit-datetime-edit-text,
  input[type="week"]::-webkit-datetime-edit-text,
  input[type="date"]::-webkit-datetime-edit-day-field,
  input[type="date"]::-webkit-datetime-edit-month-field,
  input[type="date"]::-webkit-datetime-edit-year-field {
    font:inherit !important;
    line-height:inherit !important;
    padding:0 !important;
  }
  #dataDal,#dataAl { inline-size:calc(132px * var(--ui-scale)) !important; min-inline-size:calc(132px * var(--ui-scale)) !important; }

  /* Pulsanti, badge e chip */
  .btn { gap:calc(6px * var(--ui-scale)) !important; padding:calc(7px * var(--ui-scale)) calc(14px * var(--ui-scale)) !important; border-radius:var(--radius) !important; font-size:calc(13px * var(--ui-type-scale)) !important; }
  .btn-sm { padding:calc(5px * var(--ui-scale)) calc(10px * var(--ui-scale)) !important; font-size:calc(12px * var(--ui-type-scale)) !important; }
  .btn-icon { width:calc(32px * var(--ui-scale)) !important; height:calc(32px * var(--ui-scale)) !important; padding:calc(6px * var(--ui-scale)) !important; }
  .badge { padding:calc(3px * var(--ui-scale)) calc(8px * var(--ui-scale)) !important; font-size:calc(11px * var(--ui-type-scale)) !important; }
  /* Badge e pulsanti-tab storici usano nomi specifici invece delle classi
     condivise. Ne scala almeno testo e spaziatura senza alterarne colori,
     forma o semantica nelle due varianti di tema. */
  :where([class$="-badge"],[class*="-badge "],[class^="badge-"],[class*=" badge-"]) {
    font-size:calc(11px * var(--ui-type-scale)) !important;
    gap:calc(4px * var(--ui-scale)) !important;
    line-height:1.2 !important;
  }
  :where(button[role="tab"],button[class$="-tab"],button[class*="-tab "],button[class$="-tab-btn"],button[class*="-tab-btn "]) {
    font-size:calc(12px * var(--ui-type-scale)) !important;
    gap:calc(6px * var(--ui-scale)) !important;
  }
  :where(button:not(.btn):not(.btn-icon):not(.topbar-toggle):not(.sidebar-mobile-close)) {
    font-size:calc(12px * var(--ui-type-scale)) !important;
  }
  .visita-chip-group { gap:calc(5px * var(--ui-scale)) !important; padding:calc(4px * var(--ui-scale)) 0 calc(6px * var(--ui-scale)) !important; }
  .visita-chip { padding:calc(3px * var(--ui-scale)) calc(10px * var(--ui-scale)) !important; border-radius:calc(20px * var(--ui-scale)) !important; font-size:calc(12px * var(--ui-type-scale)) !important; }

  /* Tabelle condivise */
  .app-table { font-size:calc(13px * var(--ui-type-scale)) !important; }
  .app-table thead th { padding:calc(10px * var(--ui-scale)) calc(16px * var(--ui-scale)) !important; font-size:calc(11px * var(--ui-type-scale)) !important; }
  .app-table tbody td { padding:calc(12px * var(--ui-scale)) calc(16px * var(--ui-scale)) !important; font-size:calc(13px * var(--ui-type-scale)); max-width:calc(200px * var(--ui-scale)) !important; }
  .app-table tbody td.td-wrap { max-width:calc(200px * var(--ui-scale)) !important; }
  /* Tabelle custom: oltre ad .app-table, molte viste storiche usano tabelle
     senza la classe comune. Scala testo, intestazioni e celle in modo
     uniforme mantenendo esclusi i fogli di stampa. */
  :where(.tab-panel table,.card-panel table,.workers-panel table,.visita-doc-window table,.scad-table,.invia-panel table,.fat-workspace table,.li-table table,#tblAziende,#tblVisite,#reportTable) {
    font-size:calc(13px * var(--ui-type-scale)) !important;
  }
  :where(.tab-panel table,.card-panel table,.workers-panel table,.visita-doc-window table,.scad-table,.invia-panel table,.fat-workspace table,.li-table table,#tblAziende,#tblVisite,#reportTable) th {
    padding:calc(10px * var(--ui-scale)) calc(12px * var(--ui-scale)) !important;
    font-size:calc(11px * var(--ui-type-scale)) !important;
  }
  :where(.tab-panel table,.card-panel table,.workers-panel table,.visita-doc-window table,.scad-table,.invia-panel table,.fat-workspace table,.li-table table,#tblAziende,#tblVisite,#reportTable) td {
    padding:calc(10px * var(--ui-scale)) calc(12px * var(--ui-scale)) !important;
    font-size:calc(13px * var(--ui-type-scale)) !important;
  }
  /* Tutti i record mantengono la stessa scala tipografica anche quando una
     vecchia cella dichiara ancora una famiglia specifica inline. */
  :where(table tbody td,.app-table tbody td)[style*="font-family"] { font-size:calc(13px * var(--ui-type-scale)) !important; }

  /* Badge di stato/giudizio nelle tabelle: stessa leggibilità del badge
     "STATO" della tab DPI, con pillola compatta e sempre leggibile. */
  :where(table td .badge, .app-table td .badge) {
    display:inline-flex !important;
    align-items:center !important;
    justify-content:center !important;
    min-height:11px !important;
    padding:2px 9px !important;
    border-radius:20px !important;
    font-size:max(11px, calc(11px * var(--ui-type-scale))) !important;
    line-height:1.2 !important;
    white-space:nowrap !important;
  }

  /* Gli insight restano disponibili ma diventano chip compatti sui laptop,
     evitando di occupare una riga intera sotto il titolo. */
  html.sirio-compact-desktop :where(.ai-bar,.scad-ai-bar) { flex-direction:row !important; flex-wrap:wrap; gap:calc(4px * var(--ui-scale)) !important; padding:0 !important; margin-bottom:calc(6px * var(--ui-scale)) !important; }
  html.sirio-compact-desktop :where(.ai-bar-item,.scad-ai-item) { display:inline-flex; align-items:center; width:auto; flex:0 1 auto; gap:calc(5px * var(--ui-scale)) !important; padding:calc(4px * var(--ui-scale)) calc(8px * var(--ui-scale)) !important; border-radius:999px !important; font-size:calc(10px * var(--ui-type-scale)) !important; line-height:1.2 !important; }
  html.sirio-compact-desktop :where(.ai-bar-item i,.scad-ai-item i) { font-size:calc(12px * var(--ui-type-scale)) !important; }
  html.sirio-compact-desktop :where(.ai-bar a,.scad-ai-bar a,[id^="aiBar-"] a) { font-size:calc(11px * var(--ui-type-scale)) !important; gap:calc(4px * var(--ui-scale)) !important; line-height:1.2 !important; }

  /* La sidebar non deve mai cambiare modalità durante la navigazione. La
     sola area centrale scorre: marchio e profilo utente restano visibili. */
  .app-sidebar { overflow:hidden !important; }
  .sidebar-nav {
    min-height:0;
    overflow-y:auto;
    overscroll-behavior:contain;
    scrollbar-width:thin;
    scrollbar-color:rgba(255,255,255,.82) #111827;
  }
  .sidebar-nav::-webkit-scrollbar { width:calc(8px * var(--ui-shell-scale)); }
  .sidebar-nav::-webkit-scrollbar-track { background:#111827; }
  .sidebar-nav::-webkit-scrollbar-thumb {
    background:rgba(255,255,255,.78);
    border:calc(2px * var(--ui-shell-scale)) solid #111827;
    border-radius:999px;
  }
  .sidebar-nav::-webkit-scrollbar-thumb:hover { background:#fff; }
  .sidebar-brand-bar,.sidebar-footer,.sidebar-user-card { flex-shrink:0; }

  /* Stati vuoti e piè di pagina */
  .empty-state { padding:calc(48px * var(--ui-scale)) calc(24px * var(--ui-scale)) !important; }
  .empty-state i { margin-bottom:calc(12px * var(--ui-scale)) !important; font-size:calc(32px * var(--ui-type-scale)) !important; }
  .empty-state p { font-size:calc(13px * var(--ui-type-scale)) !important; }
  .app-footer { padding:calc(16px * var(--ui-scale)) calc(24px * var(--ui-scale)) !important; gap:calc(8px * var(--ui-scale)) !important; font-size:calc(12px * var(--ui-type-scale)) !important; }
  .app-footer .badge { gap:calc(6px * var(--ui-scale)) !important; padding:calc(5px * var(--ui-scale)) calc(12px * var(--ui-scale)) !important; }
  .app-footer .badge img { width:calc(15px * var(--ui-scale)) !important; height:calc(15px * var(--ui-scale)) !important; }

  /* Modali condivisi e principali famiglie di modali del portale. */
  .worker-modal-backdrop,.invia-modal-backdrop,.dpi-backdrop,.cm-modal-overlay,.safety-modal-bg,.fat-modal-ov,.wz-backdrop,.ash-modal { padding:calc(20px * var(--ui-scale)) !important; }
  .worker-modal,.invia-modal,.dpi-modal,.cm-modal,.cm-modal-box,.safety-modal,.fat-modal,.wz-modal,.ash-dialog { border-radius:calc(16px * var(--ui-scale)) !important; }
  .worker-modal-header,.invia-modal-head,.dpi-modal-header,.cm-modal-head,.safety-modal-head,.fat-modal-head,.ash-dialog-head { padding:calc(16px * var(--ui-scale)) calc(20px * var(--ui-scale)) !important; }
  .worker-modal-body,.invia-modal-body,.dpi-modal-body,.safety-modal-body,.fat-modal-body,.ash-dialog-body { padding:calc(20px * var(--ui-scale)) !important; }
  .worker-modal-footer,.invia-modal-foot,.dpi-modal-footer,.cm-modal-foot,.safety-modal-foot,.fat-modal-foot,.ash-dialog-foot { padding:calc(14px * var(--ui-scale)) calc(20px * var(--ui-scale)) !important; gap:calc(8px * var(--ui-scale)) !important; }

  /* Utility dimensionali usate trasversalmente. */
  .gap-1{gap:calc(4px * var(--ui-scale)) !important}.gap-2{gap:calc(8px * var(--ui-scale)) !important}.gap-3{gap:calc(12px * var(--ui-scale)) !important}
  .mb-1{margin-bottom:calc(4px * var(--ui-scale)) !important}.mb-2{margin-bottom:calc(8px * var(--ui-scale)) !important}.mb-3{margin-bottom:calc(12px * var(--ui-scale)) !important}.mb-4{margin-bottom:calc(16px * var(--ui-scale)) !important}.mb-5{margin-bottom:calc(20px * var(--ui-scale)) !important}
  .mt-1{margin-top:calc(4px * var(--ui-scale)) !important}.mt-2{margin-top:calc(8px * var(--ui-scale)) !important}.mt-3{margin-top:calc(12px * var(--ui-scale)) !important}.mt-4{margin-top:calc(16px * var(--ui-scale)) !important}
  .p-1{padding:calc(4px * var(--ui-scale)) !important}.p-2{padding:calc(8px * var(--ui-scale)) !important}.p-3{padding:calc(12px * var(--ui-scale)) !important}.p-4{padding:calc(16px * var(--ui-scale)) !important}
  .text-sm { font-size:calc(12px * var(--ui-type-scale)) !important; }
}

/* Tooltip Sirio generata dal gestore condiviso: sostituisce la resa nativa
   non scalabile degli attributi title senza modificare il contenuto. */
.sirio-ui-tooltip {
  position:fixed;
  z-index:20000;
  max-width:min(calc(320px * var(--ui-scale)),calc(100vw - 16px));
  padding:calc(6px * var(--ui-scale)) calc(9px * var(--ui-scale));
  border:1px solid rgba(255,255,255,.12);
  border-radius:calc(7px * var(--ui-scale));
  background:#111827;
  color:#f9fafb;
  box-shadow:0 calc(6px * var(--ui-scale)) calc(18px * var(--ui-scale)) rgba(15,23,42,.24);
  font-family:var(--font-sans);
  font-size:calc(12px * var(--ui-type-scale));
  font-weight:500;
  line-height:1.35;
  overflow-wrap:anywhere;
  pointer-events:none;
  opacity:0;
  visibility:hidden;
  transition:opacity .12s ease,visibility .12s ease;
}
.sirio-ui-tooltip.is-visible { opacity:1; visibility:visible; }
@media (min-width:992px) {
  html:is(.sirio-mobile-device,.sirio-compact-desktop) .sirio-ui-tooltip {
    font-size:calc(12px * var(--ui-type-scale)) !important;
    line-height:1.35 !important;
  }
}

/* Pillole di stato/giudizio: riferimento visivo unico della colonna STATO
   DPI, applicato anche alle tabelle delle altre schede e ai layout laptop. */
:where(table td .badge, .app-table td .badge) {
  display:inline-flex !important;
  align-items:center !important;
  justify-content:center !important;
  min-height:11px !important;
  padding:2px 9px !important;
  border-radius:20px !important;
  font-size:max(11px, calc(11px * var(--ui-type-scale))) !important;
  line-height:1.2 !important;
  white-space:nowrap !important;
}

/* Badge informativi (stato, rischio, conformità, archivio, conteggi) fuori
   dalle tabelle: stessa scala leggibile in ogni pagina e tema. */
:where(.badge, .req-badge, .proto-per-badge, .proto-arc-badge, .cd-group-badge, .proto-acc-tab-badge) {
  display:inline-flex !important;
  align-items:center !important;
  line-height:1.2 !important;
  white-space:nowrap !important;
  font-size:max(11px, calc(11px * var(--ui-type-scale))) !important;
}
/* "Compilato" viene mostrato dal JS soltanto dopo il salvataggio dei dati
   clinici: non deve ereditare il display forzato dei badge sempre visibili. */
:where(.vacc-compiled-badge) {
  align-items:center !important;
  line-height:1.2 !important;
  white-space:nowrap !important;
  font-size:max(11px, calc(11px * var(--ui-type-scale))) !important;
}
html:is(.sirio-mobile-device,.sirio-compact-desktop) :where(.badge, .req-badge, .proto-per-badge, .proto-arc-badge, .vacc-compiled-badge, .cd-group-badge, .proto-acc-tab-badge) {
  font-size:11px !important;
  padding-top:2px !important;
  padding-bottom:2px !important;
}
/* Sui laptop le pillole Stato/Giudizio seguono la scala effettiva delle celle
   e non usano una dimensione fissa piu grande dei record circostanti. Questo
   selettore viene dopo la regola generale dei badge per prevalere soltanto
   dentro le tabelle. */
html.sirio-compact-desktop body :where(table td .badge, .app-table td .badge,
  #dpiTableWrap td > span[style*="border-radius:20px"]) {
  min-height:0 !important;
  padding:calc(2px * var(--ui-scale)) calc(7px * var(--ui-scale)) !important;
  font-size:calc(13px * var(--ui-type-scale)) !important;
  line-height:1.15 !important;
}
/* Famiglia unica per intestazioni e record di tutte le tabelle operative.
   Sono inclusi anche i valori storici con font mono inline; icone e contenuti
   esterni alle celle non vengono modificati. */
:where(table th,table td) { font-family:var(--font-sans) !important; }
:where(table th,table td) :where([style*="font-family:var(--font-mono)"]) { font-family:var(--font-sans) !important; }
:where(table th,table td) :where(div,span,a,strong,small,code):not(.bi) { font-family:inherit !important; }
@media (min-width:768px) {
  :where(table tbody td) { font-size:calc(13px * var(--ui-type-scale)) !important; }
}

/* Protocollo sanitario: icone, righe mansione e comandi Nuova mansione
   seguono la stessa scala del resto della pagina. */
:where(.proto-mansione-avatar, .proto-pred-avatar) {
  width:max(24px, calc(28px * var(--ui-scale))) !important;
  height:max(24px, calc(28px * var(--ui-scale))) !important;
  font-size:max(14px, calc(16px * var(--ui-type-scale))) !important;
}
:where(.proto-act-btn, .proto-section-header .btn, .proto-placeholder .btn) {
  min-width:max(24px, calc(28px * var(--ui-scale))) !important;
  min-height:max(24px, calc(28px * var(--ui-scale))) !important;
  font-size:max(11px, calc(12px * var(--ui-type-scale))) !important;
}
:where(.proto-mansione-name, .proto-pred-name) { font-size:max(11px, calc(11.5px * var(--ui-type-scale))) !important; }
:where(.proto-mansione-stat, .proto-section-title) { font-size:max(10px, calc(10px * var(--ui-type-scale))) !important; }

/* Intestazione cliente compatta: il ritorno a "Clienti" resta sulla stessa
   riga del nome/unità operativa, in alto a destra. */
.client-page-header { position:relative !important; }
.client-page-header .client-entity-name { font-size:max(18px, calc(20px * var(--ui-type-scale))) !important; }
.client-page-header .client-entity-unit { font-size:max(13px, calc(14px * var(--ui-type-scale))) !important; font-weight:400; color:var(--gray-400); margin-left:8px; }
.client-page-header .client-header-actions { position:absolute !important; top:0 !important; right:0 !important; align-items:flex-start !important; }
@media (max-width:700px) {
  .client-page-header .client-entity-name { font-size:max(16px, calc(20px * var(--ui-type-scale))) !important; }
  .client-page-header .client-entity-unit { display:inline-block; margin-left:6px; }
.client-page-header .client-header-actions .btn:not(:first-child) { display:none; }
}

/* Profilo utente nella sidebar: nome, ruolo, ingranaggio e uscita seguono
   la scala della shell senza diventare microscopici al cambio viewport. */
.sidebar-user-card .sidebar-user-avatar { width:calc(32px * var(--ui-shell-scale)) !important; height:calc(32px * var(--ui-shell-scale)) !important; font-size:calc(13px * var(--ui-shell-scale)) !important; }
.sidebar-user-card .sidebar-user-name { font-size:calc(12px * var(--ui-shell-scale)) !important; }
.sidebar-user-card .sidebar-user-role { font-size:calc(10px * var(--ui-shell-scale)) !important; }
.sidebar-user-card .sidebar-user-gear { font-size:calc(12px * var(--ui-shell-scale)) !important; }
.sidebar-user-card .sidebar-user-logout { font-size:calc(11px * var(--ui-shell-scale)) !important; padding:calc(5px * var(--ui-shell-scale)) calc(9px * var(--ui-shell-scale)) !important; }
