:root {
  /* Colori di base */
  --bs-blue: #0f4a7d;
  --bs-green: #7ba941;

  /* Altri colori di base (abbinati e/o leggermente adattati) */
  --bs-indigo: #4b0082;
  --bs-purple: #6f42c1;
  --bs-pink: #e83e8c;
  --bs-red: #dc3545;
  --bs-orange: #fd7e14;
  --bs-yellow: #ffc107;
  --bs-teal: #20c997;
  --bs-cyan: #17a2b8;

  /* COLORI SEMANTICI PERSONALIZZATI */
  --bs-primary: var(--bs-blue);
  --bs-secondary: var(--bs-green);
  --bs-success: var(--bs-green);
  --bs-info: var(--bs-cyan);
  --bs-warning: var(--bs-yellow);
  --bs-danger: var(--bs-red);
  --bs-light: #f8f9fa;
  --bs-dark: #212529;

  /* Variabili per tonalità di hover/active, una tonalità più scura dei rispettivi colori base */
  --bs-primary-darken: #0c3b64;
  --bs-secondary-darken: #678b37;
  /*--bs-success-darken: #218838;*/
  --bs-success-darken: #678b37;
  --bs-info-darken: #138496;
  --bs-warning-darken: #e0a800;
  --bs-danger-darken: #bd2130;
  --bs-light-darken: #e2e6ea;
  --bs-dark-darken: #23272b;

  /* Colori di testo e sfondo principali */
  --bs-white: #fff;
  --bs-black: #000;
  --bs-body-color: var(--bs-dark);
  --bs-body-bg: #ffffff;

  /* Colori per i livelli di grigio */
  --bs-gray-100: #f8f9fa;
  --bs-gray-200: #e9ecef;
  --bs-gray-300: #dee2e6;
  --bs-gray-400: #ced4da;
  --bs-gray-500: #adb5bd;
  --bs-gray-600: #6c757d;
  --bs-gray-700: #495057;
  --bs-gray-800: #343a40;
  --bs-gray-900: #212529;

  /* Variabili RGB */
  --bs-primary-rgb: 15, 74, 125;
  --bs-secondary-rgb: 123, 169, 65;
  /*--bs-success-rgb: 40, 167, 69;*/
  --bs-success-rgb: 123, 169, 65;
  --bs-info-rgb: 23, 162, 184;
  --bs-warning-rgb: 255, 193, 7;
  --bs-danger-rgb: 220, 53, 69;
  --bs-light-rgb: 248, 249, 250;
  --bs-dark-rgb: 33, 37, 41;
  --bs-black-rgb: 0, 0, 0;
  --bs-white-rgb: 255, 255, 255;

  /* RGB per le tonalità di hover/active */
  --bs-primary-darken-rgb: 12, 59, 100;
  --bs-secondary-darken-rgb: 103, 139, 55;
  /*--bs-success-darken-rgb: 33, 136, 56;*/
  --bs-success-darken-rgb: 103, 139, 55;
  --bs-info-darken-rgb: 19, 132, 150;
  --bs-warning-darken-rgb: 224, 168, 0;
  --bs-danger-darken-rgb: 189, 33, 48;
  --bs-light-darken-rgb: 226, 230, 234;
  --bs-dark-darken-rgb: 35, 39, 43;

  /* Colori e stati dei link */
  --bs-link-color: var(--bs-primary);
  --bs-link-hover-color: var(--bs-primary-darken);
  --bs-link-color-rgb: var(--bs-primary-rgb);
  --bs-link-hover-color-rgb: var(--bs-primary-darken-rgb);

  /* Border radius generale */
  --bs-border-radius: 0.375rem;
  --bs-border-radius-sm: 0.25rem;
  --bs-border-radius-lg: 0.5rem;
  --bs-border-radius-xl: 1rem;
  --bs-border-radius-xxl: 2rem;
  --bs-border-radius-pill: 50rem;

  /* Box shadow generale */
  --bs-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
  --bs-box-shadow-sm: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);
  --bs-box-shadow-lg: 0 1rem 3rem rgba(0, 0, 0, 0.175);
  --bs-box-shadow-inset: inset 0 1px 2px rgba(0, 0, 0, 0.075);
}

/* Generale per testo e sfondo */
body {
  color: var(--bs-body-color);
  background-color: var(--bs-body-bg);
}

/* Tutti i link */
a {
  color: var(--bs-link-color);
}

a:hover {
  color: var(--bs-link-hover-color);
}

