/* =========================================================================
   LAYER 3b — VENDOR COMPONENT BRIDGE             ** GENERATED FILE **
   =========================================================================

   Regenerate with scratchpad/gen_vendor.py. Do not hand-edit: the next
   regeneration will silently discard your change.

   WHY THIS FILE EXISTS
   rq-bridge.css remaps the palette variables (--bs-primary and friends)
   onto our roles. That is not enough, because Bootstrap does NOT derive
   its component colours from them. It compiles them to literals:

       .btn-primary { --bs-btn-bg: #0d6efd; --bs-btn-border-color: #0d6efd; … }

   So a button reads #0d6efd no matter what --bs-primary says. This file
   re-derives those component variables from our roles, and it is the last
   place a literal can hide between the token layer and the screen.

   A CORRECTION, RECORDED ON PURPOSE
   This file was originally written in phase 1 and described as a
   Modernize workaround — the claim was that Modernize hardcoded component
   colours where stock Bootstrap would have used var(--bs-primary), and
   that removing the template in phase 3 would shrink this file to nothing.
   Its line count was even offered as a progress bar for that phase.

   That was wrong, and phase 3 proved it: with Modernize deleted and
   vanilla Bootstrap 5.3 in place, disabling this file turned every button
   Bootstrap blue. Both vendors bake literals into component variables;
   Modernize was not the unusual one. This layer is permanent
   infrastructure, not debt to be paid off.

   SPECIFICITY
   :root:root:root + one class = (0,4,0). More than vanilla Bootstrap needs
   on its own, and kept anyway: it costs nothing, and it is what let these
   rules win against Modernize's stacked attribute selectors while both
   were installed.
   ========================================================================= */

/* ---------- Buttons: solid ---------- */

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

:root:root:root .btn-success {
    --bs-btn-color:                var(--rq-on-accent);
    --bs-btn-bg:                   var(--rq-success);
    --bs-btn-border-color:         var(--rq-success);
    --bs-btn-hover-color:          var(--rq-on-accent);
    --bs-btn-hover-bg:             var(--rq-success-hover);
    --bs-btn-hover-border-color:   var(--rq-success-hover);
    --bs-btn-active-color:         var(--rq-on-accent);
    --bs-btn-active-bg:            var(--rq-success-hover);
    --bs-btn-active-border-color:  var(--rq-success-hover);
    --bs-btn-disabled-color:       var(--rq-on-accent);
    --bs-btn-disabled-bg:          var(--rq-success);
    --bs-btn-disabled-border-color: var(--rq-success);
    --bs-btn-focus-shadow-rgb:     var(--rq-success-rgb);
}

:root:root:root .btn-danger {
    --bs-btn-color:                var(--rq-on-accent);
    --bs-btn-bg:                   var(--rq-danger);
    --bs-btn-border-color:         var(--rq-danger);
    --bs-btn-hover-color:          var(--rq-on-accent);
    --bs-btn-hover-bg:             var(--rq-danger-hover);
    --bs-btn-hover-border-color:   var(--rq-danger-hover);
    --bs-btn-active-color:         var(--rq-on-accent);
    --bs-btn-active-bg:            var(--rq-danger-hover);
    --bs-btn-active-border-color:  var(--rq-danger-hover);
    --bs-btn-disabled-color:       var(--rq-on-accent);
    --bs-btn-disabled-bg:          var(--rq-danger);
    --bs-btn-disabled-border-color: var(--rq-danger);
    --bs-btn-focus-shadow-rgb:     var(--rq-danger-rgb);
}

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

:root:root:root .btn-info {
    --bs-btn-color:                var(--rq-on-accent);
    --bs-btn-bg:                   var(--rq-info);
    --bs-btn-border-color:         var(--rq-info);
    --bs-btn-hover-color:          var(--rq-on-accent);
    --bs-btn-hover-bg:             var(--rq-info-hover);
    --bs-btn-hover-border-color:   var(--rq-info-hover);
    --bs-btn-active-color:         var(--rq-on-accent);
    --bs-btn-active-bg:            var(--rq-info-hover);
    --bs-btn-active-border-color:  var(--rq-info-hover);
    --bs-btn-disabled-color:       var(--rq-on-accent);
    --bs-btn-disabled-bg:          var(--rq-info);
    --bs-btn-disabled-border-color: var(--rq-info);
    --bs-btn-focus-shadow-rgb:     var(--rq-info-rgb);
}

