/* Bootstrap recolorido pelos temas.
   O Clinical (claro e Noite) usa o Bootstrap como sempre usou — padrão claro e
   padrão escuro — e por isso fica de fora. Os demais temas trocam as variáveis do
   Bootstrap pelos tokens --ns-* e redefinem os botões, que no CSS compilado do
   Bootstrap têm as cores fixas por classe. */

[data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"]) {
    --bs-body-bg: var(--ns-surface);
    --bs-body-bg-rgb: var(--ns-ink-rgb);
    --bs-body-color: var(--ns-text);
    --bs-emphasis-color: var(--ns-text);
    --bs-secondary-color: var(--ns-muted);
    --bs-tertiary-color: var(--ns-muted-2);
    --bs-secondary-bg: var(--ns-surface-2);
    --bs-tertiary-bg: var(--ns-surface-2);
    --bs-border-color: var(--ns-border);
    --bs-border-color-translucent: rgba(var(--ns-ink-rgb), 0.15);
    --bs-heading-color: inherit;
    --bs-link-color: var(--ns-accent-text);
    --bs-link-color-rgb: var(--ns-accent-rgb);
    --bs-link-hover-color: var(--ns-accent-text);
    --bs-code-color: var(--ns-pink-text);
    --bs-highlight-bg: var(--ns-warning-bg);

    --bs-primary: var(--ns-accent);
    --bs-primary-rgb: var(--ns-accent-rgb);
    --bs-secondary: var(--ns-muted);
    --bs-secondary-rgb: var(--ns-muted-rgb);
    --bs-success: var(--ns-accent);
    --bs-success-rgb: var(--ns-accent-rgb);
    --bs-info: var(--ns-info);
    --bs-info-rgb: var(--ns-info-rgb);
    --bs-warning: var(--ns-warning);
    --bs-warning-rgb: var(--ns-warning-rgb);
    --bs-danger: var(--ns-danger);
    --bs-danger-rgb: var(--ns-danger-rgb);
    --bs-light-rgb: var(--ns-ink-rgb);
    --bs-dark-rgb: var(--ns-ink-rgb);

    --bs-primary-text-emphasis: var(--ns-accent-text);
    --bs-primary-bg-subtle: rgba(var(--ns-accent-rgb), 0.12);
    --bs-primary-border-subtle: rgba(var(--ns-accent-rgb), 0.35);
    --bs-secondary-text-emphasis: var(--ns-text-2);
    --bs-secondary-bg-subtle: var(--ns-surface-2);
    --bs-secondary-border-subtle: var(--ns-border);
    --bs-success-text-emphasis: var(--ns-success-text);
    --bs-success-bg-subtle: var(--ns-success-bg);
    --bs-success-border-subtle: var(--ns-success-border);
    --bs-info-text-emphasis: var(--ns-info-text);
    --bs-info-bg-subtle: var(--ns-info-bg);
    --bs-info-border-subtle: var(--ns-info-border);
    --bs-warning-text-emphasis: var(--ns-warning-text);
    --bs-warning-bg-subtle: var(--ns-warning-bg);
    --bs-warning-border-subtle: var(--ns-warning-border);
    --bs-danger-text-emphasis: var(--ns-danger-text);
    --bs-danger-bg-subtle: var(--ns-danger-bg);
    --bs-danger-border-subtle: var(--ns-danger-border);
    --bs-light-text-emphasis: var(--ns-text-2);
    --bs-light-bg-subtle: var(--ns-surface-2);
    --bs-light-border-subtle: var(--ns-border);
    --bs-dark-text-emphasis: var(--ns-text);
    --bs-dark-bg-subtle: var(--ns-surface-3);
    --bs-dark-border-subtle: var(--ns-border);

    --bs-form-valid-color: var(--ns-success-text);
    --bs-form-valid-border-color: var(--ns-success);
    --bs-focus-ring-color: rgba(var(--ns-accent-rgb), 0.25);
}

