/*
 * bootstrap-bridge.css — traduce i token in variabili Bootstrap.
 *
 * Bootstrap 5.3 ha già il tema scuro nativo su [data-bs-theme]: inverte da
 * solo dropdown, modali, tabelle, form e btn-close. Conviene assecondarlo
 * invece di combatterlo, quindi qui ci limitiamo a ridefinire i suoi --bs-*
 * in termini dei nostri --ui-*.
 *
 * Le regole stanno su :root e non sono duplicate per tema: i --ui-* sono già
 * theme-aware, quindi una sola definizione basta. Funziona perché questo file
 * è caricato dopo bootstrap.min.css e :root ha la stessa specificità del suo
 * blocco [data-bs-theme="dark"] — a parità vince l'ultimo dichiarato.
 *
 * ATTENZIONE — la trappola dei bottoni: .btn-primary NON legge --bs-primary.
 * Bootstrap lo compila in --bs-btn-bg con l'esadecimale letterale. Impostare
 * solo --bs-primary lascerebbe i bottoni blu Bootstrap mentre badge, link e
 * testi diventano indaco: un restyle a metà. Per questo più sotto ogni
 * variante di bottone riceve esplicitamente i propri --bs-btn-*.
 */

:root {
    /* ── RGB: servono a .bg-*, .text-*, .border-*, .link-* e alle ombre di
       focus, che Bootstrap costruisce con rgba(var(--bs-*-rgb), α). ──── */
    --bs-primary-rgb:   79, 70, 229;
    --bs-secondary-rgb: 107, 114, 128;
    --bs-success-rgb:   22, 163, 74;
    --bs-warning-rgb:   217, 119, 6;
    --bs-danger-rgb:    220, 38, 38;
    --bs-info-rgb:      2, 132, 199;
    --bs-body-bg-rgb:   247, 248, 250;
    --bs-body-color-rgb: 20, 22, 26;

    --bs-primary:   var(--ui-accent);
    --bs-secondary: var(--neutral-solid);
    --bs-success:   var(--success-solid);
    --bs-warning:   var(--warning-solid);
    --bs-danger:    var(--danger-solid);
    --bs-info:      var(--info-solid);

    /* ── Corpo, superfici, bordi ─────────────────────────────────────── */
    --bs-body-bg:          var(--ui-canvas);
    --bs-body-color:       var(--ui-text);
    --bs-emphasis-color:   var(--ui-text);
    --bs-secondary-color:  var(--ui-text-2);
    --bs-secondary-bg:     var(--ui-surface-2);
    --bs-tertiary-color:   var(--ui-muted);
    --bs-tertiary-bg:      var(--ui-surface-3);
    --bs-border-color:     var(--ui-border);
    --bs-border-color-translucent: var(--ui-border);
    --bs-heading-color:    var(--ui-text);

    --bs-link-color:            var(--ui-accent);
    --bs-link-hover-color:      var(--ui-accent-hover);
    --bs-link-color-rgb:        79, 70, 229;
    --bs-link-hover-color-rgb:  67, 56, 202;

    --bs-font-sans-serif: var(--font-sans);
    --bs-body-font-size:  var(--fs-sm);
    --bs-body-line-height: var(--lh-normal);

    --bs-border-radius-sm: var(--r-xs);
    --bs-border-radius:    var(--r-sm);
    --bs-border-radius-lg: var(--r-md);
    --bs-border-radius-xl: var(--r-lg);

    --bs-box-shadow-sm: var(--sh-xs);
    --bs-box-shadow:    var(--sh-sm);
    --bs-box-shadow-lg: var(--sh-md);

    /* ── Variabili di componente ─────────────────────────────────────── */
    --bs-card-bg:              var(--ui-surface);
    --bs-card-color:           var(--ui-text);
    --bs-card-border-color:    var(--ui-border);
    --bs-card-border-radius:   var(--r-md);
    --bs-card-cap-bg:          var(--ui-surface-2);
    --bs-card-cap-color:       var(--ui-text);

    --bs-table-bg:            transparent;
    --bs-table-color:         var(--ui-text);
    --bs-table-border-color:  var(--ui-border);
    --bs-table-hover-bg:      var(--ui-surface-3);
    --bs-table-hover-color:   var(--ui-text);
    --bs-table-striped-bg:    var(--ui-surface-2);
    --bs-table-striped-color: var(--ui-text);

    --bs-dropdown-bg:              var(--ui-surface);
    --bs-dropdown-color:           var(--ui-text);
    --bs-dropdown-border-color:    var(--ui-border);
    --bs-dropdown-border-radius:   var(--r-md);
    --bs-dropdown-link-color:      var(--ui-text-2);
    --bs-dropdown-link-hover-bg:   var(--ui-surface-2);
    --bs-dropdown-link-hover-color: var(--ui-text);
    --bs-dropdown-link-active-bg:  var(--ui-accent-subtle);
    --bs-dropdown-link-active-color: var(--ui-accent);
    --bs-dropdown-box-shadow:      var(--sh-overlay);

    --bs-modal-bg:            var(--ui-surface);
    --bs-modal-color:         var(--ui-text);
    --bs-modal-border-color:  var(--ui-border);
    --bs-modal-border-radius: var(--r-lg);
    --bs-modal-header-border-color: var(--ui-border);
    --bs-modal-footer-border-color: var(--ui-border);
    --bs-modal-box-shadow:    var(--sh-overlay);

    --bs-offcanvas-bg:           var(--ui-surface);
    --bs-offcanvas-color:        var(--ui-text);
    --bs-offcanvas-border-color: var(--ui-border);

    --bs-pagination-color:              var(--ui-text-2);
    --bs-pagination-bg:                 var(--ui-surface);
    --bs-pagination-border-color:       var(--ui-border);
    --bs-pagination-border-radius:      var(--r-sm);
    --bs-pagination-hover-color:        var(--ui-text);
    --bs-pagination-hover-bg:           var(--ui-surface-2);
    --bs-pagination-hover-border-color: var(--ui-border-strong);
    --bs-pagination-focus-color:        var(--ui-accent-hover);
    --bs-pagination-focus-bg:           var(--ui-surface-2);
    --bs-pagination-focus-box-shadow:   0 0 0 3px var(--ui-focus);
    --bs-pagination-active-color:       var(--ui-accent-contrast);
    --bs-pagination-active-bg:          var(--ui-accent);
    --bs-pagination-active-border-color: var(--ui-accent);
    --bs-pagination-disabled-color:     var(--ui-disabled);
    --bs-pagination-disabled-bg:        var(--ui-surface);
    --bs-pagination-disabled-border-color: var(--ui-border);

    --bs-nav-link-color:       var(--ui-text-2);
    --bs-nav-link-hover-color: var(--ui-accent);

    --bs-form-control-bg:    var(--ui-surface);
    --bs-form-control-color: var(--ui-text);
}

