@import url("https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@600;700&display=swap");

:root {
  /* Paleta Premium Fintech */
  --bg-primary: #09090b; /* Casi negro puro */
  --bg-secondary: #0f0f13;
  --bg-card: rgba(28, 28, 33, 0.7); /* Translucido para glassmorphism */
  --bg-card-solid: #1c1c21;
  --bg-table-header: #131316;
  --bg-table-row: rgba(43, 43, 54, 0.5);
  --bg-table-hover: rgba(63, 63, 76, 0.7);

  /* Texto */
  --text-primary: #f8fafc;
  --text-secondary: #a1a1aa;
  --text-muted: #71717a;

  /* Bordes y sombras */
  --border-color: #27272a;
  --shadow-dark: rgba(0, 0, 0, 0.5);
  --shadow-hover: rgba(0, 0, 0, 0.7);
  --glass-border: 1px solid rgba(255, 255, 255, 0.05);

  /* Estados / Acentos */
  --color-positive: #10b981; /* Esmeralda vibrante */
  --color-negative: #ef4444; /* Rojo vibrante */
  --color-accent: #8b5cf6; /* Violeta principal */
  --color-accent-hover: #7c3aed;
  --color-gold: #f59e0b; /* Ambar/Dorado */

  /* Gradientes de indicadores */
  --balance-gradient: linear-gradient(135deg, #8b5cf6, #6d28d9);
  --income-gradient: linear-gradient(135deg, #10b981, #059669);
  --expense-gradient: linear-gradient(135deg, #ef4444, #dc2626);

  /* Gradientes de bancos (más vibrantes) */
  --uala-gradient: linear-gradient(135deg, #2563eb, #3b82f6);
  --mercadopago-gradient: linear-gradient(135deg, #06b6d4, #22d3ee);
  --bbva-gradient: linear-gradient(135deg, #374151, #4b5563);
  --lemon-gradient: linear-gradient(135deg, #16a34a, #22c55e);
  --naranjax-gradient: linear-gradient(135deg, #ea580c, #f59e0b);
  --efectivo-gradient: linear-gradient(135deg, #dc2626, #ef4444);

  /* Sombras de glow sutiles */
  --accent-glow: rgba(139, 92, 246, 0.3);
  --uala-glow: rgba(59, 130, 246, 0.2);
  --mercadopago-glow: rgba(34, 211, 238, 0.2);
  --bbva-glow: rgba(75, 85, 99, 0.2);
  --lemon-glow: rgba(34, 197, 94, 0.2);
  --naranjax-glow: rgba(251, 191, 36, 0.2);
  --efectivo-glow: rgba(248, 113, 113, 0.2);
}

/* Reset y Scrollbar Global */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

::-webkit-scrollbar-track {
  background: var(--bg-primary);
}

::-webkit-scrollbar-thumb {
  background: #3f3f46;
  border-radius: 4px;
}

::-webkit-scrollbar-thumb:hover {
  background: #52525b;
}

body {
  font-family: "DM Sans", system-ui, -apple-system, sans-serif;
  background: var(--bg-primary);
  color: var(--text-primary);
  overflow-x: hidden;
  min-height: 100vh;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Space Grotesk", sans-serif;
}

#particles-js {
  z-index: -1;
}

header {
  border-bottom: 1px solid var(--border-color);
  background: rgba(9, 9, 11, 0.8) !important; /* Reemplaza bg-dark opacity-75 de Bootstrap */
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}

/* Cards con Glassmorphism */
.card {
  background-color: var(--bg-card) !important;
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  border: var(--glass-border) !important;
  border-radius: 16px;
  box-shadow: 0 4px 20px var(--shadow-dark);
  transition: transform 0.3s ease, box-shadow 0.3s ease, border-color 0.3s ease;
}

.card:hover {
  border-color: rgba(255, 255, 255, 0.1) !important;
  transform: translateY(-2px);
  box-shadow: 0 8px 30px rgba(0, 0, 0, 0.6);
}

.card-header {
  background-color: transparent !important;
  border-bottom: 1px solid var(--border-color) !important;
  padding: 1.25rem 1.5rem;
}

/* Indicadores Principales */
.bg-primary.bg-opacity-75 {
  background: linear-gradient(180deg, var(--bg-card), var(--bg-secondary)) !important;
  border-bottom: 2px solid var(--color-accent) !important;
  box-shadow: 0 4px 20px var(--shadow-dark), 0 0 15px var(--accent-glow);
}
.bg-primary.bg-opacity-75 .card-title i { color: var(--color-accent); }

.bg-success.bg-opacity-75 {
  background: linear-gradient(180deg, var(--bg-card), var(--bg-secondary)) !important;
  border-bottom: 2px solid var(--color-positive) !important;
  box-shadow: 0 4px 20px var(--shadow-dark), 0 0 15px rgba(16, 185, 129, 0.1);
}
.bg-success.bg-opacity-75 .card-title i { color: var(--color-positive); }

.bg-danger.bg-opacity-75 {
  background: linear-gradient(180deg, var(--bg-card), var(--bg-secondary)) !important;
  border-bottom: 2px solid var(--color-negative) !important;
  box-shadow: 0 4px 20px var(--shadow-dark), 0 0 15px rgba(239, 68, 68, 0.1);
}
.bg-danger.bg-opacity-75 .card-title i { color: var(--color-negative); }

#totalBalance,
#monthlyIncome,
#monthlyExpenses {
  font-family: "Space Grotesk", sans-serif;
  font-size: 2rem;
  letter-spacing: -0.5px;
}

#totalBalance {
  background: var(--balance-gradient);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
}

#monthlyIncome { color: var(--color-positive) !important; }
#monthlyExpenses { color: var(--color-negative) !important; }

/* Tabla del Libro Diario */
.table-dark {
  background-color: transparent !important;
  --bs-table-bg: transparent;
}

.table-dark th {
  background-color: var(--bg-table-header) !important;
  border-bottom: 2px solid var(--border-color);
  border-top: none;
  color: var(--text-secondary);
  font-weight: 600;
  font-size: 0.85rem;
  text-transform: uppercase;
  letter-spacing: 0.5px;
  padding: 1rem;
}

.table-dark td {
  border-bottom: 1px solid var(--border-color);
  color: var(--text-primary);
  vertical-align: middle;
  padding: 1rem;
  background-color: transparent !important;
}

.table-striped > tbody > tr:nth-of-type(odd) > * {
  background-color: var(--bg-table-row) !important;
  color: var(--text-primary);
}

.table-hover > tbody > tr:hover > * {
  background-color: var(--bg-table-hover) !important;
  color: var(--text-primary);
}

/* Badges para cuentas */
.badge {
  padding: 0.5em 0.8em;
  font-weight: 600;
  letter-spacing: 0.3px;
  border-radius: 6px;
  font-family: "DM Sans", sans-serif;
}

.badge.bg-primary { background: var(--uala-gradient) !important; }
.badge.bg-info { background: var(--mercadopago-gradient) !important; color: #fff !important; }
.badge.bg-secondary { background: var(--bbva-gradient) !important; }
.badge.bg-success { background: var(--lemon-gradient) !important; }
.badge.bg-warning { background: var(--naranjax-gradient) !important; color: #fff !important; }
.badge.bg-danger { background: var(--efectivo-gradient) !important; }

/* Modal personalizado */
.modal-content {
  background-color: var(--bg-card-solid) !important;
  border: 1px solid var(--border-color);
  box-shadow: 0 20px 40px rgba(0, 0, 0, 0.8);
  border-radius: 16px;
}

.modal-header {
  background-color: rgba(255, 255, 255, 0.02);
  border-bottom: 1px solid var(--border-color);
  padding: 1.5rem;
}

.modal-body {
  padding: 1.5rem;
}

.modal-footer {
  background-color: rgba(255, 255, 255, 0.02);
  border-top: 1px solid var(--border-color);
  padding: 1.25rem 1.5rem;
}

.modal-backdrop.show {
  opacity: 0.7;
  backdrop-filter: blur(4px);
}

/* Inputs y Selects */
.form-control,
.form-select {
  background-color: var(--bg-table-header);
  border: 1px solid var(--border-color);
  color: var(--text-primary);
  border-radius: 8px;
  padding: 0.6rem 1rem;
  transition: all 0.2s ease;
}

.form-control:focus,
.form-select:focus {
  background-color: var(--bg-secondary);
  border-color: var(--color-accent);
  box-shadow: 0 0 0 3px rgba(139, 92, 246, 0.15);
  color: var(--text-primary);
}

.form-control::placeholder {
  color: var(--text-muted);
}

/* Botones */
.btn {
  border-radius: 8px;
  font-weight: 500;
  padding: 0.6rem 1.2rem;
  transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
  font-family: "DM Sans", sans-serif;
}

.btn-primary {
  background-color: var(--color-accent);
  border-color: var(--color-accent);
}

.btn-primary:hover {
  background-color: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(139, 92, 246, 0.3);
}

.btn-success {
  background-color: var(--color-positive);
  border-color: var(--color-positive);
}

.btn-success:hover {
  background-color: #059669;
  border-color: #059669;
  transform: translateY(-1px);
  box-shadow: 0 4px 12px rgba(16, 185, 129, 0.3);
}

.btn-outline-info {
  color: var(--color-accent);
  border-color: rgba(139, 92, 246, 0.5);
}

.btn-outline-info:hover {
  background-color: rgba(139, 92, 246, 0.1);
  color: var(--color-accent);
  border-color: var(--color-accent);
}

.btn-outline-light {
  border-color: rgba(255, 255, 255, 0.15);
  color: var(--text-secondary);
}

.btn-outline-light:hover {
  background-color: rgba(255, 255, 255, 0.05);
  border-color: rgba(255, 255, 255, 0.3);
  color: var(--text-primary);
}

.btn-outline-warning {
  color: var(--color-gold);
  border-color: rgba(245, 158, 11, 0.3);
}

.btn-outline-warning:hover {
  background-color: rgba(245, 158, 11, 0.1);
  border-color: var(--color-gold);
  color: var(--color-gold);
}

.btn-outline-danger {
  color: var(--color-negative);
  border-color: rgba(239, 68, 68, 0.3);
}

.btn-outline-danger:hover {
  background-color: rgba(239, 68, 68, 0.1);
  border-color: var(--color-negative);
  color: var(--color-negative);
}

/* Animations (Manteniendo las clases originales para no romper JS) */
@keyframes fadeInUp {
  from { opacity: 0; transform: translateY(15px); }
  to { opacity: 1; transform: translateY(0); }
}

#transactionTable tbody.fade-out {
  opacity: 0;
  transition: opacity 0.15s ease-out;
}

#transactionTable tbody tr.fade-in {
  animation: fadeInUp 0.4s cubic-bezier(0.16, 1, 0.3, 1) forwards;
  opacity: 0;
}

/* Efecto de pulso suave */
@keyframes pulseGlow {
  0%, 100% { box-shadow: 0 0 0 0 rgba(139, 92, 246, 0.4); }
  50% { box-shadow: 0 0 0 4px rgba(139, 92, 246, 0); }
}

#accountFilterBadge .badge {
  animation: pulseGlow 2s infinite;
}

/* Estilos legacy de la tabla / compatibilidad */
.amount { font-weight: 600; font-variant-numeric: tabular-nums; }
.amount.positive { color: var(--color-positive); }
.amount.negative { color: var(--color-negative); }

#topAccountsContainer h5 {
  font-family: "Space Grotesk", sans-serif;
  font-size: 1.25rem;
  letter-spacing: -0.5px;
}

.account-card {
  position: relative;
  transition: transform 0.2s cubic-bezier(0.4, 0, 0.2, 1), box-shadow 0.2s ease;
  cursor: pointer;
  user-select: none;
}

.account-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 8px 20px var(--shadow-dark);
}

.account-card:active {
  transform: scale(0.98) translateY(-2px);
}

#allAccountsModal .account-row {
  transition: background-color 0.2s ease;
  cursor: pointer;
}

#allAccountsModal .account-row:hover {
  background-color: rgba(255, 255, 255, 0.05) !important;
}

/* Soporte responsive */
@media (max-width: 768px) {
  .container-lg { padding: 0 15px; }
  .table-responsive { font-size: 0.9rem; border-radius: 8px; }
  .btn { font-size: 0.9rem; padding: 0.5rem 1rem; }
  h1 { font-size: 1.5rem; }
  .card-body { padding: 1rem; }
}

@media (max-width: 576px) {
  .table th:nth-child(4),
  .table td:nth-child(4) { font-size: 0.85rem; }
  #totalBalance, #monthlyIncome, #monthlyExpenses { font-size: 1.5rem; }
}