/* ==========================================================================
   STUDIO MOSTERT - Tema grafico per l'app pazienti (Angular / ng-zorro)
   Versione: tema 1.3   (17/10/2026) - 1.3 = 1.1 + sfondo del contenitore dell'app e font dei campi di testo libero (vedi sezione 17). 1.1 = 1.0 + componenti propri dell'app
   (riquadri Certificati, pannelli .form-block) + font A (Fraunces + Plus Jakarta Sans)

   COSA E'
   Un unico foglio di stile di sovrascrittura ("override") da caricare DOPO
   styles.<hash>.css in index.html, ad esempio:
       <link rel="stylesheet" href="studio-theme.css?v=1.0">
   Cambia SOLO l'aspetto: colori, bordi (solo colore), ombre leggere, font
   (famiglia e, in pochissimi punti, peso), stati hover/focus, leggero
   arrotondamento degli angoli.

   COSA NON FA (regola rigida)
   Nessuna proprieta' di impaginazione: niente spaziature interne/esterne,
   dimensioni, display, posizionamento, flex/grid, trasformazioni, altezza
   di riga, interlettera o dimensione del carattere. La disposizione dei
   campi resta identica. Verifica automatica: vedi proposta.md (controllo
   di sicurezza).

   COME DISATTIVARLO
   Togliere (o commentare) la riga <link ... studio-theme.css> da index.html
   e ricaricare con Ctrl+F5 / Cmd+Maiusc+R: l'app torna esattamente com'era.
   Non serve toccare altro. In alternativa, per disattivare solo i font
   ospitati, vedi il blocco "FONT" qui sotto (basta cambiare due variabili).

   CAVEAT TECNICO
   I selettori .ant-* provengono dalla build attuale di ng-zorro (Ant Design
   4.x). Se in futuro l'app verra' ricompilata con una versione diversa di
   ng-zorro, alcuni selettori potrebbero non trovare piu' corrispondenza:
   in quel caso il tema degrada in modo innocuo (si vede l'aspetto standard).
   ========================================================================== */


/* ==========================================================================
   1. FONT  (ospitati sullo stesso dominio, nessuna chiamata a servizi esterni)
   --------------------------------------------------------------------------
   Abbinamento A:  titoli = Fraunces 600,  testo = Plus Jakarta Sans.
   File da pubblicare (SOLO questi due, licenza SIL OFL 1.1), in una cartella
   "fonts" posta accanto a questo css (gli url sono relativi al css):
       fonts/PlusJakartaSans-latin-wght.woff2   (variabile 200-800, 27 KB)
       fonts/Fraunces-latin-600.woff2           (peso 600, 18 KB)

   Compensazione delle metriche rispetto al carattere di sistema attuale:
   - size-adjust 95% sul testo: con lo spazio corretto (vedi sotto) le larghezze
     dei testi restano a +-1% di quelle attuali (misura su SF/Helvetica Neue);
     le maiuscole (etichette Certificati) risultano un po' piu' strette, mai
     piu' larghe, quindi non vanno a capo.
   - Plus Jakarta Sans ha lo spazio tra le parole molto stretto (2,3 px a 14 px
     contro 3,8 px del carattere di sistema). Non si puo' usare word-spacing
     (e' una proprieta' di impaginazione, vietata): si sostituisce SOLO il
     glifo dello spazio con quello di un carattere gia' presente sul computer
     (local(): nessun download, nessun servizio esterno), tramite @font-face
     "St Space" limitato a U+0020 e U+00A0. Se nessuno di quei caratteri
     esiste, il browser salta il blocco e usa lo spazio originale: nessun danno.
   - font-display: swap -> il testo e' sempre leggibile subito; se il file non
     fosse raggiungibile si vede il font di sistema (come oggi).
   Per tornare ai soli font di sistema: in :root impostare
       --st-font-body:  var(--st-font-system);
       --st-font-title: Georgia, "Times New Roman", serif;
   ========================================================================== */
@font-face {
  font-family: "St Sans";
  src: url("fonts/PlusJakartaSans-latin-wght.woff2") format("woff2");
  font-weight: 200 800;
  font-style: normal;
  font-display: swap;
  size-adjust: 95%;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: "St Space";
  src: local("Helvetica Neue"), local("Arial"), local("Roboto"), local("Liberation Sans"), local("Noto Sans");
  size-adjust: 100%;
  unicode-range: U+0020, U+00A0;
}
@font-face {
  font-family: "St Title";
  src: url("fonts/Fraunces-latin-600.woff2") format("woff2");
  font-weight: 600;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}


/* ==========================================================================
   2. VARIABILI (tavolozza e font) - modificare qui per ritoccare il tema
   Rapporti di contrasto WCAG 2.1 calcolati: vedi proposta.md
   ========================================================================== */
:root {
  /* Superfici */
  --st-bg:            #E8EEF2;  /* sfondo pagina: grigio-azzurro tenue          */
  --st-surface:       #FFFFFF;  /* campi, card, tabelle, finestre               */
  --st-surface-alt:   #F4F8FA;  /* righe alternate nelle tabelle                */
  --st-row-hover:     #E8F3F4;  /* riga di tabella sotto il mouse               */
  --st-tint:          #D9EAEC;  /* intestazioni di tabella e di sezione         */
  --st-teal-light:    #E6F4F3;  /* voce selezionata, testata card (da brand)    */
  --st-tint-line:     #B5D2D5;  /* filetti a tinta teal                         */
  --st-line:          #CBD6DD;  /* filetti neutri (decorativi)                  */

  /* Testo */
  --st-ink:           #14293A;  /* testo principale                             */
  --st-ink-2:         #34495A;  /* etichette dei campi                          */
  --st-muted:         #526676;  /* testo secondario, segnaposto                 */

  /* Marchio */
  --st-primary:        #1B4B66; /* petrolio (blu-2 del sito): bottone primario  */
  --st-primary-hover:  #256184;
  --st-primary-active: #123A52; /* blu del sito                                 */
  --st-teal:           #2D8C93; /* teal del sito: bordi hover, decori           */
  --st-teal-dark:      #1E6F76; /* teal scuro: bordo focus, selezioni           */
  --st-link:           #17606A; /* collegamenti (leggibili su sfondo e bianco)  */
  --st-link-hover:     #0F4A57;
  --st-coral:          #F0806B; /* accento: SOLO decorativo (mai per il testo)  */
  --st-coral-deep:     #B4432F; /* corallo scurito, ammesso per testo           */

  /* Campi */
  --st-field-border:   #667F90; /* bordo campi: 3,6:1 su sfondo, 4,2:1 su bianco */
  --st-disabled-bg:    #DCE4E9;
  --st-disabled-text:  #4F6170;
  --st-disabled-border:#8FA2AF;

  /* Esiti */
  --st-danger:         #B3261E;
  --st-danger-bg:      #FDECEA;
  --st-danger-line:    #E8B4AF;
  --st-success:        #2B7A4B;
  --st-success-bg:     #E6F4EC;
  --st-success-line:   #A9D3B8;
  --st-warning:        #8A5A00;
  --st-warning-icon:   #B7791F;
  --st-warning-bg:     #FFF4DB;
  --st-warning-line:   #EBCF92;

  /* Certificati e pannelli (componenti propri dell'app) */
  --st-panel-border:   #8FA6B4;  /* bordo pannelli .form-block (decorativo)      */
  --st-cert-1:         #1B4B66;  /* Cartella               petrolio    9,4:1 su bianco */
  --st-cert-2:         #1E6F76;  /* Vaccini                teal scuro  5,9:1 */
  --st-cert-3:         #3F7A55;  /* Non presenta           verde salvia 5,1:1 */
  --st-cert-4:         #A14A36;  /* Assistenza domiciliare corallo scuro 5,9:1 */
  --st-cert-5:         #8A5A00;  /* Attivita' sportiva     ocra         5,9:1 */

  /* Ombre e angoli */
  --st-focus-ring:     0 0 0 3px rgba(45, 140, 147, .35);
  --st-shadow-sm:      0 1px 2px rgba(18, 58, 82, .10);
  --st-shadow-pop:     0 6px 20px rgba(18, 58, 82, .18), 0 1px 3px rgba(18, 58, 82, .12);
  --st-radius:         4px;
  --st-radius-lg:      8px;

  /* Famiglie di carattere (abbinamento A).
     Gli stack terminano con quello attuale dell'app: se i file font non si
     caricano, l'aspetto e' identico a oggi. "St Space" va per primo: copre
     solo lo spazio, tutto il resto passa a "St Sans".                         */
  --st-font-system: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --st-font-body:   "St Space", "St Sans", var(--st-font-system);
  --st-font-title:  "St Title", Georgia, "Times New Roman", serif;
}