[data-bs-theme="dark"] {
    /* Gli unici valori che non si possono derivare da un var(): Bootstrap li
       consuma dentro rgba(), che non accetta una custom property annidata. */
    --bs-primary-rgb:   99, 102, 241;
    --bs-secondary-rgb: 110, 118, 129;
    --bs-success-rgb:   46, 160, 67;
    --bs-warning-rgb:   210, 153, 34;
    --bs-danger-rgb:    218, 54, 51;
    --bs-info-rgb:      49, 109, 202;
    --bs-body-bg-rgb:   11, 13, 16;
    --bs-body-color-rgb: 230, 233, 239;

    --bs-link-color-rgb:       129, 140, 248;
    --bs-link-hover-color-rgb: 165, 180, 252;
}

/* ── Bottoni ───────────────────────────────────────────────────────────
   Ogni variante ridichiara i propri --bs-btn-*: vedi la nota in testa. */

.btn-primary {
    --bs-btn-color:                 var(--ui-accent-contrast);
    --bs-btn-bg:                    var(--ui-accent);
    --bs-btn-border-color:          var(--ui-accent);
    --bs-btn-hover-color:           var(--ui-accent-contrast);
    --bs-btn-hover-bg:              var(--ui-accent-hover);
    --bs-btn-hover-border-color:    var(--ui-accent-hover);
    --bs-btn-active-color:          var(--ui-accent-contrast);
    --bs-btn-active-bg:             var(--ui-accent-hover);
    --bs-btn-active-border-color:   var(--ui-accent-hover);
    --bs-btn-disabled-color:        var(--ui-accent-contrast);
    --bs-btn-disabled-bg:           var(--ui-accent);
    --bs-btn-disabled-border-color: var(--ui-accent);
    --bs-btn-focus-shadow-rgb:      var(--bs-primary-rgb);
}

