/*
  Tema escuro — correções dos componentes que não seguem os tokens --am-*.

  Duas camadas ligam juntas (ver public/javascripts/astur-theme.js):
    - <html data-am-theme="dark">  → tokens --am-* (astur-design-system.css)
    - #page-container.dark-mode    → ~550 regras `.dark-mode …` do Dashmix

  O Dashmix escurece formulários, tabelas, paginação e blocos, mas com a
  paleta cinzenta dele (#1b1f27, #2c323f), que ao lado do azul-marinho dos
  tokens parecia outro produto. Este ficheiro alinha essas superfícies com os
  tokens e cobre o que tem cor clara fixa: o thead das tabelas legacy, os
  overlays de carregamento, as listras das tabelas e botões "alt".

  Tudo escopado em [data-am-theme="dark"]: o tema claro não muda nada.
  Carregado por último em astur-styles.ejs para ganhar a cascata sem
  precisar de !important — os poucos que existem abaixo cobrem regras que já
  tinham !important antes.
*/

/* ── superfícies de base ─────────────────────────────────────────────── */

[data-am-theme="dark"] #page-container.dark-mode,
[data-am-theme="dark"] #page-container.dark-mode #main-container {
  background-color: var(--am-bg);
  color: var(--am-text);
}

[data-am-theme="dark"] #page-footer,
[data-am-theme="dark"] .am-app .bg-body-light,
[data-am-theme="dark"] .am-app .bg-body-extra-light,
[data-am-theme="dark"] .am-app .bg-white,
[data-am-theme="dark"] .am-app .bg-light {
  background-color: var(--am-surface) !important;
  color: var(--am-text);
}

[data-am-theme="dark"] #page-footer {
  border-top: 1px solid var(--am-border);
  color: var(--am-text-muted);
}

/* Dashmix: `.dark-mode .block .block-header-default { #2c323f !important }` */
[data-am-theme="dark"] .am-app .block .block-header-default,
[data-am-theme="dark"] .am-app .block.block-themed > .block-header {
  background-color: transparent !important;
  border-bottom-color: var(--am-border);
}

/* Dashmix pinta estes com !important em quatro cinzentos diferentes. */
[data-am-theme="dark"] .am-app .bg-body {
  background-color: var(--am-bg) !important;
}

[data-am-theme="dark"] .am-app .bg-body-dark {
  background-color: var(--am-bg) !important;
}

[data-am-theme="dark"] .am-app .block {
  background-color: var(--am-surface);
  box-shadow: var(--am-shadow-sm);
}

[data-am-theme="dark"] .am-app .text-dark,
[data-am-theme="dark"] .am-app .text-black {
  color: var(--am-text) !important;
}

[data-am-theme="dark"] .am-app .text-muted {
  color: var(--am-text-muted) !important;
}

[data-am-theme="dark"] .am-app hr,
[data-am-theme="dark"] .am-app .border,
[data-am-theme="dark"] .am-app .border-top,
[data-am-theme="dark"] .am-app .border-bottom {
  border-color: var(--am-border) !important;
}

/* ── formulários ─────────────────────────────────────────────────────── */

[data-am-theme="dark"] .am-app .form-control,
[data-am-theme="dark"] .am-app .form-select,
[data-am-theme="dark"] .am-app .input-group-text {
  background-color: var(--am-bg);
  border-color: var(--am-border-strong);
  color: var(--am-text);
}

[data-am-theme="dark"] .am-app .form-control::placeholder {
  color: var(--am-text-subtle);
}

[data-am-theme="dark"] .am-app .form-control:focus,
[data-am-theme="dark"] .am-app .form-select:focus {
  background-color: var(--am-bg);
  border-color: var(--am-primary);
  box-shadow: 0 0 0 0.2rem var(--am-primary-soft);
  color: var(--am-text);
}

[data-am-theme="dark"] .am-app .form-control:disabled,
[data-am-theme="dark"] .am-app .form-control[readonly],
[data-am-theme="dark"] .am-app .form-select:disabled {
  background-color: var(--am-surface-hover);
  color: var(--am-text-muted);
}

[data-am-theme="dark"] .am-app .form-control::file-selector-button {
  background-color: var(--am-surface-hover);
  color: var(--am-text);
  border-color: var(--am-border-strong);
}

[data-am-theme="dark"] .am-app .form-control:hover:not(:disabled):not([readonly])::file-selector-button {
  background-color: var(--am-border-strong);
}