/* --- Bottoni --- */
/* Sovrascrittura dei bottoni colorati principali */
.btn-primary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-primary-darken);
  --bs-btn-hover-border-color: var(--bs-primary-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-primary-darken);
  --bs-btn-active-border-color: var(--bs-primary-darken);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-primary);
  --bs-btn-disabled-border-color: var(--bs-primary);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}

.btn-secondary {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-secondary);
  --bs-btn-border-color: var(--bs-secondary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-secondary-darken);
  --bs-btn-hover-border-color: var(--bs-secondary-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-secondary-darken);
  --bs-btn-active-border-color: var(--bs-secondary-darken);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-secondary);
  --bs-btn-disabled-border-color: var(--bs-secondary);
  --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
}

.btn-success {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-success);
  --bs-btn-border-color: var(--bs-success);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-success-darken);
  --bs-btn-hover-border-color: var(--bs-success-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-success-darken);
  --bs-btn-active-border-color: var(--bs-success-darken);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-success);
  --bs-btn-disabled-border-color: var(--bs-success);
  --bs-btn-focus-shadow-rgb: var(--bs-success-rgb);
}

.btn-info {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-info);
  --bs-btn-border-color: var(--bs-info);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-info-darken);
  --bs-btn-hover-border-color: var(--bs-info-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-info-darken);
  --bs-btn-active-border-color: var(--bs-info-darken);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-info);
  --bs-btn-disabled-border-color: var(--bs-info);
  --bs-btn-focus-shadow-rgb: var(--bs-info-rgb);
}

.btn-warning {
  --bs-btn-color: var(--bs-dark);
  --bs-btn-bg: var(--bs-warning);
  --bs-btn-border-color: var(--bs-warning);
  --bs-btn-hover-color: var(--bs-dark);
  --bs-btn-hover-bg: var(--bs-warning-darken);
  --bs-btn-hover-border-color: var(--bs-warning-darken);
  --bs-btn-active-color: var(--bs-dark);
  --bs-btn-active-bg: var(--bs-warning-darken);
  --bs-btn-active-border-color: var(--bs-warning-darken);
  --bs-btn-disabled-color: var(--bs-dark);
  --bs-btn-disabled-bg: var(--bs-warning);
  --bs-btn-disabled-border-color: var(--bs-warning);
  --bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
}

.btn-danger {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-danger-darken);
  --bs-btn-hover-border-color: var(--bs-danger-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-danger-darken);
  --bs-btn-active-border-color: var(--bs-danger-darken);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-danger);
  --bs-btn-disabled-border-color: var(--bs-danger);
  --bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
}

.btn-light {
  --bs-btn-color: var(--bs-dark);
  --bs-btn-bg: var(--bs-light);
  --bs-btn-border-color: var(--bs-light);
  --bs-btn-hover-color: var(--bs-dark);
  --bs-btn-hover-bg: var(--bs-light-darken);
  --bs-btn-hover-border-color: var(--bs-light-darken);
  --bs-btn-active-color: var(--bs-dark);
  --bs-btn-active-bg: var(--bs-light-darken);
  --bs-btn-active-border-color: var(--bs-light-darken);
  --bs-btn-disabled-color: var(--bs-dark);
  --bs-btn-disabled-bg: var(--bs-light);
  --bs-btn-disabled-border-color: var(--bs-light);
  --bs-btn-focus-shadow-rgb: var(--bs-light-rgb);
}

.btn-dark {
  --bs-btn-color: var(--bs-white);
  --bs-btn-bg: var(--bs-dark);
  --bs-btn-border-color: var(--bs-dark);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-dark-darken);
  --bs-btn-hover-border-color: var(--bs-dark-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-dark-darken);
  --bs-btn-active-border-color: var(--bs-dark-darken);
  --bs-btn-disabled-color: var(--bs-white);
  --bs-btn-disabled-bg: var(--bs-dark);
  --bs-btn-disabled-border-color: var(--bs-dark);
  --bs-btn-focus-shadow-rgb: var(--bs-dark-rgb);
}

/* Sovrascrittura dei bottoni outline */
.btn-outline-primary {
  --bs-btn-color: var(--bs-primary);
  --bs-btn-border-color: var(--bs-primary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-primary-darken);
  --bs-btn-hover-border-color: var(--bs-primary-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-primary-darken);
  --bs-btn-active-border-color: var(--bs-primary-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}

.btn-outline-secondary {
  --bs-btn-color: var(--bs-secondary);
  --bs-btn-border-color: var(--bs-secondary);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-secondary-darken);
  --bs-btn-hover-border-color: var(--bs-secondary-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-secondary-darken);
  --bs-btn-active-border-color: var(--bs-secondary-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-secondary-rgb);
}

