/* =====================================================================
   DualMoto — Tema light/dark
   Le variabili sono pilotate dall'attributo [data-theme-resolved] sullo
   <html> (impostato dal piccolo script in base.html.twig).
   Default light, override dark.
   ===================================================================== */

/* ===== Font: lasciato quello standard del tema Canvas (UI) ===== */
body {
    font-size: 0.9rem !important;
}

/* ===== Sticky footer (footer ancorato in basso sulle pagine corte) ===== */
html, body {
    min-height: 100vh;
}
body.stretched {
    display: flex;
    flex-direction: column;
}
body.stretched #wrapper {
    flex: 1 0 auto;
    display: flex;
    flex-direction: column;
}
body.stretched #divContent {
    flex: 1 0 auto;
    display: flex;
    flex-direction: column;
}
body.stretched #footer {
    margin-top: auto;
    flex-shrink: 0;
}
/* Numeri tabulari (allineati) nelle tabelle dati */
table,
.table,
input[type="number"],
.dm-tnum {
    font-variant-numeric: tabular-nums;
}

/* ===== Override .bg-primary / .btn-primary su colore brand 00a19c ===== */
.bg-primary {
    background-color: #00a19c !important;
}
.text-primary {
    color: #00a19c !important;
}
.border-primary {
    border-color: #00a19c !important;
}
.btn-primary,
.button-3d.button-pr {
    background-color: #00a19c !important;
    border-color: #00a19c !important;
    color: #ffffff !important;
}
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.button-3d.button-pr:hover {
    background-color: #007f7a !important;
    border-color: #007f7a !important;
    color: #ffffff !important;
}
.btn-outline-primary {
    color: #00a19c !important;
    border-color: #00a19c !important;
}
.btn-outline-primary:hover,
.btn-outline-primary:focus,
.btn-outline-primary:active {
    background-color: #00a19c !important;
    color: #ffffff !important;
}
.alert-primary {
    background-color: rgba(0, 161, 156, 0.12) !important;
    color: #00504e !important;
    border-color: rgba(0, 161, 156, 0.4) !important;
}
.link-primary {
    color: #00a19c !important;
}



:root,
[data-theme-resolved="light"] {
    --dm-bg: #ffffff;
    --dm-bg-soft: #ffffff;
    --dm-surface: #ffffff;
    --dm-surface-alt: #f9fafb;
    --dm-border: #e1e4e8;
    --dm-border-strong: #c8ccd1;
    --dm-text: #1f2328;
    --dm-text-muted: #6b7280;
    --dm-link: #00a19c;
    --dm-link-hover: #006d6a;
    --dm-header-bg: #00a19c;
    --dm-header-text: #ffffff;
    --dm-menu-active: rgba(0, 161, 156, 0.12);
    --dm-table-stripe: #f3f4f6;
    --dm-input-bg: #ffffff;
    --dm-input-text: #1f2328;
    --dm-input-border: #c8ccd1;
    --dm-input-focus-border: #00a19c;
    --dm-modal-overlay: rgba(0, 0, 0, 0.5);
    --dm-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
    --dm-card-shadow: 0 2px 4px rgba(0, 0, 0, 0.06);
    color-scheme: light;
}

[data-theme-resolved="dark"] {
    --dm-bg: #161a22;
    --dm-bg-soft: #1c2230;
    --dm-surface: #1f2533;
    --dm-surface-alt: #232a39;
    --dm-border: #2d3548;
    --dm-border-strong: #3a4356;
    --dm-text: #e6e8ee;
    --dm-text-muted: #9aa3b2;
    --dm-link: #4cd6cf;
    --dm-link-hover: #80e1dc;
    --dm-header-bg: #0f1218;
    --dm-header-text: #e6e8ee;
    --dm-menu-active: rgba(76, 214, 207, 0.18);
    --dm-table-stripe: #232a39;
    --dm-input-bg: #1c2230;
    --dm-input-text: #e6e8ee;
    --dm-input-border: #3a4356;
    --dm-input-focus-border: #4cd6cf;
    --dm-modal-overlay: rgba(0, 0, 0, 0.7);
    --dm-shadow: 0 1px 3px rgba(0, 0, 0, 0.5);
    --dm-card-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
    color-scheme: dark;
}

