/* ============================================
   TEMAS - Bazani
   Light / Dark / High Contrast (WCAG 2.2)
   ============================================ */

/* === SEMANTIC TOKENS === */
:root {
  --transition-speed: 0.2s;
}

/* === LIGHT THEME === */
.light-theme {
  --bg-primary: #ffffff;
  --bg-secondary: #f8f9fa;
  --bg-tertiary: #e9ecef;
  --bg-card: #ffffff;
  --bg-sidebar: #2c3e50;
  --bg-input: #ffffff;
  --bg-hover: #f1f3f5;
  --bg-active: #e9ecef;

  --text-primary: #212529;
  --text-secondary: #495057;
  --text-muted: #6c757d;
  --text-inverse: #ffffff;
  --text-link: #0d6efd;

  --border-primary: #dee2e6;
  --border-secondary: #adb5bd;
  --border-focus: #86b7fe;

  --accent-primary: #0d6efd;
  --accent-secondary: #6c757d;
  --accent-success: #198754;
  --accent-danger: #dc3545;
  --accent-warning: #ffc107;
  --accent-info: #0dcaf0;

  --valor-liquido-bg: #d4edda;
  --valor-liquido-text: #155724;
  --saldo-alerta-bg: #fff3cd;
  --saldo-alerta-text: #856404;
  --divergencia-bg: #f8d7da;
  --divergencia-text: #721c24;

  --shadow-sm: 0 0.125rem 0.25rem rgba(0,0,0,0.075);
  --shadow-md: 0 0.5rem 1rem rgba(0,0,0,0.15);
  --shadow-lg: 0 1rem 3rem rgba(0,0,0,0.175);

  --navbar-bg: #2c3e50;
  --navbar-text: #ffffff;
  --footer-bg: #f8f9fa;
  --footer-text: #6c757d;
}

body.light-theme {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
}

/* === DARK THEME === */
.dark-theme {
  --bg-primary: #1a1a2e;
  --bg-secondary: #16213e;
  --bg-tertiary: #0f3460;
  --bg-card: #1a1a2e;
  --bg-sidebar: #0f0f23;
  --bg-input: #16213e;
  --bg-hover: #1f2b47;
  --bg-active: #0f3460;

  --text-primary: #e0e0e0;
  --text-secondary: #b0b0b0;
  --text-muted: #808080;
  --text-inverse: #1a1a2e;
  --text-link: #64b5f6;

  --border-primary: #2a2a4a;
  --border-secondary: #3a3a5a;
  --border-focus: #64b5f6;

  --accent-primary: #64b5f6;
  --accent-secondary: #90a4ae;
  --accent-success: #66bb6a;
  --accent-danger: #ef5350;
  --accent-warning: #ffa726;
  --accent-info: #29b6f6;

  --valor-liquido-bg: #1b5e20;
  --valor-liquido-text: #a5d6a7;
  --saldo-alerta-bg: #e65100;
  --saldo-alerta-text: #ffcc80;
  --divergencia-bg: #b71c1c;
  --divergencia-text: #ef9a9a;

  --shadow-sm: 0 0.125rem 0.25rem rgba(0,0,0,0.3);
  --shadow-md: 0 0.5rem 1rem rgba(0,0,0,0.4);
  --shadow-lg: 0 1rem 3rem rgba(0,0,0,0.5);

  --navbar-bg: #0f0f23;
  --navbar-text: #e0e0e0;
  --footer-bg: #1a1a2e;
  --footer-text: #808080;
}

body.dark-theme {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
}