.btn-outline-success {
  --bs-btn-color: var(--bs-success);
  --bs-btn-border-color: var(--bs-success);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-success-darken);
  --bs-btn-hover-border-color: var(--bs-success-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-success-darken);
  --bs-btn-active-border-color: var(--bs-success-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-success-rgb);
}

.btn-outline-info {
  --bs-btn-color: var(--bs-info);
  --bs-btn-border-color: var(--bs-info);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-info-darken);
  --bs-btn-hover-border-color: var(--bs-info-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-info-darken);
  --bs-btn-active-border-color: var(--bs-info-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-info-rgb);
}

.btn-outline-warning {
  --bs-btn-color: var(--bs-warning);
  --bs-btn-border-color: var(--bs-warning);
  --bs-btn-hover-color: var(--bs-dark);
  --bs-btn-hover-bg: var(--bs-warning-darken);
  --bs-btn-hover-border-color: var(--bs-warning-darken);
  --bs-btn-active-color: var(--bs-dark);
  --bs-btn-active-bg: var(--bs-warning-darken);
  --bs-btn-active-border-color: var(--bs-warning-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-warning-rgb);
}

.btn-outline-danger {
  --bs-btn-color: var(--bs-danger);
  --bs-btn-border-color: var(--bs-danger);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-danger-darken);
  --bs-btn-hover-border-color: var(--bs-danger-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-danger-darken);
  --bs-btn-active-border-color: var(--bs-danger-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-danger-rgb);
}

.btn-outline-light {
  --bs-btn-color: var(--bs-light);
  --bs-btn-border-color: var(--bs-light);
  --bs-btn-hover-color: var(--bs-dark);
  --bs-btn-hover-bg: var(--bs-light-darken);
  --bs-btn-hover-border-color: var(--bs-light-darken);
  --bs-btn-active-color: var(--bs-dark);
  --bs-btn-active-bg: var(--bs-light-darken);
  --bs-btn-active-border-color: var(--bs-light-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-light-rgb);
}

.btn-outline-dark {
  --bs-btn-color: var(--bs-dark);
  --bs-btn-border-color: var(--bs-dark);
  --bs-btn-hover-color: var(--bs-white);
  --bs-btn-hover-bg: var(--bs-dark-darken);
  --bs-btn-hover-border-color: var(--bs-dark-darken);
  --bs-btn-active-color: var(--bs-white);
  --bs-btn-active-bg: var(--bs-dark-darken);
  --bs-btn-active-border-color: var(--bs-dark-darken);
  --bs-btn-focus-shadow-rgb: var(--bs-dark-rgb);
}