/* ===== Base ===== */
body {
    background-color: var(--dm-bg);
    color: var(--dm-text);
}

#wrapper,
#divContent {
    background-color: transparent;
}

a {
    color: var(--dm-link);
}
a:hover {
    color: var(--dm-link-hover);
}

p,
label,
h1, h2, h3, h4, h5, h6,
th, td {
    color: var(--dm-text);
}

.text-muted {
    color: var(--dm-text-muted) !important;
}

hr {
    border-color: var(--dm-border);
}

/* ===== Header e menu laterale Canvas ===== */
#header,
#header-wrap {
    background-color: var(--dm-header-bg);
    color: var(--dm-header-text);
    border-color: var(--dm-border);

    /* Custom properties Canvas: dimensioni e colori del menu laterale (font: standard Canvas) */
    --cnvs-primary-menu-font-size: 0.9rem;
    --cnvs-primary-menu-submenu-font-size: 0.8rem;
    --cnvs-primary-menu-color: #ffffff;
    --cnvs-primary-menu-hover-color: #d4d4d4;
    --cnvs-primary-menu-active-color: #ffffff;
    --cnvs-primary-menu-submenu-bg: var(--dm-header-bg);
    --cnvs-primary-menu-submenu-color: #ffffff;
    --cnvs-primary-menu-submenu-hover-color: #d4d4d4;
    --cnvs-primary-menu-submenu-hover-bg: rgba(255, 255, 255, 0.06);
    --cnvs-header-misc-icons-color: #ffffff;
}

.menu-container .menu-link,
.sub-menu-container .menu-link {
    color: #ffffff;
}

.menu-container .menu-link:hover,
.sub-menu-container .menu-link:hover,
.menu-container .menu-item.current > .menu-link,
.sub-menu-container .menu-item.current > .menu-link {
    color: #d4d4d4 !important;
}

/* Caret-down (icona espansione sottomenu) bianca */
.menu-link i.fa-caret-down,
.menu-link div > i.fa-caret-down,
.sub-menu-container .sub-menu-trigger,
.menu-item .sub-menu-trigger {
    color: #ffffff !important;
}
.menu-link:hover i.fa-caret-down,
.menu-link:hover div > i.fa-caret-down,
.menu-link:hover .sub-menu-trigger {
    color: #d4d4d4 !important;
}

.sub-menu-container {
    background-color: var(--dm-header-bg);
    border-color: rgba(255, 255, 255, 0.12);
}

/* Bordo destro del menu laterale */
.is-expanded-menu.side-header #header {
    border-right: 2px solid #000000 !important;
}

/* Voci del menu più compatte (Canvas di default mette margin-top:10px) */
.is-expanded-menu.side-header .menu-item:not(:first-child) {
    margin: 2px 0 0 !important;
}
.is-expanded-menu.side-header .menu-link {
    padding: 4px 0 !important;
}

/* Separatore tra blocchi di voci (es. fra CRM e Aggiornamenti).
   Stesso stile del border-bottom sotto il blocco profilo (sopra "Scrivania"). */
.is-expanded-menu.side-header .menu-container .menu-item.dm-menu-divider {
    margin-top: 16px !important;
    padding-top: 14px !important;
    border-top: 1px solid rgba(255, 255, 255, 0.12) !important;
}

/* Separatore "puro" (senza voce), sottile linea orizzontale fra blocchi del menu. */
.is-expanded-menu.side-header .menu-container .menu-item.dm-menu-separator {
    margin: 12px 0 !important;
    padding: 0 !important;
    height: 0;
    border-top: 1px solid rgba(255, 255, 255, 0.12);
    list-style: none;
    pointer-events: none;
}
.is-expanded-menu.side-header .menu-container .menu-item.dm-menu-separator > .menu-link {
    display: none !important;
}

