@charset "utf-8";

/* Container for scrollable tables with shadow boundaries */
.table-pane {
  background-color: var(--bg-surface);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-md);
  box-shadow: var(--elevation-1);
  overflow-x: auto;
  position: relative;
  margin-bottom: var(--space-4);
}

/* Base Financial Data Table */
.data-table {
  width: 100%;
  border-collapse: collapse;
  font-size: var(--font-size-sm);
  text-align: left;
  white-space: nowrap;
}

/* Headers and Footers */
.data-table thead th,
.data-table tfoot th {
  background-color: var(--bg-surface-sunken);
  color: var(--text-secondary);
  font-size: var(--font-size-xs);
  font-weight: var(--font-weight-semibold);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

/* Headers */
.data-table thead th {
  position: sticky;
  top: 0;
  z-index: 2;
  border-bottom: 2px solid var(--border-default);
}

/* Multi-level Headers */
.data-table thead tr:not(:last-child) th {
  border-bottom: 1px solid var(--border-subtle);
}

.data-table thead tr:last-child th {
  border-bottom: 2px solid #000;
}

/* Multi-level Group Headers */
.data-table tr.group-row th.group-blank {
  background: transparent;
  border: none;
}

.data-table thead tr.group-row th.group-label {
  background: transparent;
  border-bottom: 1px solid #000;
  font-weight: var(--font-weight-bold);
  text-align: center;
}

.data-table tfoot tr.group-row th.group-label {
  background: transparent;
  border-top: 1px solid #000;
  font-weight: var(--font-weight-bold);
  text-align: center;
}

/* Footers */
.data-table tfoot th,
.data-table tfoot td {
  position: sticky;
  bottom: 0;
  z-index: 2;
  border-top: 2px solid var(--border-default);
}

.data-table tfoot tr:first-child th,
.data-table tfoot tr:first-child td {
  border-top: 2px solid #000;
}

/* Body Rows */
.data-table tbody tr {
  background-color: var(--bg-surface);
  border-bottom: 1px solid var(--border-subtle);
  transition: background-color 100ms ease;
}

table.data-table tbody tr:nth-child(even) {
  background-color: var(--bg-zebra);
}

table.data-table tbody tr:hover {
  background-color: var(--bg-hover);
}

/* Balance Sentinel Rows */
table.data-table tr.row-saldo {
  font-weight: var(--font-weight-bold);
}

table.data-table tr.row-saldo-inicial {
  border-top: 2px solid #000;
  border-bottom: 1px solid var(--border-default);
}

table.data-table tr.row-saldo-final {
  border-top: 1px solid var(--border-default);
  border-bottom: 2px solid #000;
}

/* Body and Footer Cells */
.data-table td,
.data-table th {
  padding: var(--space-1) var(--space-2);
}

.data-table td {
  color: var(--text-primary);
}

.data-table td a {
  color: var(--primary);
  font-weight: var(--font-weight-medium);
  text-decoration: none;
}

.data-table td a:hover {
  text-decoration: underline;
}

.data-table tr.totales {
  font-weight: var(--font-weight-bold);
}

/* Numeric & Monospace Formatting */
.data-table td.qty,
.data-table th.qty {
  text-align: right;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
}

.data-table td.id,
.data-table th.id {
  text-align: right;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--text-muted);
}

.data-table td.dt,
.data-table th.dt {
  text-align: center;
  font-family: var(--font-mono);
  font-variant-numeric: tabular-nums;
  color: var(--text-secondary);
}

.data-table td.center,
.data-table th.center {
  text-align: center;
}

.data-table td.left,
.data-table th.left {
  text-align: left;
}

/* Statement Table: Details column responsive horizontal shrink */
#dash-resumen td:nth-child(4),
#dash-resumen td.col-detalle {
  white-space: normal;
  word-break: break-word;
  overflow-wrap: anywhere;
  min-width: 0;
}

