/* ------------------------------------------------------------------
   Inter — carattere ufficiale IsorsCert, servito dal nostro dominio.
   SIL Open Font License 1.1 (github.com/rsms/inter), sottoinsieme latin.

   Fino al 21/08/2026 questi @font-face non esistevano: i CSS dichiaravano
   font-family:'Inter' ma nessuno caricava il font, quindi il browser
   ripiegava sul fallback di sistema — San Francisco su Mac, Segoe UI su
   Windows, Roboto su Android. Il carattere del marchio non si vedeva mai,
   e le pagine cambiavano aspetto da una macchina all'altra.
   ------------------------------------------------------------------ */
@font-face{font-family:'Inter';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/inter-v20-latin-regular.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:500;font-display:swap;src:url('../fonts/inter-v20-latin-500.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/inter-v20-latin-600.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/inter-v20-latin-700.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/inter-v20-latin-800.woff2') format('woff2')}
@font-face{font-family:'Inter';font-style:normal;font-weight:900;font-display:swap;src:url('../fonts/inter-v20-latin-900.woff2') format('woff2')}

/* ============================================================
   IsorsCert - Brand alignment layer  (theme refresh 2026-05-30)
   ------------------------------------------------------------
   Ri-allinea il theme moderno (variabili --ic3-*) ai colori del
   LOGO "ISORS Cert.":
       blu ISORS   #2c8fcf      (testo "ISORS" + pallina)
       navy/indaco #2b3a8c      (barra verticale + puntino)
       grigio      #b8bcc2      ("Cert." + archi)
   Caricato per ULTIMO nel <head>: override di isors-modern-v3.css
   e del critical CSS inline. SOLO colori/variabili: nessuna
   modifica alla struttura/markup (reversibile rimuovendo il link).
   ============================================================ */