/* ===== Page title + breadcrumb ===== */
.page-title {
    background-color: var(--dm-bg-soft);
    border-color: var(--dm-border);
    /* Riduce l'altezza complessiva del page-title da ~165px a ~80px:
       Canvas di default usa --cnvs-page-title-padding: 4rem (64px sopra+sotto). */
    --cnvs-page-title-padding: 1.25rem;
    --cnvs-page-title-font-size: 1.5rem;
}
@media (max-width: 767.98px) {
    .page-title {
        --cnvs-page-title-padding: 1rem;
    }
}
.page-title h3,
.page-title h1 {
    color: var(--dm-text);
}
.page-title-content h1,
.page-title-content .h1 {
    line-height: 1.2;
}

/* ===== Icone azione (dentro tabelle, come Tillomed) ===== */
.icon_action {
    width: 30px;
    height: 30px;
    cursor: pointer;
    border-radius: 4px;
    padding: 3px;
    background: #ffffff;
    box-sizing: border-box;
    vertical-align: middle;
    object-fit: contain;
}
/* Nella riga filtro l'icona è alta come l'input (32px) */
.tr_filter .icon_action {
    width: 32px;
    height: 32px;
}
.icon_pr { border: 1px solid #00a19c; }
.icon_red { border: 1px solid #c02942; }
.icon_green { border: 1px solid #59ba41; }
.icon_amber { border: 1px solid #eb9c4d; }
.icon_grey { border: 1px solid #777; }
.icon_white { border: 1px solid #ffffff; }
.icon_btn-plain {
    background: transparent;
    border: 0;
    padding: 0;
    margin: 0;
    line-height: 1;
}
.icon_btn-plain:focus { outline: none; }

/* ===== Input file: bottone "Scegli file" colorato col primario ===== */
input[type="file"].form-control::file-selector-button {
    background-color: #00a19c !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 3px;
    padding: 6px 14px;
    margin-right: 12px;
    margin-inline-end: 12px;
    cursor: pointer;
    transition: background-color .15s ease;
}
input[type="file"].form-control:hover::file-selector-button,
input[type="file"].form-control::file-selector-button:hover {
    background-color: #006d6a !important;
    color: #ffffff !important;
}
/* Vendor prefix per Safari/Chrome più vecchi */
input[type="file"].form-control::-webkit-file-upload-button {
    background-color: #00a19c !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 3px;
    padding: 6px 14px;
    margin-right: 12px;
    cursor: pointer;
    transition: background-color .15s ease;
}
input[type="file"].form-control:hover::-webkit-file-upload-button,
input[type="file"].form-control::-webkit-file-upload-button:hover {
    background-color: #006d6a !important;
    color: #ffffff !important;
}

/* Frecce di ordinamento dentro gli <th> della tabella (pattern Eposmanager) */
.filter_arrow {
    background: transparent;
    border: 0;
    padding: 0 4px;
    margin-left: 4px;
    line-height: 1;
    cursor: pointer;
    vertical-align: middle;
}
.filter_arrow img {
    width: 14px;
    height: 14px;
    vertical-align: middle;
    opacity: 0.85;
    filter: brightness(0) invert(1); /* sempre bianche, leggibili sull'header bg_pr */
}
.filter_arrow:hover img {
    opacity: 1;
}

/* Riga di filtro sopra l'header tabella */
.tr_filter td {
    background-color: var(--dm-surface-alt) !important;
    padding: 6px 8px !important;
    vertical-align: middle;
}
.tr_filter input.form-control,
.tr_filter select.form-select {
    height: 32px;
    padding: 2px 8px;
    font-size: 0.85rem;
}
/* ===== Form fields in errore (pattern Eposmanager) =====
   Il form theme `templates/form/errors.html.twig` aggiunge class="error"
   al wrapper <div> dei campi con errori di validazione. */
.error input,
.error textarea,
.error select,
.error .form-control,
.error .form-select {
    border: 1px solid #CB0C0F !important;
    background-color: rgba(203, 12, 15, 0.31) !important;
    color: #1f2328;
}
.error label,
label.error {
    color: #CB0C0F !important;
}
.error .form-control:focus,
.error .form-select:focus {
    border-color: #CB0C0F !important;
    box-shadow: 0 0 0 0.2rem rgba(203, 12, 15, 0.2) !important;
}
[data-theme-resolved="dark"] .error input,
[data-theme-resolved="dark"] .error textarea,
[data-theme-resolved="dark"] .error select,
[data-theme-resolved="dark"] .error .form-control,
[data-theme-resolved="dark"] .error .form-select {
    color: #ffd0d2;
}

.breadcrumb {
    background-color: transparent;
    margin: 0;
    padding: 0;
    font-size: 0.85rem;
}
.breadcrumb-item,
.breadcrumb-item + .breadcrumb-item::before,
.breadcrumb-item.active {
    color: var(--dm-text-muted);
}
.breadcrumb-item a {
    color: var(--dm-link);
}
.breadcrumb-item a:hover {
    color: var(--dm-link-hover);
}

/* ===== Action bar ===== */
#actionBar {
    background-color: var(--dm-header-bg);
    border-color: var(--dm-border);
}
#actionBar .nav-link {
    color: var(--dm-header-text);
}

/* ===== Card ===== */
.card {
    background-color: var(--dm-surface);
    border-color: var(--dm-border);
    box-shadow: var(--dm-card-shadow);
    color: var(--dm-text);
}
.card-body,
.card-header,
.card-footer {
    background-color: transparent;
    color: var(--dm-text);
    border-color: var(--dm-border);
}

/* ===== Tabelle ===== */
.table {
    color: var(--dm-text);
    background-color: var(--dm-surface);
    border-color: var(--dm-border);
}
.table > :not(caption) > * > * {
    background-color: transparent;
    border-bottom-color: var(--dm-border);
    color: var(--dm-text);
}
.table > thead {
    background-color: var(--dm-surface-alt);
}
.table > thead th {
    background-color: #00a19c !important; /* bg_pr */
    color: #fff !important;               /* color_w */
    border-bottom-color: var(--dm-border-strong);
}
.table-bordered,
.table-bordered > :not(caption) > *,
.table-bordered > :not(caption) > * > * {
    border-color: var(--dm-border);
}
.table-striped > tbody > tr:nth-of-type(odd) > * {
    background-color: var(--dm-table-stripe);
    color: var(--dm-text);
}
.table-hover > tbody > tr:hover > * {
    background-color: var(--dm-surface-alt);
    color: var(--dm-text);
}

/* ===== Form ===== */
.form-control,
.form-select,
textarea.form-control,
input.form-control {
    background-color: var(--dm-input-bg);
    color: var(--dm-input-text);
    border-color: var(--dm-input-border);
}
.form-control::placeholder {
    color: var(--dm-text-muted);
}
.form-control:focus,
.form-select:focus {
    background-color: var(--dm-input-bg);
    color: var(--dm-input-text);
    border-color: var(--dm-input-focus-border);
    box-shadow: 0 0 0 0.2rem rgba(0, 161, 156, 0.2);
}
.form-control:disabled,
.form-control[readonly] {
    background-color: var(--dm-surface-alt);
    color: var(--dm-text-muted);
}
.form-label,
.form-check-label {
    color: var(--dm-text);
}
.form-check-input {
    background-color: var(--dm-input-bg);
    border-color: var(--dm-input-border);
}
.form-check-input:checked {
    background-color: var(--dm-link);
    border-color: var(--dm-link);
}

/* Dark: invertire l'icona del select Bootstrap */
[data-theme-resolved="dark"] .form-select {
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%239aa3b2' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
}

/* ===== Nav tabs ===== */
.nav-tabs {
    border-bottom-color: var(--dm-border);
}
.nav-tabs .nav-link {
    color: var(--dm-text-muted);
    border-color: transparent;
    background-color: transparent;
}
.nav-tabs .nav-link:hover {
    color: var(--dm-link);
    border-color: var(--dm-border);
}
.nav-tabs .nav-link.active {
    background-color: var(--dm-surface);
    color: var(--dm-text);
    border-color: var(--dm-border) var(--dm-border) var(--dm-surface);
}

/* ===== Modal ===== */
.modal-content {
    background-color: var(--dm-surface);
    color: var(--dm-text);
    border-color: var(--dm-border);
}
.modal-header,
.modal-footer {
    border-color: var(--dm-border);
}
.modal-backdrop.show {
    opacity: 1;
    background-color: var(--dm-modal-overlay);
}

/* ===== Alerts ===== */
.alert {
    border: 1px solid transparent;
}
[data-theme-resolved="dark"] .alert-success {
    background-color: rgba(89, 186, 65, 0.15);
    color: #b6e6a4;
    border-color: rgba(89, 186, 65, 0.35);
}
[data-theme-resolved="dark"] .alert-warning {
    background-color: rgba(255, 193, 7, 0.15);
    color: #ffe9a8;
    border-color: rgba(255, 193, 7, 0.35);
}
[data-theme-resolved="dark"] .alert-danger {
    background-color: rgba(203, 12, 15, 0.18);
    color: #ffb0b2;
    border-color: rgba(203, 12, 15, 0.4);
}
[data-theme-resolved="dark"] .alert-info {
    background-color: rgba(0, 161, 156, 0.15);
    color: #b9ebe9;
    border-color: rgba(0, 161, 156, 0.35);
}

/* ===== Badge ===== */
[data-theme-resolved="dark"] .badge.bg-secondary {
    background-color: #3a4356 !important;
    color: #e6e8ee;
}
[data-theme-resolved="dark"] .badge.bg-success {
    background-color: #2a8a3a !important;
}
[data-theme-resolved="dark"] .badge.bg-warning {
    background-color: #b58200 !important;
    color: #fff;
}
[data-theme-resolved="dark"] .badge.bg-info {
    background-color: #006d6a !important;
    color: #fff;
}
[data-theme-resolved="dark"] .badge.bg-primary {
    background-color: #006d6a !important;
}

/* ===== Footer ===== */
#footer,
#copyrights {
    background-color: var(--dm-bg-soft);
    color: var(--dm-text-muted);
    border-color: var(--dm-border);
}

/* ===== Override utility .bg_w (in classes.css ha !important) ===== */
[data-theme-resolved="dark"] .bg_w {
    background-color: var(--dm-surface) !important;
    color: var(--dm-text) !important;
}
[data-theme-resolved="dark"] .bg_lg,
[data-theme-resolved="dark"] .bg_lgr {
    background-color: var(--dm-surface-alt) !important;
    color: var(--dm-text) !important;
}

/* ===== Menu laterale: profilo in cima =====
   Avatar tondo centrato + nome utente, poi le voci di menu sotto. */
.dm-menu-profile {
    margin-top: 24px;
    margin-bottom: 16px;
    padding-bottom: 14px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.dm-menu-profile .menu-link {
    display: flex !important;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 14px 8px 6px;
}
.dm-menu-profile .menu-link:hover {
    background-color: transparent;
}
/* override della regola Canvas `.menu-link span { display: none }` */
.menu-link .dm-menu-avatar,
.menu-link .dm-menu-username {
    display: block !important;
}
.menu-link span.dm-menu-avatar {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    overflow: hidden;
    border: 3px solid #000000;
    background-color: #ffffff;
    margin: 0 auto 10px;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
}

/* Avatar grande nella pagina profilo: stesso bordo del menu */
.dm-avatar-bordered {
    border: 3px solid #000000;
    background-color: #ffffff;
    box-shadow: 0 2px 6px rgba(0, 0, 0, 0.25);
    object-fit: cover;
}
.menu-link .dm-menu-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.menu-link span.dm-menu-username {
    font-weight: 600;
    font-size: 14px;
    word-break: break-word;
    line-height: 1.25;
    margin-top: 4px;
}

/* ===== Flash notices fluttuanti =====
   Container fisso in alto a destra, le notice si impilano sotto. */
.notices {
    position: fixed;
    top: 12px;
    right: 12px;
    z-index: 1080;
    width: min(420px, calc(100vw - 24px));
    pointer-events: none;
}
.notices .notice {
    pointer-events: auto;
    margin-bottom: 10px;
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.18);
    border: 1px solid transparent;
    animation: dm-notice-in .25s ease-out;
}
@keyframes dm-notice-in {
    from { transform: translateX(20px); opacity: 0; }
    to   { transform: translateX(0);    opacity: 1; }
}

/* ===== Pulsante apertura menu laterale (tema Canvas) =====
   Mantiene il colore primario brand in light e dark. */
#header-trigger {
    background-color: #00a19c !important;
    color: #ffffff;
    border-radius: 4px;
}
#header-trigger:hover {
    background-color: #007f7a !important;
}
#header-trigger i {
    color: #ffffff !important;
}

