/*
 * Tenant UI theme v2 (ELI-0028, openspec/changes/tenant-ui-theme).
 *
 * Only active under <body class="theme-v2">. Every colour comes from a --c-* token emitted
 * by App\Tenancy\Theme in the layout: no literal colours in this file (a test enforces it).
 * Loaded after app2.css / tendencias.css, whose older rules use !important in places —
 * hence the matching !important on the few properties they force.
 */

/* ---------- Base ---------- */

body.theme-v2 {
    background: var(--c-neutral-bg);
    color: var(--c-neutral-text);
}

/* :where() keeps this at the specificity of "body.theme-v2 a", so components
   (pagination, buttons, nav) can override link colours normally. */
body.theme-v2 :where(a:not(.btn):not(.nav-link):not(.dropdown-item):not(.navbar-brand):not(.page-link)) {
    color: var(--c-primary-text);
}

body.theme-v2 :where(a:not(.btn):not(.nav-link):not(.dropdown-item):not(.navbar-brand):not(.page-link)):hover {
    color: var(--c-primary-hover);
}

body.theme-v2 h1, body.theme-v2 h2, body.theme-v2 h3, body.theme-v2 h4 {
    color: var(--c-neutral-text);
}

/* ---------- Buttons ---------- */

body.theme-v2 .btn {
    border-radius: 8px;
    font-weight: 600;
    letter-spacing: 0.01em;
    box-shadow: none;
    border: 1px solid transparent;
    margin: 0;
}

body.theme-v2 .btn:hover {
    transform: none;
    box-shadow: none;
}

body.theme-v2 .btn:focus,
body.theme-v2 .btn.focus {
    box-shadow: 0 0 0 0.2rem rgba(var(--c-primary-rgb), 0.3) !important;
}

/* Primary action. btn-info / btn-success were used as "the brand button" across the
   app; until each one is audited (tenant-ui-theme D3) they render as primary too. */
body.theme-v2 .btn-primary,
body.theme-v2 .btn-info,
body.theme-v2 .btn-success,
body.theme-v2 .btn_mainmenu_newreport {
    background-color: var(--c-primary) !important;
    border-color: var(--c-primary) !important;
    color: var(--c-on-primary) !important;
}

body.theme-v2 .btn-primary:hover,
body.theme-v2 .btn-info:hover,
body.theme-v2 .btn-success:hover,
body.theme-v2 .btn_mainmenu_newreport:hover {
    background-color: var(--c-primary-hover) !important;
    border-color: var(--c-primary-hover) !important;
    color: var(--c-on-primary) !important;
}

body.theme-v2 .btn-primary:active,
body.theme-v2 .btn-info:active,
body.theme-v2 .btn-success:active {
    background-color: var(--c-primary-active) !important;
    border-color: var(--c-primary-active) !important;
}

body.theme-v2 .btn_mainmenu_newreport {
    border-radius: 999px !important;
    box-shadow: none !important;
}

/* Secondary: quiet neutral outline. */
body.theme-v2 .btn-secondary,
body.theme-v2 .btn-outline-secondary,
body.theme-v2 .btn-light {
    background-color: var(--c-neutral-surface);
    border-color: var(--c-neutral-border);
    color: var(--c-neutral-secondary);
}

body.theme-v2 .btn-secondary:hover,
body.theme-v2 .btn-outline-secondary:hover,
body.theme-v2 .btn-light:hover {
    background-color: var(--c-primary-subtle);
    border-color: var(--c-primary-border);
    color: var(--c-primary-text);
}

/* Brand outline (alternatives: "Ver", filters). */
body.theme-v2 .btn-outline-primary,
body.theme-v2 .btn-outline-info,
body.theme-v2 .btn-outline-success {
    background-color: transparent;
    border-color: var(--c-primary-border);
    color: var(--c-primary-text);
}

body.theme-v2 .btn-outline-primary:hover,
body.theme-v2 .btn-outline-info:hover,
body.theme-v2 .btn-outline-success:hover {
    background-color: var(--c-primary-subtle);
    border-color: var(--c-primary);
    color: var(--c-primary-text);
}

/* Semantic: fixed, never brand. */
body.theme-v2 .btn-danger {
    background-color: var(--c-danger);
    border-color: var(--c-danger);
    color: var(--c-neutral-surface);
}

body.theme-v2 .btn-danger:hover {
    filter: brightness(0.92);
    color: var(--c-neutral-surface);
}

body.theme-v2 .btn-outline-danger {
    border-color: var(--c-danger);
    color: var(--c-danger);
}

body.theme-v2 .btn-outline-danger:hover {
    background-color: var(--c-danger-subtle);
    color: var(--c-danger);
}

/* Soft, so it never reads as the primary button (an orange brand is close to amber). */
body.theme-v2 .btn-warning {
    background-color: var(--c-warning-subtle);
    border-color: var(--c-warning);
    color: var(--c-warning);
}

body.theme-v2 .btn-warning:hover {
    background-color: var(--c-warning);
    color: var(--c-neutral-surface);
}

body.theme-v2 .btn-link {
    color: var(--c-primary-text);
}

/* ---------- Navigation ---------- */

body.theme-v2 .navbar {
    border-bottom: 3px solid var(--c-primary);
}

body.theme-v2 .navbar .nav-link {
    color: var(--c-neutral-secondary);
}