:root{
  --ic3-accent:       #2c8fcf;   /* blu ISORS (era #4f46e5 indaco) */
  --ic3-accent-hov:   #1f6fa3;
  --ic3-accent-soft:  #e8f3fb;
  --ic3-navy:         #2b3a8c;   /* navy del logo */
  --ic3-grad-1:       linear-gradient(135deg, #2b3a8c 0%, #2c8fcf 55%, #49a7e0 100%);
  --ic3-shadow-hover: 0 4px 12px rgba(16,24,40,.10), 0 18px 36px rgba(44,143,207,.14);
}

/* --- Sidebar: vira al navy del brand (eco del logo) --- */
.skin-blue .main-sidebar{
  background: linear-gradient(180deg, #161d44 0%, #232c5e 100%) !important;
}
.skin-blue .sidebar-menu > li.active > a{
  background: rgba(255,255,255,.06) !important;
}
.skin-blue .sidebar-menu > li > a .pull-right-container .label{
  box-shadow: 0 2px 8px rgba(44,143,207,.45) !important;
}

/* --- Header logo: testo in blu ISORS --- */
.skin-blue .main-header .logo{ color: var(--ic3-accent) !important; }

/* --- Bottoni primari: gradiente brand navy -> blu --- */
.btn-primary{
  background: linear-gradient(135deg, #2b3a8c 0%, #2c8fcf 100%) !important;
  border-color: transparent !important;
  box-shadow: 0 4px 12px rgba(44,143,207,.22) !important;
  color: #fff !important;
}
.btn-primary:hover,
.btn-primary:focus{ filter: brightness(1.06); color:#fff !important; }

/* --- Link coerenti col brand --- */
a{ color: #2c8fcf; }
a:hover, a:focus{ color: #1f6fa3; }

/* --- Label / badge / sfondi "blu" AdminLTE -> blu brand --- */
/* Il colore del testo va detto insieme al fondo: la regola cambiava solo lo
   sfondo e il testo restava quello del tema, blu su blu (pillola apparentemente
   vuota nella banca domande). */
/* Il colore del testo va detto insieme al fondo: la regola cambiava solo lo
   sfondo e il testo restava quello del tema, blu su blu (pillola apparentemente
   vuota nella banca domande). Il blu del marchio con il bianco si ferma pero' a
   3,54 su 1, sotto il minimo leggibile: si usa il blu piu' scuro gia' in uso nel
   progetto per i collegamenti premuti, che arriva a 5,44. */
.label-primary,
.badge-primary{ background-color: #1f6fa3 !important; color: #fff !important; }
.bg-blue,
.bg-light-blue,
.callout.callout-info,
.alert-info{ background-color: #2c8fcf !important; border-color:#2c8fcf !important; color:#fff !important; }
.text-blue,
.text-light-blue,
.text-primary{ color: #2c8fcf !important; }
.progress-bar-primary,
.progress-bar-info,
.progress-bar-light-blue{ background-color: #2c8fcf !important; }

/* --- Info-box / small-box icona blu -> brand --- */
.info-box-icon.bg-blue,
.small-box.bg-blue,
.small-box.bg-light-blue{ background: linear-gradient(135deg,#2b3a8c 0%,#2c8fcf 100%) !important; }

/* --- Paginazione / DataTables active --- */
.pagination > .active > a,
.pagination > .active > a:hover,
.dataTables_wrapper .paginate_button.current{
  background: #2c8fcf !important;
  border-color: #2c8fcf !important;
  color:#fff !important;
}

/* ============================================================
   Override FORTE delle variabili (vince anche sul critical CSS
   inline del master, a prescindere dall'ordine di caricamento).
   ============================================================ */
:root{
  --ic3-accent:      #2c8fcf !important;
  --ic3-accent-hov:  #1f6fa3 !important;
  --ic3-accent-soft: #e8f3fb !important;
  --ic3-grad-1:      linear-gradient(135deg, #2b3a8c 0%, #2c8fcf 55%, #49a7e0 100%) !important;
}

/* ============================================================
   TABELLE DataTables - modernizzazione globale (vale ovunque)
   ============================================================ */
.dataTables_wrapper .dataTables_filter input,
.dataTables_wrapper .dataTables_length select{
  border-radius: 10px !important;
  border: 1.5px solid #e5e7eb !important;
  padding: 8px 13px !important;
  font-size: 13px !important;
  background:#fff !important;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.dataTables_wrapper .dataTables_filter input{ min-width: 220px; }
.dataTables_wrapper .dataTables_filter input:focus,
.dataTables_wrapper .dataTables_length select:focus{
  outline:none !important;
  border-color: var(--ic3-accent) !important;
  box-shadow: 0 0 0 3px var(--ic3-accent-soft) !important;
}
.dataTables_wrapper .dataTables_filter label,
.dataTables_wrapper .dataTables_length label{
  font-size: 13px; font-weight: 600; color:#475569;
}
.dataTables_wrapper .dataTables_info{
  font-size: 12.5px !important; color:#64748b !important; padding-top: 12px !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button{
  border-radius: 8px !important;
  border: 1px solid #e5e7eb !important;
  margin: 0 2px !important;
  padding: 6px 12px !important;
  font-size: 13px !important;
  font-weight: 600;
  color:#475569 !important;
  background:#fff !important;
  transition: all .15s ease;
}
.dataTables_wrapper .dataTables_paginate .paginate_button:hover{
  background: var(--ic3-accent-soft) !important;
  border-color: var(--ic3-accent) !important;
  color: var(--ic3-accent) !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{
  background: var(--ic3-accent) !important;
  border-color: var(--ic3-accent) !important;
  color:#fff !important;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled{
  color:#cbd5e1 !important; background:#f8fafc !important; cursor: default;
}
.dataTables_processing{
  border-radius: 12px !important;
  box-shadow: 0 8px 24px rgba(16,24,40,.18) !important;
  border: 1px solid #eef1f6 !important;
}
table.dataTable.dtr-inline.collapsed > tbody > tr > td.dtr-control::before{
  background: var(--ic3-accent) !important; border:none !important;
  box-shadow: 0 1px 3px rgba(44,143,207,.4);
}
/* header tabelle generiche (anche non ic3-table-wrap) */
.table > thead > tr > th,
table.dataTable thead th{
  background:#f8fafc !important;
  text-transform: uppercase;
  letter-spacing:.03em;
  font-size: 11.5px !important;
  font-weight: 700 !important;
  color:#475569 !important;
  border-bottom: 1px solid #e5e7eb !important;
}
.table > tbody > tr > td{ vertical-align: middle !important; }
.table-hover > tbody > tr:hover{ background:#f5fafe !important; }

/* ============================================================
   FORM & INPUT - modernizzazione globale
   ============================================================ */
.form-control{
  border-radius: 9px !important;
  border: 1.5px solid #e2e8f0 !important;
  padding: 9px 13px !important;
  height: auto !important;
  font-size: 14px !important;
  color:#0f172a !important;
  box-shadow:none !important;
  transition: border-color .15s ease, box-shadow .15s ease;
}
.form-control:focus{
  border-color: var(--ic3-accent) !important;
  box-shadow: 0 0 0 4px rgba(44,143,207,.12) !important;
}
.form-control[readonly], .form-control:disabled{
  background:#f4f7fb !important; color:#64748b !important;
}
.form-group > label, label.col-form-label{
  font-weight: 600 !important; color:#1f2937 !important; font-size: 13px !important;
}
textarea.form-control{ line-height:1.55 !important; }
input[type="checkbox"], input[type="radio"]{ accent-color: var(--ic3-accent); }
.has-error .form-control{ border-color:#ef4444 !important; background:#fef2f2 !important; }
.has-error .help-block, .has-error .control-label{ color:#dc2626 !important; }
.nav-tabs{ border-bottom:1px solid #e2e8f0 !important; }
.nav-tabs > li > a{ border-radius:8px 8px 0 0 !important; color:#6b7280 !important; font-weight:500; }
.nav-tabs > li.active > a{ color: var(--ic3-accent) !important; font-weight:700; border-color:#e2e8f0 #e2e8f0 #fff !important; }
/* Evita lo zoom automatico di iOS: vale per i .form-control di Bootstrap e per
   ogni altro campo, che nelle pagine pubbliche e' spesso stilizzato a mano. */
@media (max-width:767px){
  .form-control,
  input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=file]),
  select, textarea { font-size:16px !important; }
}

/* ============================================================
   COMPONENTI: modali, breadcrumb, alert, label
   ============================================================ */
.modal-content{
  border-radius: 16px !important;
  border: 1px solid #eef1f6 !important;
  box-shadow: 0 16px 48px rgba(16,24,40,.18) !important;
  overflow: hidden;
}
.modal-header{ border-bottom:1px solid #eef1f6 !important; padding:16px 22px !important; }
.modal-footer{ border-top:1px solid #eef1f6 !important; }
.breadcrumb{ background: transparent !important; padding: 6px 0 !important; margin-bottom: 12px !important; }
.breadcrumb > li + li:before{ color:#cbd5e1 !important; }
.breadcrumb > .active{ color:#475569 !important; }
.alert{
  border-radius: 12px !important;
  border: 1px solid transparent;
  border-left-width: 4px !important;
}
.alert-info{ border-left-color:#2c8fcf !important; }
.alert-success{ border-left-color:#10b981 !important; }
.alert-warning{ border-left-color:#f59e0b !important; }
.alert-danger{ border-left-color:#ef4444 !important; }

/* Componenti videocall (meet): da indaco a brand */
.ic3-meet-tile.is-pinned{ border-color: var(--ic3-accent) !important; }
.ic3-meet-tile.is-pinned .ic3-meet-pin-btn{ background: var(--ic3-accent) !important; border-color: var(--ic3-accent) !important; }
.ic3-meet-thumb-avatar{ background: var(--ic3-grad-1) !important; }

/* Mobile: input >=16px per evitare lo zoom automatico iOS (audit #45) */
@media (max-width:767px){
  .ic3-field input, .ic3-field select, .ic3-field textarea{ font-size:16px !important; }
}

/* === Accessibilità & rifinitura (audit GIALLO grafica-ui) === */
/* Focus visibile su elementi interattivi (keyboard nav) */
.form-control:focus-visible,
.btn:focus-visible,
a:focus-visible,
select:focus-visible,
textarea:focus-visible,
button:focus-visible,
[tabindex]:focus-visible{
  outline: 2px solid var(--ic3-accent) !important;
  outline-offset: 2px !important;
}
/* Feedback hover bottoni anche su sfondi a basso contrasto */
.btn:hover{ box-shadow: 0 0 0 2px rgba(44,143,207,.22); }
/* Backdrop modale piu' marcato per isolare il focus */
.modal-backdrop.in{ opacity:.7 !important; }

/* ============================================================
   ISORS BRAND - LAYER PREMIUM v2 (append, 2026-05-30)
   Coerente coi token reali: --ic-* (modern.css) + --ic3-* (brand override)
   Ordine: 0 token mancanti · 1 layout/header · 2 sidebar · 3 form
           4 tabelle · 5 componenti · 6 banner/hero home · 7 responsive
   ============================================================ */

/* ---------- 0) Token mancanti referenziati altrove (definiti una sola volta) */
:root{
  --ic3-warn:        #f59e0b;
  --ic3-warn-soft:   #fffbeb;
  --ic3-grad-warn:   linear-gradient(135deg,#f59e0b 0%,#d97706 100%);
  --ic3-shadow-sm:   0 1px 2px rgba(16,24,40,.05);
  --ic3-shadow-md:   0 4px 12px rgba(16,24,40,.08);
  --ic3-shadow-lg:   0 8px 24px rgba(16,24,40,.12);
}

/* ---------- 1) LAYOUT: content-header + main-header sticky ---------- */
/* NB: in modern-v3 (riga ~2546) esiste un auto-hero con ::before accent bar.
   Manteniamo l'accent bar: NON impostiamo background piatto sul wrapper. */
.content-header{
  padding: 18px 24px !important;
  border-bottom: 1px solid var(--ic-border-soft) !important;
  margin-bottom: 18px !important;
}
.content-header > h1{
  font-size: 24px !important;
  font-weight: 800 !important;
  letter-spacing: -0.02em !important;
  color: var(--ic-text) !important;
}
.content-header > h1 > small{
  display: block;
  font-weight: 400 !important;
  color: var(--ic-muted) !important;
  font-size: 13px !important;
  margin-top: 4px;
  letter-spacing: 0;
}
/* Header sticky: l'utente non perde la navigazione su scroll.
   z-index 99 < sidebar(1050) e < modali, > contenuto. Nessun overflow:hidden
   sui parent della navbar -> i dropdown utente restano visibili. */
.main-header{
  position: sticky !important;
  top: 0 !important;
  z-index: 99 !important;
  box-shadow: 0 1px 0 rgba(15,23,42,.06) !important;
}
.skin-blue .main-header .navbar .nav > li.user-menu > a{
  border-radius: 9999px !important;
  padding: 8px 14px !important;
  font-weight: 600 !important;
  transition: all .15s var(--ic-ease) !important;
}
.skin-blue .main-header .navbar .nav > li.user-menu > a:hover{
  background: var(--ic3-accent) !important;
  color: #fff !important;
  box-shadow: 0 4px 12px rgba(44,143,207,.22) !important;
}

/* ---------- 2) SIDEBAR: indicatore border-left + hover coeso ---------- */
.skin-blue .sidebar-menu > li > a{
  padding: 12px 18px !important;
  border-left: 3px solid transparent !important;
  color: rgba(255,255,255,.85) !important;
  transition: background .15s var(--ic-ease), border-color .15s var(--ic-ease), color .15s var(--ic-ease) !important;
}
.skin-blue .sidebar-menu > li > a > .fa{ color: rgba(255,255,255,.85) !important; }
.skin-blue .sidebar-menu > li:hover > a{
  background: linear-gradient(90deg, rgba(44,143,207,.10) 0%, rgba(44,143,207,0) 100%) !important;
  border-left-color: var(--ic3-accent) !important;
  color: #fff !important;
}
.skin-blue .sidebar-menu > li.active > a{
  background: linear-gradient(90deg, rgba(44,143,207,.16) 0%, rgba(44,143,207,0) 100%) !important;
  border-left-color: var(--ic3-accent) !important;
  font-weight: 700 !important;
  color: #fff !important;
}

/* ---------- 3) FORM & INPUT (estende il base già presente alle righe 167-194) */
.form-group > label,
label.col-form-label,
.control-label{
  display: flex; align-items: center; gap: 6px;
  margin-bottom: 8px !important;
  letter-spacing: -0.01em;
}
label.required::after,
label[aria-required="true"]::after{
  content: " *"; color: #ef4444; font-weight: 700; font-size: 15px;
}
.help-block, .form-text, .ic3-field-help{
  font-size: 12px !important; color: #4b5563 !important;
  margin-top: 4px !important; font-weight: 500;
}
.form-control::placeholder{ color:#9ca3af !important; opacity:.85; }

/* file input nativo brandizzato */
input[type="file"]::file-selector-button{
  background:#f1f5f9; color:#475569; padding:6px 12px;
  border:1px solid #cbd5e1; border-radius:6px; cursor:pointer;
  font-weight:600; font-size:12px; margin-right:8px; transition:all .15s;
}
input[type="file"]::file-selector-button:hover{
  background:#e2e8f0; border-color:var(--ic3-accent); color:var(--ic3-accent);
}

/* select: freccia custom brand */
select.form-control{
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8"><path fill="%23475569" d="M1 1l5 5 5-5"/></svg>') !important;
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
  background-size:12px 8px !important;
  padding-right:36px !important;
  -webkit-appearance:none; -moz-appearance:none; appearance:none;
}
select.form-control:focus{
  background-image:url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="12" height="8" viewBox="0 0 12 8"><path fill="%232c8fcf" d="M1 1l5 5 5-5"/></svg>') !important;
  /* Ripetute anche qui: se una pagina dichiara lo shorthand `background`
     (es. `background:#fff!important`) su .form-control con specificita' >=,
     resetta repeat/position/size mentre questa regola :focus continua a
     vincere sull'immagine -> chevron PIASTRELLATO su tutta la casella. */
  background-repeat:no-repeat !important;
  background-position:right 12px center !important;
  background-size:12px 8px !important;
}
/* Le <option> del picker sono trasparenti per default: senza colore proprio
   lascerebbero vedere il background del select (incluso il chevron) nella riga
   selezionata quando la tendina e' aperta (Chrome 150+, picker disegnato dal
   renderer). */
select.form-control option{
  background-color:#fff;
  color:#0f172a;
}

/* validazione: success + feedback errore con barra rossa (oltre al colore) */
.has-error .form-control{ border-left:4px solid #dc2626 !important; }
.form-group.has-success .form-control{
  border-color:#10b981 !important; background:#f0fdf4 !important;
}
.invalid-feedback, .error-message{
  display:block !important; color:#dc2626 !important;
  font-size:12.5px !important; font-weight:500 !important; margin-top:6px !important;
}

/* checkbox / radio: 16px, brand, layout label inline */
input[type="checkbox"], input[type="radio"]{
  width:16px; height:16px; cursor:pointer; margin-top:2px; flex-shrink:0;
}
.checkbox-group, .radio-group{
  display:flex; flex-direction:column; gap:12px; margin-bottom:16px;
}

/* textarea placeholder */
textarea.form-control{ min-height:120px; resize:vertical; }
textarea.form-control::placeholder{ color:#cbd5e1; font-style:italic; }

/* ---------- 4) TABELLE ic3-table-wrap + toolbar + azioni riga ---------- */
.ic3-table-wrap .table > thead > tr > th,
table.dataTable thead th{
  position: sticky; top: 0; z-index: 10;
  padding: 12px 16px !important;
  background: linear-gradient(180deg,#fafbfd 0%,#f8fafc 100%) !important;
  border-bottom: 2px solid var(--ic-border) !important;
}
.ic3-table-wrap .table > tbody > tr{
  transition: background-color .15s var(--ic-ease), box-shadow .15s var(--ic-ease);
}
.ic3-table-wrap .table-hover > tbody > tr:hover{
  background: linear-gradient(90deg, var(--ic3-accent-soft) 0%, rgba(255,255,255,0) 85%) !important;
  box-shadow: inset -3px 0 0 var(--ic3-accent);
}
.ic3-table-wrap .table > tbody > tr.is-selected{
  background: var(--ic3-accent-soft) !important;
  box-shadow: inset -3px 0 0 var(--ic3-accent);
}
/* empty state (table + standalone) */
.ic3-empty-state,
.ic3-table-wrap tbody tr.ic3-empty-row > td{
  text-align:center !important; padding:60px 30px !important;
  background:#fafbfd !important; border-radius:14px !important;
  border:1.5px dashed var(--ic-border) !important; color:var(--ic-muted);
}
.ic3-empty-icon{ font-size:48px !important; color:#cbd5e1 !important; margin-bottom:12px !important; display:block !important; }
.ic3-table-wrap tbody tr.ic3-empty-row .ic3-empty-title{ font-weight:700; color:var(--ic-text); font-size:16px; margin-bottom:6px; }
.ic3-table-wrap tbody tr.ic3-empty-row .ic3-empty-sub{ font-size:13px; color:var(--ic-muted); }

/* toolbar tabella + chip filtro + search */
.ic3-table-toolbar{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  padding:14px 16px; border-bottom:1px solid var(--ic-border-soft);
  background:linear-gradient(180deg,#fafbfd 0%,#f8fafc 100%); flex-wrap:wrap;
}
.ic3-table-toolbar .ic3-search input{
  padding:9px 14px 9px 40px !important; border:1.5px solid var(--ic-border) !important;
  border-radius:9px !important; font-size:13px !important; background:#fff !important;
  transition:all .15s var(--ic-ease); outline:none;
}
.ic3-table-toolbar .ic3-search input:focus{
  border-color:var(--ic3-accent) !important; box-shadow:0 0 0 4px var(--ic3-accent-soft) !important;
}
.ic3-chip{
  border:1px solid var(--ic-border) !important; background:#fff !important;
  color:var(--ic-text-2) !important; padding:6px 13px !important;
  border-radius:9999px !important; font-size:12px !important; font-weight:600 !important;
  cursor:pointer; transition:all .15s var(--ic-ease);
  display:inline-flex; align-items:center; gap:5px; white-space:nowrap;
}
.ic3-chip:hover{ background:var(--ic3-accent-soft) !important; border-color:var(--ic3-accent) !important; color:var(--ic3-accent) !important; }
.ic3-chip.is-active{ background:var(--ic3-accent) !important; color:#fff !important; border-color:var(--ic3-accent) !important; box-shadow:0 2px 8px rgba(44,143,207,.30) !important; }

/* azioni di riga icon-button */
.ic3-row-actions{ display:inline-flex; gap:6px; align-items:center; justify-content:flex-end; }
.ic3-row-actions .btn{
  width:34px; height:34px; padding:0 !important; border-radius:8px !important;
  display:inline-flex; align-items:center; justify-content:center;
  transition:all .15s var(--ic-ease); flex-shrink:0;
}
.ic3-row-actions .btn-default{ background:#f8fafc !important; border:1px solid var(--ic-border-soft) !important; color:var(--ic-text-2) !important; }
.ic3-row-actions .btn-default:hover{ background:var(--ic3-accent-soft) !important; border-color:var(--ic3-accent) !important; color:var(--ic3-accent) !important; transform:translateY(-2px); box-shadow:0 4px 12px rgba(44,143,207,.15); }
/* Il .content-wrapper davanti non e' decorativo: isors-global-ui.css dipinge
   `.content-wrapper .btn-danger` in rosso pieno con la stessa specificita' di
   queste regole, e vince perche' viene caricato dopo. Nelle azioni di riga il
   cestino pieno urla piu' della riga che dovrebbe accompagnare. */
.content-wrapper .ic3-row-actions .btn-danger{ background:#fff !important; border:1px solid #fecaca !important; color:#b91c1c !important; }
.content-wrapper .ic3-row-actions .btn-danger:hover{ background:#fef2f2 !important; border-color:#ef4444 !important; color:#dc2626 !important; transform:translateY(-2px); }

/* PIEDE della card-tabella: "Mostro pagina X di Y" a sinistra, la paginazione a
   destra. Dentro .ic3-table-wrap (che ha overflow:hidden e nessun padding) i due
   blocchi finivano incollati al bordo e all'ultima riga: qui diventano una
   fascia con la sua aria, separata dalla tabella da una riga sottile. */
/* Le due meta' valgono ciascuna il 50%: DataTables le fa flottare e, larghe
   quanto il loro testo, la fascia si sarebbe interrotta in mezzo. Stessa
   altezza minima e allineamento verticale, altrimenti il bordo superiore
   combacia e quello inferiore no. */
.ic3-table-wrap .dataTables_wrapper > .dataTables_info,
.ic3-table-wrap .dataTables_wrapper > .dataTables_paginate{
  box-sizing:border-box; width:50%; min-height:58px;
  display:flex; align-items:center; flex-wrap:wrap;
  padding:10px 18px !important; margin:0 !important;
  background:#fafbfd; border-top:1px solid var(--ic-border-soft);
}
.ic3-table-wrap .dataTables_wrapper > .dataTables_info{
  float:left; justify-content:flex-start; color:var(--ic-muted); font-size:12.5px;
}
.ic3-table-wrap .dataTables_wrapper > .dataTables_paginate{ float:right; justify-content:flex-end; }
/* Senza questo l'ultimo elemento flottante esce dalla card e il bordo
   arrotondato si taglia a meta'. */
.ic3-table-wrap .dataTables_wrapper::after{ content:''; display:block; clear:both; }
/* Su schermo stretto le due meta' si impilano: la fascia resta una sola. */
@media (max-width:640px){
  .ic3-table-wrap .dataTables_wrapper > .dataTables_info,
  .ic3-table-wrap .dataTables_wrapper > .dataTables_paginate{
    float:none; width:100%; min-height:0; justify-content:center; border-top:none;
  }
  .ic3-table-wrap .dataTables_wrapper > .dataTables_info{ border-top:1px solid var(--ic-border-soft); padding-bottom:2px !important; }
  .ic3-table-wrap .dataTables_wrapper > .dataTables_paginate{ padding-top:2px !important; }
}

/* paginazione DataTables: current + disabled (rafforza il base esistente) */
.dataTables_wrapper .dataTables_paginate .paginate_button.current,
.dataTables_wrapper .dataTables_paginate .paginate_button.current:hover{
  box-shadow:0 4px 12px rgba(44,143,207,.25) !important; font-weight:700;
}
.dataTables_wrapper .dataTables_paginate .paginate_button.disabled{ opacity:.55; cursor:not-allowed; }
.dataTables_info{ display:block !important; }

/* ---------- 5) COMPONENTI: status pill · badge · stepper · progress · alert */
.ic3-status{
  display:inline-flex; align-items:center; gap:6px; padding:5px 11px;
  border-radius:9999px; font-size:11px; font-weight:700; text-transform:uppercase;
  border:1px solid transparent; letter-spacing:.02em;
}
.ic3-status--ok{ background:#ecfdf5; color:#047857; border-color:#d1fae5; }
.ic3-status--err{ background:#fef2f2; color:#b91c1c; border-color:#fee2e2; }
.ic3-status--warn{ background:#fffbeb; color:#b45309; border-color:#fcd34d; }

.badge, .label{
  font-weight:700 !important; padding:5px 11px !important; border-radius:9999px !important;
  font-size:11px !important; letter-spacing:.03em; display:inline-flex; align-items:center; gap:4px;
}
.badge-success, .label-success{ background:#ecfdf5 !important; color:#047857 !important; }
.badge-warning, .label-warning{ background:#fffbeb !important; color:#b45309 !important; }
.badge-danger,  .label-danger { background:#fef2f2 !important; color:#b91c1c !important; }

/* stepper / wizard */
.stepper, .form-steps{
  display:flex; align-items:center; justify-content:space-between; gap:12px;
  margin-bottom:24px; background:#fff; padding:18px 20px;
  border-radius:14px; border:1px solid var(--ic-border-soft); box-shadow:var(--ic3-shadow-md);
}
.step{ display:flex; align-items:center; gap:10px; flex:1; position:relative; }
.step .bullet{
  width:36px; height:36px; border-radius:50%; background:#f3f4f6; color:#9ca3af;
  font-weight:700; font-size:13px; display:inline-flex; align-items:center; justify-content:center;
  flex-shrink:0; transition:all .25s var(--ic-ease);
}
.step.active .bullet{ background:var(--ic3-grad-1); color:#fff; box-shadow:0 0 0 4px rgba(44,143,207,.15); }
.step.done .bullet{ background:#10b981; color:#fff; }
.step .label{ font-size:13px; font-weight:600; color:#9ca3af; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.step.active .label{ color:var(--ic3-accent); font-weight:700; }
.step.done .label{ color:#047857; }
.step .connector{ flex:1; height:2px; background:#e5e7eb; margin:0 8px; transition:background .3s; }
.step.done .connector{ background:#10b981; }

/* progress bar */
.progress{ height:8px !important; border-radius:9999px !important; background:#e5e7eb !important; box-shadow:inset 0 1px 2px rgba(0,0,0,.04); }
.progress-bar{ border-radius:9999px !important; background:linear-gradient(90deg,var(--ic3-accent) 0%,#49a7e0 100%) !important; box-shadow:0 2px 8px rgba(44,143,207,.25); transition:width .4s cubic-bezier(.4,0,.2,1); }

/* alert: animazione di ingresso (border-left già nel base righe 210-218) */
.alert{ padding:14px 18px !important; animation:icBrandAlertIn .35s var(--ic-ease) both; }
@keyframes icBrandAlertIn{ from{ opacity:0; transform:translateY(-8px);} to{ opacity:1; transform:none; } }
.alert-success{ background:#ecfdf5 !important; color:#065f46 !important; }
.alert-info   { background:#eff6ff !important; color:#1e3a8a !important; border-left-color:var(--ic3-accent) !important; }
.alert-warning{ background:#fffbeb !important; color:#92400e !important; }
.alert-danger { background:#fef2f2 !important; color:#991b1b !important; }

/* small-box / info-box hover elevation (estende, non sostituisce v3) */
.small-box, .info-box{ transition: transform .2s var(--ic-ease), box-shadow .2s var(--ic-ease); }
.small-box:hover, .info-box:hover{ transform:translateY(-4px) !important; box-shadow:var(--ic3-shadow-hover) !important; }

/* nav-tabs: underline indicator brand (sostituisce il legacy border-bottom pieno) */
.nav-tabs > li > a{ position:relative; }
.nav-tabs > li > a::after{
  content:''; position:absolute; left:12px; right:12px; bottom:-1px; height:2px;
  background:var(--ic3-accent); transform:scaleX(0); transform-origin:left;
  transition:transform .2s var(--ic-ease);
}
.nav-tabs > li.active > a::after{ transform:scaleX(1); }

/* tooltip / dropdown rifinitura */
.tooltip-inner{ background:#0f172a !important; max-width:280px; border-radius:8px; box-shadow:var(--ic3-shadow-lg); }
.dropdown-menu{ box-shadow:var(--ic3-shadow-lg) !important; }

/* ---------- 6) HOME: banner pending · banner esame · hero CTA iscrizione */
.corsista-approval-banner{
  background:linear-gradient(135deg,#fef3c7 0%,#fffbeb 100%); border:1.5px solid #fde68a;
  border-radius:14px; padding:18px 22px; margin-bottom:24px;
  display:flex; align-items:flex-start; gap:14px;
  box-shadow:0 2px 8px rgba(245,158,11,.08); animation:ic3FadeIn .35s var(--ic-ease) both;
}
.corsista-approval-banner-icon{ font-size:32px; color:#b45309; flex-shrink:0; line-height:1; }
.corsista-approval-banner-content h4{ margin:0 0 6px; font-weight:800; color:#92400e; font-size:15px; letter-spacing:-.01em; }
.corsista-approval-banner-content p{ margin:0 0 12px; color:#78350f; font-size:14px; line-height:1.55; }
.corsista-approval-banner-content ol{ margin:0 0 12px; padding-left:18px; color:#78350f; font-size:13px; line-height:1.85; }
.corsista-approval-banner .btn{
  padding:10px 22px; background:var(--ic3-grad-warn); border:none; color:#fff; font-weight:600;
  border-radius:10px; display:inline-flex; align-items:center; gap:7px;
  box-shadow:0 4px 12px rgba(245,158,11,.30); transition:all .2s var(--ic-ease);
}
.corsista-approval-banner .btn:hover{ transform:translateY(-1px); box-shadow:0 6px 18px rgba(245,158,11,.42); }

.exam-date-banner{
  background:linear-gradient(135deg,#fff7ed 0%,#ffedd5 100%); border:1.5px solid #fdba74;
  border-radius:14px; padding:18px 22px; box-shadow:0 4px 12px rgba(245,158,11,.10);
  display:flex; gap:16px; align-items:center; flex-wrap:wrap;
  animation:ic3SlideUp .4s var(--ic-ease) both;
}
.exam-date-banner-icon{ flex-shrink:0; width:48px; height:48px; border-radius:50%; background:#f59e0b; color:#fff; display:flex; align-items:center; justify-content:center; font-size:22px; }
.exam-date-banner-content{ flex:1; min-width:260px; }
.exam-date-banner-content h4{ margin:0 0 4px; color:#9a3412; font-weight:700; font-size:15px; letter-spacing:-.01em; }
.exam-date-banner-content p{ margin:0; color:#7c2d12; font-size:13.5px; line-height:1.5; }
.exam-date-banner-cta{
  background:var(--ic3-grad-warn); color:#fff; padding:11px 22px; border-radius:10px;
  text-decoration:none; font-weight:700; font-size:14px; display:inline-flex; align-items:center; gap:7px;
  box-shadow:0 4px 12px rgba(245,158,11,.30); transition:all .2s var(--ic-ease); border:none; cursor:pointer;
}
.exam-date-banner-cta:hover{ transform:translateY(-2px); box-shadow:0 6px 18px rgba(245,158,11,.42); }
.exam-date-banner-cta:focus-visible{ outline:2px solid #f59e0b; outline-offset:2px; }

/* Banner promemoria questionario di soddisfazione (teal) - stessa impalcatura del banner data esame */
.survey-reminder-banner{
  background:linear-gradient(135deg,#f0fdfa 0%,#ccfbf1 100%); border:1.5px solid #5eead4;
  border-radius:14px; padding:18px 22px; box-shadow:0 4px 12px rgba(13,148,136,.10);
  display:flex; gap:16px; align-items:center; flex-wrap:wrap;
  animation:ic3SlideUp .4s var(--ic-ease) both;
}
.survey-reminder-banner-icon{ flex-shrink:0; width:48px; height:48px; border-radius:50%; background:#0d9488; color:#fff; display:flex; align-items:center; justify-content:center; font-size:22px; }
.survey-reminder-banner-content{ flex:1; min-width:260px; }
.survey-reminder-banner-content h4{ margin:0 0 4px; color:#115e59; font-weight:700; font-size:15px; letter-spacing:-.01em; }
.survey-reminder-banner-content p{ margin:0; color:#134e4a; font-size:13.5px; line-height:1.5; }
.survey-reminder-banner-cta{
  background:linear-gradient(135deg,#0d9488 0%,#14b8a6 100%); color:#fff; padding:11px 22px; border-radius:10px;
  text-decoration:none; font-weight:700; font-size:14px; display:inline-flex; align-items:center; gap:7px;
  box-shadow:0 4px 12px rgba(13,148,136,.30); transition:all .2s var(--ic-ease); border:none; cursor:pointer;
}
.survey-reminder-banner-cta:hover{ transform:translateY(-2px); box-shadow:0 6px 18px rgba(13,148,136,.42); color:#fff; }
.survey-reminder-banner-cta:focus-visible{ outline:2px solid #0d9488; outline-offset:2px; }

.hero-cta-iscriviti{
  display:block; text-decoration:none; color:#fff;
  background:linear-gradient(135deg,var(--ic3-accent) 0%,var(--ic3-navy) 50%,#49a7e0 100%);
  border-radius:18px; padding:28px 32px; position:relative; overflow:hidden;
  box-shadow:0 8px 28px rgba(44,143,207,.30); transition:all .25s var(--ic-ease); margin-bottom:18px;
}
.hero-cta-iscriviti:hover{ transform:translateY(-2px); box-shadow:0 12px 36px rgba(44,143,207,.42); }
.hero-cta-iscriviti:focus-visible{ outline:2px solid #fff; outline-offset:2px; }
.hero-cta-iscriviti::before{ content:''; position:absolute; inset:0; background:var(--ic3-sheen); transform:translateX(-100%); transition:transform .6s var(--ic-ease); pointer-events:none; }
.hero-cta-iscriviti:hover::before{ transform:translateX(100%); }
.hero-cta-inner{ position:relative; z-index:1; display:flex; align-items:center; gap:24px; flex-wrap:wrap; }
.hero-cta-icon-box{ flex-shrink:0; width:74px; height:74px; border-radius:18px; background:rgba(255,255,255,.18); display:flex; align-items:center; justify-content:center; backdrop-filter:blur(8px); }
.hero-cta-icon-box i{ font-size:34px; color:#fff; }
.hero-cta-content{ flex:1; min-width:240px; }
.hero-cta-badge{ display:inline-block; padding:3px 10px; background:rgba(255,255,255,.22); border-radius:999px; font-size:11px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; margin-bottom:8px; }
.hero-cta-content h2{ margin:0 0 6px; font-size:24px; font-weight:800; letter-spacing:-.02em; color:#fff; }
.hero-cta-content p{ margin:0; font-size:14.5px; line-height:1.5; color:rgba(255,255,255,.92); max-width:540px; }
.hero-cta-button{ flex-shrink:0; display:inline-flex; align-items:center; gap:8px; background:#fff; color:var(--ic3-accent); padding:14px 24px; border-radius:12px; font-weight:700; font-size:15px; box-shadow:0 4px 14px rgba(0,0,0,.10); transition:all .2s var(--ic-ease); text-decoration:none; }
.hero-cta-button:hover{ transform:translateY(-2px); box-shadow:0 6px 20px rgba(0,0,0,.15); }
.hero-cta-button i{ transition:transform .15s var(--ic-ease); }
.hero-cta-iscriviti:hover .hero-cta-button i{ transform:translateX(4px); }

/* empty state esami imminenti */
.exams-empty-state{ text-align:center; padding:60px 30px; color:var(--ic-muted); background:#fafbfd; border:2px dashed var(--ic-border); border-radius:14px; }
.exams-empty-state-icon{ font-size:48px; color:#cbd5e1; margin-bottom:12px; }
.exams-empty-state h4{ font-size:15px; font-weight:700; color:var(--ic-text); margin-bottom:6px; letter-spacing:-.01em; }
.exams-empty-state p{ font-size:13px; color:var(--ic-muted); margin:0; line-height:1.5; }

/* firma digitale (home) */
#signature-pad{ width:100%; height:250px; cursor:crosshair; touch-action:none; border:1px solid var(--ic-border-soft); border-radius:10px; }
#signature-pad:focus-visible{ outline:2px solid var(--ic3-accent); outline-offset:2px; }

/* ---------- 7) RESPONSIVE: touch target · pagination · banner mobile ---- */
@media (max-width:768px){
  .btn:not(.btn-lg), .ic3-chip, .ic3-row-actions .btn{ min-height:44px; }
  .ic3-row-actions, .btn-group{ gap:8px !important; }
  .dataTables_wrapper .dataTables_paginate .paginate_button{ padding:5px 10px !important; font-size:12px !important; margin:0 1px !important; }
  .modal-body{ max-height:calc(100vh - 160px); overflow-y:auto; }
}
@media (max-width:767px){
  .info-box-icon{ padding:18px 0; font-size:26px; }
  .hero-cta-inner{ flex-direction:column; gap:12px; align-items:flex-start; }
  .hero-cta-content h2{ font-size:18px; }
  .hero-cta-button{ width:100%; justify-content:center; }
  .corsista-approval-banner, .exam-date-banner, .survey-reminder-banner{ flex-direction:column; gap:12px; padding:14px 16px; }
  .corsista-approval-banner .btn, .exam-date-banner-cta, .survey-reminder-banner-cta{ width:100%; justify-content:center; }
  .stepper, .form-steps{ padding:14px 12px; }
  .step .label{ display:none; }
  .step .bullet{ width:28px; height:28px; font-size:11px; }
}
@media (max-width:480px){
  .alert{ flex-direction:column; gap:12px; }
}
@media (max-height:500px){ .modal-body{ max-height:calc(100vh - 120px); } }

/* ============================================================
   "CONVERTI TUTTO": ogni .panel-default assume il look box-primary
   (accent-bar brand in cima) senza toccare il markup delle 174 viste.
   Niente overflow:hidden -> i dropdown nei panel-heading restano ok.
   ============================================================ */
.panel.panel-default{
  border-top: 3px solid var(--ic3-accent) !important;
  border-radius: 12px !important;
  border-color: #eef1f6 !important;
  box-shadow: var(--ic3-shadow-card, 0 1px 2px rgba(16,24,40,.04), 0 8px 24px rgba(16,24,40,.06)) !important;
  overflow: visible;
}
.panel.panel-default > .panel-heading{
  background: #fcfcfd !important;
  border-bottom: 1px solid #eef1f6 !important;
  border-top-left-radius: 9px !important; border-top-right-radius: 9px !important;
  font-weight: 700 !important; color: #1f2937 !important; font-size: 15px !important;
  padding: 14px 20px !important;
}
.panel.panel-default > .panel-body{ padding: 20px !important; }
/* panel info/warning/danger: accent-bar coerente con la semantica */
.panel.panel-info{ border-top: 3px solid var(--ic3-accent) !important; }
.panel.panel-success{ border-top: 3px solid #10b981 !important; }
.panel.panel-warning{ border-top: 3px solid #f59e0b !important; }
.panel.panel-danger{ border-top: 3px solid #ef4444 !important; }

/* ============================================================
   TIPOGRAFIA BRAND - Inter (carattere ufficiale IsorsCert)
   Sostituisce Source Sans Pro (default AdminLTE) su tutta la dashboard.
   Il <link> del font è caricato nel master <head>.
   ============================================================ */
body,
.content-wrapper, .main-sidebar, .main-header, .wrapper,
.btn, .form-control, input, select, textarea, button,
.box, .panel, .modal, .dropdown-menu, .sidebar-menu,
h1, h2, h3, h4, h5, h6, .content-header > h1{
  font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, system-ui, sans-serif !important;
}
body{ -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; letter-spacing: -0.005em; }
h1, h2, h3, h4, h5, h6{ letter-spacing: -0.02em; }

/* ============================================================
   HEADER LOGO - box navy in cima (eco della sidebar), logo bianco.
   Il logo sta al top assoluto (la "tetto" del sito), senza stacco e
   senza duplicati nella sidebar. Vince sull'inline filter via !important.
   ============================================================ */
.skin-blue .main-header .logo{
  background: linear-gradient(180deg,#161d44 0%,#1b2350 100%) !important;
  border-right: 1px solid rgba(255,255,255,.06) !important;
  color: #fff !important;
}
.skin-blue .main-header .logo img{
  filter: brightness(0) invert(1) !important;
  max-height: 40px !important;
}
.skin-blue .main-header .logo:hover{ background:#1b2350 !important; }
.skin-blue .main-header .logo:hover img{ transform: scale(1.03); }