/* A seta do <select> é um SVG escuro embutido no Bootstrap. */
[data-am-theme="dark"] .am-app .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='%2394a3b8' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e");
}

[data-am-theme="dark"] .am-app .form-check-input {
  background-color: var(--am-bg);
  border-color: var(--am-border-strong);
}

[data-am-theme="dark"] .am-app .form-check-input:checked {
  background-color: var(--am-primary);
  border-color: var(--am-primary);
}

[data-am-theme="dark"] .am-app .form-label,
[data-am-theme="dark"] .am-app label {
  color: var(--am-text);
}

/* Select2 (produtos, tradução, exportar) */
[data-am-theme="dark"] .select2-container--default .select2-selection--single,
[data-am-theme="dark"] .select2-container--default .select2-selection--multiple {
  background-color: var(--am-bg);
  border-color: var(--am-border-strong);
}

[data-am-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__rendered,
[data-am-theme="dark"] .select2-container--default .select2-search--inline .select2-search__field {
  color: var(--am-text);
}

[data-am-theme="dark"] .select2-container--default .select2-selection--single .select2-selection__placeholder,
[data-am-theme="dark"] .select2-container--default .select2-search--inline .select2-search__field::placeholder {
  color: var(--am-text-subtle);
}

[data-am-theme="dark"] .select2-container--default .select2-selection--multiple .select2-selection__choice {
  background-color: var(--am-primary-soft);
  border-color: transparent;
  color: var(--am-text);
}

[data-am-theme="dark"] .select2-dropdown {
  background-color: var(--am-surface);
  border-color: var(--am-border-strong);
  color: var(--am-text);
}

[data-am-theme="dark"] .select2-container--default .select2-search--dropdown .select2-search__field {
  background-color: var(--am-bg);
  border-color: var(--am-border-strong);
  color: var(--am-text);
}

[data-am-theme="dark"] .select2-container--default .select2-results__option[aria-selected="true"],
[data-am-theme="dark"] .select2-container--default .select2-results__option--selected {
  background-color: var(--am-surface-hover);
}

[data-am-theme="dark"] .select2-container--default .select2-results__option--highlighted[aria-selected],
[data-am-theme="dark"] .select2-container--default .select2-results__option--highlighted {
  background-color: var(--am-primary);
  color: #fff;
}

/* ── tabelas ─────────────────────────────────────────────────────────── */

/*
  O thead legacy tem #f1f5f9 fixo com especificidade (0,3,2) — a correção que
  já existia em astur-tables.css, com (0,2,3), perdia. Aqui ganha pelo
  atributo do <html>.
*/
[data-am-theme="dark"] .am-app table.table > thead th,
[data-am-theme="dark"] .am-app .am-legacy-shell .table thead th,
[data-am-theme="dark"] .am-app .am-panel .table thead th {
  background-color: var(--am-surface-hover);
  color: var(--am-text-muted);
  border-color: var(--am-border);
}

[data-am-theme="dark"] .am-app .table {
  --bs-table-bg: transparent;
  --bs-table-color: var(--am-text);
  --bs-table-striped-bg: rgba(255, 255, 255, 0.025);
  --bs-table-striped-color: var(--am-text);
  --bs-table-hover-bg: var(--am-surface-hover);
  --bs-table-hover-color: var(--am-text);
  --bs-table-active-bg: var(--am-primary-soft);
  --bs-table-active-color: var(--am-text);
  color: var(--am-text);
  border-color: var(--am-border);
}

[data-am-theme="dark"] .am-app .table > :not(caption) > * > * {
  border-color: var(--am-border);
  color: var(--am-text);
}

[data-am-theme="dark"] .am-app .am-legacy-shell .table-striped > tbody > tr:nth-of-type(odd) > *,
[data-am-theme="dark"] .am-app .am-panel .table-striped > tbody > tr:nth-of-type(odd) > *,
[data-am-theme="dark"] .am-app table.dataTable.stripe tbody tr.odd {
  background-color: rgba(255, 255, 255, 0.025);
}

[data-am-theme="dark"] .am-app table.dataTable tbody tr {
  background-color: transparent;
}

[data-am-theme="dark"] .am-app .am-legacy-shell .table-hover > tbody > tr:hover > *,
[data-am-theme="dark"] .am-app .am-panel .table-hover > tbody > tr:hover > *,
[data-am-theme="dark"] .am-app table.dataTable tbody tr:hover > * {
  background-color: var(--am-surface-hover);
}

/* Linha selecionada (DataTables Select / checkboxes): era cinza #9ca3af com texto branco. */
[data-am-theme="dark"] .am-app table.dataTable tbody tr.selected > *,
[data-am-theme="dark"] .am-app table.dataTable tbody > tr.selected,
[data-am-theme="dark"] .am-app table.dataTable tbody > tr > .selected {
  background-color: var(--am-primary-soft) !important;
  box-shadow: none !important;
  color: var(--am-text) !important;
}

[data-am-theme="dark"] .am-app table.dataTable tbody tr.selected a {
  color: var(--am-primary);
}

[data-am-theme="dark"] .am-app .dataTables_wrapper .dataTables_info,
[data-am-theme="dark"] .am-app .dataTables_wrapper .dataTables_length,
[data-am-theme="dark"] .am-app .dataTables_wrapper .dataTables_filter {
  color: var(--am-text-muted);
}

/* Overlays de carregamento: eram brancos translúcidos sobre fundo escuro. */
[data-am-theme="dark"] .am-table-loading {
  background: rgba(11, 15, 25, 0.82);
}

[data-am-theme="dark"] .am-app .h-loading {
  background-color: rgba(11, 15, 25, 0.92) !important;
  color: var(--am-text);
}

[data-am-theme="dark"] .am-app table .progress.push,
[data-am-theme="dark"] .am-app table .am-table-progress,
[data-am-theme="dark"] .am-app .progress {
  background: var(--am-surface-hover);
  box-shadow: none;
}

/* ── paginação ───────────────────────────────────────────────────────── */

[data-am-theme="dark"] .am-app .page-link,
[data-am-theme="dark"] .am-app .dataTables_wrapper .paginate_button {
  background-color: transparent !important;
  border-color: var(--am-border) !important;
  color: var(--am-text-muted) !important;
}

[data-am-theme="dark"] .am-app .page-link:hover,
[data-am-theme="dark"] .am-app .dataTables_wrapper .paginate_button:hover {
  background-color: var(--am-surface-hover) !important;
  color: var(--am-text) !important;
}

[data-am-theme="dark"] .am-app .page-item.active .page-link,
[data-am-theme="dark"] .am-app .dataTables_wrapper .paginate_button.current {
  background-color: var(--am-primary) !important;
  border-color: var(--am-primary) !important;
  color: #fff !important;
}

[data-am-theme="dark"] .am-app .page-item.disabled .page-link,
[data-am-theme="dark"] .am-app .dataTables_wrapper .paginate_button.disabled {
  color: var(--am-text-subtle) !important;
  opacity: 0.6;
}

/* ── botões ──────────────────────────────────────────────────────────── */

[data-am-theme="dark"] .am-app .btn-alt-primary,
[data-am-theme="dark"] .am-app .am-legacy-shell .btn-alt-primary {
  background-color: var(--am-primary-soft);
  border-color: transparent;
  color: var(--am-primary);
}

[data-am-theme="dark"] .am-app .btn-alt-primary:hover,
[data-am-theme="dark"] .am-app .am-legacy-shell .btn-alt-primary:hover {
  background-color: var(--am-primary);
  color: #fff;
}

[data-am-theme="dark"] .am-app .btn-alt-danger {
  background-color: var(--am-danger-soft);
  border-color: transparent;
  color: var(--am-danger);
}

[data-am-theme="dark"] .am-app .btn-alt-success {
  background-color: var(--am-success-soft);
  border-color: transparent;
  color: var(--am-success);
}

[data-am-theme="dark"] .am-app .btn-alt-warning {
  background-color: var(--am-warning-soft);
  border-color: transparent;
  color: var(--am-warning);
}

[data-am-theme="dark"] .am-app .btn-alt-secondary,
[data-am-theme="dark"] .am-app .btn-light {
  background-color: var(--am-surface-hover);
  border-color: var(--am-border-strong);
  color: var(--am-text);
}

[data-am-theme="dark"] .am-app .btn-alt-danger:hover,
[data-am-theme="dark"] .am-app .btn-alt-success:hover,
[data-am-theme="dark"] .am-app .btn-alt-warning:hover {
  color: #fff;
}

[data-am-theme="dark"] .am-app .btn-alt-danger:hover { background-color: var(--am-danger); }
[data-am-theme="dark"] .am-app .btn-alt-success:hover { background-color: var(--am-success); }
[data-am-theme="dark"] .am-app .btn-alt-warning:hover { background-color: var(--am-warning); }

[data-am-theme="dark"] .am-app .btn-close {
  filter: invert(1) grayscale(1) brightness(1.6);
}

/* ── modais, dropdowns, listas, abas ─────────────────────────────────── */

[data-am-theme="dark"] .modal-content,
[data-am-theme="dark"] .dropdown-menu,
[data-am-theme="dark"] .popover,
[data-am-theme="dark"] .am-app .list-group-item,
[data-am-theme="dark"] .am-app .card {
  background-color: var(--am-surface);
  border-color: var(--am-border);
  color: var(--am-text);
}

[data-am-theme="dark"] .modal-header,
[data-am-theme="dark"] .modal-footer {
  border-color: var(--am-border);
}

[data-am-theme="dark"] .dropdown-item {
  color: var(--am-text);
}

[data-am-theme="dark"] .dropdown-item:hover,
[data-am-theme="dark"] .dropdown-item:focus {
  background-color: var(--am-surface-hover);
  color: var(--am-text);
}

[data-am-theme="dark"] .am-app .nav-tabs {
  border-bottom-color: var(--am-border);
}

[data-am-theme="dark"] .am-app .nav-tabs .nav-link.active {
  background-color: transparent;
  border-color: var(--am-border) var(--am-border) var(--am-surface);
  color: var(--am-primary);
}

/* ── páginas específicas ─────────────────────────────────────────────── */

/* Explorador: árvore e pastas usavam fundos brancos fixos do nestable. */
[data-am-theme="dark"] .am-explorer .dd-handle,
[data-am-theme="dark"] .am-explorer .dd-content,
[data-am-theme="dark"] .am-explorer .dd-item > .dd-handle {
  background: var(--am-bg);
  border-color: var(--am-border);
  color: var(--am-text);
}

[data-am-theme="dark"] .am-explorer .explorer-button {
  background: var(--am-bg);
  color: var(--am-text);
}

/* Imagens em falta (ficheiro apagado do disco) mostram o alt: que se leia. */
[data-am-theme="dark"] .am-app img {
  color: var(--am-text-muted);
}

/* ── links que são componentes ─────────────────────────────────────────
   O Dashmix escuro tem `.dark-mode a:not(.mini-nav-item):not(.badge):not(.btn)
   :not(.btn-block-option):not(.block)…` = especificidade (0,6,1), a pintar
   TODO o link de #117ef8 — incluindo chips, cartões de indicador e títulos de
   linha, que têm cor própria. O id do container passa-lhe à frente. */

#page-container.dark-mode a.am-chip { color: var(--am-text-muted); }
#page-container.dark-mode a.am-chip:hover { color: var(--am-text); }
#page-container.dark-mode a.am-chip.is-active { color: #fff; }
#page-container.dark-mode a.am-kpi,
#page-container.dark-mode a.am-fila-link,
#page-container.dark-mode a.am-cal__pub,
#page-container.dark-mode .am-envio a { color: var(--am-text); }
#page-container.dark-mode a.am-fila-link:hover,
#page-container.dark-mode a.am-cal__pub:hover,
#page-container.dark-mode .am-envio a:hover { color: var(--am-primary); }
#page-container.dark-mode a.am-cal__add { color: var(--am-text-subtle); }
#page-container.dark-mode a.am-horario__add,
#page-container.dark-mode a.am-carpeta__dl { color: var(--am-text-subtle); }
#page-container.dark-mode a.am-horario__add:hover,
#page-container.dark-mode a.am-carpeta__dl:hover { color: var(--am-primary); }
#page-container.dark-mode a.am-guardado { color: var(--am-text-muted); }
#page-container.dark-mode a.am-guardado:hover { color: var(--am-primary); }
#page-container.dark-mode a.am-bib-cat,
#page-container.dark-mode a.am-bib-cat:hover { color: var(--am-text); }
#page-container.dark-mode a.am-xtree__nombre,
#page-container.dark-mode a.am-xcard,
#page-container.dark-mode a.am-xcard:hover { color: var(--am-text); }
#page-container.dark-mode a.am-xtree__nombre.is-active { color: var(--am-primary); }
#page-container.dark-mode a.am-xmigas__item { color: var(--am-text-muted); }
#page-container.dark-mode a.am-xmigas__item:hover { color: var(--am-primary); }

/* Chat: os contactos são <a>; sem isto a regra de links do Dashmix pinta-os de azul. */
#page-container.dark-mode a.am-chat__canal,
#page-container.dark-mode a.am-chat__canal:hover { color: var(--am-text); }
#page-container.dark-mode .am-chat__msg.is-mio a { color: #fff; }