/* === HIGH CONTRAST THEME (WCAG 2.2 - 7:1 ratio) === */
.high-contrast-theme {
  --bg-primary: #000000;
  --bg-secondary: #0a0a0a;
  --bg-tertiary: #1a1a1a;
  --bg-card: #0a0a0a;
  --bg-sidebar: #000000;
  --bg-input: #000000;
  --bg-hover: #1a1a1a;
  --bg-active: #2a2a2a;

  --text-primary: #ffffff;
  --text-secondary: #f0f0f0;
  --text-muted: #cccccc;
  --text-inverse: #000000;
  --text-link: #66b3ff;

  --border-primary: #ffffff;
  --border-secondary: #cccccc;
  --border-focus: #ffff00;

  --accent-primary: #00ccff;
  --accent-secondary: #ffffff;
  --accent-success: #00ff00;
  --accent-danger: #ff4444;
  --accent-warning: #ffff00;
  --accent-info: #00ccff;

  --valor-liquido-bg: #003300;
  --valor-liquido-text: #00ff00;
  --saldo-alerta-bg: #333300;
  --saldo-alerta-text: #ffff00;
  --divergencia-bg: #330000;
  --divergencia-text: #ff4444;

  --shadow-sm: 0 0.125rem 0.25rem rgba(255,255,255,0.1);
  --shadow-md: 0 0.5rem 1rem rgba(255,255,255,0.15);
  --shadow-lg: 0 1rem 3rem rgba(255,255,255,0.2);

  --navbar-bg: #000000;
  --navbar-text: #ffffff;
  --footer-bg: #0a0a0a;
  --footer-text: #ffffff;
}

body.high-contrast-theme {
  background-color: var(--bg-secondary);
  color: var(--text-primary);
  border-color: var(--border-primary) !important;
}

/* === GLOBAL THEME APPLICTION === */
body {
  transition: background-color var(--transition-speed), color var(--transition-speed);
}

.navbar {
  background-color: var(--navbar-bg) !important;
}

.navbar .nav-link,
.navbar .navbar-brand {
  color: var(--navbar-text) !important;
}

.navbar .nav-link:hover,
.navbar .nav-link.active {
  color: var(--accent-primary) !important;
}

.navbar-toggler {
  border-color: var(--navbar-text);
}

.navbar-toggler-icon {
  filter: invert(1);
}

.card {
  background-color: var(--bg-card);
  border-color: var(--border-primary);
  box-shadow: var(--shadow-sm);
  transition: all var(--transition-speed);
}

.card:hover {
  box-shadow: var(--shadow-md);
}

.card-header {
  background-color: var(--bg-tertiary);
  border-bottom-color: var(--border-primary);
  color: var(--text-primary);
}

.card-title {
  color: var(--text-primary);
}

.card-text {
  color: var(--text-secondary);
}

.table {
  --bs-table-bg: transparent;
  color: var(--text-primary);
}

.table > :not(caption) > * > * {
  background-color: var(--bg-card);
  color: var(--text-primary);
  border-bottom-color: var(--border-primary);
}

.table > thead {
  background-color: var(--bg-tertiary);
}

.table-hover > tbody > tr:hover > * {
  background-color: var(--bg-hover);
  color: var(--text-primary);
}

.table-striped > tbody > tr:nth-of-type(odd) > * {
  background-color: var(--bg-secondary);
}

.form-control,
.form-select {
  background-color: var(--bg-input);
  border-color: var(--border-primary);
  color: var(--text-primary);
}

.form-control:focus,
.form-select:focus {
  background-color: var(--bg-input);
  border-color: var(--border-focus);
  color: var(--text-primary);
  box-shadow: 0 0 0 0.25rem rgba(13,110,253,0.25);
}

.form-label {
  color: var(--text-primary);
  font-weight: 500;
}

.form-text {
  color: var(--text-muted);
}

.form-check-input:checked {
  background-color: var(--accent-primary);
  border-color: var(--accent-primary);
}

.form-check-label {
  color: var(--text-primary);
}

.btn-primary {
  background-color: var(--accent-primary);
  border-color: var(--accent-primary);
  color: #ffffff;
}

.btn-primary:hover {
  background-color: var(--accent-secondary);
  border-color: var(--accent-secondary);
  color: var(--text-inverse);
}

.btn-outline-primary {
  color: var(--accent-primary);
  border-color: var(--accent-primary);
}

.btn-outline-primary:hover {
  background-color: var(--accent-primary);
  color: #ffffff;
}

.btn-success {
  background-color: var(--accent-success);
  border-color: var(--accent-success);
}

.btn-danger {
  background-color: var(--accent-danger);
  border-color: var(--accent-danger);
}

.btn-warning {
  background-color: var(--accent-warning);
  border-color: var(--accent-warning);
}

.alert-success {
  background-color: var(--valor-liquido-bg);
  border-color: var(--accent-success);
  color: var(--valor-liquido-text);
}

.alert-danger {
  background-color: var(--divergencia-bg);
  border-color: var(--accent-danger);
  color: var(--divergencia-text);
}