/* ===== DualMoto switch toggle (no jQuery) =====
   Uso: <label class="dm-switch"><input type="checkbox"><span class="dm-switch-slider"></span></label> */
.dm-switch {
    position: relative;
    display: inline-block;
    width: 44px;
    height: 24px;
    vertical-align: middle;
}
.dm-switch input {
    opacity: 0;
    width: 0;
    height: 0;
    margin: 0;
    position: absolute;
}
.dm-switch-slider {
    position: absolute;
    inset: 0;
    cursor: pointer;
    background-color: #c8ccd1;
    border-radius: 24px;
    transition: background-color .2s;
}
.dm-switch-slider::before {
    content: "";
    position: absolute;
    height: 18px;
    width: 18px;
    left: 3px;
    top: 3px;
    background-color: #ffffff;
    border-radius: 50%;
    transition: transform .2s;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
}
.dm-switch input:checked + .dm-switch-slider {
    background-color: #00a19c;
}
.dm-switch input:checked + .dm-switch-slider::before {
    transform: translateX(20px);
}
.dm-switch input:focus-visible + .dm-switch-slider {
    box-shadow: 0 0 0 0.2rem rgba(0, 161, 156, 0.25);
}
[data-theme-resolved="dark"] .dm-switch-slider {
    background-color: #3a4356;
}
[data-theme-resolved="dark"] .dm-switch input:checked + .dm-switch-slider {
    background-color: #4cd6cf;
}

