/*
 * AVA Responsive Layer v1.0
 * Ajustes de composición exclusivamente visuales. Esta hoja se carga después
 * del Design System para resolver adaptación sin alterar lógica ni identidad.
 */

/* Los hijos flex/grid deben poder contraerse dentro de su pista. */
.app-shell,
.topbar,
.topbar > *,
.workspace,
#main-content,
.screen-heading,
.screen-heading > *,
.card-header,
.card-header > *,
.filter-bar,
.filter-bar > *,
.form-grid,
.form-grid > *,
.table-actions,
.table-actions > *,
.toolbar,
.toolbar > *,
.billing-new-layout,
.billing-new-layout > *,
.billing-payment-layout,
.billing-payment-layout > *,
.client-admin-layout,
.client-admin-layout > *,
.settings-billing-layout,
.settings-billing-layout > *,
.settings-tariff-workspace,
.settings-tariff-workspace > *,
.settings-tariff-meta,
.settings-tariff-meta > *,
.settings-tariff-matrix,
.settings-tariff-matrix > *,
.invoice-design-workspace,
.invoice-design-workspace > *,
.warehouse-filter-bar,
.warehouse-filter-bar > *,
.agency-package-filters,
.agency-package-filters > *,
.incident-filter-grid,
.incident-filter-grid > *,
.dialog,
.dialog-header,
.dialog-body,
.dialog-actions {
  min-width: 0;
}

img,
svg,
video,
canvas {
  max-width: 100%;
}

input,
select,
textarea {
  max-width: 100%;
}

/* Acciones: conservan tamaño natural y saltan de línea antes de salir. */
.screen-heading,
.card-header,
.heading-actions,
.toolbar,
.table-actions,
.filter-actions,
.dialog-actions,
.settings-form-actions,
.invoice-design-actions {
  flex-wrap: wrap;
}

.heading-actions,
.toolbar,
.table-actions,
.filter-actions,
.dialog-actions {
  max-width: 100%;
}

.heading-actions .button,
.toolbar .button,
.table-actions .button,
.filter-actions .button,
.dialog-actions .button {
  flex: 0 1 auto;
}

/* El desplazamiento horizontal pertenece a la tabla, nunca a la página. */
.table-wrap,
.scroll-panel,
.search-results-table,
.billing-document-table,
.billing-receipts-table,
.warehouse-invoice-table,
.delivery-packages-table,
.agency-invoice-items,
.agency-reception-packages-table,
.incident-table,
.audit-table,
.client-rate-table,
.settings-tariff-transport {
  width: 100%;
  max-width: 100%;
  min-width: 0;
  overflow-x: auto;
  overflow-y: auto;
  overscroll-behavior-inline: contain;
  scrollbar-gutter: stable;
}

.search-results-table > table,
.billing-document-table > table,
.billing-receipts-table > table,
.warehouse-invoice-table > table,
.delivery-packages-table > table,
.agency-invoice-items > table,
.agency-reception-packages-table > table,
.incident-table > table,
.audit-table > table,
.client-rate-table > table {
  width: max-content;
  min-width: 100%;
}

.detail-value,
.audit-detail,
.activity-detail,
.notification-copy,
.dialog-body pre,
.dialog-body code {
  min-width: 0;
  max-width: 100%;
  overflow-wrap: anywhere;
  word-break: break-word;
}

/* Modales dentro del viewport, con desplazamiento interno cuando corresponde. */
.dialog-layer {
  align-items: center;
  justify-content: center;
  max-width: 100vw;
  max-height: 100dvh;
}

.dialog {
  max-width: calc(100vw - 40px);
  max-height: calc(100dvh - 40px);
  grid-template-rows: auto minmax(0, 1fr);
}

.dialog-body {
  min-height: 0;
  overflow: auto;
  overscroll-behavior: contain;
}