/* Financial Values: Positive / Negative */
.data-table .pos {
  color: var(--text-primary);
  font-weight: var(--font-weight-medium);
}

.data-table .neg {
  color: var(--color-debit);
  font-weight: var(--font-weight-medium);
}

/* Currency Classes */
.data-table .usd {
  color: var(--badge-usd-text);
}

.data-table .ars {
  color: var(--text-primary);
}

/* Table status row states */
.data-table tbody tr.del {
  text-decoration: line-through;
  color: var(--text-muted);
  opacity: 0.7;
}

.data-table tbody tr.del a {
  color: var(--text-muted);
}

.data-table .del-mark {
  color: var(--color-debit);
}


/* Currency Badges */
.badge-currency {
  display: inline-flex;
  align-items: center;
  padding: 1px 6px;
  border-radius: var(--radius-sm);
  font-family: var(--font-mono);
  font-size: var(--font-size-2xs);
  font-weight: var(--font-weight-bold);
  text-transform: uppercase;
}

.badge-ars {
  background-color: var(--badge-ars-bg);
  color: var(--badge-ars-text);
}

.badge-usd {
  background-color: var(--badge-usd-bg);
  color: var(--badge-usd-text);
}

.badge-eur {
  background-color: var(--badge-eur-bg);
  color: var(--badge-eur-text);
}

.badge-crypto {
  background-color: var(--badge-crypto-bg);
  color: var(--badge-crypto-text);
}

/* Vouchers & External Links */
table.data-table td a.voucher-link {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  color: var(--primary);
  text-decoration: none;
  font-weight: var(--font-weight-medium);
}

table.data-table td a.voucher-link .material-symbols-outlined {
  font-size: 14px;
  vertical-align: middle;
}

table.data-table td a.voucher-link:hover {
  text-decoration: underline;
}

/* Empty & Loading States */
table.data-table td.table-empty,
table.data-table td.table-loading {
  text-align: center;
  padding: var(--space-6);
  color: var(--text-muted);
}

table.data-table td.table-error {
  text-align: center;
  padding: var(--space-6);
  color: var(--color-debit);
}

table.data-table td.table-loading .material-symbols-outlined {
  font-size: 28px;
}

table.data-table td.table-loading div {
  margin-top: var(--space-2);
}

/* Mobile Transform: Card Stack */
@media (max-width: 768px) {
  table.responsive-cards {
    border: none;
  }

  table.responsive-cards thead {
    display: none;
  }

  table.responsive-cards tbody,
  table.responsive-cards tr,
  table.responsive-cards td {
    display: block;
    width: 100%;
  }

  table.responsive-cards tbody tr {
    margin-bottom: var(--space-3);
    border: 1px solid var(--border-default);
    border-radius: var(--radius-md);
    background-color: var(--bg-surface);
    box-shadow: var(--elevation-1);
    padding: var(--space-2);
  }

  table.responsive-cards tbody td {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--space-1) var(--space-2);
    border-bottom: 1px solid var(--border-subtle);
    white-space: normal;
  }

  table.responsive-cards tbody td:last-child {
    border-bottom: none;
  }

  table.responsive-cards tbody td::before {
    content: attr(data-label);
    font-size: var(--font-size-xs);
    font-weight: var(--font-weight-semibold);
    color: var(--text-muted);
    text-transform: uppercase;
  }
}

/* Column Sorting Indicators */
table.data-table th[data-sort] {
  cursor: pointer;
  user-select: none;
}

table.data-table th[data-sort]:hover {
  background-color: var(--bg-hover);
  color: var(--text-primary);
}

table.data-table th[data-sort]::after {
  content: " ▲";
  font-size: 0.75em;
  display: inline-block;
  width: 1.2em;
  text-align: center;
  visibility: hidden;
}

table.data-table th.sort_up::after {
  content: " ▲";
  visibility: visible;
  color: var(--primary);
}

table.data-table th.sort_down::after {
  content: " ▼";
  visibility: visible;
  color: var(--primary);
}