/* ===================================================================
   Modali stile Tillomed (header colorato + stripe primaria)
   =================================================================== */
.modal-header {
    border-bottom: none;
    background: #00a19c;
    border-radius: 0;
    padding: 14px 20px;
}
.modal-header .modal-title {
    color: #ffffff;
    margin: 0 auto;
    text-transform: uppercase;
    letter-spacing: 0.4px;
    font-size: 18px;
    font-weight: 600;
}
.modal-stripe {
    background: #00a19c71;
    height: 8px;
    border: 0;
}
.modal-content {
    border: none;
    border-radius: 0;
    overflow: hidden;
}
.modal-body {
    padding: 24px 28px !important;
}
.modal-footer {
    border-top: 1px solid var(--dm-border);
    display: flow-root;
    text-align: center;
    padding: 14px 20px !important;
}
.modal-paragraph {
    font-size: 14px;
    margin-bottom: 0;
}
.modal_subtitle {
    color: var(--dm-text) !important;
    margin-bottom: 10px;
    font-size: 20px;
    letter-spacing: 0;
    font-weight: 600;
    display: block;
}

[data-theme-resolved="dark"] .modal-header {
    background: #0f1218;
}

/* ===================================================================
   Switch toggle Canvas per checkbox singoli e radio
   Override globale dei form-check Bootstrap, no JS necessario.
   =================================================================== */