/* ==========================================================================
   3. BASE: sfondo, testo, collegamenti, selezione
   ========================================================================== */
html {
  --antd-wave-shadow-color: var(--st-teal);   /* alone animato al click dei bottoni */
  background-color: var(--st-bg);
}
body {
  background-color: var(--st-bg);
  color: var(--st-ink);
  font-family: var(--st-font-body);
}
::selection { color: #fff; background: var(--st-primary); }

a { color: var(--st-link); }
a:hover { color: var(--st-link-hover); }
a:active { color: var(--st-primary-active); }
a[disabled] { color: var(--st-disabled-text); }

/* Titoli: serif caldo (Fraunces) in petrolio scuro */
h1, h2, h3, h4, h5, h6 {
  color: var(--st-primary-active);
  font-family: var(--st-font-title);
  font-weight: 600;
}


/* ==========================================================================
   4. TITOLI DI SEZIONE (nz-divider con testo, card, finestre)
   Il filetto prende un tono teal; il testo e' petrolio in Fraunces.
   ========================================================================== */
.ant-divider { border-top-color: var(--st-tint-line); }
.ant-divider-vertical { border-left-color: var(--st-tint-line); }
.ant-divider-horizontal.ant-divider-with-text,
.ant-divider-plain.ant-divider-with-text {
  color: var(--st-primary-active);
  border-top-color: var(--st-tint-line);
  font-family: var(--st-font-title);
  font-weight: 600;
}
.ant-divider-dashed { border-color: var(--st-tint-line); }

.ant-card-head-title,
.ant-modal-title,
.ant-modal-confirm-body .ant-modal-confirm-title,
.ant-page-header-heading-title,
.ant-descriptions-title,
.ant-result-title {
  color: var(--st-primary-active);
  font-family: var(--st-font-title);
  font-weight: 600;
}
.ant-descriptions-item-content { color: var(--st-ink); }


/* ==========================================================================
   5. BOTTONI
   Primario = petrolio pieno (es. "Salva paziente"); secondario = bianco con
   bordo ben visibile; link = teal scuro. Il testo non cambia dimensione.
   ========================================================================== */
.ant-btn {
  color: var(--st-ink);
  border-color: var(--st-field-border);
  background: var(--st-surface);
  box-shadow: var(--st-shadow-sm);
}
.ant-btn:not(.ant-btn-round):not(.ant-btn-circle) { border-radius: var(--st-radius); }
.ant-btn:hover, .ant-btn:focus {
  color: var(--st-primary);
  border-color: var(--st-teal-dark);
  background: var(--st-teal-light);
}
.ant-btn:focus-visible { box-shadow: var(--st-focus-ring); }
.ant-btn:active {
  color: var(--st-primary-active);
  border-color: var(--st-primary-active);
  background: var(--st-tint);
}
.ant-btn[disabled], .ant-btn[disabled]:hover, .ant-btn[disabled]:focus, .ant-btn[disabled]:active {
  color: var(--st-disabled-text);
  border-color: var(--st-disabled-border);
  background: var(--st-disabled-bg);
  box-shadow: none;
}

/* Primario */
.ant-btn-primary {
  color: #fff;
  border-color: var(--st-primary);
  background: var(--st-primary);
  text-shadow: none;
  box-shadow: 0 2px 0 var(--st-primary-active), 0 4px 10px rgba(18, 58, 82, .22);
}
.ant-btn-primary:hover, .ant-btn-primary:focus {
  color: #fff;
  border-color: var(--st-primary-hover);
  background: var(--st-primary-hover);
}
.ant-btn-primary:focus-visible { box-shadow: 0 2px 0 var(--st-primary-active), var(--st-focus-ring); }
.ant-btn-primary:active {
  color: #fff;
  border-color: var(--st-primary-active);
  background: var(--st-primary-active);
}
.ant-btn-primary[disabled], .ant-btn-primary[disabled]:hover, .ant-btn-primary[disabled]:focus, .ant-btn-primary[disabled]:active {
  color: var(--st-disabled-text);
  border-color: var(--st-disabled-border);
  background: var(--st-disabled-bg);
  box-shadow: none;
}

/* Tratteggiato, fantasma, testo, link */
.ant-btn-dashed { color: var(--st-ink); border-color: var(--st-field-border); background: var(--st-surface); }
.ant-btn-dashed:hover, .ant-btn-dashed:focus { color: var(--st-primary); border-color: var(--st-teal-dark); background: var(--st-teal-light); }
.ant-btn-ghost { color: var(--st-ink); border-color: var(--st-field-border); background: transparent; }
.ant-btn-ghost:hover, .ant-btn-ghost:focus { color: var(--st-primary); border-color: var(--st-teal-dark); background: transparent; }
.ant-btn-text { color: var(--st-ink); background: transparent; border-color: transparent; box-shadow: none; }
.ant-btn-text:hover, .ant-btn-text:focus { color: var(--st-primary); background: rgba(18, 58, 82, .07); border-color: transparent; }
.ant-btn-text:active { color: var(--st-primary-active); background: rgba(18, 58, 82, .12); border-color: transparent; }
.ant-btn-link { color: var(--st-link); background: transparent; border-color: transparent; box-shadow: none; }
.ant-btn-link:hover, .ant-btn-link:focus { color: var(--st-link-hover); background: transparent; border-color: transparent; }
.ant-btn-link:active { color: var(--st-primary-active); background: transparent; border-color: transparent; }
.ant-btn-text[disabled], .ant-btn-text[disabled]:hover, .ant-btn-text[disabled]:focus, .ant-btn-text[disabled]:active,
.ant-btn-link[disabled], .ant-btn-link[disabled]:hover, .ant-btn-link[disabled]:focus, .ant-btn-link[disabled]:active {
  color: var(--st-disabled-text);
  background: transparent;
  border-color: transparent;
  box-shadow: none;
}

/* Pericolo (es. elimina): rosso caldo, non il rosso Ant fluo */
.ant-btn-dangerous { color: var(--st-danger); border-color: var(--st-danger); background: var(--st-surface); }
.ant-btn-dangerous:hover, .ant-btn-dangerous:focus { color: var(--st-danger); border-color: var(--st-danger); background: var(--st-danger-bg); }
.ant-btn-dangerous:active { color: #8C1D17; border-color: #8C1D17; background: var(--st-danger-bg); }
.ant-btn-dangerous.ant-btn-primary, .ant-btn-danger { color: #fff; border-color: var(--st-danger); background: var(--st-danger); text-shadow: none; }
.ant-btn-dangerous.ant-btn-primary:hover, .ant-btn-dangerous.ant-btn-primary:focus,
.ant-btn-danger:hover, .ant-btn-danger:focus { color: #fff; border-color: #C9372D; background: #C9372D; }
.ant-btn-dangerous.ant-btn-primary:active, .ant-btn-danger:active { color: #fff; border-color: #8C1D17; background: #8C1D17; }
.ant-btn-dangerous.ant-btn-link, .ant-btn-dangerous.ant-btn-text { color: var(--st-danger); background: transparent; border-color: transparent; }


/* ==========================================================================
   6. CAMPI DI TESTO (nz-input, textarea, input numerico, gruppi)
   Campo = bianco pieno su sfondo grigio-azzurro, bordo 1px a contrasto >= 3:1.
   ========================================================================== */
.ant-input,
.ant-input-affix-wrapper,
.ant-input-number {
  color: var(--st-ink);
  background-color: var(--st-surface);
  border-color: var(--st-field-border);
  border-radius: var(--st-radius);
}
.ant-input::placeholder,
.ant-input-affix-wrapper::placeholder,
.ant-input-number::placeholder,
.ant-input-number-input::placeholder { color: var(--st-muted); }

.ant-input:hover,
.ant-input-affix-wrapper:hover,
.ant-input-affix-wrapper:not(.ant-input-affix-wrapper-disabled):hover,
.ant-input-number:hover { border-color: var(--st-teal); }

.ant-input:focus, .ant-input-focused,
.ant-input-affix-wrapper:focus, .ant-input-affix-wrapper-focused,
.ant-input-number:focus, .ant-input-number-focused {
  border-color: var(--st-teal-dark);
  box-shadow: var(--st-focus-ring);
}

/* Disabilitati / sola lettura: sfondo piu' scuro ma testo ancora leggibile (>= 4,5:1) */
.ant-input-disabled, .ant-input[disabled],
.ant-input-affix-wrapper-disabled, .ant-input-affix-wrapper[disabled],
.ant-input-number-disabled {
  color: var(--st-disabled-text);
  background-color: var(--st-disabled-bg);
  border-color: var(--st-disabled-border);
}
.ant-input-disabled:hover, .ant-input[disabled]:hover,
.ant-input-affix-wrapper-disabled:hover, .ant-input-affix-wrapper[disabled]:hover,
.ant-input-number-disabled:hover { border-color: var(--st-disabled-border); }
.ant-input-affix-wrapper-disabled .ant-input[disabled] { background: transparent; }
.ant-input-number-disabled .ant-input-number-input { color: var(--st-disabled-text); }

/* Errore (stato impostato dall'app: ant-input-status-error ecc.) */
.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input,
.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:hover,
.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper,
.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:hover,
.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number,
.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:hover {
  background: var(--st-surface);
  border-color: var(--st-danger);
}
.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input:focus,
.ant-input-status-error:not(.ant-input-disabled):not(.ant-input-borderless).ant-input-focused,
.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper:focus,
.ant-input-affix-wrapper-status-error:not(.ant-input-affix-wrapper-disabled):not(.ant-input-affix-wrapper-borderless).ant-input-affix-wrapper-focused,
.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number:focus,
.ant-input-number-status-error:not(.ant-input-number-disabled):not(.ant-input-number-borderless).ant-input-number-focused {
  border-color: var(--st-danger);
  box-shadow: 0 0 0 3px rgba(179, 38, 30, .25);
}
.ant-input-status-error .ant-input-prefix,
.ant-input-affix-wrapper-status-error .ant-input-prefix { color: var(--st-danger); }

/* Gruppi (addon) e icone dentro i campi */
.ant-input-group-addon { color: var(--st-ink-2); background-color: var(--st-tint); border-color: var(--st-field-border); }
.ant-input-prefix, .ant-input-suffix { color: var(--st-muted); }
.anticon.ant-input-clear-icon, .ant-input-clear-icon { color: var(--st-muted); }
.anticon.ant-input-clear-icon:hover, .ant-input-clear-icon:hover { color: var(--st-ink-2); }
.ant-input-show-count-suffix { color: var(--st-muted); }

/* Input numerico: frecce, ricerca (nz-input-search) e gruppi numerici */
.ant-input-number-handler-wrap { background: var(--st-surface); }
.ant-input-number-handler { color: var(--st-muted); border-left-color: var(--st-field-border); }
.ant-input-number-handler:active { background: var(--st-tint); }
.ant-input-number-handler:hover .ant-input-number-handler-up-inner,
.ant-input-number-handler:hover .ant-input-number-handler-down-inner { color: var(--st-teal-dark); }
.ant-input-number-handler-up-inner, .ant-input-number-handler-down-inner { color: var(--st-muted); }
.ant-input-number-group-addon { color: var(--st-ink-2); background-color: var(--st-tint); border-color: var(--st-field-border); }
.ant-input-search .ant-input:hover, .ant-input-search .ant-input:focus { border-color: var(--st-teal-dark); }
.ant-input-textarea-show-count:after { color: var(--st-muted); }


/* ==========================================================================
   7. SELECT (nz-select) e relativo menu a tendina
   ========================================================================== */
.ant-select { color: var(--st-ink); }
.ant-select:not(.ant-select-customize-input) .ant-select-selector {
  background-color: var(--st-surface);
  border-color: var(--st-field-border);
  border-radius: var(--st-radius);
}
.ant-select:not(.ant-select-disabled):hover .ant-select-selector { border-color: var(--st-teal); }
.ant-select-focused:not(.ant-select-disabled).ant-select:not(.ant-select-customize-input) .ant-select-selector {
  border-color: var(--st-teal-dark);
  box-shadow: var(--st-focus-ring);
}
.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector {
  color: var(--st-disabled-text);
  background: var(--st-disabled-bg);
  border-color: var(--st-disabled-border);
}
.ant-select-selection-placeholder { color: var(--st-muted); }
.ant-select-single.ant-select-open .ant-select-selection-item { color: var(--st-muted); }
.ant-select-arrow { color: var(--st-muted); }
.ant-select-clear { color: var(--st-muted); background: var(--st-surface); }
.ant-select-clear:hover { color: var(--st-ink-2); }
.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input) .ant-select-selector {
  background-color: var(--st-surface);
  border-color: var(--st-danger) !important;   /* !important: l'originale lo usa a sua volta */
}

.ant-select-dropdown {
  color: var(--st-ink);
  background-color: var(--st-surface);
  border-radius: var(--st-radius);
  box-shadow: var(--st-shadow-pop);
}
.ant-select-item { color: var(--st-ink); }
.ant-select-item-group { color: var(--st-muted); }
.ant-select-item-option-active:not(.ant-select-item-option-disabled) { background-color: var(--st-row-hover); }
.ant-select-item-option-selected:not(.ant-select-item-option-disabled) { color: var(--st-primary-active); background-color: var(--st-tint); }
.ant-select-item-option-selected:not(.ant-select-item-option-disabled) .ant-select-item-option-state { color: var(--st-teal-dark); }
.ant-select-item-option-disabled { color: var(--st-disabled-text); }
.ant-select-item-empty, .ant-select-dropdown-empty { color: var(--st-muted); }
.ant-select-item-option-disabled.ant-select-item-option-selected { background-color: var(--st-disabled-bg); }
.ant-select-multiple .ant-select-selection-item { color: var(--st-primary-active); background: var(--st-teal-light); border-color: var(--st-tint-line); }


/* ==========================================================================
   8. DATE-PICKER (nz-date-picker) e pannello calendario
   ========================================================================== */
.ant-picker {
  color: var(--st-ink);
  background: var(--st-surface);
  border-color: var(--st-field-border);
  border-radius: var(--st-radius);
}
.ant-picker:hover, .ant-picker-focused { border-color: var(--st-teal); }
.ant-picker-focused { border-color: var(--st-teal-dark); box-shadow: var(--st-focus-ring); }
.ant-picker.ant-picker-disabled { background: var(--st-disabled-bg); border-color: var(--st-disabled-border); }
.ant-picker.ant-picker-disabled .ant-picker-suffix { color: var(--st-disabled-text); }
.ant-picker-input > input { color: var(--st-ink); background-color: transparent; border-color: transparent; }
.ant-picker-input > input::placeholder { color: var(--st-muted); }
.ant-picker-input > input[disabled] { color: var(--st-disabled-text); }
.ant-picker-input-placeholder > input { color: var(--st-muted); }
.ant-picker-suffix, .ant-picker-separator { color: var(--st-muted); }
.ant-picker-clear { color: var(--st-muted); background: var(--st-surface); }
.ant-picker-clear:hover { color: var(--st-ink-2); }
.ant-picker-status-error.ant-picker,
.ant-picker-status-error.ant-picker:not([disabled]):hover { background-color: var(--st-surface); border-color: var(--st-danger); }
.ant-picker-status-error.ant-picker-focused,
.ant-picker-status-error.ant-picker:focus { border-color: var(--st-danger); box-shadow: 0 0 0 3px rgba(179, 38, 30, .25); }

/* Pannello calendario */
.ant-picker-dropdown { color: var(--st-ink); }
.ant-picker-panel-container { background: var(--st-surface); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow-pop); }
.ant-picker-panel { background: var(--st-surface); border-color: var(--st-line); }
.ant-picker-panel-container .ant-picker-panel-focused { border-color: var(--st-line); }
.ant-picker-panel-focused { border-color: var(--st-teal-dark); }
.ant-picker-header { color: var(--st-primary-active); border-bottom-color: var(--st-line); }
.ant-picker-header button { color: var(--st-muted); }
.ant-picker-header > button:hover { color: var(--st-primary-active); }
.ant-picker-header-view button:hover { color: var(--st-link); }
.ant-picker-content th { color: var(--st-ink-2); }
.ant-picker-cell { color: var(--st-muted); }
.ant-picker-cell-in-view { color: var(--st-ink); }
.ant-picker-cell-disabled, .ant-picker-cell-disabled .ant-picker-cell-inner { color: var(--st-disabled-text); }
.ant-picker-cell:hover:not(.ant-picker-cell-in-view) .ant-picker-cell-inner,
.ant-picker-cell:hover:not(.ant-picker-cell-selected):not(.ant-picker-cell-range-start):not(.ant-picker-cell-range-end):not(.ant-picker-cell-range-hover-start):not(.ant-picker-cell-range-hover-end) .ant-picker-cell-inner { background: var(--st-row-hover); }
.ant-picker-cell-in-view.ant-picker-cell-today .ant-picker-cell-inner:before { border-color: var(--st-teal-dark); }
.ant-picker-cell-in-view.ant-picker-cell-selected .ant-picker-cell-inner,
.ant-picker-cell-in-view.ant-picker-cell-range-start .ant-picker-cell-inner,
.ant-picker-cell-in-view.ant-picker-cell-range-end .ant-picker-cell-inner { color: #fff; background: var(--st-primary); }
.ant-picker-footer { border-bottom-color: transparent; }
.ant-picker-panel .ant-picker-footer { border-top-color: var(--st-line); }
.ant-picker-today-btn { color: var(--st-link); }
.ant-picker-today-btn:hover { color: var(--st-link-hover); }
.ant-picker-today-btn:active { color: var(--st-primary-active); }
.ant-picker-time-panel-column > li.ant-picker-time-panel-cell-selected .ant-picker-time-panel-cell-inner { background: var(--st-tint); }
.ant-picker-time-panel-column > li.ant-picker-time-panel-cell .ant-picker-time-panel-cell-inner:hover { background: var(--st-row-hover); }


/* ==========================================================================
   9. RADIO (sesso M/F...), CHECKBOX, INTERRUTTORI
   ========================================================================== */
.ant-radio-group, .ant-radio-wrapper, .ant-radio,
.ant-checkbox-group, .ant-checkbox-wrapper, .ant-checkbox { color: var(--st-ink); }

.ant-radio-inner { background-color: var(--st-surface); border-color: var(--st-field-border); }
.ant-radio-wrapper:hover .ant-radio,
.ant-radio:hover .ant-radio-inner,
.ant-radio-input:focus + .ant-radio-inner { border-color: var(--st-teal-dark); }
.ant-radio-input:focus + .ant-radio-inner { box-shadow: var(--st-focus-ring); }
.ant-radio-checked:after { border-color: var(--st-teal-dark); }
.ant-radio-checked .ant-radio-inner { border-color: var(--st-primary); }
.ant-radio-inner:after { background-color: var(--st-primary); }
.ant-radio-disabled .ant-radio-inner { background-color: var(--st-disabled-bg); border-color: var(--st-disabled-border) !important; }
.ant-radio-disabled .ant-radio-inner:after { background-color: var(--st-disabled-text); }
.ant-radio-disabled + span { color: var(--st-disabled-text); }

/* Radio a pulsante (nzButton) */
.ant-radio-button-wrapper { color: var(--st-ink); background: var(--st-surface); border-color: var(--st-field-border); }
.ant-radio-button-wrapper a { color: var(--st-ink); }
.ant-radio-button-wrapper:not(:first-child):before { background-color: var(--st-field-border); }
.ant-radio-button-wrapper:first-child { border-color: var(--st-field-border); border-radius: var(--st-radius) 0 0 var(--st-radius); }
.ant-radio-button-wrapper:last-child { border-radius: 0 var(--st-radius) var(--st-radius) 0; }
.ant-radio-button-wrapper:first-child:last-child { border-radius: var(--st-radius); }
.ant-radio-button-wrapper:hover { color: var(--st-link); }
.ant-radio-button-wrapper:focus-within { box-shadow: var(--st-focus-ring); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { color: var(--st-primary); background: var(--st-teal-light); border-color: var(--st-primary); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):before { background-color: var(--st-primary); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):first-child { border-color: var(--st-primary); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { color: var(--st-primary-hover); border-color: var(--st-primary-hover); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover:before { background-color: var(--st-primary-hover); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active { color: var(--st-primary-active); border-color: var(--st-primary-active); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within { box-shadow: var(--st-focus-ring); }
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled) { color: #fff; background: var(--st-primary); border-color: var(--st-primary); }
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):hover { color: #fff; background: var(--st-primary-hover); border-color: var(--st-primary-hover); }
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active { color: #fff; background: var(--st-primary-active); border-color: var(--st-primary-active); }
.ant-radio-button-wrapper-disabled,
.ant-radio-button-wrapper-disabled:first-child,
.ant-radio-button-wrapper-disabled:hover { color: var(--st-disabled-text); background-color: var(--st-disabled-bg); border-color: var(--st-disabled-border); }

/* Checkbox */
.ant-checkbox-inner { background-color: var(--st-surface); border-color: var(--st-field-border); border-radius: 3px; }
.ant-checkbox-wrapper:hover .ant-checkbox-inner,
.ant-checkbox:hover .ant-checkbox-inner,
.ant-checkbox-input:focus + .ant-checkbox-inner { border-color: var(--st-teal-dark); }
.ant-checkbox-input:focus + .ant-checkbox-inner { box-shadow: var(--st-focus-ring); }
.ant-checkbox-checked:after { border-color: var(--st-teal-dark); }
.ant-checkbox-checked .ant-checkbox-inner { background-color: var(--st-primary); border-color: var(--st-primary); }
.ant-checkbox-indeterminate .ant-checkbox-inner { background-color: var(--st-surface); border-color: var(--st-field-border); }
.ant-checkbox-indeterminate .ant-checkbox-inner:after { background-color: var(--st-primary); }
.ant-checkbox-disabled .ant-checkbox-inner { background-color: var(--st-disabled-bg); border-color: var(--st-disabled-border) !important; }
.ant-checkbox-disabled + span { color: var(--st-disabled-text); }

/* Interruttore */
.ant-switch { background-image: linear-gradient(to right, rgba(20, 41, 58, .45), rgba(20, 41, 58, .45)), linear-gradient(to right, #fff, #fff); }
.ant-switch:focus { box-shadow: var(--st-focus-ring); }
.ant-switch-checked { background: var(--st-primary); }
.ant-switch-checked:focus { box-shadow: var(--st-focus-ring); }


/* ==========================================================================
   10. FORM: etichette, messaggi di aiuto e di errore
   ========================================================================== */
.ant-form, .ant-form-item { color: var(--st-ink); }
.ant-form-item-label > label { color: var(--st-ink-2); }
.ant-form-item-label > label.ant-form-item-required:not(.ant-form-item-required-mark-optional):before { color: var(--st-danger); }
.ant-form-item-label > label .ant-form-item-optional,
.ant-form-item-label > label .ant-form-item-tooltip,
.ant-form-item-explain, .ant-form-item-extra { color: var(--st-muted); }
.ant-form-item-explain-error, .ant-form-item-has-error .ant-form-item-split { color: var(--st-danger); }
.ant-form-item-explain-warning { color: var(--st-warning); }
.ant-form-item-explain-success { color: var(--st-success); }
.ant-form-item-feedback-icon-success { color: var(--st-success); }
.ant-form-item-feedback-icon-error { color: var(--st-danger); }
.ant-form-item-feedback-icon-warning { color: var(--st-warning-icon); }
.ant-form-item-feedback-icon-validating { color: var(--st-teal-dark); }
.ant-form legend { color: var(--st-muted); border-bottom-color: var(--st-line); }


/* ==========================================================================
   11. TABELLE (nz-table): intestazione a tinta teal, righe alternate, hover
   ========================================================================== */
.ant-table { color: var(--st-ink); background: var(--st-surface); }
.ant-table-thead > tr > th {
  color: var(--st-primary-active);
  background: var(--st-tint);
  border-bottom-color: var(--st-tint-line);
}
.ant-table-thead > tr > th:not(:last-child):not(.ant-table-selection-column):not(.ant-table-row-expand-icon-cell):not([colspan]):before { background-color: rgba(18, 58, 82, .18); }
.ant-table-tbody > tr > td { border-bottom-color: var(--st-line); }
/* righe alternate (appena percettibili) */
.ant-table-tbody > tr.ant-table-row:nth-child(even) > td { background: var(--st-surface-alt); }
/* hover e selezione: dopo le righe alternate, per prevalere */
.ant-table-tbody > tr.ant-table-row:hover > td,
.ant-table-tbody > tr > td.ant-table-cell-row-hover { background: var(--st-row-hover); }
.ant-table-tbody > tr.ant-table-row-selected > td { background: var(--st-teal-light); border-color: var(--st-tint-line); }
.ant-table-tbody > tr.ant-table-row-selected:hover > td { background: var(--st-tint); }
.ant-table-tbody > tr.ant-table-placeholder:hover > td { background: var(--st-surface); }
.ant-table-thead th.ant-table-column-has-sorters:hover { background: var(--st-tint-line); }
.ant-table-thead th.ant-table-column-has-sorters:focus-visible { color: var(--st-link); }
.ant-table-thead th.ant-table-column-sort { background: var(--st-tint); }
td.ant-table-column-sort { background: var(--st-surface-alt); }
.nz-table-out-bordered > .ant-table-container { border-color: var(--st-line); }
.ant-table-column-sorter-up.active, .ant-table-column-sorter-down.active { color: var(--st-primary); }
.ant-table-filter-trigger.active { color: var(--st-primary); }

/* Paginazione */
.ant-pagination, .ant-pagination-prev, .ant-pagination-next,
.ant-pagination-jump-prev, .ant-pagination-jump-next { color: var(--st-ink); }
.ant-pagination-item { background-color: var(--st-surface); border-color: var(--st-field-border); font-family: var(--st-font-body); }
.ant-pagination-prev, .ant-pagination-next { font-family: var(--st-font-body); }
.ant-pagination-item a { color: var(--st-ink); }
.ant-pagination-item:hover, .ant-pagination-item:focus-visible { border-color: var(--st-teal-dark); }
.ant-pagination-item:hover a, .ant-pagination-item:focus-visible a { color: var(--st-link); }
.ant-pagination-item-active { background: var(--st-primary); border-color: var(--st-primary); }
.ant-pagination-item-active a { color: #fff; }
.ant-pagination-item-active:hover, .ant-pagination-item-active:focus-visible { border-color: var(--st-primary-hover); background: var(--st-primary-hover); }
.ant-pagination-item-active:hover a, .ant-pagination-item-active:focus-visible a { color: #fff; }
.ant-pagination-prev button, .ant-pagination-next button { color: var(--st-ink); }
.ant-pagination-prev .ant-pagination-item-link, .ant-pagination-next .ant-pagination-item-link { background-color: var(--st-surface); border-color: var(--st-field-border); }
.ant-pagination-prev:hover .ant-pagination-item-link, .ant-pagination-next:hover .ant-pagination-item-link,
.ant-pagination-prev:focus-visible .ant-pagination-item-link, .ant-pagination-next:focus-visible .ant-pagination-item-link { color: var(--st-link); border-color: var(--st-teal-dark); }
.ant-pagination-options-quick-jumper input { color: var(--st-ink); background-color: var(--st-surface); border-color: var(--st-field-border); }

/* Schede (tabs) */
.ant-tabs { color: var(--st-ink); }
.ant-tabs-ink-bar { background: var(--st-coral); }          /* accento corallo: unico uso "pieno" */
.ant-tabs-tab:hover { color: var(--st-link); }
.ant-tabs-tab.ant-tabs-tab-active .ant-tabs-tab-btn { color: var(--st-primary-active); }
.ant-tabs-tab-btn:focus-visible, .ant-tabs-tab-remove:focus-visible { color: var(--st-link-hover); }
.ant-tabs > .ant-tabs-nav:before, .ant-tabs > div > .ant-tabs-nav:before { border-bottom-color: var(--st-line); }


/* ==========================================================================
   12. CARD, COLLAPSE, DESCRIZIONI, ELENCHI
   ========================================================================== */
.ant-card { color: var(--st-ink); background: var(--st-surface); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow-sm); }
.ant-card-bordered { border-color: var(--st-line); }
.ant-card-head { color: var(--st-primary-active); background: var(--st-teal-light); border-bottom-color: var(--st-tint-line); border-radius: var(--st-radius-lg) var(--st-radius-lg) 0 0; }
.ant-card-extra { color: var(--st-ink); }
.ant-card-actions { background: var(--st-surface); border-top-color: var(--st-line); }
.ant-card-actions > li:not(:last-child) { border-right-color: var(--st-line); }
.ant-card-hoverable:hover { box-shadow: var(--st-shadow-pop); }

.ant-collapse { color: var(--st-ink); background-color: var(--st-tint); border-color: var(--st-tint-line); }
.ant-collapse > .ant-collapse-item { border-bottom-color: var(--st-tint-line); }
.ant-collapse > .ant-collapse-item > .ant-collapse-header { color: var(--st-primary-active); }
.ant-collapse-content { color: var(--st-ink); background-color: var(--st-surface); border-top-color: var(--st-tint-line); }

.ant-descriptions-item-label { color: var(--st-ink-2); }
.ant-descriptions-bordered .ant-descriptions-item-label { background-color: var(--st-tint); }
.ant-descriptions-bordered .ant-descriptions-view,
.ant-descriptions-bordered .ant-descriptions-item-label,
.ant-descriptions-bordered .ant-descriptions-item-content { border-color: var(--st-tint-line); }

.ant-list-split .ant-list-item { border-bottom-color: var(--st-line); }
.ant-list-bordered { border-color: var(--st-line); }
.ant-empty-normal { color: var(--st-muted); }


/* ==========================================================================
   13. MESSAGGI E NOTIFICHE (toast), AVVISI, FINESTRE, SUGGERIMENTI
   Gli errori restano ROSSI (significato chiaro), ma in un rosso caldo e
   leggibile; la fascia sinistra e' un'ombra interna, non cambia le misure.
   ========================================================================== */
.ant-message { color: var(--st-ink); }
.ant-message-notice-content { background: var(--st-surface); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow-pop); }
.ant-message-success .anticon { color: var(--st-success); }
.ant-message-error .anticon { color: var(--st-danger); }
.ant-message-warning .anticon { color: var(--st-warning-icon); }
.ant-message-info .anticon, .ant-message-loading .anticon { color: var(--st-teal-dark); }
/* Toast con tinta e fascia colorata in base all'esito (":has" e' un di piu':
   se il browser non lo conosce la regola viene ignorata, nessun danno). */
.ant-message-notice-content:has(.ant-message-error)   { background: var(--st-danger-bg);  box-shadow: inset 5px 0 0 var(--st-danger),  var(--st-shadow-pop); }
.ant-message-notice-content:has(.ant-message-success) { background: var(--st-success-bg); box-shadow: inset 5px 0 0 var(--st-success), var(--st-shadow-pop); }
.ant-message-notice-content:has(.ant-message-warning) { background: var(--st-warning-bg); box-shadow: inset 5px 0 0 var(--st-warning-icon), var(--st-shadow-pop); }
.ant-message-notice-content:has(.ant-message-info)    { background: var(--st-teal-light); box-shadow: inset 5px 0 0 var(--st-teal),    var(--st-shadow-pop); }

.ant-notification { color: var(--st-ink); }
.ant-notification-notice { background: var(--st-surface); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow-pop); }
.ant-notification-notice-message { color: var(--st-primary-active); }
.anticon.ant-notification-notice-icon-success { color: var(--st-success); }
.anticon.ant-notification-notice-icon-info { color: var(--st-teal-dark); }
.anticon.ant-notification-notice-icon-warning { color: var(--st-warning-icon); }
.anticon.ant-notification-notice-icon-error { color: var(--st-danger); }
.ant-notification-notice-close { color: var(--st-muted); }
.ant-notification-notice-close:hover { color: var(--st-ink); }

.ant-alert { color: var(--st-ink); border-radius: var(--st-radius); }
.ant-alert-message { color: var(--st-ink); }
.ant-alert-success { background-color: var(--st-success-bg); border-color: var(--st-success-line); }
.ant-alert-success .ant-alert-icon { color: var(--st-success); }
.ant-alert-info { background-color: var(--st-teal-light); border-color: var(--st-tint-line); }
.ant-alert-info .ant-alert-icon { color: var(--st-teal-dark); }
.ant-alert-warning { background-color: var(--st-warning-bg); border-color: var(--st-warning-line); }
.ant-alert-warning .ant-alert-icon { color: var(--st-warning-icon); }
.ant-alert-error { background-color: var(--st-danger-bg); border-color: var(--st-danger-line); }
.ant-alert-error .ant-alert-icon { color: var(--st-danger); }
.ant-alert-close-icon .anticon-close, .ant-alert-close-text { color: var(--st-muted); }
.ant-alert-close-icon .anticon-close:hover, .ant-alert-close-text:hover { color: var(--st-ink); }

.ant-modal { color: var(--st-ink); }
.ant-modal-content { background-color: var(--st-surface); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow-pop); }
.ant-modal-header { color: var(--st-primary-active); background: var(--st-teal-light); border-bottom-color: var(--st-tint-line); border-radius: var(--st-radius-lg) var(--st-radius-lg) 0 0; }
.ant-modal-footer { border-top-color: var(--st-line); }
.ant-modal-close { color: var(--st-muted); }
.ant-modal-close:focus, .ant-modal-close:hover { color: var(--st-ink); }
.ant-modal-confirm-body .ant-modal-confirm-content { color: var(--st-ink); }
.ant-modal-confirm-error .ant-modal-confirm-body > .anticon { color: var(--st-danger); }
.ant-modal-confirm-warning .ant-modal-confirm-body > .anticon,
.ant-modal-confirm-confirm .ant-modal-confirm-body > .anticon { color: var(--st-warning-icon); }
.ant-modal-confirm-info .ant-modal-confirm-body > .anticon { color: var(--st-teal-dark); }
.ant-modal-confirm-success .ant-modal-confirm-body > .anticon { color: var(--st-success); }

.ant-popover { color: var(--st-ink); }
.ant-popover-inner, .ant-popover-inner-content, .ant-popover-message { color: var(--st-ink); }
.ant-popover-inner { background-color: var(--st-surface); border-radius: var(--st-radius-lg); box-shadow: var(--st-shadow-pop); }
.ant-popover-title { color: var(--st-primary-active); border-bottom-color: var(--st-line); }
.ant-popover-message > .anticon { color: var(--st-warning-icon); }

.ant-tooltip-inner { color: #fff; background-color: var(--st-primary-active); }
.ant-tooltip-arrow-content { --antd-arrow-background-color: var(--st-primary-active); }

.ant-dropdown-menu { background-color: var(--st-surface); border-radius: var(--st-radius); box-shadow: var(--st-shadow-pop); }
.ant-dropdown-menu-item-selected, .ant-dropdown-menu-submenu-title-selected { color: var(--st-primary-active); background-color: var(--st-tint); }
.ant-dropdown-menu-item.ant-dropdown-menu-item-danger { color: var(--st-danger); }
.ant-dropdown-menu-item.ant-dropdown-menu-item-danger:hover { color: #fff; background-color: var(--st-danger); }

.ant-tag { color: var(--st-ink); background: var(--st-teal-light); border-color: var(--st-tint-line); }
.ant-tag-success { color: var(--st-success); background: var(--st-success-bg); border-color: var(--st-success-line); }
.ant-tag-processing { color: var(--st-primary); background: var(--st-teal-light); border-color: var(--st-tint-line); }
.ant-tag-error { color: var(--st-danger); background: var(--st-danger-bg); border-color: var(--st-danger-line); }
.ant-tag-warning { color: var(--st-warning); background: var(--st-warning-bg); border-color: var(--st-warning-line); }

.ant-spin { color: var(--st-teal-dark); }
.ant-spin-dot-item { background-color: var(--st-teal-dark); }
.ant-spin-tip { color: var(--st-muted); }


/* ==========================================================================
   14. STRUTTURA APP (layout, menu), solo se l'app li usa
   ========================================================================== */
.ant-layout { background: var(--st-bg); }
.ant-layout-header { color: var(--st-ink); background: var(--st-primary-active); }
.ant-layout-footer { color: var(--st-ink); background: var(--st-bg); }
.ant-layout-sider { background: var(--st-primary-active); }
.ant-layout-sider-trigger { background: var(--st-primary); }
.ant-layout-sider-zero-width-trigger { background: var(--st-primary-active); }
.ant-layout-sider-light { background: var(--st-surface); }

.ant-menu { color: var(--st-ink); background: var(--st-surface); }
.ant-menu-item a { color: var(--st-ink); }
.ant-menu-item a:hover { color: var(--st-link); }
.ant-menu-item-selected, .ant-menu-item-selected a, .ant-menu-item-selected a:hover { color: var(--st-primary); }
.ant-menu:not(.ant-menu-horizontal) .ant-menu-item-selected { background-color: var(--st-tint); }
.ant-menu-item:active, .ant-menu-submenu-title:active { background: var(--st-tint); }
.ant-menu-light .ant-menu-item:hover, .ant-menu-light .ant-menu-item-active,
.ant-menu-light .ant-menu:not(.ant-menu-inline) .ant-menu-submenu-open,
.ant-menu-light .ant-menu-submenu-active, .ant-menu-light .ant-menu-submenu-title:hover { color: var(--st-link); }
.ant-menu-submenu-selected { color: var(--st-primary); }
.ant-menu-vertical .ant-menu-item:after, .ant-menu-vertical-left .ant-menu-item:after,
.ant-menu-vertical-right .ant-menu-item:after, .ant-menu-inline .ant-menu-item:after { border-right-color: var(--st-coral); }
.ant-menu-horizontal { border-bottom-color: var(--st-line); }
.ant-menu-horizontal > .ant-menu-item-selected a { color: var(--st-primary); }
.ant-menu-item-divider { border-color: var(--st-line); }
.ant-menu.ant-menu-dark, .ant-menu-dark .ant-menu-sub, .ant-menu.ant-menu-dark .ant-menu-sub { color: rgba(255, 255, 255, .85); background: var(--st-primary-active); }
.ant-menu-dark .ant-menu-inline.ant-menu-sub { background: #0B2A3D; }
.ant-menu-dark.ant-menu-dark:not(.ant-menu-horizontal) .ant-menu-item-selected,
.ant-menu.ant-menu-dark .ant-menu-item-selected,
.ant-menu-submenu-popup.ant-menu-dark .ant-menu-item-selected,
.ant-menu-dark.ant-menu-horizontal > .ant-menu-item:hover { background-color: var(--st-teal-dark); }

/* ==========================================================================
   15. COMPLETAMENTI: stati secondari (disabilitato, attivo, hover) dei
   componenti sopra, cosi' che non resti nessun azzurro Ant "orfano".
   ========================================================================== */
.ant-btn-dashed:active, .ant-btn-ghost:active { color: var(--st-primary-active); border-color: var(--st-primary-active); }
.ant-btn-dashed[disabled], .ant-btn-dashed[disabled]:hover, .ant-btn-dashed[disabled]:focus, .ant-btn-dashed[disabled]:active,
.ant-btn-ghost[disabled], .ant-btn-ghost[disabled]:hover, .ant-btn-ghost[disabled]:focus, .ant-btn-ghost[disabled]:active,
.ant-btn-dangerous[disabled], .ant-btn-dangerous[disabled]:hover, .ant-btn-dangerous[disabled]:focus, .ant-btn-dangerous[disabled]:active,
.ant-btn-danger[disabled], .ant-btn-danger[disabled]:hover, .ant-btn-danger[disabled]:focus, .ant-btn-danger[disabled]:active,
.ant-btn-dangerous.ant-btn-primary[disabled], .ant-btn-dangerous.ant-btn-primary[disabled]:hover, .ant-btn-dangerous.ant-btn-primary[disabled]:focus, .ant-btn-dangerous.ant-btn-primary[disabled]:active {
  color: var(--st-disabled-text);
  border-color: var(--st-disabled-border);
  background: var(--st-disabled-bg);
  box-shadow: none;
}

.ant-input-number[disabled] { color: var(--st-disabled-text); background-color: var(--st-disabled-bg); border-color: var(--st-disabled-border); }
.ant-input-number[disabled]:hover { border-color: var(--st-disabled-border); }
.ant-input-number-handler-down { border-top-color: var(--st-field-border); }
.ant-input-password-icon.anticon { color: var(--st-muted); }
.ant-input-password-icon.anticon:hover { color: var(--st-ink); }
.ant-input-clear-icon:active { color: var(--st-ink); }
.ant-input-search .ant-input:hover + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary),
.ant-input-search .ant-input:focus + .ant-input-group-addon .ant-input-search-button:not(.ant-btn-primary) { border-left-color: var(--st-teal-dark); }

.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-focused .ant-select-selector,
.ant-select-status-error.ant-select:not(.ant-select-disabled):not(.ant-select-customize-input).ant-select-open .ant-select-selector { box-shadow: 0 0 0 3px rgba(179, 38, 30, .25); }
.ant-select-multiple.ant-select-disabled.ant-select:not(.ant-select-customize-input) .ant-select-selector,
.ant-select-disabled.ant-select-multiple .ant-select-selector { background: var(--st-disabled-bg); }
.ant-select-multiple .ant-select-selection-item-remove { color: var(--st-muted); }

.ant-picker-focused .ant-picker-separator { color: var(--st-ink-2); }
.ant-picker-today-btn.ant-picker-today-btn-disabled { color: var(--st-disabled-text); }

.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-link-icon,
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-link-icon { color: var(--st-teal-dark); }
.ant-pagination-jump-prev .ant-pagination-item-container .ant-pagination-item-ellipsis,
.ant-pagination-jump-next .ant-pagination-item-container .ant-pagination-item-ellipsis { color: var(--st-muted); }
.ant-pagination-prev:hover button, .ant-pagination-next:hover button { border-color: var(--st-teal-dark); }
.ant-pagination-options-quick-jumper input:hover { border-color: var(--st-teal); }
.ant-pagination-options-quick-jumper input:focus, .ant-pagination-options-quick-jumper input-focused { border-color: var(--st-teal-dark); box-shadow: var(--st-focus-ring); }
.ant-pagination-options-quick-jumper input::placeholder { color: var(--st-muted); }
.ant-pagination-simple .ant-pagination-simple-pager input { background-color: var(--st-surface); border-color: var(--st-field-border); }
.ant-pagination-simple .ant-pagination-simple-pager input:hover { border-color: var(--st-teal); }
.ant-pagination-simple .ant-pagination-simple-pager input:focus { border-color: var(--st-teal-dark); box-shadow: var(--st-focus-ring); }
.ant-pagination-disabled .ant-pagination-item-link,
.ant-pagination-disabled:hover .ant-pagination-item-link,
.ant-pagination-disabled:focus-visible .ant-pagination-item-link,
.ant-pagination.ant-pagination-disabled .ant-pagination-item-link,
.ant-pagination.ant-pagination-disabled .ant-pagination-item { color: var(--st-disabled-text); background: var(--st-disabled-bg); border-color: var(--st-disabled-border); }
.ant-pagination.ant-pagination-disabled .ant-pagination-item a,
.ant-pagination.ant-pagination-disabled .ant-pagination-item-active a { color: var(--st-disabled-text); }

.ant-dropdown { color: var(--st-ink); }
.ant-dropdown-menu-item, .ant-dropdown-menu-submenu-title { color: var(--st-ink); }
.ant-dropdown-menu-item:hover, .ant-dropdown-menu-submenu-title:hover,
.ant-dropdown-menu-item.ant-dropdown-menu-item-active,
.ant-dropdown-menu-item.ant-dropdown-menu-submenu-title-active,
.ant-dropdown-menu-submenu-title.ant-dropdown-menu-item-active,
.ant-dropdown-menu-submenu-title.ant-dropdown-menu-submenu-title-active { background-color: var(--st-row-hover); }
.ant-dropdown-menu-item-disabled, .ant-dropdown-menu-item-disabled:hover,
.ant-dropdown-menu-submenu-title-disabled, .ant-dropdown-menu-submenu-title-disabled:hover { color: var(--st-disabled-text); }
.ant-dropdown-menu-item-group-title { color: var(--st-muted); }
.ant-dropdown-menu-item-divider, .ant-dropdown-menu-submenu-title-divider { background-color: var(--st-line); }
.ant-dropdown-menu-submenu-selected .ant-dropdown-menu-submenu-title { color: var(--st-primary-active); }
.ant-dropdown-menu-item .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon,
.ant-dropdown-menu-submenu-title .ant-dropdown-menu-submenu-expand-icon .ant-dropdown-menu-submenu-arrow-icon { color: var(--st-muted); }

.ant-table-column-sorter, .ant-table-filter-trigger, .ant-table-selection-extra .anticon { color: var(--st-muted); }
.ant-table-filter-trigger:hover { color: var(--st-ink-2); }
.ant-table-row-expand-icon { color: var(--st-link); border-color: var(--st-line); }
.ant-table-row-expand-icon:hover, .ant-table-row-expand-icon:focus { color: var(--st-link-hover); }
.ant-table-row-expand-icon:active { color: var(--st-primary-active); }
.ant-table-footer { color: var(--st-ink); background: var(--st-tint); }
.ant-table-filter-dropdown { color: var(--st-ink); }
.ant-table-filter-dropdown-btns { border-top-color: var(--st-line); }
.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-left:hover,
.ant-table-thead th.ant-table-column-has-sorters.ant-table-cell-fix-right:hover { background: var(--st-tint-line); }

.ant-tabs-tab-btn:active, .ant-tabs-tab-btn:focus, .ant-tabs-tab-remove:active, .ant-tabs-tab-remove:focus { color: var(--st-primary-active); }
.ant-tabs-tab-remove { color: var(--st-muted); }
.ant-tabs-tab-remove:hover { color: var(--st-ink); }
.ant-tabs-tab.ant-tabs-tab-disabled, .ant-tabs-tab-disabled a { color: var(--st-disabled-text); }
.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab, .ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab { background: var(--st-tint); border-color: var(--st-line); }
.ant-tabs-card > .ant-tabs-nav .ant-tabs-tab-active, .ant-tabs-card > div > .ant-tabs-nav .ant-tabs-tab-active { color: var(--st-primary-active); }
.ant-tabs-dropdown, .ant-tabs-dropdown-menu-item { color: var(--st-ink); }
.ant-tabs-dropdown-menu-item:hover { background: var(--st-row-hover); }

.ant-tag a, .ant-tag a:hover, .ant-tag-close-icon:hover { color: var(--st-ink); }
.ant-tag-close-icon { color: var(--st-muted); }
.ant-tag-checkable-checked { background-color: var(--st-primary); }
.ant-tag-checkable:not(.ant-tag-checkable-checked):hover { color: var(--st-link); }
.ant-tooltip { color: var(--st-ink); }
.ant-card-actions > li, .ant-card-actions > li > span a:not(.ant-btn), .ant-card-actions > li > span > .anticon { color: var(--st-muted); }
.ant-card-actions > li > span:hover, .ant-card-actions > li > span a:not(.ant-btn):hover, .ant-card-actions > li > span > .anticon:hover { color: var(--st-link); }
.ant-card-meta-title, .ant-list, .ant-list-item, .ant-list-item-meta-content, .ant-list-item-meta-title, .ant-list-item-meta-title > a { color: var(--st-ink); }
.ant-card-meta-description, .ant-list-item-meta-description, .ant-list-item-action > li, .ant-list-empty { color: var(--st-muted); }
.ant-list-item-meta-title > a:hover { color: var(--st-link); }
.ant-list-item-action-split { background-color: var(--st-line); }
.ant-switch-checked .ant-switch-loading-icon { color: var(--st-primary); }
.ant-btn-dangerous.ant-btn-link:hover, .ant-btn-dangerous.ant-btn-link:focus,
.ant-btn-dangerous.ant-btn-text:hover, .ant-btn-dangerous.ant-btn-text:focus { color: #8C1D17; background: var(--st-danger-bg); border-color: transparent; }
.ant-btn-dangerous.ant-btn-link:active, .ant-btn-dangerous.ant-btn-text:active { color: #8C1D17; border-color: transparent; }
.ant-btn-dangerous.ant-btn-link[disabled], .ant-btn-dangerous.ant-btn-link[disabled]:hover, .ant-btn-dangerous.ant-btn-link[disabled]:focus, .ant-btn-dangerous.ant-btn-link[disabled]:active,
.ant-btn-dangerous.ant-btn-text[disabled], .ant-btn-dangerous.ant-btn-text[disabled]:hover, .ant-btn-dangerous.ant-btn-text[disabled]:focus, .ant-btn-dangerous.ant-btn-text[disabled]:active { color: var(--st-disabled-text); background: transparent; border-color: transparent; }
a.ant-typography { color: var(--st-link); }
a.ant-typography:hover, a.ant-typography:focus { color: var(--st-link-hover); }
a.ant-typography:active { color: var(--st-primary-active); }
a.ant-typography[disabled], a.ant-typography.ant-typography-disabled { color: var(--st-disabled-text); }
.ant-radio-button-wrapper-checked:not([class*=" ant-radio-button-wrapper-disabled"]).ant-radio-button-wrapper:first-child { border-right-color: var(--st-primary-hover); }
.ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):active:before { background-color: var(--st-primary-active); }
.ant-radio-button-wrapper-disabled.ant-radio-button-wrapper-checked { color: var(--st-disabled-text); background-color: var(--st-disabled-bg); border-color: var(--st-disabled-border); }
.ant-radio-group-solid .ant-radio-button-wrapper-checked:not(.ant-radio-button-wrapper-disabled):focus-within { box-shadow: var(--st-focus-ring); }
.ant-input-number-status-error .ant-input-number-prefix { color: var(--st-danger); }

/* ==========================================================================
   16. COMPONENTI PROPRI DELL'APP (classi NON .ant-*), novita' del tema 1.1
   --------------------------------------------------------------------------
   Le regole dell'app sono scritte da Angular con attributo [_ngcontent-xxx]
   (specificita' alta) e inserite nella pagina DOPO questo file. Per
   prevalere senza !important si RADDOPPIA la classe (ogni ripetizione di una
   classe aggiunge specificita'). Sono ammesse regole "!important" soltanto
   sul COLORE delle icone, perche' l'app lo scrive in un attributo style
   inline (style="color:#e4e4e4"). Solo proprieta' estetiche.
   ========================================================================== */

/* 16.1 Pannelli arrotondati delle sezioni: bianchi e con bordo che si stacca
   dallo sfondo grigio-azzurro (prima: bordo #e4e4e4 su bianco).              */
.form-block.form-block.form-block {
  background-color: var(--st-surface);
  border-color: var(--st-panel-border);
  box-shadow: var(--st-shadow-sm);
}

/* 16.2 Riquadri Certificati: icona a colore pieno su riquadro bianco con
   bordo teal, etichetta scura leggibile, hover con fondo e ombra leggeri.
   Prefisso P = .form-block + .certificati ripetuto 5 volte: specificita'
   (0,6,0) + gli elementi. Le regole dell'app valgono (0,4,2) per "li" e
   (0,6,3) per l'etichetta ("span.label"): con ul li span.label il nostro
   selettore vale (0,7,3), quindi prevale anche se Angular lo inserisce dopo.  */
.form-block.certificati.certificati.certificati.certificati.certificati ul li {
  background-color: var(--st-surface);
  border-color: var(--st-teal);
  box-shadow: var(--st-shadow-sm);
}
.form-block.certificati.certificati.certificati.certificati.certificati ul li span.label {
  color: var(--st-ink-2);
}
/* icona: colore in attributo style inline -> serve !important (solo colore) */
.form-block.certificati ul li span.anticon              { color: var(--st-cert-1) !important; }
.form-block.certificati ul li:nth-child(1) span.anticon { color: var(--st-cert-1) !important; }
.form-block.certificati ul li:nth-child(2) span.anticon { color: var(--st-cert-2) !important; }
.form-block.certificati ul li:nth-child(3) span.anticon { color: var(--st-cert-3) !important; }
.form-block.certificati ul li:nth-child(4) span.anticon { color: var(--st-cert-4) !important; }
.form-block.certificati ul li:nth-child(5) span.anticon { color: var(--st-cert-5) !important; }
/* hover / tastiera: fondo teal chiaro, bordo petrolio, ombra, icona petrolio scuro */
.form-block.certificati.certificati.certificati.certificati.certificati ul li:hover,
.form-block.certificati.certificati.certificati.certificati.certificati ul li:focus-within {
  background-color: var(--st-teal-light);
  border-color: var(--st-primary);
  box-shadow: var(--st-shadow-pop);
}
.form-block.certificati.certificati.certificati.certificati.certificati ul li:hover span.label,
.form-block.certificati.certificati.certificati.certificati.certificati ul li:focus-within span.label {
  color: var(--st-primary-active);
}
.form-block.certificati ul li:hover span.anticon,
.form-block.certificati ul li:focus-within span.anticon { color: var(--st-primary-active) !important; }

/* 16.3 Input numerico: l'app scrive "nz-input-number{border:solid 1px}" e il
   bordo prenderebbe il colore del testo; qui lo riportiamo al bordo campi.    */
nz-input-number.ant-input-number.ant-input-number { border-color: var(--st-field-border); }
nz-input-number.ant-input-number.ant-input-number:hover { border-color: var(--st-teal); }
nz-input-number.ant-input-number.ant-input-number.ant-input-number-focused { border-color: var(--st-teal-dark); }

/* ==========================================================================
   17. Correzioni dopo la prova su Hostinger (tema 1.3)
   ========================================================================== */

/* 17.1 Sfondo pagina. L'app avvolge il contenuto in .inner-content, che nel suo
   CSS (main.js) ha "background:#fff" e quindi copriva lo sfondo di html/body.
   Triplicando la classe si batte la regola dell'app ([_ngcontent] = 0,2,0).     */
.inner-content.inner-content.inner-content { background-color: var(--st-bg); }
/* logo della barra laterale: nell'app e' #001529 (blu notte), qui lo si allinea
   alla barra laterale del tema; e il colore al passaggio sull'icona del menu   */
.sidebar-logo.sidebar-logo.sidebar-logo { background-color: var(--st-primary-active); }
.trigger.trigger:hover { color: var(--st-primary); }

/* 17.2 Campi di testo libero (Malattie, Note, Patologie, Reazione...). Nell'app
   sono <textarea cols="108">: la loro larghezza dipende dalla larghezza media dei
   caratteri del FONT. Con il font del tema uscivano dal pannello; con il font di
   sistema hanno la stessa misura di prima. Solo font-family, nessuna misura.   */
textarea.ant-input.ant-input,
textarea[nz-input].ant-input { font-family: var(--st-font-system); }

/* ==========================================================================
   Fine - tema 1.3
   ========================================================================== */