.dialog.is-maximized {
  width: 100vw;
  max-width: 100vw;
  height: 100dvh;
  max-height: 100dvh;
  grid-template-rows: auto minmax(0, 1fr);
}

.dialog.is-maximized .dialog-body {
  min-height: 0;
  overflow: auto;
}

.dialog-header > div:first-child {
  min-width: 0;
}

.dialog-header h2,
.dialog-header p {
  overflow-wrap: anywhere;
}

/* Los modos de vista ampliada no deben conservar una rejilla rígida. */
body.billing-focus-mode .workspace,
body.statement-focus-mode .workspace {
  min-width: 0;
}

body.billing-focus-mode #main-content,
body.statement-focus-mode #main-content {
  min-width: 0;
  grid-auto-rows: auto;
}

body.billing-focus-mode #billing-panel,
body.statement-focus-mode .statement-invoices,
body.statement-focus-mode .statement-portfolio {
  min-width: 0;
}

/* Escritorio compacto y escalado alto de Windows. */
@media (max-width: 1365px) {
  .topbar {
    grid-template-columns: minmax(150px, 178px) minmax(150px, 220px) minmax(0, 1fr);
  }

  .billing-filter-bar,
  body.billing-focus-mode .billing-filter-bar {
    grid-template-columns: repeat(12, minmax(0, 1fr));
  }

  .billing-filter-bar > *,
  body.billing-focus-mode .billing-filter-bar > * {
    grid-column: span 4;
  }

  .billing-filter-bar .billing-filter-search,
  body.billing-focus-mode .billing-filter-bar .billing-filter-search {
    grid-column: span 6;
  }

  body[data-ava-module="reportes"] .incident-filter-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  body[data-ava-module="reportes"] .incident-filter-search,
  body[data-ava-module="reportes"] .incident-date-range,
  body[data-ava-module="reportes"] .incident-filter-actions {
    grid-column: auto;
  }

  .agency-package-filters {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .agency-package-filters > * {
    grid-column: auto !important;
  }
}

@media (max-width: 1199px) {
  .billing-new-layout,
  .billing-payment-layout,
  .client-admin-layout,
  .settings-billing-layout,
  .invoice-design-workspace {
    grid-template-columns: minmax(0, 1fr);
  }

  .settings-tariff-workspace {
    grid-template-columns: minmax(160px, 220px) minmax(0, 1fr);
  }

  .settings-tariff-matrix {
    grid-template-columns: minmax(0, 1fr);
  }

  .invoice-design-workspace > .card:first-child {
    max-height: none;
    overflow: visible;
  }

  .invoice-paper-preview {
    position: relative;
    top: auto;
  }

  .warehouse-filter-bar,
  .agency-package-filters,
  body[data-ava-module="reportes"] .incident-filter-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body[data-ava-module="reportes"] .incident-metric-strip {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  .warehouse-filter-bar > *,
  .agency-package-filters > *,
  body[data-ava-module="reportes"] .incident-filter-grid > * {
    grid-column: auto !important;
  }

  body.billing-focus-mode #app-shell,
  body.statement-focus-mode #app-shell {
    grid-template-rows: auto auto minmax(0, 1fr);
  }

  body.billing-focus-mode #main-content,
  body.statement-focus-mode #main-content {
    display: block;
    height: 100%;
    overflow: auto;
  }

  body.billing-focus-mode #billing-panel {
    display: block;
  }

  body.billing-focus-mode .billing-list-card,
  body.statement-focus-mode .statement-invoices,
  body.statement-focus-mode .statement-portfolio {
    display: block;
    min-height: 320px;
    overflow: visible;
  }

  body.billing-focus-mode #invoices-filter,
  body.billing-focus-mode #ar-filter {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