/* Secondary is a neutral, not a hue. Modernize made it cyan (#49beff),
   which put a second competing accent next to the brand blue on every
   form. It becomes a quiet surface button here. */
:root:root:root .btn-secondary {
    --bs-btn-color:                var(--rq-text);
    --bs-btn-bg:                   var(--rq-muted);
    --bs-btn-border-color:         var(--rq-border-med);
    --bs-btn-hover-color:          var(--rq-text);
    --bs-btn-hover-bg:             var(--rq-surface-sunken);
    --bs-btn-hover-border-color:   var(--rq-border-strong);
    --bs-btn-active-color:         var(--rq-text);
    --bs-btn-active-bg:            var(--rq-surface-sunken);
    --bs-btn-active-border-color:  var(--rq-border-strong);
    --bs-btn-disabled-color:       var(--rq-faint);
    --bs-btn-disabled-bg:          var(--rq-muted);
    --bs-btn-disabled-border-color: var(--rq-border);
}

/* ---------- Buttons: outline ---------- */

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

:root:root:root .btn-outline-success {
    --bs-btn-color:                var(--rq-success);
    --bs-btn-border-color:         var(--rq-success);
    --bs-btn-bg:                   transparent;
    --bs-btn-hover-color:          var(--rq-on-accent);
    --bs-btn-hover-bg:             var(--rq-success);
    --bs-btn-hover-border-color:   var(--rq-success);
    --bs-btn-active-color:         var(--rq-on-accent);
    --bs-btn-active-bg:            var(--rq-success);
    --bs-btn-active-border-color:  var(--rq-success);
    --bs-btn-disabled-color:       var(--rq-success);
    --bs-btn-disabled-border-color: var(--rq-success);
    --bs-btn-focus-shadow-rgb:     var(--rq-success-rgb);
}

:root:root:root .btn-outline-danger {
    --bs-btn-color:                var(--rq-danger);
    --bs-btn-border-color:         var(--rq-danger);
    --bs-btn-bg:                   transparent;
    --bs-btn-hover-color:          var(--rq-on-accent);
    --bs-btn-hover-bg:             var(--rq-danger);
    --bs-btn-hover-border-color:   var(--rq-danger);
    --bs-btn-active-color:         var(--rq-on-accent);
    --bs-btn-active-bg:            var(--rq-danger);
    --bs-btn-active-border-color:  var(--rq-danger);
    --bs-btn-disabled-color:       var(--rq-danger);
    --bs-btn-disabled-border-color: var(--rq-danger);
    --bs-btn-focus-shadow-rgb:     var(--rq-danger-rgb);
}

:root:root:root .btn-outline-warning {
    --bs-btn-color:                var(--rq-warning);
    --bs-btn-border-color:         var(--rq-warning);
    --bs-btn-bg:                   transparent;
    --bs-btn-hover-color:          var(--rq-on-warning);
    --bs-btn-hover-bg:             var(--rq-warning);
    --bs-btn-hover-border-color:   var(--rq-warning);
    --bs-btn-active-color:         var(--rq-on-warning);
    --bs-btn-active-bg:            var(--rq-warning);
    --bs-btn-active-border-color:  var(--rq-warning);
    --bs-btn-disabled-color:       var(--rq-warning);
    --bs-btn-disabled-border-color: var(--rq-warning);
    --bs-btn-focus-shadow-rgb:     var(--rq-warning-rgb);
}