.btn-outline-primary {
    --bs-btn-color:                 var(--ui-accent);
    --bs-btn-bg:                    transparent;
    --bs-btn-border-color:          var(--ui-accent-border);
    --bs-btn-hover-color:           var(--ui-accent-contrast);
    --bs-btn-hover-bg:              var(--ui-accent);
    --bs-btn-hover-border-color:    var(--ui-accent);
    --bs-btn-active-color:          var(--ui-accent-contrast);
    --bs-btn-active-bg:             var(--ui-accent-hover);
    --bs-btn-active-border-color:   var(--ui-accent-hover);
    --bs-btn-disabled-color:        var(--ui-disabled);
    --bs-btn-disabled-border-color: var(--ui-border);
    --bs-btn-focus-shadow-rgb:      var(--bs-primary-rgb);
}

.btn-secondary {
    --bs-btn-color:                 var(--ui-text);
    --bs-btn-bg:                    var(--ui-surface-2);
    --bs-btn-border-color:          var(--ui-border-strong);
    --bs-btn-hover-color:           var(--ui-text);
    --bs-btn-hover-bg:              var(--ui-surface-3);
    --bs-btn-hover-border-color:    var(--ui-border-strong);
    --bs-btn-active-color:          var(--ui-text);
    --bs-btn-active-bg:             var(--ui-surface-3);
    --bs-btn-active-border-color:   var(--ui-border-strong);
    --bs-btn-disabled-color:        var(--ui-disabled);
    --bs-btn-disabled-bg:           var(--ui-surface-2);
    --bs-btn-disabled-border-color: var(--ui-border);
    --bs-btn-focus-shadow-rgb:      var(--bs-secondary-rgb);
}

/* La "secondaria" di fatto usata ovunque nei template: superficie + bordo,
   non un contorno grigio su fondo trasparente. */
.btn-outline-secondary {
    --bs-btn-color:                 var(--ui-text-2);
    --bs-btn-bg:                    var(--ui-surface);
    --bs-btn-border-color:          var(--ui-border-strong);
    --bs-btn-hover-color:           var(--ui-text);
    --bs-btn-hover-bg:              var(--ui-surface-2);
    --bs-btn-hover-border-color:    var(--ui-border-strong);
    --bs-btn-active-color:          var(--ui-text);
    --bs-btn-active-bg:             var(--ui-surface-3);
    --bs-btn-active-border-color:   var(--ui-border-strong);
    --bs-btn-disabled-color:        var(--ui-disabled);
    --bs-btn-disabled-bg:           var(--ui-surface);
    --bs-btn-disabled-border-color: var(--ui-border);
    --bs-btn-focus-shadow-rgb:      var(--bs-secondary-rgb);
}

