/* =========================================================
   Club Fortuna CRM · superficies financieras — específico del CRM
   (sidebar, panel del jugador, historial y vista de dashboard). El kit compartido está en finance-kit.css
   (copia idéntica en control-clubfortuna): aquí solo se afina su aspecto DENTRO del CRM, con selectores
   acotados al CRM (#dashboard, .fin-dialog) en lugar de !important.
   ========================================================= */
/* ---------- sidebar: fichas disponibles ---------- */
.fin-side-balance {
  border-top: 1px solid var(--line-soft); border-bottom: 1px solid var(--line-soft);
  padding: var(--space-3) var(--space-2); display: grid; gap: 2px;
}
.fin-side-head { display: flex; align-items: center; justify-content: space-between; gap: 6px; color: var(--text-soft); font-size: var(--text-sm); }
.fin-side-balance .fin-amount { font-size: var(--text-xl); font-weight: var(--weight-semibold); letter-spacing: -.01em; color: var(--text); overflow-wrap: anywhere; line-height: 1.2; }
.fin-side-balance small { color: var(--text-mute); font-size: var(--text-xs); }
.fin-side-balance.is-loading .fin-amount { opacity: .55; }
.fin-side-balance.is-error small { color: var(--warning); }
.fin-flash { animation: fin-flash 1.1s ease-out; }
@keyframes fin-flash { 0% { color: var(--accent-text); } 100% { color: var(--text); } }

.fin-sidebar .nav-copy { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; text-align: left; }
.fin-sidebar .nav-item { width: 100%; }