/* --- Navbar --- */
/* Navbar con classi di sfondo */
.navbar.bg-primary {
  background-color: var(--bs-primary) !important;
  --bs-navbar-color: var(--bs-white);
  --bs-navbar-brand-color: var(--bs-white);
  --bs-navbar-brand-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-nav-link-color: var(--bs-white);
  --bs-navbar-nav-link-hover-color: rgba(255, 255, 255, 0.75); /* O un var(--bs-gray-300) se vuoi un grigio */
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-secondary {
  background-color: var(--bs-secondary) !important;
  --bs-navbar-color: var(--bs-white);
  --bs-navbar-brand-color: var(--bs-white);
  --bs-navbar-brand-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-nav-link-color: var(--bs-white);
  --bs-navbar-nav-link-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-success {
  background-color: var(--bs-success) !important;
  --bs-navbar-color: var(--bs-white);
  --bs-navbar-brand-color: var(--bs-white);
  --bs-navbar-brand-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-nav-link-color: var(--bs-white);
  --bs-navbar-nav-link-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-info {
  background-color: var(--bs-info) !important;
  --bs-navbar-color: var(--bs-dark);
  --bs-navbar-brand-color: var(--bs-dark);
  --bs-navbar-brand-hover-color: rgba(0, 0, 0, 0.75);
  --bs-navbar-nav-link-color: var(--bs-dark);
  --bs-navbar-nav-link-hover-color: rgba(0, 0, 0, 0.75);
  --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-warning {
  background-color: var(--bs-warning) !important;
  --bs-navbar-color: var(--bs-dark);
  --bs-navbar-brand-color: var(--bs-dark);
  --bs-navbar-brand-hover-color: rgba(0, 0, 0, 0.75);
  --bs-navbar-nav-link-color: var(--bs-dark);
  --bs-navbar-nav-link-hover-color: rgba(0, 0, 0, 0.75);
  --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-danger {
  background-color: var(--bs-danger) !important;
  --bs-navbar-color: var(--bs-white);
  --bs-navbar-brand-color: var(--bs-white);
  --bs-navbar-brand-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-nav-link-color: var(--bs-white);
  --bs-navbar-nav-link-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-light {
  background-color: var(--bs-light) !important;
  --bs-navbar-color: var(--bs-dark);
  --bs-navbar-brand-color: var(--bs-dark);
  --bs-navbar-brand-hover-color: rgba(0, 0, 0, 0.75);
  --bs-navbar-nav-link-color: var(--bs-dark);
  --bs-navbar-nav-link-hover-color: rgba(0, 0, 0, 0.75);
  --bs-navbar-toggler-border-color: rgba(0, 0, 0, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}
.navbar.bg-dark {
  background-color: var(--bs-dark) !important;
  --bs-navbar-color: var(--bs-white);
  --bs-navbar-brand-color: var(--bs-white);
  --bs-navbar-brand-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-nav-link-color: var(--bs-white);
  --bs-navbar-nav-link-hover-color: rgba(255, 255, 255, 0.75);
  --bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
  --bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
}

/* --- Form Controlli (Input, Select, Textarea) --- */
.form-control {
  background-color: var(--bs-white);
  border: 1px solid var(--bs-gray-400);
  color: var(--bs-body-color);
  border-radius: var(--bs-border-radius);
  transition: border-color .15s ease-in-out, box-shadow .15s ease-in-out;
}

.form-control:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), .25);
  outline: 0;
}

.form-control::placeholder {
  color: var(--bs-gray-600);
  opacity: 1;
}

/* Validazione dei form (testo e bordo) */
.form-text {
  color: var(--bs-body-color);
}
.form-control.is-valid {
  border-color: var(--bs-success);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%2328a745' d='M2.3 6.73L.6 4.53c-.4-1.04.56-1.87 1.73-.72l1.62 1.9c.7.83 1.95.83 2.65 0l2.5-2.92c1.17-1.36.19-2.73-1.07-1.63L4.5 5.17c-.7.83-1.95.83-2.65 0z'/%3e%3c/svg%3e");
}
.form-control.is-invalid {
  border-color: var(--bs-danger);
  background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3e%3cpath fill='%23dc3545' d='M9.7 2.3c-.4-.4-1-.4-1.4 0L6 4.6 3.7 2.3c-.4-.4-1-.4-1.4 0-.4.4-.4 1 0 1.4L4.6 6 2.3 8.3c-.4.4-.4 1 0 1.4.4.4 1 .4 1.4 0L6 7.4l2.3 2.3c.4.4 1 .4 1.4 0 .4-.4.4-1 0-1.4L7.4 6l2.3-2.3c.4-.4.4-1 0-1.4z'/%3e%3c/svg%3e");
}

.was-validated .form-control:valid,
.form-control.is-valid {
  border-color: var(--bs-success);
  padding-right: calc(1.5em + 0.75rem);
}
.was-validated .form-control:invalid,
.form-control.is-invalid {
  border-color: var(--bs-danger);
  padding-right: calc(1.5em + 0.75rem);
}
.valid-feedback, .valid-tooltip {
  color: var(--bs-success);
}
.invalid-feedback, .invalid-tooltip {
  color: var(--bs-danger);
}

/* Checkbox e radio button */
.form-check-input:checked {
  background-color: var(--bs-primary);
  border-color: var(--bs-primary);
}
.form-check-input:focus {
  border-color: var(--bs-primary);
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), .25);
}
.form-check-input.is-valid:checked {
  background-color: var(--bs-success);
  border-color: var(--bs-success);
}
.form-check-input.is-invalid:checked {
  background-color: var(--bs-danger);
  border-color: var(--bs-danger);
}

/* Range */
.form-range::-webkit-slider-thumb {
  background-color: var(--bs-primary);
}
.form-range::-moz-range-thumb {
  background-color: var(--bs-primary);
}
.form-range:focus::-webkit-slider-thumb {
  box-shadow: 0 0 0 1px var(--bs-white), 0 0 0 0.25rem rgba(var(--bs-primary-rgb), .25);
}
.form-range:focus::-moz-range-thumb {
  box-shadow: 0 0 0 1px var(--bs-white), 0 0 0 0.25rem rgba(var(--bs-primary-rgb), .25);
}

/* --- Cards --- */
.card {
  --bs-card-border-color: var(--bs-gray-300);
  --bs-card-cap-bg: var(--bs-light);
  --bs-card-cap-color: var(--bs-body-color);
  --bs-card-bg: var(--bs-white);
  --bs-card-color: var(--bs-body-color);
  border-radius: var(--bs-border-radius);
}

.card-header {
  color: var(--bs-dark);
  background-color: var(--bs-light);
  border-bottom: 1px solid var(--bs-gray-300);
}

/* --- Alerts --- */
/* Sfondi, testo e bordi per tutti i tipi di alert */
.alert-primary {
  --bs-alert-color: var(--bs-primary);
  --bs-alert-bg: #e6ccff; /* Tonalità più chiara del primario */
  --bs-alert-border-color: #d1b3ff; /* Bordo più chiaro del primario */
  --bs-alert-link-color: var(--bs-primary);
}
.alert-secondary {
  --bs-alert-color: var(--bs-secondary);
  --bs-alert-bg: #e2e3e5;
  --bs-alert-border-color: #d3d6db;
  --bs-alert-link-color: var(--bs-secondary);
}
.alert-success {
  --bs-alert-color: var(--bs-success);
  --bs-alert-bg: #d4edda;
  --bs-alert-border-color: #c3e6cb;
  --bs-alert-link-color: var(--bs-success);
}
.alert-info {
  --bs-alert-color: var(--bs-info);
  --bs-alert-bg: #d6ecf2;
  --bs-alert-border-color: #bee5eb;
  --bs-alert-link-color: var(--bs-info);
}
.alert-warning {
  --bs-alert-color: var(--bs-warning);
  --bs-alert-bg: #fff3cd;
  --bs-alert-border-color: #ffeeba;
  --bs-alert-link-color: var(--bs-warning);
}
.alert-danger {
  --bs-alert-color: var(--bs-danger);
  --bs-alert-bg: #f8d7da;
  --bs-alert-border-color: #f5c6cb;
  --bs-alert-link-color: var(--bs-danger);
}
.alert-light {
  --bs-alert-color: var(--bs-light);
  --bs-alert-bg: #fefefe;
  --bs-alert-border-color: #fdfdfe;
  --bs-alert-link-color: var(--bs-light);
}
.alert-dark {
  --bs-alert-color: var(--bs-dark);
  --bs-alert-bg: #d6d8d9;
  --bs-alert-border-color: #c6c8ca;
  --bs-alert-link-color: var(--bs-dark);
}

/* --- Badges --- */
/* Sfondi per badges */
.badge.bg-primary {
  background-color: var(--bs-primary) !important;
  color: var(--bs-white);
}
.badge.bg-secondary {
  background-color: var(--bs-secondary) !important;
  color: var(--bs-white);
}
.badge.bg-success {
  background-color: var(--bs-success) !important;
  color: var(--bs-white);
}
.badge.bg-info {
  background-color: var(--bs-info) !important;
  color: var(--bs-white);
}
.badge.bg-warning {
  background-color: var(--bs-warning) !important;
  color: var(--bs-dark);
}
.badge.bg-danger {
  background-color: var(--bs-danger) !important;
  color: var(--bs-white);
}
.badge.bg-light {
  background-color: var(--bs-light) !important;
  color: var(--bs-dark);
}
.badge.bg-dark {
  background-color: var(--bs-dark) !important;
  color: var(--bs-white);
}

/* --- Utility di Colore Testo --- */
.text-primary { color: var(--bs-primary) !important; }
.text-secondary { color: var(--bs-secondary) !important; }
.text-success { color: var(--bs-success) !important; }
.text-info { color: var(--bs-info) !important; }
.text-warning { color: var(--bs-warning) !important; }
.text-danger { color: var(--bs-danger) !important; }
.text-light { color: var(--bs-light) !important; }
.text-dark { color: var(--bs-dark) !important; }
.text-body { color: var(--bs-body-color) !important; }
.text-muted { color: var(--bs-gray-600) !important; }
.text-white { color: var(--bs-white) !important; }
.text-black { color: var(--bs-black) !important; }
.text-black-50 { color: rgba(var(--bs-black-rgb), 0.5) !important; }
.text-white-50 { color: rgba(var(--bs-white-rgb), 0.5) !important; }

/* --- Utility di Colore Sfondo --- */
.bg-primary { background-color: var(--bs-primary) !important; }
.bg-secondary { background-color: var(--bs-secondary) !important; }
.bg-success { background-color: var(--bs-success) !important; }
.bg-info { background-color: var(--bs-info) !important; }
.bg-warning { background-color: var(--bs-warning) !important; }
.bg-danger { background-color: var(--bs-danger) !important; }
.bg-light { background-color: var(--bs-light) !important; }
.bg-dark { background-color: var(--bs-dark) !important; }
.bg-body { background-color: var(--bs-body-bg) !important; }
.bg-white { background-color: var(--bs-white) !important; }
.bg-transparent { background-color: transparent !important; }

/* --- Bordi --- */
.border-primary { border-color: var(--bs-primary) !important; }
.border-secondary { border-color: var(--bs-secondary) !important; }
.border-success { border-color: var(--bs-success) !important; }
.border-info { border-color: var(--bs-info) !important; }
.border-warning { border-color: var(--bs-warning) !important; }
.border-danger { border-color: var(--bs-danger) !important; }
.border-light { border-color: var(--bs-light) !important; }
.border-dark { border-color: var(--bs-dark) !important; }
.border-white { border-color: var(--bs-white) !important; }

/* --- Tabelle --- */
/* Colori per le tabelle tematiche */
.table-primary {
  --bs-table-color: var(--bs-primary);
  --bs-table-bg: #e6ccff; /* Una tonalità chiara del primario */
  --bs-table-border-color: #d1b3ff;
  --bs-table-striped-bg: #debfed;
  --bs-table-striped-color: var(--bs-primary);
  --bs-table-active-bg: #cfb2db;
  --bs-table-active-color: var(--bs-primary);
  --bs-table-hover-bg: #cfb2db;
  --bs-table-hover-color: var(--bs-primary);
}
.table-secondary {
  --bs-table-color: var(--bs-secondary);
  --bs-table-bg: #e2e3e5;
  --bs-table-border-color: #d3d6db;
  --bs-table-striped-bg: #d9dbde;
  --bs-table-striped-color: var(--bs-secondary);
  --bs-table-active-bg: #c9cbce;
  --bs-table-active-color: var(--bs-secondary);
  --bs-table-hover-bg: #c9cbce;
  --bs-table-hover-color: var(--bs-secondary);
}
.table-success {
  --bs-table-color: var(--bs-success);
  --bs-table-bg: #d4edda;
  --bs-table-border-color: #c3e6cb;
  --bs-table-striped-bg: #cbe9d0;
  --bs-table-striped-color: var(--bs-success);
  --bs-table-active-bg: #bde5c7;
  --bs-table-active-color: var(--bs-success);
  --bs-table-hover-bg: #bde5c7;
  --bs-table-hover-color: var(--bs-success);
}
.table-info {
  --bs-table-color: var(--bs-info);
  --bs-table-bg: #d6ecf2;
  --bs-table-border-color: #bee5eb;
  --bs-table-striped-bg: #d0e7ed;
  --bs-table-striped-color: var(--bs-info);
  --bs-table-active-bg: #c5e1e7;
  --bs-table-active-color: var(--bs-info);
  --bs-table-hover-bg: #c5e1e7;
  --bs-table-hover-color: var(--bs-info);
}
.table-warning {
  --bs-table-color: var(--bs-warning);
  --bs-table-bg: #fff3cd;
  --bs-table-border-color: #ffeeba;
  --bs-table-striped-bg: #ffeac7;
  --bs-table-striped-color: var(--bs-warning);
  --bs-table-active-bg: #e6e0bd;
  --bs-table-active-color: var(--bs-warning);
  --bs-table-hover-bg: #e6e0bd;
  --bs-table-hover-color: var(--bs-warning);
}
.table-danger {
  --bs-table-color: var(--bs-danger);
  --bs-table-bg: #f8d7da;
  --bs-table-border-color: #f5c6cb;
  --bs-table-striped-bg: #f3d1d4;
  --bs-table-striped-color: var(--bs-danger);
  --bs-table-active-bg: #ecc0c4;
  --bs-table-active-color: var(--bs-danger);
  --bs-table-hover-bg: #ecc0c4;
  --bs-table-hover-color: var(--bs-danger);
}
.table-light {
  --bs-table-color: var(--bs-light);
  --bs-table-bg: #fefefe;
  --bs-table-border-color: #fdfdfe;
  --bs-table-striped-bg: #fefdfd;
  --bs-table-striped-color: var(--bs-light);
  --bs-table-active-bg: #fdfafa;
  --bs-table-active-color: var(--bs-light);
  --bs-table-hover-bg: #fdfafa;
  --bs-table-hover-color: var(--bs-light);
}
.table-dark {
  --bs-table-color: var(--bs-dark);
  --bs-table-bg: #d6d8d9;
  --bs-table-border-color: #c6c8ca;
  --bs-table-striped-bg: #d0d2d3;
  --bs-table-striped-color: var(--bs-dark);
  --bs-table-active-bg: #c3c5c6;
  --bs-table-active-color: var(--bs-dark);
  --bs-table-hover-bg: #c3c5c6;
  --bs-table-hover-color: var(--bs-dark);
}

/* --- Modali --- */
.modal-content {
  --bs-modal-bg: var(--bs-white);
  --bs-modal-color: var(--bs-body-color);
  --bs-modal-border-color: var(--bs-gray-300);
  --bs-modal-border-radius: var(--bs-border-radius-lg);
}

.modal-header {
  border-bottom: 1px solid var(--bs-gray-200);
  color: var(--bs-body-color);
}

.modal-footer {
  border-top: 1px solid var(--bs-gray-200);
}

/* --- Breadcrumbs --- */
.breadcrumb-item.active {
  color: var(--bs-secondary); /* Colore per l'elemento attivo */
}

/* --- Pagination --- */
.pagination {
  --bs-pagination-color: var(--bs-primary);
  --bs-pagination-bg: var(--bs-white);
  --bs-pagination-border-color: var(--bs-gray-300);
  --bs-pagination-hover-color: var(--bs-primary);
  --bs-pagination-hover-bg: var(--bs-gray-200);
  --bs-pagination-hover-border-color: var(--bs-gray-300);
  --bs-pagination-focus-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), .25);
  --bs-pagination-active-color: var(--bs-white);
  --bs-pagination-active-bg: var(--bs-primary);
  --bs-pagination-active-border-color: var(--bs-primary);
  --bs-pagination-disabled-color: var(--bs-gray-600);
  --bs-pagination-disabled-bg: var(--bs-white);
  --bs-pagination-disabled-border-color: var(--bs-gray-300);
}