/* ---- CHECKBOX → switch flat Canvas ---- */
.form-check-input[type="checkbox"]:not(.form-check-input-classic) {
    appearance: none;
    -webkit-appearance: none;
    width: 36px;
    height: 18px;
    border-radius: 18px;
    background-color: #c8ccd1;
    background-image: none !important; /* niente spunta Bootstrap quando selezionato */
    border: none;
    position: relative;
    cursor: pointer;
    transition: background-color .2s ease;
    margin-top: 0.2em;
    flex-shrink: 0;
}
.form-check-input[type="checkbox"]:not(.form-check-input-classic)::before {
    content: "";
    position: absolute;
    width: 14px;
    height: 14px;
    background: #ffffff;
    border-radius: 50%;
    top: 2px;
    left: 2px;
    transition: transform .2s ease;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
}
.form-check-input[type="checkbox"]:not(.form-check-input-classic):checked {
    background-color: #00a19c;
}
.form-check-input[type="checkbox"]:not(.form-check-input-classic):checked::before {
    transform: translateX(18px);
}
.form-check-input[type="checkbox"]:not(.form-check-input-classic):focus-visible {
    box-shadow: 0 0 0 0.2rem rgba(0, 161, 156, 0.25);
}
.form-check-input[type="checkbox"]:not(.form-check-input-classic):disabled {
    opacity: 0.6;
    cursor: not-allowed;
}
/* Spazio fra switch e label nel form-check.
   Bootstrap di default ha padding-left:1.5em + margin-left:-1.5em sull'input;
   azzeriamo entrambi per evitare che switch/radio escano dal padding del contenitore. */