/* ---------- panel del jugador ---------- */
.fin-player { display: grid; gap: var(--space-3); }
.fin-player .section-heading { margin-bottom: 0; }
.fin-player .heading-actions { display: flex; align-items: center; gap: var(--space-1); }
.fin-balance-block { display: grid; gap: 2px; }
/* El saldo es la cifra protagonista de la ficha. */
.fin-amount-xl { font-size: 28px; font-weight: var(--weight-semibold); letter-spacing: -.02em; line-height: 1.15; color: var(--text); overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
.fin-amount-xl small { font-size: var(--text-base); font-weight: var(--weight-regular); color: var(--text-soft); letter-spacing: 0; }
.fin-last-block { display: grid; gap: 6px; padding-top: var(--space-3); border-top: 1px solid var(--line-soft); }
.fin-last { margin: 0; display: flex; flex-wrap: wrap; align-items: center; gap: 6px var(--space-3); font-size: var(--text-base); }
.fin-last-date { color: var(--text-mute); font-size: var(--text-sm); }
.fin-player-actions { display: grid; grid-template-columns: 1fr 1fr; gap: var(--space-2); }
.fin-player-actions .btn { padding: 0 var(--space-2); }
.fin-player-actions .btn:disabled { background: transparent; border-color: var(--line); color: var(--text-mute); opacity: 1; cursor: not-allowed; }
.fin-latest-load { display: grid; gap: var(--space-1); border-top: 1px solid var(--line-soft); padding-top: var(--space-3); font-size: var(--text-sm); }
.fin-latest-load[hidden] { display: none; }
.fin-latest-load strong { font-size: var(--text-base); color: var(--text); }
.fin-latest-load span { color: var(--text-soft); }
.fin-bonus-loads { display: grid; gap: var(--space-2); max-height: 240px; overflow: auto; }
.fin-bonus-load { display: flex; align-items: center; gap: var(--space-3); border: 1px solid var(--line); border-radius: var(--radius-sm); background: transparent; padding: var(--space-3); color: var(--text); cursor: pointer; }
.fin-bonus-load:has(input:checked) { border-color: var(--accent-line); background: var(--accent-soft); }
.fin-bonus-load:has(input:disabled) { opacity: .58; cursor: not-allowed; }
.fin-bonus-load-main { display: grid; gap: 2px; flex: 1; }
.fin-bonus-load-main small { color: var(--text-soft); }
.fin-bonus-badge { color: var(--accent-text); font-size: var(--text-xs); font-weight: var(--weight-semibold); }
.fin-bonus-load:has(input:disabled) .fin-bonus-badge { color: var(--text-soft); }
.fin-bonus-modes { display: flex; gap: var(--space-4); margin-bottom: var(--space-3); font-size: var(--text-base); }
.fin-bonus-modes label { display: flex; align-items: center; gap: 6px; }
.fin-link-btn {
  justify-self: start; display: inline-flex; align-items: center; gap: var(--space-2); min-height: var(--control-h-sm); padding: 0 var(--space-2); margin-left: calc(-1 * var(--space-2));
  border: 0; border-radius: var(--radius-sm); background: transparent; color: var(--text-soft); font-size: var(--text-base); font-weight: var(--weight-medium);
}
.fin-link-btn .icon { width: 16px; height: 16px; }
.fin-link-btn:hover { background: var(--field); color: var(--text); }
.fin-link-btn:disabled { color: var(--text-mute); cursor: not-allowed; }
.fin-caps { margin: 0; color: var(--text-mute); font-size: var(--text-sm); }
.fin-inline-state { display: grid; gap: 6px; padding: var(--space-3); border-radius: var(--radius-sm); border: 1px solid var(--line); background: var(--field); font-size: var(--text-base); }
.fin-inline-state strong { font-size: var(--text-base); }
.fin-inline-state span { color: var(--text-soft); }
.fin-inline-state .btn { height: var(--control-h-sm); justify-self: start; }
.fin-inline-state.tone-warning { border-color: rgba(224, 195, 106, .35); background: var(--fin-warning-soft); }
.fin-inline-state.tone-warning strong { color: var(--warning); }
.fin-inline-state.tone-danger { border-color: var(--danger-line); background: var(--fin-danger-soft); }
.fin-inline-state.tone-danger strong { color: var(--danger); }

/* ---------- historial (drawer lateral) ---------- */
.fin-drawer { margin: 0 0 0 auto; height: 100dvh; max-height: 100dvh; }
.fin-drawer[open] { animation: fin-drawer .18s ease-out; }
@keyframes fin-drawer { from { transform: translateX(24px); opacity: 0; } to { transform: none; opacity: 1; } }
.fin-drawer .fin-dialog-card { width: min(480px, 100vw); height: 100dvh; max-height: 100dvh; border-radius: 0; border-width: 0 0 0 1px; grid-template-rows: auto minmax(0, 1fr) auto; align-content: start; }
.fin-history-sub { margin: var(--space-1) 0 0; color: var(--text-soft); font-size: var(--text-base); overflow-wrap: anywhere; }
.fin-history { overflow: auto; min-height: 0; display: grid; gap: var(--space-3); align-content: start; }
/* Movimientos: filas separadas por líneas, importe alineado a la derecha. */
.fin-mov-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; border-top: 1px solid var(--line-soft); }
.fin-mov { padding: var(--space-3) 0; border: 0; border-bottom: 1px solid var(--line-soft); border-radius: 0; background: transparent; display: grid; gap: var(--space-1); }
.fin-mov.is-skeleton { gap: var(--space-3); }
.fin-mov.is-reversed .fin-mov-amount { text-decoration: line-through; text-decoration-thickness: 1px; color: var(--text-soft); }
.fin-mov-main { display: flex; align-items: center; gap: var(--space-2); flex-wrap: wrap; }
.fin-mov-amount { margin-left: auto; font-size: var(--text-lg); font-weight: var(--weight-semibold); font-variant-numeric: tabular-nums; }
.tone-in .fin-mov-amount { color: var(--fin-in); }
.tone-out .fin-mov-amount { color: var(--fin-out); }
.fin-mov-meta { display: flex; flex-wrap: wrap; gap: var(--space-1) var(--space-4); color: var(--text-mute); font-size: var(--text-sm); }
.fin-mov-after { margin-left: auto; }
.fin-mov-after strong { color: var(--text-soft); font-weight: var(--weight-semibold); }
.fin-mov-bonus { margin: 0; color: var(--text-soft); font-size: var(--text-sm); }
.fin-history-foot { display: flex; justify-content: center; }