/* --- Progress Bar --- */
.progress-bar {
  background-color: var(--bs-primary); /* Colore di default della progress bar */
}
.progress-bar-striped {
  background-image: linear-gradient(45deg, rgba(var(--bs-white-rgb), 0.15) 25%, transparent 25%, transparent 50%, rgba(var(--bs-white-rgb), 0.15) 50%, rgba(var(--bs-white-rgb), 0.15) 75%, transparent 75%, transparent);
}

/* --- List Group --- */
.list-group-item-action:hover, .list-group-item-action:focus {
  color: var(--bs-body-color);
  background-color: var(--bs-gray-100);
}
.list-group-item-primary {
  color: var(--bs-primary);
  background-color: #e6ccff;
}
.list-group-item-secondary {
  color: var(--bs-secondary);
  background-color: #e2e3e5;
}
.list-group-item-success {
  color: var(--bs-success);
  background-color: #d4edda;
}
.list-group-item-info {
  color: var(--bs-info);
  background-color: #d6ecf2;
}
.list-group-item-warning {
  color: var(--bs-warning);
  background-color: #fff3cd;
}
.list-group-item-danger {
  color: var(--bs-danger);
  background-color: #f8d7da;
}
.list-group-item-light {
  color: var(--bs-light);
  background-color: #fefefe;
}
.list-group-item-dark {
  color: var(--bs-dark);
  background-color: #d6d8d9;
}