.alert-warning {
  background-color: var(--saldo-alerta-bg);
  border-color: var(--accent-warning);
  color: var(--saldo-alerta-text);
}

.alert-info {
  background-color: var(--bg-tertiary);
  border-color: var(--accent-info);
  color: var(--text-primary);
}

.dropdown-menu {
  background-color: var(--bg-card);
  border-color: var(--border-primary);
}

.dropdown-item {
  color: var(--text-primary);
}

.dropdown-item:hover {
  background-color: var(--bg-hover);
  color: var(--text-primary);
}

.dropdown-divider {
  border-color: var(--border-primary);
}

.modal-content {
  background-color: var(--bg-card);
  border-color: var(--border-primary);
}

.modal-header {
  border-bottom-color: var(--border-primary);
}

.modal-footer {
  border-top-color: var(--border-primary);
}

.dark-theme .btn-close,
.high-contrast-theme .btn-close {
  filter: invert(1);
}

/* === COMPONENTES ESPECIFICOS === */

/* Valor Liquido - Destaque visual */
.valor-liquido {
  background-color: var(--valor-liquido-bg);
  color: var(--valor-liquido-text);
  padding: 0.25rem 0.5rem;
  border-radius: 0.375rem;
  font-weight: 700;
  font-size: 1.1em;
}

/* Saldo Alerta */
.saldo-alerta {
  background-color: var(--saldo-alerta-bg);
  color: var(--saldo-alerta-text);
  padding: 0.25rem 0.5rem;
  border-radius: 0.375rem;
  font-weight: 600;
}

/* Divergencia */
.divergencia {
  background-color: var(--divergencia-bg);
  color: var(--divergencia-text);
  padding: 0.25rem 0.5rem;
  border-radius: 0.375rem;
  font-weight: 600;
}

/* Status badges */
.badge-pendente,
.badge-rascunho { background-color: var(--accent-warning); color: #000; }
.badge-confirmado,
.badge-ativo,
.badge-carregado,
.badge-finalizado,
.badge-concluido { background-color: var(--accent-success); color: #fff; }
.badge-cancelado,
.badge-cancelada,
.badge-inativo,
.badge-bloqueado,
.badge-erro,
.badge-rejeitado { background-color: var(--accent-danger); color: #fff; }
.badge-em-andamento,
.badge-estornada { background-color: var(--accent-info); color: #000; }

/* Pagination */
.page-link {
  background-color: var(--bg-card);
  border-color: var(--border-primary);
  color: var(--accent-primary);
}

.page-item.active .page-link {
  background-color: var(--accent-primary);
  border-color: var(--accent-primary);
  color: #ffffff;
}

.page-link:hover {
  background-color: var(--bg-hover);
  color: var(--accent-primary);
}

/* Breadcrumb */
.breadcrumb {
  background-color: var(--bg-tertiary);
  padding: 0.75rem 1rem;
  border-radius: 0.375rem;
}

.breadcrumb-item a {
  color: var(--accent-primary);
  text-decoration: none;
}

.breadcrumb-item.active {
  color: var(--text-muted);
}

/* Footer */
.footer {
  background-color: var(--footer-bg) !important;
  color: var(--footer-text) !important;
  border-top-color: var(--border-primary) !important;
}

/* Accessibility - Focus visible */
*:focus-visible {
  outline: 3px solid var(--border-focus) !important;
  outline-offset: 2px !important;
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* OS prefers-color-scheme */
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]):not([data-theme="high-contrast"]) {
    --bg-primary: #1a1a2e;
    --bg-secondary: #16213e;
    --text-primary: #e0e0e0;
  }
}

/* High contrast OS preference */
@media (prefers-contrast: high) {
  :root:not([data-theme="light"]):not([data-theme="dark"]) {
    --border-primary: #ffffff;
    --border-focus: #ffff00;
  }
}

@media (forced-colors: active) {
  .btn, .form-control, .form-select, .card, .table {
    border: 1px solid ButtonText;
  }

  .btn-primary {
    background-color: Highlight;
    color: HighlightText;
  }
}

/* Print styles */
@media print {
  .navbar, .footer, .btn, .dropdown, .pagination {
    display: none !important;
  }

  .card {
    box-shadow: none;
    border: 1px solid #000;
  }

  body {
    background: #fff;
    color: #000;
  }
}