/* ---------- vista: dashboard financiero ---------- */
.app.finance-open .inbox-pane, .app.finance-open .chat-pane, .app.finance-open .profile-pane, .app.finance-open .settings-view { display: none !important; }
.finance-view { background: var(--bg); grid-column: 2 / -1; padding: var(--space-6) var(--space-7) var(--space-8); overflow: auto; height: 100vh; min-width: 0; }
.fin-dash-header { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-4); margin-bottom: var(--space-5); }
.fin-dash-header h2 { margin: 0 0 var(--space-1); font-size: var(--text-2xl); font-weight: var(--weight-semibold); letter-spacing: -.01em; }
.fin-dash-header p { margin: 0; color: var(--text-soft); font-size: var(--text-base); }
.fin-dash-header .btn { height: var(--control-h-sm); font-size: var(--text-sm); }
/* Fase 2 · cabecera con navegación por mes; filtros avanzados y desglose a pedido (crm-ui.js). */
.finance-view.has-month-nav .fin-dash-header { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; }
.fin-dash-actions { display: flex; gap: var(--space-2); justify-content: flex-end; flex-wrap: wrap; }
.fin-month { display: inline-flex; align-items: center; gap: var(--space-2); }
.fin-month strong { min-width: 160px; text-align: center; font-size: var(--text-lg); font-weight: var(--weight-semibold); font-variant-numeric: tabular-nums; }
.fin-month-next .icon { transform: rotate(180deg); }
.fin-month .icon-button:disabled { opacity: .35; cursor: not-allowed; }
.finance-view:not(.has-month-nav) .fin-month, .finance-view:not(.has-month-nav) #fin-period-toggle, .finance-view:not(.has-month-nav) .fin-detail-toggle { display: none; }
#dashboard .finance-view.has-month-nav:not(.show-filters) .fin-filters { display: none; }
.finance-view.has-month-nav:not(.show-detail) .fin-panel:not([aria-labelledby="fin-g-agents"]) { display: none; }
.fin-detail-toggle { margin-top: var(--space-4); }

/* ---------- movimientos de la franquicia (finance-reports.js) ---------- */
.fin-movements { margin-top: var(--space-7); display: grid; gap: var(--space-3); }
.fin-mov-head { display: flex; align-items: baseline; justify-content: space-between; gap: var(--space-3); }
.fin-mov-head h3 { margin: 0; font-size: var(--text-md); font-weight: var(--weight-semibold); }
.fin-mov-count { color: var(--text-mute); font-size: var(--text-sm); font-variant-numeric: tabular-nums; }
.fin-mov-filters { display: flex; flex-wrap: wrap; align-items: center; gap: var(--space-2); }
.fin-mov-search { flex: 1 1 240px; max-width: 360px; }
.fin-mov-filters select { height: 36px; padding: 0 var(--space-3); border: 1px solid var(--line-control); border-radius: var(--radius-sm); background: var(--field); color: var(--text); font-size: var(--text-sm); }
.fin-mov-types { display: flex; flex-wrap: wrap; gap: var(--space-1); }
.fin-mov-types button { height: 30px; padding: 0 var(--space-3); border: 1px solid var(--line); border-radius: var(--radius-sm); background: transparent; color: var(--text-soft); font-size: var(--text-sm); font-weight: var(--weight-medium); }
.fin-mov-types button:hover { color: var(--text); border-color: var(--line-control); }
.fin-mov-types button[aria-pressed="true"] { background: var(--field-strong); border-color: var(--line-strong); color: var(--text); }
.fin-mov-types button[aria-pressed="true"]::before { content: "✓ "; color: var(--accent-text); }
.fin-mov-body { transition: opacity .15s ease; }
.fin-mov-body.is-refreshing { opacity: .55; }
#dashboard .fin-mov-table td { vertical-align: middle; }
.fin-mov-date { color: var(--text-soft); white-space: nowrap; font-variant-numeric: tabular-nums; }
.fin-mov-player { display: grid; gap: 1px; min-width: 0; }
.fin-mov-player strong { font-weight: var(--weight-semibold); }
.fin-mov-player small, .fin-mov-detail { color: var(--text-mute); font-size: var(--text-xs); }
.fin-mov-detail { display: block; }
.fin-mov-table .fin-mov-amount { font-weight: var(--weight-semibold); }
.fin-mov-table .tone-in .fin-mov-amount { color: var(--fin-in); }
.fin-mov-table .tone-out .fin-mov-amount { color: var(--fin-out); }
.fin-mov-table .tone-reversal .fin-mov-amount { color: var(--fin-reversal); }
.fin-mov-table .tone-adjust .fin-mov-amount { color: var(--fin-adjust); }
.fin-mov-table tr.is-reversed .fin-mov-amount { color: var(--text-soft); text-decoration: line-through; text-decoration-thickness: 1px; }
.fin-mov-ok { color: var(--text-soft); font-size: var(--text-sm); }
.fin-mov-pager { display: flex; align-items: center; justify-content: flex-end; gap: var(--space-3); color: var(--text-soft); font-size: var(--text-sm); font-variant-numeric: tabular-nums; }
.fin-mov-pager .btn { height: var(--control-h-sm); font-size: var(--text-sm); }
.fin-mov-next .icon { transform: rotate(180deg); }
#dashboard .fin-movements .fin-state, #dashboard .fin-movements .fin-empty { border: 1px solid var(--line); border-radius: var(--radius-md); padding: var(--space-7) var(--space-5); }