/* --- Spinners --- */
.spinner-border.text-primary { color: var(--bs-primary) !important; }
.spinner-border.text-secondary { color: var(--bs-secondary) !important; }
.spinner-border.text-success { color: var(--bs-success) !important; }
.spinner-border.text-info { color: var(--bs-info) !important; }
.spinner-border.text-warning { color: var(--bs-warning) !important; }
.spinner-border.text-danger { color: var(--bs-danger) !important; }
.spinner-border.text-light { color: var(--bs-light) !important; }
.spinner-border.text-dark { color: var(--bs-dark) !important; }

.spinner-grow.text-primary { background-color: var(--bs-primary) !important; }
.spinner-grow.text-secondary { background-color: var(--bs-secondary) !important; }
.spinner-grow.text-success { background-color: var(--bs-success) !important; }
.spinner-grow.text-info { background-color: var(--bs-info) !important; }
.spinner-grow.text-warning { background-color: var(--bs-warning) !important; }
.spinner-grow.text-danger { background-color: var(--bs-danger) !important; }
.spinner-grow.text-light { background-color: var(--bs-light) !important; }
.spinner-grow.text-dark { background-color: var(--bs-dark) !important; }

/* --- Toggable Tabs/Pills --- */
.nav-tabs .nav-link.active {
  color: var(--bs-body-color);
  background-color: var(--bs-white);
  border-color: var(--bs-gray-300) var(--bs-gray-300) var(--bs-white);
}
.nav-tabs .nav-link {
  color: var(--bs-gray-600);
  border-color: transparent;
}
.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {
  border-color: var(--bs-gray-200) var(--bs-gray-200) var(--bs-gray-300);
}