body.theme-v2 .navbar .nav-link:hover,
body.theme-v2 .navbar .nav-item.active .nav-link,
body.theme-v2 .navbar .nav-link.active {
    color: var(--c-primary-text);
}

body.theme-v2 .elim-app-footer {
    color: var(--c-neutral-text);
}

body.theme-v2 .nav-tabs {
    border-bottom-color: var(--c-neutral-border);
}

body.theme-v2 .nav-tabs .nav-link {
    color: var(--c-neutral-secondary);
    border: none;
    border-bottom: 2px solid transparent;
}

body.theme-v2 .nav-tabs .nav-link:hover {
    color: var(--c-primary-text);
    border-bottom-color: var(--c-primary-border);
}

body.theme-v2 .nav-tabs .nav-link.active {
    color: var(--c-primary-text);
    background: transparent;
    border-bottom-color: var(--c-primary);
}

body.theme-v2 .nav-pills .nav-link.active {
    background-color: var(--c-primary);
    color: var(--c-on-primary);
}

body.theme-v2 .page-link {
    color: var(--c-primary-text);
    border-color: var(--c-neutral-border);
}

body.theme-v2 .page-link:hover {
    background-color: var(--c-primary-subtle);
    color: var(--c-primary-text);
}

body.theme-v2 .page-item.active .page-link {
    background-color: var(--c-primary);
    border-color: var(--c-primary);
    color: var(--c-on-primary);
}

body.theme-v2 .dropdown-item:active {
    background-color: var(--c-primary);
    color: var(--c-on-primary);
}

/* ---------- Surfaces ---------- */

body.theme-v2 .card {
    border-color: var(--c-neutral-border);
    border-radius: 10px;
}

body.theme-v2 .card-header {
    background: var(--c-neutral-surface);
    border-bottom-color: var(--c-neutral-border);
}

/* Flat headers: the old gradients were set inline, so this needs !important. */
body.theme-v2 .modal-header {
    background: var(--c-primary) !important;
    color: var(--c-on-primary) !important;
    border-bottom: none;
}

body.theme-v2 .modal-header .modal-title,
body.theme-v2 .modal-header h1, body.theme-v2 .modal-header h2, body.theme-v2 .modal-header h3,
body.theme-v2 .modal-header h4, body.theme-v2 .modal-header h5 {
    color: var(--c-on-primary);
}

body.theme-v2 .modal-header .close {
    color: var(--c-on-primary);
    text-shadow: none;
    opacity: 0.85;
}

body.theme-v2 .modal-content {
    border: none;
    border-radius: 12px;
    overflow: hidden;
}

/* Tables: a quiet tinted header instead of a solid/gradient brand bar. */
body.theme-v2 .table thead tr,
body.theme-v2 .table thead th,
body.theme-v2 .table-tickets thead th {
    background: var(--c-primary-subtle) !important;
    color: var(--c-primary-text) !important;
    border-bottom: 1px solid var(--c-primary-border) !important;
}

body.theme-v2 .table-hover tbody tr:hover {
    background-color: var(--c-primary-subtle);
}

/* ---------- Forms ---------- */

body.theme-v2 .form-control:focus,
body.theme-v2 .custom-select:focus {
    border-color: var(--c-primary);
    box-shadow: 0 0 0 0.2rem rgba(var(--c-primary-rgb), 0.18);
}

body.theme-v2 .custom-control-input:checked ~ .custom-control-label::before {
    background-color: var(--c-primary);
    border-color: var(--c-primary);
}

body.theme-v2 input[type="checkbox"],
body.theme-v2 input[type="radio"] {
    accent-color: var(--c-primary);
}

/* ---------- Status ---------- */

body.theme-v2 .badge-primary,
body.theme-v2 .badge-info {
    background-color: var(--c-primary-subtle);
    color: var(--c-primary-text);
}

body.theme-v2 .badge-success { background-color: var(--c-success-subtle); color: var(--c-success); }
body.theme-v2 .badge-warning { background-color: var(--c-warning-subtle); color: var(--c-warning); }
body.theme-v2 .badge-danger  { background-color: var(--c-danger-subtle);  color: var(--c-danger); }
body.theme-v2 .badge-secondary { background-color: var(--c-neutral-border); color: var(--c-neutral-secondary); }

body.theme-v2 .alert-success { background-color: var(--c-success-subtle); color: var(--c-success); border-color: transparent; }
body.theme-v2 .alert-warning { background-color: var(--c-warning-subtle); color: var(--c-warning); border-color: transparent; }
body.theme-v2 .alert-danger  { background-color: var(--c-danger-subtle);  color: var(--c-danger);  border-color: transparent; }
body.theme-v2 .alert-info    { background-color: var(--c-info-subtle);    color: var(--c-info);    border-color: transparent; }

/* ---------- Select2 ---------- */

body.theme-v2 .select2-container--default .select2-results__option--highlighted[aria-selected],
body.theme-v2 .select2-container--default .select2-results__option--highlighted.select2-results__option--selectable {
    background-color: var(--c-primary);
    color: var(--c-on-primary);
}

body.theme-v2 .select2-container--default.select2-container--focus .select2-selection--multiple,
body.theme-v2 .select2-container--default.select2-container--open .select2-selection--single {
    border-color: var(--c-primary);
}