/* Página e componentes que leem cores próprias */
[data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"]) body { background-color: var(--ns-bg); }

:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.card, .modal-content, .dropdown-menu:not(.navbar .dropdown-menu), .list-group-item, .popover, .toast, .offcanvas) {
    --bs-card-bg: var(--ns-surface);
    --bs-card-cap-bg: var(--ns-surface-2);
    --bs-card-border-color: var(--ns-border);
    --bs-modal-bg: var(--ns-surface);
    --bs-modal-border-color: var(--ns-border);
    --bs-dropdown-bg: var(--ns-surface);
    --bs-dropdown-link-color: var(--ns-text);
    --bs-dropdown-link-hover-bg: var(--ns-surface-2);
    --bs-dropdown-link-hover-color: var(--ns-text);
    --bs-dropdown-border-color: var(--ns-border);
    --bs-list-group-bg: var(--ns-surface);
    --bs-list-group-color: var(--ns-text);
    --bs-list-group-border-color: var(--ns-border);
    --bs-list-group-action-hover-bg: var(--ns-surface-2);
    --bs-list-group-action-hover-color: var(--ns-text);
    --bs-popover-bg: var(--ns-surface);
    --bs-popover-border-color: var(--ns-border);
    --bs-popover-body-color: var(--ns-text);
}

:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .table {
    --bs-table-color: var(--ns-text);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--ns-border);
    --bs-table-striped-bg: rgba(var(--ns-ink-rgb), 0.03);
    --bs-table-hover-bg: rgba(var(--ns-ink-rgb), 0.05);
    --bs-table-active-bg: rgba(var(--ns-ink-rgb), 0.08);
}

:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.form-control, .form-select) {
    background-color: var(--ns-surface);
    color: var(--ns-text);
    border-color: var(--ns-border);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.form-control, .form-select):focus {
    border-color: var(--ns-accent);
    box-shadow: 0 0 0 0.2rem rgba(var(--ns-accent-rgb), 0.2);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.form-control, .form-select):disabled {
    background-color: var(--ns-surface-2);
}
/* Seta dos selects: o Bootstrap define a variável no próprio .form-select (claro e escuro).
   Peso (0,2,0): vence o `[data-bs-theme=dark] .form-select` do Bootstrap (carregado antes) e
   perde para as setas de destaque das páginas (ex.: `.filter-card .form-select`, carregadas depois). */