.nav-pills .nav-link.active, .nav-pills .show > .nav-link {
  color: var(--bs-white);
  background-color: var(--bs-primary);
}
.nav-pills .nav-link {
  color: var(--bs-primary);
}
.nav-pills .nav-link:hover, .nav-pills .nav-link:focus {
  background-color: rgba(var(--bs-primary-rgb), 0.1);
}

/* --- Dropdowns --- */
.dropdown-item:active {
  color: var(--bs-white);
  background-color: var(--bs-primary);
}
.dropdown-item.active {
  color: var(--bs-white);
  background-color: var(--bs-primary);
}

/* --- Carousel --- */
.carousel-control-next-icon, .carousel-control-prev-icon {
  filter: invert(1); /* Rende le icone bianche per sfondi scuri */
}
.carousel-indicators [data-bs-target] {
  background-color: var(--bs-white);
}
.carousel-indicators .active {
  background-color: var(--bs-primary);
}

/* --- Popovers --- */
.popover {
  --bs-popover-bg: var(--bs-white);
  --bs-popover-border-color: var(--bs-gray-300);
  --bs-popover-header-bg: var(--bs-light);
  --bs-popover-header-color: var(--bs-body-color);
  --bs-popover-body-color: var(--bs-body-color);
  --bs-popover-arrow-color: var(--bs-gray-300); /* Il triangolino della freccia */
  --bs-popover-arrow-outer-color: var(--bs-gray-300); /* Il bordo esterno della freccia */
}