.form-check {
    padding-left: 0;
    display: flex;
    align-items: center;
    gap: 10px;
    min-height: 24px;
}
.form-check .form-check-input {
    margin-left: 0;
    float: none;
}
.form-check .form-check-label {
    margin: 0;
    cursor: pointer;
}

/* Tutti i form senza margin-bottom di default */
form {
    margin-bottom: 0 !important;
}

/* ---- RADIO → pill button gruppo, color brand ---- */
.form-check-input[type="radio"]:not(.form-check-input-classic) {
    appearance: none;
    -webkit-appearance: none;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 2px solid var(--dm-input-border);
    background-color: var(--dm-input-bg);
    cursor: pointer;
    transition: border-color .2s ease, background-color .2s ease;
    position: relative;
    margin-top: 0.2em;
    flex-shrink: 0;
}
.form-check-input[type="radio"]:not(.form-check-input-classic):checked {
    border-color: #00a19c;
    background-color: #ffffff;
}
.form-check-input[type="radio"]:not(.form-check-input-classic):checked::before {
    content: "";
    position: absolute;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #00a19c;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
}
.form-check-input[type="radio"]:not(.form-check-input-classic):focus-visible {
    box-shadow: 0 0 0 0.2rem rgba(0, 161, 156, 0.25);
}
[data-theme-resolved="dark"] .form-check-input[type="radio"]:not(.form-check-input-classic):checked {
    background-color: var(--dm-bg);
}

/* Dark: switch checkbox background non-checked */
[data-theme-resolved="dark"] .form-check-input[type="checkbox"]:not(.form-check-input-classic) {
    background-color: #3a4356;
}
[data-theme-resolved="dark"] .form-check-input[type="checkbox"]:not(.form-check-input-classic):checked {
    background-color: #4cd6cf;
}