:where([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .form-select.form-select {
    --bs-form-select-bg-img: var(--ns-select-seta-neutra);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .form-control::placeholder { color: var(--ns-muted-2); }
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .form-check-input:checked {
    background-color: var(--ns-accent);
    border-color: var(--ns-accent);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .text-muted { color: var(--ns-muted) !important; }
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .bg-light { background-color: var(--ns-surface-2) !important; }
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .bg-white { background-color: var(--ns-surface) !important; }
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .text-dark { color: var(--ns-text) !important; }

/* Botões: o Bootstrap compila as cores em cada classe; aqui elas passam a seguir o tema. */
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.btn-primary, .btn-success) {
    --bs-btn-color: var(--ns-on-accent);
    --bs-btn-bg: var(--ns-accent);
    --bs-btn-border-color: var(--ns-accent);
    --bs-btn-hover-color: var(--ns-on-accent);
    --bs-btn-hover-bg: var(--ns-accent-hover);
    --bs-btn-hover-border-color: var(--ns-accent-hover);
    --bs-btn-active-color: var(--ns-on-accent);
    --bs-btn-active-bg: var(--ns-accent-hover);
    --bs-btn-active-border-color: var(--ns-accent-hover);
    --bs-btn-disabled-color: var(--ns-on-accent);
    --bs-btn-disabled-bg: var(--ns-accent);
    --bs-btn-disabled-border-color: var(--ns-accent);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .btn-danger {
    --bs-btn-color: var(--ns-on-header);
    --bs-btn-bg: var(--ns-danger);
    --bs-btn-border-color: var(--ns-danger);
    --bs-btn-hover-color: var(--ns-on-header);
    --bs-btn-hover-bg: var(--ns-danger-text);
    --bs-btn-hover-border-color: var(--ns-danger-text);
    --bs-btn-active-bg: var(--ns-danger-text);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.btn-outline-primary, .btn-outline-success) {
    --bs-btn-color: var(--ns-accent-text);
    --bs-btn-border-color: var(--ns-accent);
    --bs-btn-hover-color: var(--ns-on-accent);
    --bs-btn-hover-bg: var(--ns-accent);
    --bs-btn-hover-border-color: var(--ns-accent);
    --bs-btn-active-color: var(--ns-on-accent);
    --bs-btn-active-bg: var(--ns-accent-hover);
    --bs-btn-active-border-color: var(--ns-accent-hover);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .btn-outline-danger {
    --bs-btn-color: var(--ns-danger-text);
    --bs-btn-border-color: var(--ns-danger);
    --bs-btn-hover-color: var(--ns-on-header);
    --bs-btn-hover-bg: var(--ns-danger);
    --bs-btn-hover-border-color: var(--ns-danger);
    --bs-btn-active-bg: var(--ns-danger);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) :is(.btn-outline-secondary, .btn-light, .btn-outline-dark) {
    --bs-btn-color: var(--ns-text-2);
    --bs-btn-bg: transparent;
    --bs-btn-border-color: var(--ns-border);
    --bs-btn-hover-color: var(--ns-text);
    --bs-btn-hover-bg: var(--ns-surface-2);
    --bs-btn-hover-border-color: var(--ns-muted-2);
    --bs-btn-active-color: var(--ns-text);
    --bs-btn-active-bg: var(--ns-surface-3);
    --bs-btn-active-border-color: var(--ns-muted-2);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .btn-secondary {
    --bs-btn-color: var(--ns-text);
    --bs-btn-bg: var(--ns-surface-3);
    --bs-btn-border-color: var(--ns-border);
    --bs-btn-hover-color: var(--ns-text);
    --bs-btn-hover-bg: var(--ns-surface-2);
    --bs-btn-hover-border-color: var(--ns-muted-2);
}
:is([data-theme]:not([data-theme="clinical"]):not([data-theme="clinical-noite"])) .btn-close {
    filter: var(--ns-btn-close-filter, none);
}
[data-bs-theme="dark"]:not([data-theme="clinical-noite"]) { --ns-btn-close-filter: invert(1) grayscale(100%) brightness(200%); }

/* Alto contraste: bordas visíveis em tudo que é clicável e foco bem marcado. */
[data-theme="alto-contraste"] :is(.btn, .form-control, .form-select, .card, .list-group-item) { border-width: 2px; }
[data-theme="alto-contraste"] a:not(.btn):not(.nav-link):not(.dropdown-item):not(.navbar-brand) { text-decoration: underline; }
[data-theme="alto-contraste"] :focus-visible { outline: 3px solid var(--ns-accent) !important; outline-offset: 2px; }

/* Dentro das áreas navy (cabeçalhos, navbar, rodapé, dropdowns escuros) o destaque
   usa a variante legível sobre o cabeçalho. No Clinical é o mesmo teal. */
:is(#busca_dropdown, .agenda-header, .ajuda-header, .al-header, .anx-header, .aud-header, .bk-hero-header, .cert-hero-header, .lgpd-header, .pc-hero-header, .pp-hero-header, .sis-header, .sol-header, .cb-card, .ce-header, .cm-header, .cons-header, .dash-header, .diag-header, .doc-header, .ex-header, .fisio-header, .lab-header, .mc-header, .med-header, .ns-navbar, .navbar .dropdown-menu, .nv-header, .pac-form-header, .pac-header, .page-header, .proc-header, .proc-page-header, .pront-header, .rv-header, .rx-header, .sig-header, .sn-header, .stats-header, .tl-header, .ns-footer) {
    --ns-accent: var(--ns-accent-on-header);
    --ns-accent-rgb: var(--ns-accent-on-header-rgb);
    --ns-accent-text: var(--ns-accent-on-header);
}