/* --- Tooltips --- */
.tooltip {
  --bs-tooltip-bg: var(--bs-dark); /* Sfondo scuro per il tooltip */
  --bs-tooltip-color: var(--bs-white);
  --bs-tooltip-arrow-color: var(--bs-dark); /* Il triangolino della freccia */
}

/* --- Offcanvas --- */
.offcanvas {
  --bs-offcanvas-bg: var(--bs-white); /* Sfondo dell'offcanvas */
  --bs-offcanvas-color: var(--bs-body-color); /* Colore del testo nell'offcanvas */
  --bs-offcanvas-border-color: rgba(0, 0, 0, 0.2);
}
.offcanvas-header {
  border-bottom: 1px solid var(--bs-gray-200);
}

/* --- Close Button --- */
.btn-close {
  --bs-btn-close-color: var(--bs-dark);
  --bs-btn-close-opacity: .5;
  --bs-btn-close-hover-opacity: .75;
  --bs-btn-close-focus-shadow-rgb: var(--bs-primary-rgb);
  --bs-btn-close-focus-opacity: 1;
  --bs-btn-close-disabled-opacity: .25;
  --bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%); /* Per i bottoni chiudi su sfondi scuri */
}

.btn-close:focus {
  box-shadow: 0 0 0 0.25rem rgba(var(--bs-primary-rgb), .25);
}

/* --- Placeholder (per effetti di caricamento) --- */
.placeholder-glow .placeholder,
.placeholder-wave .placeholder {
  background-color: currentColor;
}

.placeholder.bg-primary { background-color: var(--bs-primary) !important; }
.placeholder.bg-secondary { background-color: var(--bs-secondary) !important; }
.placeholder.bg-success { background-color: var(--bs-success) !important; }
.placeholder.bg-info { background-color: var(--bs-info) !important; }
.placeholder.bg-warning { background-color: var(--bs-warning) !important; }
.placeholder.bg-danger { background-color: var(--bs-danger) !important; }
.placeholder.bg-light { background-color: var(--bs-light) !important; }
.placeholder.bg-dark { background-color: var(--bs-dark) !important; }