/* ---------- totales del jugador (finance-reports.js) ---------- */
.fin-totals { display: grid; gap: var(--space-2); padding-top: var(--space-3); border-top: 1px solid var(--line-soft); }
.fin-totals-head { color: var(--text-soft); font-size: var(--text-sm); }
.fin-totals-grid { margin: 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--space-2) var(--space-3); }
.fin-totals-grid > div { display: grid; gap: 1px; min-width: 0; }
.fin-totals-grid dt { color: var(--text-mute); font-size: var(--text-xs); }
.fin-totals-grid dd { margin: 0; font-size: var(--text-md); font-weight: var(--weight-semibold); overflow-wrap: anywhere; }
.fin-totals-grid .tone-in dd { color: var(--fin-in); }
.fin-totals-grid .tone-out dd { color: var(--fin-out); }
.fin-totals-error { margin: 0; color: var(--text-soft); font-size: var(--text-sm); }
.fin-totals-error .fin-link-btn { display: inline-flex; margin: 0; min-height: 28px; }

/* ---------- afinado del kit compartido dentro del CRM ----------
   Mismo kit, menos ruido: etiquetas en tipo de frase, cifras en celdas separadas por líneas en vez de
   tarjetas idénticas, sin degradados. Los colores semánticos (entrada/salida/ajuste/reversión) no cambian. */