/* Borders for column groupings */
.data-table th.border-left,
.data-table td.border-left {
  border-left: 1px solid var(--border-default);
}

.data-table th.border-right,
.data-table td.border-right {
  border-right: 1px solid var(--border-default);
}

/* Grouped Tree Rows */
.data-table tr.group-header {
  background-color: var(--bg-surface-sunken);
  font-weight: var(--font-weight-semibold);
  cursor: pointer;
}

.data-table tr.group-header:hover {
  background-color: var(--bg-hover);
}

.data-table td.expando {
  cursor: pointer;
  user-select: none;
}

.data-table .group-name {
  font-weight: var(--font-weight-semibold);
  color: var(--text-primary);
  display: flex;
  align-items: center;
  gap: var(--space-1);
}

.data-table .group-name .material-symbols-outlined {
  font-size: 18px;
  line-height: 1;
}

.data-table .group-name .group-count {
  font-size: var(--font-size-xs);
  color: var(--text-muted);
  font-weight: var(--font-weight-normal);
}

.data-table tr.group-child.is-hidden {
  display: none;
}

.data-table tr.group-child td.child-label {
  padding-left: var(--space-5);
}

.data-table .cell-group {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-2);
  line-height: inherit;
}

.data-table .inline-edit-wrap {
  display: inline-flex;
  align-items: center;
}

.data-table .group-badge {
  font-size: var(--font-size-2xs);
  line-height: 1;
  padding: 1px 4px;
  background: var(--bg-surface-sunken);
  border: 1px solid var(--border-default);
  border-radius: var(--radius-sm);
  cursor: pointer;
}

.data-table .group-badge.unassigned {
  border-style: dashed;
  color: var(--text-muted);
}

.data-table .inline-group-input {
  display: none;
  padding: 1px 4px;
  font-size: var(--font-size-xs);
  border: 1px solid var(--primary);
  border-radius: var(--radius-sm);
  background: #fff;
  color: var(--text-primary);
  outline: none;
  width: 140px;
}

.data-table .inline-edit-wrap.editing .group-badge {
  display: none;
}

.data-table .inline-edit-wrap.editing .inline-group-input {
  display: inline-block;
}

/* Print Media Styles */
@media print {
  @page {
    size: landscape;
    margin: 8mm;
  }

  html,
  body,
  #app-shell,
  #app-body,
  #app-main {
    width: 100% !important;
    max-width: none !important;
    min-width: 0 !important;
    height: auto !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    color: #000 !important;
  }

  #app-header,
  .workspace-actions,
  #menu-main-chpwd,
  #menu-main-logout {
    display: none !important;
  }

  .workspace-header {
    margin-bottom: var(--space-2) !important;
  }

  .workspace-title h2 {
    font-size: var(--font-size-md) !important;
    color: #000 !important;
  }

  #form-resumen {
    margin-bottom: var(--space-2) !important;
    gap: var(--space-3) !important;
  }

  #form-resumen select,
  #form-resumen input {
    border: none !important;
    background: transparent !important;
    padding: 0 !important;
    height: auto !important;
    color: #000 !important;
    font-weight: var(--font-weight-semibold) !important;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
  }

  .table-pane {
    overflow: visible !important;
    overflow-x: visible !important;
    border: none !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    margin: 0 !important;
    padding: 0 !important;
    width: 100% !important;
    background: transparent !important;
  }

  table.data-table {
    width: 100% !important;
    max-width: 100% !important;
    font-size: 10.5px !important;
    table-layout: auto !important;
  }

  table.data-table thead th,
  table.data-table tfoot th {
    position: static !important;
  }

  table.data-table th,
  table.data-table td {
    padding: 2px 4px !important;
  }

  table.data-table tbody tr {
    break-inside: avoid;
    page-break-inside: avoid;
  }

  a.voucher-link {
    color: inherit !important;
    text-decoration: none !important;
  }

  a.voucher-link .material-symbols-outlined {
    display: none !important;
  }
}