@media (max-width: 1024px) {
  .screen-heading {
    align-items: flex-start;
  }

  .screen-heading > .heading-actions,
  .card-header > .table-actions {
    justify-content: flex-start;
  }

  .form-grid,
  .filter-bar,
  .billing-filter-grid,
  .billing-history-filters,
  .statement-filters,
  .warehouse-filter-bar,
  .agency-package-filters,
  body[data-ava-module="reportes"] .incident-filter-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  /* La regla base de Consolidar usa un selector por id y conserva 12 pistas.
     Se iguala su especificidad para que los controles mantengan ancho útil. */
  body[data-ava-module="consolidar"] #consolidation-form {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  body[data-ava-module="consolidar"] #consolidation-form > * {
    grid-column: auto !important;
  }

  body[data-ava-module="consolidar"] #consolidation-form .filter-actions {
    grid-column: 1 / -1 !important;
    justify-content: flex-start;
  }

  .form-grid > *,
  .filter-bar > *,
  .billing-filter-grid > *,
  .billing-history-filters > *,
  .statement-filters > *,
  .warehouse-filter-bar > *,
  .agency-package-filters > *,
  body[data-ava-module="reportes"] .incident-filter-grid > * {
    grid-column: auto !important;
  }

  .settings-tariff-workspace {
    grid-template-columns: minmax(0, 1fr);
  }

  .settings-tariff-list {
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  }

  .settings-tariff-meta {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .invoice-paper-preview .invoice-preview-header {
    grid-template-columns: minmax(120px, .8fr) minmax(180px, 1.2fr) minmax(120px, .8fr);
  }

  body.billing-focus-mode #invoices-filter,
  body.billing-focus-mode #ar-filter {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .dialog-layer {
    padding: 8px;
  }

  .dialog {
    max-width: calc(100vw - 16px);
    max-height: calc(100dvh - 16px);
  }

  .screen-heading,
  .card-header,
  .settings-form-actions,
  .invoice-design-actions {
    align-items: stretch;
  }

  .screen-heading > .heading-actions,
  .card-header > .table-actions,
  .settings-form-actions > *,
  .invoice-design-actions > * {
    max-width: 100%;
  }

  .form-grid,
  .filter-bar,
  .billing-filter-grid,
  .billing-history-filters,
  .statement-filters,
  .warehouse-filter-bar,
  .agency-package-filters,
  .settings-tariff-meta,
  body[data-ava-module="reportes"] .incident-filter-grid,
  body.billing-focus-mode #invoices-filter,
  body.billing-focus-mode #ar-filter {
    grid-template-columns: minmax(0, 1fr);
  }

  body[data-ava-module="consolidar"] #consolidation-form {
    grid-template-columns: minmax(0, 1fr);
  }

  .invoice-paper-preview .invoice-preview-header,
  .invoice-preview-parties,
  .invoice-preview-bottom,
  .invoice-preview-signatures {
    grid-template-columns: minmax(0, 1fr);
  }

  .dialog-actions .button {
    flex: 1 1 auto;
  }
}

/* Cada bloque monetario de Estados de cuenta contiene cinco indicadores.
   En escritorio intermedio se distribuyen en dos filas para conservar cifras
   y etiquetas completas, sin reducir tipografía ni ocultar contenido. */
@media (min-width: 821px) and (max-width: 2047px) {
  body[data-ava-module="estados-cuenta"] .statement-metric-row {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

/* Pantallas bajas: el contenido permanece alcanzable sin cambiar escala. */
@media (max-height: 760px) {
  .dialog-layer {
    align-items: flex-start;
  }

  body.billing-focus-mode .workspace,
  body.statement-focus-mode .workspace,
  body.billing-focus-mode #main-content,
  body.statement-focus-mode #main-content {
    overflow: auto;
  }
}

/* Cuentas por cobrar: los filtros mantienen anchura útil sin superponerse. */
@media (max-width: 1365px) {
  .billing-filter-bar.billing-receivable-filter-layout {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--ava-space-3) var(--ava-space-4);
  }

  .billing-filter-bar.billing-receivable-filter-layout > *,
  .billing-filter-bar.billing-receivable-filter-layout .billing-filter-search { grid-column: auto !important; }
  .billing-filter-bar.billing-receivable-filter-layout > .billing-advanced-filters,
  .billing-filter-bar.billing-receivable-filter-layout > .billing-filter-footer { grid-column: 1 / -1 !important; }
}