#dashboard .fin-filters { padding: 0 0 var(--space-4); margin-bottom: var(--space-5); border: 0; border-bottom: 1px solid var(--line-soft); border-radius: 0; background: transparent; }
#dashboard .fin-segmented { border-radius: var(--radius-sm); background: var(--field); border-color: var(--line); padding: 2px; }
#dashboard .fin-segmented button { height: 30px; border-radius: 6px; font-size: var(--text-sm); }
#dashboard .fin-segmented button[aria-checked="true"] { background: var(--field-strong); color: var(--text); box-shadow: inset 0 0 0 1px var(--line-strong); }
#dashboard .fin-range input { height: var(--control-h-sm); border-radius: var(--radius-sm); border-color: var(--line-control); background: var(--field); }
#dashboard .fin-range .btn { height: var(--control-h-sm); font-size: var(--text-sm); }
#dashboard .fin-dash-body { gap: var(--space-7); }
#dashboard .fin-kpi-band { gap: 0; border: 1px solid var(--line); border-radius: var(--radius-md); overflow: hidden; }
#dashboard .fin-kpi-band .fin-kpi { border: 0; border-radius: 0; background: transparent; padding: var(--space-4) var(--space-5); border-left: 1px solid var(--line-soft); }
#dashboard .fin-kpi-band .fin-kpi:first-child { border-left: 0; }
#dashboard .fin-kpi.is-primary { background: transparent; }
#dashboard .fin-kpi.is-primary .fin-kpi-value, #dashboard .fin-kpi-band .fin-kpi-value { font-size: 22px; color: var(--text); }
#dashboard .fin-kpi-band .fin-kpi-value.is-long { font-size: var(--text-lg); }
/* Orden fijado por finance.js: saldo · acreditado · retiros · neto. Color + texto, nunca solo color. */
#dashboard .fin-kpi-band .fin-kpi:nth-child(2) .fin-kpi-value { color: var(--fin-in); }
#dashboard .fin-kpi-band .fin-kpi:nth-child(3) .fin-kpi-value { color: var(--fin-out); }
#dashboard .fin-kpi-band .fin-kpi-hint { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
#dashboard .fin-kpi-label { font-size: var(--text-sm); }
#dashboard .fin-kpi-value { font-weight: var(--weight-semibold); }
#dashboard .fin-kpi-hint { color: var(--text-mute); font-size: var(--text-xs); }
#dashboard .fin-panel { padding: 0; border: 0; border-radius: 0; background: transparent; gap: var(--space-3); }
#dashboard .fin-panel-title { font-size: var(--text-md); font-weight: var(--weight-semibold); letter-spacing: 0; text-transform: none; color: var(--text); }
#dashboard .fin-kpi-grid { gap: 0; border-top: 1px solid var(--line-soft); grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); }
#dashboard .fin-kpi-grid .fin-kpi { background: transparent; border: 0; border-bottom: 1px solid var(--line-soft); border-radius: 0; padding: var(--space-3) var(--space-4) var(--space-3) 0; }
#dashboard .fin-kpi-grid .fin-kpi-value { font-size: var(--text-lg); }
#dashboard .fin-table thead th { text-transform: none; letter-spacing: 0; font-size: var(--text-sm); font-weight: var(--weight-medium); color: var(--text-mute); }
#dashboard .fin-table th, #dashboard .fin-table td { padding: 10px var(--space-3); }
#dashboard .fin-table tbody tr:hover > * { background: var(--field); }
#dashboard .fin-state { border-style: solid; border-color: var(--line); }
.fin-caption { text-transform: none; letter-spacing: 0; font-size: var(--text-sm); font-weight: var(--weight-medium); }
/* diálogos financieros */
.fin-dialog::backdrop { background: var(--overlay); backdrop-filter: none; }
.fin-dialog .fin-dialog-card { border-radius: var(--radius-lg); box-shadow: var(--elev-3); }
.fin-drawer.fin-dialog .fin-dialog-card { border-radius: 0; }
.fin-dialog .fin-dialog-head h2 { font-size: var(--text-xl); font-weight: var(--weight-semibold); }
.fin-dialog .fin-dialog-head .icon-button { width: var(--control-h-sm); height: var(--control-h-sm); border-radius: var(--radius-sm); border-color: transparent; color: var(--text-soft); }
.fin-dialog .fin-dialog-head .icon-button:hover { background: var(--field-strong); color: var(--text); }
.fin-dialog .fin-context > div { border-radius: var(--radius-sm); background: transparent; border-color: var(--line); }
.fin-dialog .fin-context dt { text-transform: none; letter-spacing: 0; font-size: var(--text-sm); font-weight: var(--weight-medium); }
.fin-dialog .fin-input { height: 48px; border-radius: var(--radius-sm); border-color: var(--line-control); font-size: var(--text-xl); }
.fin-dialog .fin-input:focus { border-color: var(--accent); }
.fin-dialog .fin-chip label { border-radius: var(--radius-sm); min-height: 36px; }
.fin-dialog .fin-preview { border-radius: var(--radius-md); background: transparent; border-color: var(--line); }
.fin-dialog .fin-preview-title { text-transform: none; letter-spacing: 0; font-size: var(--text-sm); font-weight: var(--weight-semibold); color: var(--text-soft); }
.fin-dialog .fin-estimate-tag { letter-spacing: 0; font-size: var(--text-xs); border-radius: var(--radius-xs); }
.fin-dialog .fin-row.is-total dt { text-transform: none; letter-spacing: 0; font-size: var(--text-base); font-weight: var(--weight-semibold); }
.fin-dialog .fin-row.is-total dd { font-weight: var(--weight-bold); }
.fin-dialog .fin-alert, .fin-dialog .fin-result .fin-receipt, .fin-dialog .fin-note { border-radius: var(--radius-sm); }
.fin-dialog .fin-success-icon { border-radius: var(--radius-pill); }
.fin-dialog .fin-type-badge, #dashboard .fin-type-badge { border-radius: var(--radius-xs); height: 22px; }