.btn-danger {
    --bs-btn-color:                 #fff;
    --bs-btn-bg:                    var(--danger-solid);
    --bs-btn-border-color:          var(--danger-solid);
    --bs-btn-hover-color:           #fff;
    --bs-btn-hover-bg:              var(--danger-fg);
    --bs-btn-hover-border-color:    var(--danger-fg);
    --bs-btn-active-color:          #fff;
    --bs-btn-active-bg:             var(--danger-fg);
    --bs-btn-active-border-color:   var(--danger-fg);
    --bs-btn-disabled-color:        #fff;
    --bs-btn-disabled-bg:           var(--danger-solid);
    --bs-btn-disabled-border-color: var(--danger-solid);
    --bs-btn-focus-shadow-rgb:      var(--bs-danger-rgb);
}

.btn-outline-danger {
    --bs-btn-color:                 var(--danger-fg);
    --bs-btn-bg:                    transparent;
    --bs-btn-border-color:          var(--danger-border);
    --bs-btn-hover-color:           #fff;
    --bs-btn-hover-bg:              var(--danger-solid);
    --bs-btn-hover-border-color:    var(--danger-solid);
    --bs-btn-active-color:          #fff;
    --bs-btn-active-bg:             var(--danger-solid);
    --bs-btn-active-border-color:   var(--danger-solid);
    --bs-btn-disabled-color:        var(--ui-disabled);
    --bs-btn-disabled-border-color: var(--ui-border);
    --bs-btn-focus-shadow-rgb:      var(--bs-danger-rgb);
}

.btn-success {
    --bs-btn-color:               #fff;
    --bs-btn-bg:                  var(--success-solid);
    --bs-btn-border-color:        var(--success-solid);
    --bs-btn-hover-color:         #fff;
    --bs-btn-hover-bg:            var(--success-fg);
    --bs-btn-hover-border-color:  var(--success-fg);
    --bs-btn-active-color:        #fff;
    --bs-btn-active-bg:           var(--success-fg);
    --bs-btn-active-border-color: var(--success-fg);
    --bs-btn-focus-shadow-rgb:    var(--bs-success-rgb);
}

.btn-light {
    --bs-btn-color:               var(--ui-text);
    --bs-btn-bg:                  var(--ui-surface-2);
    --bs-btn-border-color:        var(--ui-border);
    --bs-btn-hover-color:         var(--ui-text);
    --bs-btn-hover-bg:            var(--ui-surface-3);
    --bs-btn-hover-border-color:  var(--ui-border-strong);
    --bs-btn-active-color:        var(--ui-text);
    --bs-btn-active-bg:           var(--ui-surface-3);
    --bs-btn-active-border-color: var(--ui-border-strong);
}

.btn-link {
    --bs-btn-color:            var(--ui-accent);
    --bs-btn-hover-color:      var(--ui-accent-hover);
    --bs-btn-active-color:     var(--ui-accent-hover);
    --bs-btn-disabled-color:   var(--ui-disabled);
    --bs-btn-focus-shadow-rgb: var(--bs-primary-rgb);
}

/* ── Alert ────────────────────────────────────────────────────────────
   Bootstrap li deriva dai colori di tema con una formula di mix che in dark
   produce fondi quasi neri e testo illeggibile: qui usano le coppie bg/fg
   pensate apposta. */
.alert-success { --bs-alert-bg: var(--success-bg); --bs-alert-color: var(--success-fg); --bs-alert-border-color: var(--success-border); }
.alert-warning { --bs-alert-bg: var(--warning-bg); --bs-alert-color: var(--warning-fg); --bs-alert-border-color: var(--warning-border); }
.alert-danger  { --bs-alert-bg: var(--danger-bg);  --bs-alert-color: var(--danger-fg);  --bs-alert-border-color: var(--danger-border); }
.alert-info    { --bs-alert-bg: var(--info-bg);    --bs-alert-color: var(--info-fg);    --bs-alert-border-color: var(--info-border); }
.alert-secondary { --bs-alert-bg: var(--neutral-bg); --bs-alert-color: var(--neutral-fg); --bs-alert-border-color: var(--neutral-border); }