@media (max-width: 1024px) {
  .billing-filter-bar.billing-receivable-filter-layout { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .billing-filter-bar.billing-receivable-filter-layout > .billing-filter-search,
  .billing-filter-bar.billing-receivable-filter-layout > .billing-filter-client,
  .billing-filter-bar.billing-receivable-filter-layout > .billing-advanced-filters,
  .billing-filter-bar.billing-receivable-filter-layout > .billing-filter-footer { grid-column: 1 / -1 !important; }
}

@media (max-width: 760px) {
  .billing-filter-bar.billing-receivable-filter-layout { grid-template-columns: minmax(0, 1fr); padding: var(--ava-space-3); }
  .billing-filter-bar.billing-receivable-filter-layout > * { grid-column: auto !important; }
  .billing-receivable-filter-layout .client-search-results { min-width: 100%; max-width: 100%; }
  .billing-receivable-filter-layout .filter-actions .button { width: 100%; }
}
@media (max-width: 1500px) and (min-width: 901px) {
  .billing-invoice-filter-layout { grid-template-columns: minmax(240px, 1.2fr) minmax(150px, .65fr) minmax(300px, 1.25fr); }
  .billing-invoice-filter-layout .filter-actions { justify-self: end; }
  .billing-invoice-filter-layout .filter-actions .button { min-width: 175px; }
}

@media (max-width: 1180px) {
  .consolidation-statistics-kpis { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 900px) {
  .billing-invoice-filter-layout { grid-template-columns: 1fr 1fr; padding: var(--ava-space-3); }
  .billing-invoice-filter-layout .billing-filter-search,
  .billing-invoice-filter-layout .billing-filter-client,
  .billing-invoice-filter-layout .filter-actions { grid-column: 1 / -1; }
  .billing-invoice-filter-layout .filter-actions .button { width: 100%; }
}

@media (max-width: 760px) {
  .consolidation-statistics-kpis,
  .consolidation-statistics-calendar { grid-template-columns: minmax(0, 1fr); }
  .consolidation-statistics-table { overflow-x: auto; }
  .consolidation-trend-heading { display: grid; }
  .consolidation-trend-controls { justify-content: flex-start; }
  .trend-legend { flex-wrap: wrap; }
  .trend-legend strong { width: 100%; margin: 0; }
  .consolidation-trend-chart { min-height: 240px; padding: var(--ava-space-2); }
}

@media (max-width: 560px) {
  .billing-invoice-filter-layout { grid-template-columns: minmax(0, 1fr); }
  .billing-invoice-filter-layout .billing-filter-search,
  .billing-invoice-filter-layout .billing-filter-client,
  .billing-invoice-filter-layout .filter-actions { grid-column: auto; }
  .billing-invoice-filter-layout .client-search-results { min-width: 100%; max-width: 100%; }
}

/* Recibos emitidos conserva controles completos sin desbordar el diálogo. */
@media (min-width: 681px) and (max-width: 1024px) {
  .dialog--receipts .billing-receipts-filter--single-line {
    grid-template-columns: minmax(0, 1.35fr) minmax(150px, .65fr);
  }

  .dialog--receipts .billing-receipts-filter--single-line > .billing-filter-client {
    grid-column: 1 / -1 !important;
  }
}

@media (max-width: 680px) {
  .dialog--receipts .billing-receipts-filter--single-line {
    grid-template-columns: minmax(0, 1fr);
  }

  .dialog--receipts .billing-receipts-filter--single-line > .field {
    grid-column: 1 !important;
  }

  .dialog--receipts .billing-filter-client .client-search-results {
    width: 100%;
    min-width: 100%;
    max-width: 100%;
  }
}