/* ---------- responsive (mismos cortes que style.css) ---------- */
@media (max-width: 1279px) {
  .finance-view { grid-column: 2 / -1; padding: var(--space-5) var(--space-6) var(--space-8); }
  .fin-sidebar .nav-item { width: var(--touch-h); }
  .fin-side-balance { display: none; }
  #dashboard .fin-kpi-band { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #dashboard .fin-kpi-band .fin-kpi:nth-child(odd) { border-left: 0; }
  #dashboard .fin-kpi-band .fin-kpi:nth-child(n+3) { border-top: 1px solid var(--line-soft); }
  .finance-view.has-month-nav .fin-dash-header { grid-template-columns: auto minmax(0, 1fr); grid-template-areas: "title title" "month actions"; row-gap: var(--space-4); }
  .finance-view.has-month-nav .fin-dash-header > div:first-child { grid-area: title; }
  .finance-view.has-month-nav .fin-month { grid-area: month; margin-left: calc(-1 * var(--space-2)); }
  .finance-view.has-month-nav .fin-dash-actions { grid-area: actions; }
  .fin-month strong { min-width: 140px; }
  /* Tramo rail: la tabla cabe en el panel (sin el mínimo de 680 px del kit, que dejaba scroll sin foco a 768 px). */
  #dashboard .fin-table { min-width: 0; }
  #dashboard .fin-table th, #dashboard .fin-table td { padding: var(--space-2); white-space: normal; }
  #dashboard .fin-table .num, #dashboard .fin-mov-date { white-space: nowrap; }
}
@media (max-width: 720px) {
  .finance-view { display: none; grid-column: auto; height: 100%; padding: var(--space-5) var(--space-4) calc(var(--mobile-nav-h) + var(--space-6)); }
  #dashboard.finance-open .finance-view { display: block; }
  #dashboard.finance-open .inbox-pane, #dashboard.finance-open .chat-pane, #dashboard.finance-open .settings-view { display: none !important; }
  .fin-dash-header { flex-direction: column; }
  .finance-view.has-month-nav .fin-dash-header { grid-template-columns: minmax(0, 1fr); grid-template-areas: "title" "month" "actions"; justify-items: start; gap: var(--space-3); }
  .fin-dash-actions { justify-content: flex-start; }
  /* Mismo reparto en todo el tramo móvil (el kit cambia a 620 px): saldo y neto a lo ancho, el resto en dos columnas. */
  #dashboard .fin-kpi-band { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #dashboard .fin-kpi-band .fin-kpi { padding: var(--space-3); border-left: 0; border-top: 1px solid var(--line-soft); }
  #dashboard .fin-kpi-band .fin-kpi:first-child { grid-column: 1 / -1; border-top: 0; }
  #dashboard .fin-kpi-band .fin-kpi:last-child:nth-child(even) { grid-column: 1 / -1; }
  #dashboard .fin-kpi-band .fin-kpi:nth-child(3) { border-left: 1px solid var(--line-soft); }
  #dashboard .fin-kpi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  /* Tablas como filas apiladas en TODO el tramo móvil (el kit sólo lo hace hasta 620 px). */
  #dashboard .fin-table { min-width: 0; }
  #dashboard .fin-table thead { display: none; }
  #dashboard .fin-table, #dashboard .fin-table tbody, #dashboard .fin-table tr, #dashboard .fin-table th, #dashboard .fin-table td { display: block; width: 100%; }
  #dashboard .fin-table tr { border: 1px solid var(--line); border-radius: var(--radius-sm); margin-bottom: var(--space-2); padding: var(--space-1) 0; }
  #dashboard .fin-table tbody th, #dashboard .fin-table td { display: flex; justify-content: space-between; align-items: baseline; gap: var(--space-3); border: 0; white-space: normal; text-align: right; padding: 6px var(--space-3); }
  #dashboard .fin-table tbody th::before, #dashboard .fin-table td::before { content: attr(data-th); color: var(--text-mute); font-size: var(--text-xs); font-weight: var(--weight-medium); text-align: left; }
  #dashboard .fin-table td > * { text-align: right; }
  .fin-mov-search { max-width: none; flex-basis: 100%; }
  .fin-mov-filters select { flex: 1 1 100%; }
  .fin-mov-pager { justify-content: space-between; }
}