:root:root:root .btn-outline-info {
    --bs-btn-color:                var(--rq-info);
    --bs-btn-border-color:         var(--rq-info);
    --bs-btn-bg:                   transparent;
    --bs-btn-hover-color:          var(--rq-on-accent);
    --bs-btn-hover-bg:             var(--rq-info);
    --bs-btn-hover-border-color:   var(--rq-info);
    --bs-btn-active-color:         var(--rq-on-accent);
    --bs-btn-active-bg:            var(--rq-info);
    --bs-btn-active-border-color:  var(--rq-info);
    --bs-btn-disabled-color:       var(--rq-info);
    --bs-btn-disabled-border-color: var(--rq-info);
    --bs-btn-focus-shadow-rgb:     var(--rq-info-rgb);
}

/* ---------- Links ---------- */
:root:root:root .btn-link {
    --bs-btn-color:       var(--rq-accent);
    --bs-btn-hover-color: var(--rq-accent-hover);
}

/* ---------- Nav pills / tabs ---------- */
:root:root:root .nav-pills {
    --bs-nav-pills-link-active-bg:    var(--rq-accent);
    --bs-nav-pills-link-active-color: var(--rq-on-accent);
}
:root:root:root .nav-tabs {
    --bs-nav-tabs-link-active-color:        var(--rq-accent);
    --bs-nav-tabs-link-active-border-color: var(--rq-accent);
    --bs-nav-tabs-border-color:             var(--rq-border);
}
:root:root:root .nav {
    --bs-nav-link-color:       var(--rq-sub);
    --bs-nav-link-hover-color: var(--rq-accent);
}

/* ---------- List group ---------- */
:root:root:root .list-group {
    --bs-list-group-bg:                 var(--rq-surface);
    --bs-list-group-color:              var(--rq-text);
    --bs-list-group-border-color:       var(--rq-border);
    --bs-list-group-action-hover-bg:    var(--rq-muted);
    --bs-list-group-active-bg:          var(--rq-accent);
    --bs-list-group-active-border-color: var(--rq-accent);
    --bs-list-group-active-color:       var(--rq-on-accent);
}

/* ---------- Pagination ---------- */
:root:root:root .pagination {
    --bs-pagination-color:              var(--rq-sub);
    --bs-pagination-bg:                 var(--rq-surface);
    --bs-pagination-border-color:       var(--rq-border);
    --bs-pagination-hover-color:        var(--rq-accent);
    --bs-pagination-hover-bg:           var(--rq-muted);
    --bs-pagination-active-bg:          var(--rq-accent);
    --bs-pagination-active-border-color: var(--rq-accent);
    --bs-pagination-active-color:       var(--rq-on-accent);
}

/* ---------- Forms ---------- */
:root:root:root .form-control,
:root:root:root .form-select {
    background-color: var(--rq-surface);
    border-color:     var(--rq-border-med);
    color:            var(--rq-text);
}
:root:root:root .form-control::placeholder { color: var(--rq-faint); }
:root:root:root .form-control:focus,
:root:root:root .form-select:focus {
    background-color: var(--rq-surface);
    border-color:     var(--rq-accent);
    color:            var(--rq-text);
    box-shadow:       0 0 0 .2rem rgba(var(--rq-accent-rgb), .22);
}
:root:root:root .form-check-input:checked {
    background-color: var(--rq-accent);
    border-color:     var(--rq-accent);
}
:root:root:root .form-check-input:focus {
    border-color: var(--rq-accent);
    box-shadow:   0 0 0 .2rem rgba(var(--rq-accent-rgb), .22);
}

/* ---------- Progress / spinners ---------- */
:root:root:root .progress {
    --bs-progress-bg:     var(--rq-muted);
    --bs-progress-bar-bg: var(--rq-accent);
}

/* ---------- Alerts ----------
   Bootstrap derives alert colours from the -bg-subtle / -border-subtle /
   -text-emphasis families, which rq-bridge.css already remaps, so alerts
   need no per-variant rules here. Listed for the next person who greps
   this file wondering why they are missing. */

/* ---------- Badges ----------
   Same: .text-bg-* utilities read --bs-<variant> and --bs-<variant>-rgb,
   both remapped in rq-bridge.css. Money badges are a product concept
   rather than a Bootstrap variant and live in rq-utilities.css. */
