:root {
    color-scheme: light;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    font-size: 14px;
    /* Money Twins / CommonSkins.Colors; extracción reproducible: lote 755.
       No usar Primary (color del sistema) ni HighlightAlternate (vacío). */
    --lat-control: #e3f1fe;
    --lat-control-text: #10257f;
    --lat-window: #ffffff;
    --lat-window-text: #000000;
    --lat-highlight: #316ac5;
    --lat-highlight-text: #ffffff;
    --lat-hide-selection: #7a96df;
    --lat-hot-track: #4684e8;
    --lat-question: #1b49a5;
    --lat-disabled-control: #d4e4f7;
    --lat-disabled-text: #98b9e6;
    --lat-readonly: #e3f1fe;
    --lat-info: #ffffe1;
    --lat-danger: #d60505;
    --lat-success: #3f8830;
    --lat-warning: #e47c02;
    --lat-blue-900: var(--lat-control-text);
    --lat-blue-800: var(--lat-question);
    --lat-blue-700: var(--lat-highlight);
    --lat-blue-100: var(--lat-control);
    --lat-blue-050: var(--lat-window);
    --lat-border: var(--lat-hide-selection);
    --lat-border-soft: var(--lat-disabled-control);
    --lat-text: var(--lat-window-text);
    --lat-muted: #60768c;
}

.report-viewer-shell {
    margin-top: 1rem;
    min-height: 48rem;
    padding: 1rem;
    border: 1px solid var(--border-color, #d8dde5);
    border-radius: 0.75rem;
    background: #fff;
    max-width: 100%;
    overflow: auto;
}

.latinium-report-viewer {
    display: block;
    width: 100%;
    min-height: 44rem;
    height: calc(100dvh - 12rem);
}

* { box-sizing: border-box; }

html,
body {
    height: 100%;
    margin: 0;
    background: var(--lat-control);
    overflow: hidden;
}

body {
    display: flex;
    flex-direction: column;
    color: var(--lat-text);
}

button,
input,
select,
textarea { font: inherit; }

h1:focus { outline: none; }

.valid.modified:not([type=checkbox]) { outline: 1px solid #26a85e; }
.invalid { outline: 1px solid #ca4040; }
.validation-message,
.validation-errors { color: #b32c2c; }

.blazor-error-boundary {
    min-height: 3rem;
    padding: .85rem 1rem .85rem 3.5rem;
    border: 1px solid #a92727;
    background: linear-gradient(90deg, #9e2222, #c74d41);
    color: #fff;
}

.blazor-error-boundary::after { content: "Se produjo un error."; }

/* Ventanas de mantenimiento: réplica del tratamiento compacto de los formularios DevExpress. */
.page-header {
    width: 100%;
    max-width: none;
    margin: 0 0 .75rem;
    padding: .7rem .95rem .65rem;
    border: 1px solid #a9c4dc;
    border-left: 4px solid #1971b4;
    background: linear-gradient(180deg, rgba(255, 255, 255, .98), rgba(239, 247, 253, .98));
    box-shadow: 0 1px 2px rgba(18, 65, 106, .1);
}

.eyebrow {
    margin: 0 0 .2rem;
    color: #477495;
    font-size: .66rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.page-header h1,
.module-detail h1,
.hero-card h1 {
    margin: 0;
    color: #114d82;
    font-size: 1.22rem;
    font-weight: 650;
    line-height: 1.28;
}

.page-header > p:last-child {
    margin: .35rem 0 0;
    color: #5b7084;
    font-size: .82rem;
    line-height: 1.38;
}

/* Las pantallas de Latinium muestran el nombre y la categoría; el texto
   explicativo debajo del título no forma parte de la cabecera operativa. */
.page-header h1 + p:not(.eyebrow):not([role]):not([data-testid]):not(.status-message),
.page-header h1 ~ p:not(.eyebrow):not([role]):not([data-testid]):not(.status-message),
.page-header .page-subtitle,
.page-header .page-description,
.page-header .header-description,
.page-header .guia-header-description {
    display: none !important;
}

.master-layout {
    display: grid;
    grid-template-columns: minmax(20rem, 27vw) minmax(0, 1fr);
    gap: .7rem;
    align-items: stretch;
    width: 100%;
    max-width: none;
}

.master-layout > .master-list,
.master-layout > .master-editor {
    min-height: max(34rem, calc(100dvh - 18rem));
}

.master-layout > .master-list {
    display: flex;
    flex-direction: column;
}

.master-layout > .master-list .legacy-single-grid-shell {
    flex: 1 1 auto;
}

.master-list,
.master-editor,
.editor-card {
    min-width: 0;
    padding: .75rem;
    border: 1px solid var(--lat-border);
    border-radius: .12rem;
    background: rgba(255, 255, 255, .98);
    box-shadow: 0 1px 3px rgba(16, 56, 94, .15);
}

.master-list {
    border-top: 3px solid #2a7eb9;
}

.master-editor,
.editor-card {
    border-top: 3px solid #6b9dc4;
}

.master-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    align-items: end;
    margin: -.75rem -.75rem .7rem;
    padding: .55rem .65rem;
    border-bottom: 1px solid #c8dae9;
    background: linear-gradient(180deg, #f7fbfe, #e9f3fb);
}

.master-toolbar > .dxbl-btn,
.master-toolbar > a.button,
.master-toolbar > button.button {
    min-height: 2rem;
    border-radius: .12rem;
    font-weight: 650;
}


/* BarraDatoSQL / BarraDatoFicha: controles gráficos equivalentes a la barra
   de datos de Latinium. Los SVG son locales para que el icono no dependa de
   una fuente o de una conexión externa. */
.barra-dato-sql,
.barra-dato-ficha {
    /* Las barras forman parte del flujo normal de la ficha: sticky las
       superpone sobre los campos al desplazarse dentro de algunas pantallas. */
    position: static;
    z-index: auto;
}

.barra-dato-ficha {
    /* Evita que herede los márgenes negativos de .master-toolbar. */
    margin: 0 0 .7rem;
}

.barra-dato-sql { margin: 0 0 .7rem; }

.barra-dato-sql .barra-boton,
.barra-dato-ficha .barra-boton,
.barra-dato-ficha > .button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .28rem;
}

/* Mantener visibles los iconos de las barras aunque DevExpress aplique su
   color blanco por defecto al botón o a su contenido interno. */
.barra-dato-sql .barra-boton.dxbl-btn,
.barra-dato-ficha .barra-boton.dxbl-btn {
    border: 1px solid #a9c6df !important;
    border-radius: .16rem !important;
    background: linear-gradient(180deg, #fff 0%, #e6f0f8 100%) !important;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 1px 1px rgba(18, 57, 89, .08) !important;
}

.barra-dato-sql .barra-boton.dxbl-btn:not(:disabled):hover,
.barra-dato-ficha .barra-boton.dxbl-btn:not(:disabled):hover {
    border-color: #5594c5 !important;
    background: linear-gradient(180deg, #fafdff 0%, #d4eafa 100%) !important;
}

.barra-dato-sql .barra-boton.dxbl-btn:disabled,
.barra-dato-ficha .barra-boton.dxbl-btn:disabled {
    border-color: #c7d6e3 !important;
    background: #eef3f8 !important;
    box-shadow: none !important;
}

/* AuditoriaRastroBoton usa un button HTML para admitir clic derecho; al ser
   contenido de AdditionalActions no recibe el CSS aislado de BarraDatoSQL. */
.barra-dato-sql .auditoria-rastro-boton > .barra-boton,
.barra-dato-ficha .auditoria-rastro-boton > .barra-boton {
    appearance: none;
    border: 1px solid #a9c6df;
    border-radius: .16rem;
    padding: .2rem .42rem;
    background: linear-gradient(180deg, #fff 0%, #e6f0f8 100%);
    color: #7655a5;
    font: inherit;
    line-height: 1;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 1px 1px rgba(18, 57, 89, .08);
}
.barra-dato-sql .auditoria-rastro-boton > .barra-boton:hover:not(:disabled),
.barra-dato-ficha .auditoria-rastro-boton > .barra-boton:hover:not(:disabled) {
    border-color: #5594c5;
    background: linear-gradient(180deg, #fafdff 0%, #d4eafa 100%);
}
.barra-dato-sql .auditoria-rastro-boton > .barra-boton:disabled,
.barra-dato-ficha .auditoria-rastro-boton > .barra-boton:disabled { opacity: .62; }

.documento-acciones-principales .documento-nota-entrega-boton {
    appearance: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid #a9c6df;
    border-radius: .16rem;
    padding: .2rem .42rem;
    background: linear-gradient(180deg, #fff 0%, #e6f0f8 100%);
    color: #4b708d;
    font: inherit;
    line-height: 1;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 1px 1px rgba(18, 57, 89, .08);
}
.documento-acciones-principales .documento-nota-entrega-boton:hover:not(:disabled) {
    border-color: #5594c5;
    background: linear-gradient(180deg, #fafdff 0%, #d4eafa 100%);
}
.documento-acciones-principales .documento-nota-entrega-boton:disabled { opacity: .62; }
.documento-acciones-principales .documento-nota-entrega-boton:focus,
.documento-acciones-principales .documento-nota-entrega-boton:active {
    border-color: #a9c6df;
    background: linear-gradient(180deg, #fff 0%, #e6f0f8 100%);
}

.articulo-transacciones-asociadas-contenido {
    max-height: min(70vh, 42rem);
    overflow: auto;
}

.barra-dato-sql .barra-boton .dxbl-btn-icon,
.barra-dato-ficha .barra-boton .dxbl-btn-icon {
    color: inherit !important;
}

/* Colores de los iconos del proyecto original de Latinium. Cada acción
   conserva su color aunque la pantalla agregue botones adicionales. */
.barra-dato-sql .barra-boton:has(.barra-icono-primero),
.barra-dato-ficha .barra-boton:has(.barra-icono-primero),
.barra-dato-sql .barra-boton:has(.barra-icono-anterior),
.barra-dato-ficha .barra-boton:has(.barra-icono-anterior),
.barra-dato-sql .barra-boton:has(.barra-icono-siguiente),
.barra-dato-ficha .barra-boton:has(.barra-icono-siguiente),
.barra-dato-sql .barra-boton:has(.barra-icono-ultimo),
.barra-dato-ficha .barra-boton:has(.barra-icono-ultimo) { color: #2b75b5; }

.barra-dato-sql .barra-boton:has(.barra-icono-buscar),
.barra-dato-ficha .barra-boton:has(.barra-icono-buscar) { color: #397ba4; }
.barra-dato-sql .barra-boton:has(.barra-icono-imprimir),
.barra-dato-ficha .barra-boton:has(.barra-icono-imprimir) { color: #4b708d; }
.barra-dato-sql .barra-boton:has(.barra-icono-nuevo),
.barra-dato-ficha .barra-boton:has(.barra-icono-nuevo) { color: #2b75b5; }
.barra-dato-sql .barra-boton:has(.barra-icono-editar),
.barra-dato-ficha .barra-boton:has(.barra-icono-editar) { color: #a26b25; }
.barra-dato-sql .barra-boton:has(.barra-icono-copiar),
.barra-dato-ficha .barra-boton:has(.barra-icono-copiar) { color: #6a63a8; }
.barra-dato-sql .barra-boton:has(.barra-icono-restaurar),
.barra-dato-ficha .barra-boton:has(.barra-icono-restaurar) { color: #397ba4; }
.barra-dato-sql .barra-boton:has(.barra-icono-guardar),
.barra-dato-ficha .barra-boton:has(.barra-icono-guardar) { color: #3f8830; }
.barra-dato-sql .barra-boton:has(.barra-icono-deshacer),
.barra-dato-ficha .barra-boton:has(.barra-icono-deshacer) { color: #d28b17; }
.barra-dato-sql .barra-boton:has(.barra-icono-ayuda),
.barra-dato-ficha .barra-boton:has(.barra-icono-ayuda) { color: #4a6c8a; }
.barra-dato-sql .barra-boton:has(.barra-icono-borrar),
.barra-dato-ficha .barra-boton:has(.barra-icono-borrar) { color: #d60505; }
.barra-dato-sql .barra-boton:has(.barra-icono-anular) { color: #e47c02; }
.barra-dato-sql .barra-boton:has(.barra-icono-auditoria-varita),
.barra-dato-ficha .barra-boton:has(.barra-icono-auditoria-varita) { color: #7655a5; }

.pc-dato-toolbar .barra-boton:has(.pc-icon-expand),
.pc-dato-toolbar .barra-boton:has(.pc-icon-collapse) { color: #346b97 !important; }
.pc-dato-toolbar .barra-boton:has(.pc-icon-balance) { color: #356bb1 !important; }
.pc-dato-toolbar .barra-boton:has(.pc-icon-tree) { color: #7655a5 !important; }

.barra-dato-sql .barra-boton:has(.oi-magnifying-glass),
.barra-dato-ficha .barra-boton:has(.oi-magnifying-glass) { color: #397ba4; }
.barra-dato-sql .barra-boton:has(.oi-print),
.barra-dato-ficha .barra-boton:has(.oi-print) { color: #4b708d; }
.barra-dato-sql .barra-boton:has(.oi-plus),
.barra-dato-ficha .barra-boton:has(.oi-plus) { color: #2b75b5; }
.barra-dato-sql .barra-boton:has(.oi-trash),
.barra-dato-ficha .barra-boton:has(.oi-trash) { color: #d60505; }
.barra-dato-sql .barra-boton:has(.oi-reload),
.barra-dato-ficha .barra-boton:has(.oi-reload) { color: #d28b17; }
.barra-dato-sql .barra-boton:has(.oi-spreadsheet),
.barra-dato-ficha .barra-boton:has(.oi-spreadsheet),
.barra-dato-sql .barra-boton:has(.oi-book),
.barra-dato-ficha .barra-boton:has(.oi-book) { color: #6a63a8; }
.barra-dato-sql .barra-boton:has(.oi-calculator),
.barra-dato-ficha .barra-boton:has(.oi-calculator) { color: #3f8830; }
.barra-dato-sql .barra-boton:has(.oi-funnel),
.barra-dato-ficha .barra-boton:has(.oi-funnel) { color: #a26b25; }
.barra-dato-sql .barra-boton:has(.oi-envelope-closed),
.barra-dato-ficha .barra-boton:has(.oi-envelope-closed),
.barra-dato-sql .barra-boton:has(.oi-external-link),
.barra-dato-ficha .barra-boton:has(.oi-external-link) { color: #397ba4; }
.barra-dato-sql .barra-boton:has(.oi-document),
.barra-dato-ficha .barra-boton:has(.oi-document) { color: #4a6c8a; }

/* Los botones con IconCssClass="oi ..." necesitan un icono real. DevExpress
   dibuja estas clases como fondo del elemento, no como texto ::before. */
.oi {
    display: inline-block !important;
    flex: 0 0 1.1rem;
    width: 1.1rem !important;
    height: 1.1rem !important;
    background-color: currentColor !important;
    font-size: 0 !important;
    line-height: 1 !important;
    -webkit-mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: contain;
}
.oi::before { content: none !important; }
.oi-arrow-thick-right { -webkit-mask-image: url("images/actions/arrow-right.svg") !important; mask-image: url("images/actions/arrow-right.svg") !important; }
.oi-bar-chart { -webkit-mask-image: url("images/actions/bar-chart.svg") !important; mask-image: url("images/actions/bar-chart.svg") !important; }
.oi-book { -webkit-mask-image: url("images/actions/book.svg") !important; mask-image: url("images/actions/book.svg") !important; }
.oi-box { -webkit-mask-image: url("images/actions/box.svg") !important; mask-image: url("images/actions/box.svg") !important; }
.oi-calculator { -webkit-mask-image: url("images/actions/calculator.svg") !important; mask-image: url("images/actions/calculator.svg") !important; }
.oi-calendar { -webkit-mask-image: url("images/actions/calendar.svg") !important; mask-image: url("images/actions/calendar.svg") !important; }
.oi-check { -webkit-mask-image: url("images/actions/check.svg") !important; mask-image: url("images/actions/check.svg") !important; }
.oi-cog { -webkit-mask-image: url("images/actions/cog.svg") !important; mask-image: url("images/actions/cog.svg") !important; }
.oi-credit-card { -webkit-mask-image: url("images/actions/credit-card.svg") !important; mask-image: url("images/actions/credit-card.svg") !important; }
.oi-document { -webkit-mask-image: url("images/actions/document.svg") !important; mask-image: url("images/actions/document.svg") !important; }
.oi-dollar { -webkit-mask-image: url("images/actions/dollar.svg") !important; mask-image: url("images/actions/dollar.svg") !important; }
.oi-envelope-closed { -webkit-mask-image: url("images/actions/envelope.svg") !important; mask-image: url("images/actions/envelope.svg") !important; }
.oi-external-link { -webkit-mask-image: url("images/actions/external-link.svg") !important; mask-image: url("images/actions/external-link.svg") !important; }
.oi-folder { -webkit-mask-image: url("images/actions/folder.svg") !important; mask-image: url("images/actions/folder.svg") !important; }
.oi-funnel { -webkit-mask-image: url("images/actions/funnel.svg") !important; mask-image: url("images/actions/funnel.svg") !important; }
.oi-globe { -webkit-mask-image: url("images/actions/globe.svg") !important; mask-image: url("images/actions/globe.svg") !important; }
.oi-grid-three-up { -webkit-mask-image: url("images/actions/grid.svg") !important; mask-image: url("images/actions/grid.svg") !important; }
.oi-image { -webkit-mask-image: url("images/actions/image.svg") !important; mask-image: url("images/actions/image.svg") !important; }
.oi-inbox { -webkit-mask-image: url("images/actions/inbox.svg") !important; mask-image: url("images/actions/inbox.svg") !important; }
.oi-key { -webkit-mask-image: url("images/actions/key.svg") !important; mask-image: url("images/actions/key.svg") !important; }
.oi-link-intact { -webkit-mask-image: url("images/actions/link.svg") !important; mask-image: url("images/actions/link.svg") !important; }
.oi-list-rich { -webkit-mask-image: url("images/actions/list.svg") !important; mask-image: url("images/actions/list.svg") !important; }
.oi-lock-locked { -webkit-mask-image: url("images/actions/lock.svg") !important; mask-image: url("images/actions/lock.svg") !important; }
.oi-loop-circular { -webkit-mask-image: url("images/actions/reload.svg") !important; mask-image: url("images/actions/reload.svg") !important; }
.oi-magnifying-glass { -webkit-mask-image: url("images/crud/search.svg") !important; mask-image: url("images/crud/search.svg") !important; }
.oi-map-marker { -webkit-mask-image: url("images/actions/map-pin.svg") !important; mask-image: url("images/actions/map-pin.svg") !important; }
.oi-paperclip { -webkit-mask-image: url("images/actions/paperclip.svg") !important; mask-image: url("images/actions/paperclip.svg") !important; }
.oi-people { -webkit-mask-image: url("images/actions/people.svg") !important; mask-image: url("images/actions/people.svg") !important; }
.oi-person { -webkit-mask-image: url("images/actions/person.svg") !important; mask-image: url("images/actions/person.svg") !important; }
.oi-pie-chart { -webkit-mask-image: url("images/actions/pie.svg") !important; mask-image: url("images/actions/pie.svg") !important; }
.oi-plus { -webkit-mask-image: url("images/crud/new.svg") !important; mask-image: url("images/crud/new.svg") !important; }
.oi-print { -webkit-mask-image: url("images/crud/print.svg") !important; mask-image: url("images/crud/print.svg") !important; }
.oi-reload { -webkit-mask-image: url("images/actions/reload.svg") !important; mask-image: url("images/actions/reload.svg") !important; }
.oi-spreadsheet { -webkit-mask-image: url("images/actions/spreadsheet.svg") !important; mask-image: url("images/actions/spreadsheet.svg") !important; }
.oi-tag { -webkit-mask-image: url("images/actions/tag.svg") !important; mask-image: url("images/actions/tag.svg") !important; }
.oi-transfer { -webkit-mask-image: url("images/actions/transfer.svg") !important; mask-image: url("images/actions/transfer.svg") !important; }
.oi-trash { -webkit-mask-image: url("images/crud/delete.svg") !important; mask-image: url("images/crud/delete.svg") !important; }
.oi-wrench { -webkit-mask-image: url("images/actions/wrench.svg") !important; mask-image: url("images/actions/wrench.svg") !important; }

.barra-dato-sql [class*="barra-icono-"],
.barra-dato-ficha [class*="barra-icono-"] {
    display: inline-block;
    flex: 0 0 1.05rem;
    width: 1.05rem;
    height: 1.05rem;
    background-color: currentColor;
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
    font-size: 0;
    line-height: 1;
    -webkit-mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: contain;
}

.barra-dato-sql .barra-icono-primero,
.barra-dato-ficha .barra-icono-primero { -webkit-mask-image: url("images/crud/first.svg"); mask-image: url("images/crud/first.svg"); }
.barra-dato-sql .barra-icono-anterior,
.barra-dato-ficha .barra-icono-anterior { -webkit-mask-image: url("images/crud/previous.svg"); mask-image: url("images/crud/previous.svg"); }
.barra-dato-sql .barra-icono-siguiente,
.barra-dato-ficha .barra-icono-siguiente { -webkit-mask-image: url("images/crud/next.svg"); mask-image: url("images/crud/next.svg"); }
.barra-dato-sql .barra-icono-ultimo,
.barra-dato-ficha .barra-icono-ultimo { -webkit-mask-image: url("images/crud/last.svg"); mask-image: url("images/crud/last.svg"); }
.barra-dato-sql .barra-icono-buscar,
.barra-dato-ficha .barra-icono-buscar { -webkit-mask-image: url("images/crud/search.svg"); mask-image: url("images/crud/search.svg"); }
.barra-dato-sql .barra-icono-imprimir,
.barra-dato-ficha .barra-icono-imprimir { -webkit-mask-image: url("images/crud/print.svg"); mask-image: url("images/crud/print.svg"); }
.barra-dato-sql .barra-icono-codigo-barras,
.barra-dato-ficha .barra-icono-codigo-barras { -webkit-mask-image: url("images/crud/barcode.svg"); mask-image: url("images/crud/barcode.svg"); }
.clientes-barra-dato .barra-icono-digitalizacion { -webkit-mask-image: url("images/actions/paperclip.svg"); mask-image: url("images/actions/paperclip.svg"); }
.clientes-barra-dato .barra-boton:has(.barra-icono-digitalizacion) { color:#397ba4; }
.clientes-barra-dato .barra-boton:has(.barra-icono-auditoria-varita) { color:#7655a5; }
.barra-dato-sql .barra-icono-nuevo,
.barra-dato-ficha .barra-icono-nuevo { -webkit-mask-image: url("images/crud/new.svg"); mask-image: url("images/crud/new.svg"); }
.barra-dato-sql .barra-icono-editar,
.barra-dato-ficha .barra-icono-editar { -webkit-mask-image: url("images/crud/edit.svg"); mask-image: url("images/crud/edit.svg"); }
.barra-dato-sql .barra-icono-borrar,
.barra-dato-ficha .barra-icono-borrar { -webkit-mask-image: url("images/crud/delete.svg"); mask-image: url("images/crud/delete.svg"); }
.barra-dato-sql .barra-icono-anular { -webkit-mask-image: url("images/crud/undo.svg"); mask-image: url("images/crud/undo.svg"); }
.barra-dato-sql .barra-icono-copiar,
.barra-dato-ficha .barra-icono-copiar { -webkit-mask-image: url("images/crud/copy.svg"); mask-image: url("images/crud/copy.svg"); }
.barra-dato-sql .barra-icono-restaurar,
.barra-dato-ficha .barra-icono-restaurar { -webkit-mask-image: url("images/crud/restore.svg"); mask-image: url("images/crud/restore.svg"); }
.barra-dato-sql .barra-icono-guardar,
.barra-dato-ficha .barra-icono-guardar { -webkit-mask-image: url("images/crud/save.svg"); mask-image: url("images/crud/save.svg"); }
.barra-dato-sql .barra-icono-deshacer,
.barra-dato-ficha .barra-icono-deshacer { -webkit-mask-image: url("images/crud/undo.svg"); mask-image: url("images/crud/undo.svg"); }
.barra-dato-sql .barra-icono-auditoria-varita,
.barra-dato-ficha .barra-icono-auditoria-varita,
.barra-icono-auditoria-varita {
    display: inline-block;
    flex: 0 0 1rem;
    width: 1rem;
    height: 1rem;
    background-color: currentColor;
    -webkit-mask: url("images/crud/wand.svg") center / contain no-repeat;
    mask: url("images/crud/wand.svg") center / contain no-repeat;
}
.barra-dato-sql .barra-icono-fotos,
.barra-dato-ficha .barra-icono-fotos { -webkit-mask-image: url("images/crud/camera.svg"); mask-image: url("images/crud/camera.svg"); }
.barra-dato-sql .barra-icono-ayuda,
.barra-dato-ficha .barra-icono-ayuda { -webkit-mask-image: url("images/crud/help.svg"); mask-image: url("images/crud/help.svg"); }
.documento-acciones-principales .documento-icono-nube { -webkit-mask: url("images/actions/cloud-check.svg") center / contain no-repeat; mask: url("images/actions/cloud-check.svg") center / contain no-repeat; }
.retencion-electronica-acciones .documento-icono-nube { display:inline-block; width:1.1rem; height:1.1rem; flex:0 0 1.1rem; background-color:#3286bd; -webkit-mask: url("images/actions/cloud-check.svg") center / contain no-repeat; mask: url("images/actions/cloud-check.svg") center / contain no-repeat; }
.documento-acciones-principales .documento-icono-guia { -webkit-mask: url("images/actions/truck.svg") center / contain no-repeat; mask: url("images/actions/truck.svg") center / contain no-repeat; }
.documento-acciones-principales .documento-icono-binoculares { -webkit-mask: url("images/actions/binoculares.svg") center / contain no-repeat; mask: url("images/actions/binoculares.svg") center / contain no-repeat; }
.documento-acciones-principales .barra-icono-digitalizacion { -webkit-mask: url("images/actions/paperclip.svg") center / contain no-repeat; mask: url("images/actions/paperclip.svg") center / contain no-repeat; }
.documento-acciones-principales .barra-icono-auditoria-varita { -webkit-mask: url("images/crud/wand.svg") center / contain no-repeat; mask: url("images/crud/wand.svg") center / contain no-repeat; }
.documento-acciones-principales .documento-icono-nube,
.documento-acciones-principales .documento-icono-guia,
.documento-acciones-principales .documento-icono-binoculares,
.documento-acciones-principales .barra-icono-digitalizacion,
.documento-acciones-principales .barra-icono-auditoria-varita { display:inline-block; width:1.1rem; height:1.1rem; flex:0 0 1.1rem; background-color:currentColor !important; }
.documento-acciones-principales .barra-boton:has(.documento-icono-nube) { color:#3286bd; }
.documento-acciones-principales .barra-boton:has(.documento-icono-guia) { color:#b87524; }
.documento-acciones-principales .barra-boton:has(.documento-icono-binoculares) { color:#397ba4; }
.documento-acciones-principales .barra-boton:has(.barra-icono-digitalizacion) { color:#397ba4; }
.documento-acciones-principales .documento-barra-saldo-articulo .barra-boton { color:#7544ab; }
.documento-acciones-principales .documento-barra-saldo-articulo .barra-boton:hover:not(:disabled) { background:#f0eafd; color:#63358f; }
.documento-acciones-principales .documento-auditoria-boton { appearance:none; min-width:2rem; min-height:2rem; padding:.2rem .42rem; border:1px solid #a9c6df; border-radius:.16rem; background:linear-gradient(180deg, #fff 0%, #e6f0f8 100%); color:#7655a5; line-height:1; box-shadow:inset 0 1px 0 rgba(255,255,255,.9), 0 1px 1px rgba(18,57,89,.08); }
.documento-acciones-principales .documento-auditoria-boton:hover:not(:disabled) { border-color:#bfd3e5; background:#e4eef7; }
.documento-acciones-principales .documento-auditoria-boton:disabled { opacity:.62; }
.compra-distribucion-cabecera { display:flex; align-items:center; gap:.65rem; padding:.15rem 0 .65rem; border-bottom:1px solid #c9d1dc; }
.compra-distribucion-modos { display:flex; align-items:center; gap:1rem; margin-right:auto; }
.compra-distribucion-modos label { display:inline-flex; align-items:center; gap:.35rem; white-space:nowrap; }
.compra-distribucion-selector { display:grid; grid-template-columns:7rem minmax(12rem,1fr); align-items:center; gap:.5rem; margin:.55rem 0; }
.compra-distribucion-grid { min-height:16rem; }
.documento-acciones-principales .documento-asiento-boton { min-width:2rem; font-weight:700; font-family:Arial,sans-serif; }
.documento-acciones-principales .barra-boton:has(.barra-icono-codigo-barras) { color:#466b85; }
.documento-barras-reporte { width:100%; height:calc(90vh - 5rem); min-height:0; overflow:hidden; }
.documento-barras-reporte .report-preview-embedded { width:100%; height:100%; min-height:0; overflow:hidden; }
.documento-reporte-modal { height: calc(min(900px, 92vh) - 6rem); min-height: 0; overflow: hidden; }
.documento-reporte-modal .report-preview-embedded { height: 100%; }
.documento-barras-reporte .report-viewer-shell,
.documento-barras-reporte .latinium-report-viewer { width:100%; min-width:0; min-height:0; max-width:100%; }

.auditoria-icono-varita {
    display: inline-block;
    flex: 0 0 1.05rem;
    width: 1.05rem;
    height: 1.05rem;
    background-color: currentColor;
    -webkit-mask: url("images/crud/wand.svg") center / contain no-repeat;
    mask: url("images/crud/wand.svg") center / contain no-repeat;
}
.pc-dato-toolbar .pc-icon-expand,
.pc-dato-toolbar .pc-icon-collapse,
.pc-dato-toolbar .pc-icon-balance,
.pc-dato-toolbar .pc-icon-tree {
    display: inline-block;
    width: 1.05rem;
    height: 1.05rem;
    background-color: currentColor;
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
    font-size: 0;
    line-height: 1;
    -webkit-mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: contain;
    background-color: currentColor !important;
}
.pc-dato-toolbar .pc-icon-expand { -webkit-mask-image: url("images/crud/tree-expand.svg"); mask-image: url("images/crud/tree-expand.svg"); }
.pc-dato-toolbar .pc-icon-collapse { -webkit-mask-image: url("images/crud/tree-collapse.svg"); mask-image: url("images/crud/tree-collapse.svg"); }
.pc-dato-toolbar .pc-icon-balance { -webkit-mask-image: url("images/crud/balance.svg"); mask-image: url("images/crud/balance.svg"); }
.pc-dato-toolbar .pc-icon-tree { -webkit-mask-image: url("images/crud/tree.svg"); mask-image: url("images/crud/tree.svg"); }
.auditoria-rastro-boton > button { display: inline-flex; align-items: center; gap: .25rem; }
.auditoria-rastro-boton .barra-icono-auditoria-varita {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    flex: 0 0 1rem;
    background-color: currentColor;
    -webkit-mask: url("images/crud/wand.svg") center / contain no-repeat;
    mask: url("images/crud/wand.svg") center / contain no-repeat;
}
.boton-auditoria-varita { display: inline-flex; min-width: 2rem; min-height: 2rem; align-items: center; justify-content: center; padding: .2rem .38rem; }

.barra-dato-sql .barra-solo-icono,
.barra-dato-ficha .barra-solo-icono { min-width: 2rem; }

/* Botones CRUD heredados que todavía se declaran directamente en una pantalla. */
.crud-icon {
    display: inline-block;
    flex: 0 0 1.05rem;
    width: 1.05rem;
    height: 1.05rem;
    background-color: currentColor;
    background-position: center;
    background-repeat: no-repeat;
    background-size: contain;
    -webkit-mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: contain;
}

.crud-icon-first { -webkit-mask-image: url("images/crud/first.svg"); mask-image: url("images/crud/first.svg"); }
.crud-icon-previous { -webkit-mask-image: url("images/crud/previous.svg"); mask-image: url("images/crud/previous.svg"); }
.crud-icon-next { -webkit-mask-image: url("images/crud/next.svg"); mask-image: url("images/crud/next.svg"); }
.crud-icon-last { -webkit-mask-image: url("images/crud/last.svg"); mask-image: url("images/crud/last.svg"); }
.crud-icon-new { -webkit-mask-image: url("images/crud/new.svg"); mask-image: url("images/crud/new.svg"); }
.crud-icon-edit { -webkit-mask-image: url("images/crud/edit.svg"); mask-image: url("images/crud/edit.svg"); }
.crud-icon-delete { -webkit-mask-image: url("images/crud/delete.svg"); mask-image: url("images/crud/delete.svg"); }
.crud-icon-save { -webkit-mask-image: url("images/crud/save.svg"); mask-image: url("images/crud/save.svg"); }
.crud-icon-undo { -webkit-mask-image: url("images/crud/undo.svg"); mask-image: url("images/crud/undo.svg"); }
.crud-icon-search { -webkit-mask-image: url("images/crud/search.svg"); mask-image: url("images/crud/search.svg"); }
.crud-icon-print { -webkit-mask-image: url("images/crud/print.svg"); mask-image: url("images/crud/print.svg"); }
.crud-icon-help { -webkit-mask-image: url("images/crud/help.svg"); mask-image: url("images/crud/help.svg"); }
.crud-icon-copy { -webkit-mask-image: url("images/crud/copy.svg"); mask-image: url("images/crud/copy.svg"); }
.crud-icon-restore { -webkit-mask-image: url("images/crud/restore.svg"); mask-image: url("images/crud/restore.svg"); }

.lote-icono-retencion {
    display: inline-block;
    width: 1rem;
    height: 1rem;
    background-color: #8b681c;
    -webkit-mask: url("images/crud/survey.svg") center / contain no-repeat;
    mask: url("images/crud/survey.svg") center / contain no-repeat;
}

/* Encuesta de la ficha de personal: mismo tamaño y alineación que los iconos CRUD. */
.rp-barra .rolpersonal-encuesta {
    box-sizing: border-box;
    display: inline-flex;
    flex: 0 0 2rem;
    align-items: center;
    justify-content: center;
    width: 2rem;
    min-width: 2rem;
    height: 2rem;
    min-height: 2rem;
    padding: 0;
    border: 1px solid #a9c6df;
    border-radius: .16rem;
    background: linear-gradient(180deg, #fff 0%, #e6f0f8 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 1px 1px rgba(18, 57, 89, .08);
    text-decoration: none;
}

.rp-barra .rolpersonal-encuesta:hover:not(:disabled) {
    border-color: #5594c5;
    background: linear-gradient(180deg, #fafdff 0%, #d4eafa 100%);
}

.rp-barra button.rolpersonal-encuesta:disabled {
    border-color: #c7d6e3;
    background: #eef3f8;
    box-shadow: none;
}

.rp-barra .rolpersonal-icono-encuesta {
    display: block;
    flex: 0 0 1.1rem;
    width: 1.1rem;
    height: 1.1rem;
    background-color: #2b75b5;
    -webkit-mask: url("images/crud/survey.svg") center / contain no-repeat;
    mask: url("images/crud/survey.svg") center / contain no-repeat;
}

.crud-button-icon-only {
    min-width: 2rem;
}

.crud-button-icon-only .dxbl-btn-text {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

/* Si la barra quedó declarada al final de una ficha, se reordena al inicio
   del editor sin obligar a modificar cada pantalla heredada. */
.master-editor:has(.barra-dato-ficha),
.editor-card:has(.barra-dato-ficha) {
    display: flex;
    flex-direction: column;
}

.master-editor:has(.barra-dato-sql),
.editor-card:has(.barra-dato-sql) {
    display: flex;
    flex-direction: column;
}

.master-editor:has(.barra-dato-ficha) > :has(> .barra-dato-ficha),
.editor-card:has(.barra-dato-ficha) > :has(> .barra-dato-ficha),
.legacy-settings-content:has(.barra-dato-ficha) > :has(> .barra-dato-ficha),
.master-editor > .barra-dato-ficha,
.editor-card > .barra-dato-ficha,
.legacy-settings-content > .barra-dato-ficha {
    order: -10;
}

.master-editor:has(.barra-dato-sql) > :has(> .barra-dato-sql),
.editor-card:has(.barra-dato-sql) > :has(> .barra-dato-sql),
.legacy-settings-content:has(.barra-dato-sql) > :has(> .barra-dato-sql),
.master-editor > .barra-dato-sql,
.editor-card > .barra-dato-sql,
.legacy-settings-content > .barra-dato-sql {
    order: -10;
}

.legacy-settings-content:has(.barra-dato-ficha, .barra-dato-sql) {
    display: flex;
    flex-direction: column;
}

/* Fichas heredadas con un contenedor propio (incluye formularios donde la
   barra vive dentro de editor-actions) también la muestran antes del detalle. */
:is([class*="ficha"], [class*="form"]):has(.barra-dato-ficha) > :has(> .barra-dato-ficha),
:is([class*="ficha"], [class*="form"]):has(.barra-dato-sql) > :has(> .barra-dato-sql) {
    order: -10;
}

.master-toolbar label,
.field {
    display: grid;
    gap: .24rem;
    color: #315a7e;
    font-size: .74rem;
    font-weight: 700;
}

.master-toolbar label { flex: 1 1 13rem; }

/* Las etiquetas de la barra colocan el rótulo encima del control y ocupan 13rem.
   Una casilla no se rotula así: va a la izquierda de su texto y ocupa lo que
   necesita, como en la barra de filtros del formulario original. */
.master-toolbar label:has(> .dxbl-checkbox),
.master-toolbar label:has(> input[type="checkbox"]),
.field:has(> .dxbl-checkbox),
.field:has(> input[type="checkbox"]) {
    display: inline-flex;
    flex: 0 0 auto;
    align-items: center;
    gap: .38rem;
    font-weight: 600;
    white-space: nowrap;
}

.master-toolbar input:not([type=checkbox]):not([type=radio]),
.field input:not([type=checkbox]):not([type=radio]),
.field select,
.field textarea,
.master-editor input:not([type=checkbox]):not([type=radio]),
.master-editor select,
.master-editor textarea,
.detail-editor input:not([type=checkbox]):not([type=radio]),
.detail-editor select,
.detail-editor textarea,
.module-toolbar input:not([type=checkbox]):not([type=radio]) {
    width: 100%;
    min-height: 1.88rem;
    padding: .32rem .48rem;
    border: 1px solid #9fbad2;
    border-radius: .08rem;
    outline: none;
    background: #fff;
    color: #1c3248;
    font-weight: 400;
}

.master-toolbar input:not([type=checkbox]):not([type=radio]):focus,
.field input:not([type=checkbox]):not([type=radio]):focus,
.field select:focus,
.field textarea:focus,
.master-editor input:not([type=checkbox]):not([type=radio]):focus,
.master-editor select:focus,
.master-editor textarea:focus,
.detail-editor input:not([type=checkbox]):not([type=radio]):focus,
.detail-editor select:focus,
.detail-editor textarea:focus,
.module-toolbar input:not([type=checkbox]):not([type=radio]):focus {
    border-color: #347eb9;
    box-shadow: 0 0 0 2px rgba(60, 137, 194, .18);
}

input[type=checkbox],
input[type=radio] {
    width: .95rem;
    height: .95rem;
    margin: 0 .28rem 0 0;
    accent-color: #1774b5;
    vertical-align: -2px;
}

.filter-field { min-width: 12rem; }
.filter-field select { min-width: 12rem; }

.result-count {
    margin: .55rem 0 0;
    color: var(--lat-muted);
    font-size: .75rem;
}

.button,
.primary-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 1.9rem;
    padding: .3rem .66rem;
    border: 1px solid #89aeca;
    border-radius: .1rem;
    cursor: pointer;
    background: linear-gradient(180deg, #fff 0%, #e6f0f8 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .95), 0 1px 1px rgba(18, 57, 89, .08);
    color: #174f80;
    font: inherit;
    font-size: .76rem;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    white-space: nowrap;
}

.button:hover,
.primary-action:hover {
    border-color: #5594c5;
    background: linear-gradient(180deg, #fafdff 0%, #d4eafa 100%);
    color: #073f78;
}

.button:active,
.primary-action:active {
    background: #d2e5f4;
    box-shadow: inset 0 1px 3px rgba(28, 84, 127, .18);
}

.button.primary,
.primary-action {
    border-color: #0a5a99;
    background: linear-gradient(180deg, #2784c4 0%, #0f5b98 100%);
    color: #fff;
    text-shadow: 0 -1px 0 rgba(0, 0, 0, .16);
}

.button.primary:hover,
.primary-action:hover {
    border-color: #064879;
    background: linear-gradient(180deg, #3c91cb 0%, #0a4d85 100%);
    color: #fff;
}

.button.danger {
    border-color: #cc8b8b;
    background: linear-gradient(180deg, #fffafa, #f7e0df);
    color: #9d3131;
}

.button:disabled {
    cursor: wait;
    filter: grayscale(.22);
    opacity: .64;
}

/* Las acciones de líneas están deshabilitadas en modo lectura; no indican una carga. */
.button.ct-line-action:disabled {
    cursor: default;
}

.table-scroll {
    max-height: 34rem;
    overflow: auto;
    border: 1px solid #cfdfec;
    background: #fff;
}

.master-table {
    width: 100%;
    border-collapse: collapse;
    color: #263b50;
    font-size: .76rem;
}

.master-table th,
.master-table td {
    padding: .38rem .48rem;
    border-right: 1px solid #e2ebf3;
    border-bottom: 1px solid #dce7f0;
    text-align: left;
    vertical-align: middle;
}

.master-table th {
    position: sticky;
    z-index: 1;
    top: 0;
    border-bottom-color: #9ebcd5;
    background: linear-gradient(180deg, #edf6fc 0%, #d5e7f5 100%);
    color: #1d5684;
    font-size: .68rem;
    font-weight: 700;
    text-transform: uppercase;
    white-space: nowrap;
}

.master-table tbody tr { cursor: pointer; }
.master-table tbody tr:nth-child(even) { background: #f8fbfd; }
.master-table tbody tr:hover { background: #e1f0fb; }
.master-table tbody tr.selected { background: #cce5f7; box-shadow: inset 3px 0 #1877b8; }
.master-table .button { min-height: 1.55rem; padding: .2rem .4rem; font-size: .69rem; }
.master-table input:not([type=checkbox]) { min-width: 5rem; min-height: 1.6rem; padding: .2rem .3rem; }

.numeric { text-align: right !important; white-space: nowrap; }

/* La rejilla de Generar Roles necesita espacio por columna: son muchos rubros y sus títulos
   deben partirse para que no se dibujen uno encima del siguiente. */
.rol-genera-periodo-rejilla .table-scroll {
    max-height: min(62vh, 42rem);
    border-color: #b9cbd9;
    border-radius: .3rem;
}

.rol-genera-periodo-rejilla .legacy-table {
    width: max-content;
    min-width: 100%;
    table-layout: fixed;
    border-collapse: separate;
    border-spacing: 0;
    color: #263b50;
    font-size: .84rem;
}

.rol-genera-periodo-rejilla .legacy-table th,
.rol-genera-periodo-rejilla .legacy-table td {
    width: 9rem;
    min-width: 9rem;
    padding: .62rem .8rem;
    border-right: 1px solid #dce5ec;
    border-bottom: 1px solid #dce5ec;
    line-height: 1.4;
    vertical-align: middle;
}

.rol-genera-periodo-rejilla .legacy-table th {
    position: sticky;
    z-index: 2;
    top: 0;
    width: 9rem;
    min-width: 9rem;
    max-width: 9rem;
    height: 3.6rem;
    background: #eaf3f9;
    color: #214f72;
    font-size: .74rem;
    font-weight: 700;
    letter-spacing: .025em;
    text-align: left;
    white-space: normal !important;
    overflow-wrap: anywhere;
}

.rol-genera-periodo-rejilla .legacy-table th:nth-child(2),
.rol-genera-periodo-rejilla .legacy-table td:nth-child(2) {
    width: 13rem;
    min-width: 13rem;
}

.rol-genera-periodo-rejilla .legacy-table th:nth-child(3),
.rol-genera-periodo-rejilla .legacy-table td:nth-child(3),
.rol-genera-periodo-rejilla .legacy-table th:nth-child(4),
.rol-genera-periodo-rejilla .legacy-table td:nth-child(4) {
    width: 5rem;
    min-width: 5rem;
}

.rol-genera-periodo-rejilla .legacy-table tbody tr:nth-child(even) td { background: #f7fafc; }
.rol-genera-periodo-rejilla .legacy-table tbody tr:hover td { background: #edf5fb; }

.rol-genera-periodo-rejilla .legacy-table td input:not([type="checkbox"]) {
    box-sizing: border-box;
    width: 100%;
    min-width: 0;
    min-height: 2rem;
    padding: .35rem .45rem;
}

.rol-genera-periodo-rejilla .legacy-table td input[type="number"] {
    min-width: 0;
    text-align: right;
}

.rol-genera-periodo-rejilla .legacy-table th:first-child,
.rol-genera-periodo-rejilla .legacy-table td:first-child {
    position: sticky;
    z-index: 3;
    left: 0;
    min-width: 2.5rem;
    width: 2.5rem;
    padding-left: .55rem;
    padding-right: .55rem;
    background: #fff;
    text-align: center;
}

.rol-genera-periodo-rejilla .legacy-table th:first-child { background: #eaf3f9; }
.rol-genera-periodo-rejilla tr.enfocada td { background: #e8f0fe; }
.rol-genera-periodo-rejilla tr.enfocada td:first-child { background: #dceafb; }

.rol-genera .rol-genera-panel {
    display: grid;
    grid-template-columns: minmax(390px, .9fr) minmax(560px, 1.35fr);
    align-items: start;
    gap: 1rem;
    min-width: 0;
    margin-bottom: .85rem;
    padding: 1rem;
    border: 1px solid #d5e2ec;
    border-radius: .55rem;
    background: linear-gradient(180deg, #fff 0%, #f9fbfd 100%);
    box-shadow: 0 2px 7px rgb(30 65 92 / 7%);
    position: static !important;
    height: auto !important;
    min-width: 0 !important;
}

.rol-genera .rol-genera-panel > * {
    position: static !important;
    inset: auto !important;
    width: auto !important;
    min-width: 0 !important;
}

.rol-genera { min-width: 0; overflow-x: visible !important; }
.rol-genera .rg-filtros { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; min-width: 0; }
.rol-genera .rg-filtros-columna { display: flex; flex-direction: column; gap: .65rem; min-width: 0; }
.rol-genera .rg-fecha-acciones { display: grid; grid-template-columns: minmax(120px, 1fr) auto auto; gap: .4rem; align-items: center; min-width: 0; }
.rol-genera .rg-mes { display: flex; align-items: center; gap: .4rem; min-width: 0; color: #34536c; font-size: .84rem; font-weight: 600; }
.rol-genera .rg-mes > span { flex: 0 0 auto; }
.rol-genera .rg-mes .dxbl-date-edit { flex: 1 1 auto; min-width: 0; }
.rol-genera .rg-control { display: block; min-width: 0; }
.rol-genera .rg-control .dxbl-combobox { width: 100%; }
.rol-genera .rg-generacion-acciones { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .4rem; }
.rol-genera .rg-generacion-acciones > span { display: block; min-width: 0; }
.rol-genera .rg-generacion-acciones .dxbl-btn {
    width: 100%;
    min-height: 2.3rem;
    border: 1px solid #a9c6df;
    border-radius: .18rem;
    background: #f1f7fc;
    color: #245d8a;
    font-weight: 700;
}
.rol-genera .rg-generacion-acciones .dxbl-btn:hover,
.rol-genera .rg-botones .dxbl-btn:hover { border-color: #82aed1; background: #e5f1fa; color: #174e79; }
.rol-genera .rg-mostrar { display: flex; flex-wrap: wrap; gap: .5rem .85rem; padding: .45rem .6rem; border: 1px solid #e0e9f0; border-radius: .35rem; background: #fff; color: #34536c; font-size: .8rem; }
.rol-genera .rg-acciones { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: stretch; gap: .65rem; min-width: 0; }
.rol-genera .rg-grupo-acciones { min-width: 0; padding: .65rem; border: 1px solid #dce6ee; border-radius: .45rem; background: #f6f9fc; }
.rol-genera .rg-grupo-acciones h3 { margin: 0 0 .5rem; color: #315975; font-size: .77rem; font-weight: 700; letter-spacing: .035em; text-transform: uppercase; }
.rol-genera .rg-botones { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .4rem; }
.rol-genera .rg-botones > span { display: block; min-width: 0; }
.rol-genera .rg-botones .dxbl-btn { width: 100%; min-height: 2.3rem; padding: .35rem .45rem; border: 1px solid #a9c6df; border-radius: .18rem; background: #f1f7fc; color: #245d8a; font-size: .78rem; font-weight: 700; line-height: 1.2; white-space: normal; }

/* Aplica también al marcado de RolGenera que ya está abierto en sesiones anteriores. */
.rol-genera-panel .dxbl-btn {
    border: 1px solid #a9c6df !important;
    border-radius: .18rem !important;
    background: #f1f7fc !important;
    color: #245d8a !important;
    box-shadow: none !important;
    font-weight: 700 !important;
}

.rol-genera-panel .dxbl-btn:hover:not(:disabled) {
    border-color: #82aed1 !important;
    background: #e5f1fa !important;
    color: #174e79 !important;
}

.rol-genera-panel .dxbl-btn .dxbl-btn-text { color: inherit !important; font-weight: inherit !important; }

@media (max-width: 1250px) {
    .rol-genera .rol-genera-panel { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 760px) {
    .rol-genera .rol-genera-panel { gap: .8rem; padding: .7rem; }
    .rol-genera .rg-filtros,
    .rol-genera .rg-acciones { grid-template-columns: minmax(0, 1fr); }
}

.editor-heading {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    align-items: baseline;
    justify-content: space-between;
    margin: 0 0 .65rem;
    padding-bottom: .38rem;
    border-bottom: 1px solid #d7e5f0;
}

.editor-heading h2,
.editor-heading h3 {
    margin: 0;
    color: #155182;
    font-size: .98rem;
    font-weight: 650;
}

.editor-heading h3 { font-size: .86rem; }
.editor-heading span,
.muted { color: #667e93; font-size: .74rem; }
.detail-heading,
.nested-heading { margin-top: 1rem; }

.editor-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .58rem .68rem;
}

/* Importar WS (Sincronización): fechas, Cod. Web y sucursal con ancho de campo, no media pantalla cada una. */
.editor-grid.sincronizacion-filtros { grid-template-columns: repeat(auto-fill, minmax(12rem, 14rem)); }

/* Artículos: conserva la geometría compacta de las pestañas Precio y Complemento de Latinium. */
.articulo-precios-complementarios {
    display: grid;
    grid-template-columns: minmax(18rem, 1fr) minmax(18rem, 1fr);
    gap: .5rem .9rem;
    align-items: end;
    max-width: 52rem;
    margin-top: .7rem;
}
.articulo-precios-complementarios .field { margin: 0; }
.articulo-precio-opciones {
    display: flex;
    align-items: center;
    gap: 1rem;
    min-height: 2rem;
}
.articulo-precio-opciones > label,
.articulo-complemento-grid label:has(> .dxbl-checkbox) {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    margin: 0;
    color: #315a7e;
    font-size: .74rem;
    font-weight: 600;
    white-space: nowrap;
}
.articulo-costo-promedio { grid-column: 2; }
.articulo-complemento-grid {
    display: grid;
    grid-template-columns: 21rem 17rem minmax(19rem, 1fr);
    column-gap: 1rem;
    align-items: start;
    max-width: 62rem;
    min-height: 37rem;
    padding: .55rem .7rem;
}
.articulo-complemento-grid > div { min-width: 0; }
.articulo-complemento-izquierda { display: grid; gap: .48rem; align-content: start; }
.articulo-complemento-unidad,
.articulo-complemento-campos {
    display: grid;
    grid-template-columns: 9rem 6.5rem;
    gap: .42rem .58rem;
    align-items: center;
}
.articulo-complemento-unidad { grid-template-columns: 9rem 6.5rem minmax(4rem, 1fr); }
.articulo-complemento-unidad > *,
.articulo-complemento-campos > * { min-width: 0; max-width: 100%; }
.articulo-complemento-calculo { display:block; margin-top: .05rem; }
.articulo-complemento-calculo .dxbl-btn { min-width: 5.3rem; }
.articulo-complemento-bodegas { margin-top: 2.15rem; }
.articulo-complemento-grid > div > label:not(:has(> .dxbl-checkbox)),
.articulo-complemento-campos > label {
    color: #315a7e;
    font-size: .74rem;
    font-weight: 600;
}
.articulo-complemento-centro { display: grid; align-content:start; gap: .45rem; min-width: 0; }
.articulo-maneja-series { display: flex; align-items: center; gap: .55rem; min-height: 2rem; white-space:nowrap; }
.articulo-descontinuado { display: grid; gap: .42rem; min-width: 0; margin: .1rem 0 0; padding: .65rem .55rem .55rem; border:1px solid #d0d3d7; }
.articulo-descontinuado label { white-space: normal !important; }
.articulo-descontinuado legend { padding: 0 .2rem; color: #315a7e; font-size: .74rem; }
.articulo-complemento-checks { display: grid; gap: .45rem; }
.articulo-complemento-derecha { display: grid; align-content: start; gap: .55rem; padding-top: .2rem; }
.articulo-complemento-derecha-superior { display:flex; align-items:center; gap:.8rem; white-space:nowrap; }
.articulo-complemento-material { display:grid; grid-template-columns: 10rem minmax(7rem, 1fr); gap:.5rem; align-items:center; }
.articulo-complemento-material .dxbl-combobox { min-width:0; width:100%; }
.articulo-foto-layout {
    display: grid;
    grid-template-columns: minmax(18rem, .9fr) minmax(24rem, 1.1fr);
    gap: 1.1rem;
    align-items: stretch;
    min-height: 36rem;
}
.articulo-foto-notas { display:grid; grid-template-rows:auto minmax(0,1fr); align-content:stretch; min-height:100%; margin:0; }
.articulo-foto-notas .dxbl-memo { height:100%; min-height:0; }
.articulo-foto-notas .dxbl-memo textarea { height:100%; min-height:0; }
.articulo-foto-panel { display: grid; grid-template-rows: auto minmax(34rem, 1fr); gap: .55rem; }
.articulo-seleccionar-foto { width: 8rem; cursor: pointer; text-align: center; }
.articulo-seleccionar-foto[aria-disabled="true"] { opacity: .55; cursor: default; }
.articulo-foto-input { display: none; }
.articulo-foto-preview { min-height: 34rem !important; background: #ebecef !important; border-color: #3540b4 !important; }
.articulo-foto-preview img { max-height: 32rem !important; }

@media (max-width: 1050px) {
    .articulo-complemento-grid { grid-template-columns: 21rem minmax(19rem, 1fr); }
    .articulo-complemento-derecha { grid-column: 1 / -1; }
    .articulo-foto-layout { grid-template-columns: minmax(16rem, .8fr) minmax(20rem, 1.2fr); }
}
@media (max-width: 700px) {
    .articulo-precios-complementarios,
    .articulo-complemento-grid,
    .articulo-foto-layout { grid-template-columns: minmax(0, 1fr); }
    .articulo-costo-promedio,
    .articulo-complemento-derecha { grid-column: auto; grid-row: auto; }
    .articulo-complemento-grid { row-gap: 1rem; }
}

.field-wide { grid-column: span 2; }

.lookup-field {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
}

.lookup-field > label {
    display: grid;
    min-width: 0;
    gap: .24rem;
}

.lookup-open-button {
    width: 2.45rem;
    min-width: 2.45rem;
    height: 2.15rem;
    padding-inline: .25rem;
}

.checkbox-row {
    display: flex;
    flex-wrap: wrap;
    gap: .85rem;
    margin: .75rem 0;
    color: #48657d;
    font-size: .76rem;
}

.editor-actions {
    display: flex;
    flex-wrap: wrap;
    gap: .42rem;
    margin-top: .75rem;
    padding-top: .62rem;
    border-top: 1px solid #d7e5f0;
}

/* Asignación de cuentas: pestañas y acciones con jerarquía clara y áreas de clic amplias. */
.assignment-page > .assignment-tab-scroll {
    max-height: min(70vh, 52rem);
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-gutter: stable;
    padding: .35rem .35rem .5rem 0;
}

.assignment-page > .assignment-tab-scroll > .dxbl-grid {
    min-height: 0;
}

/* Subpestañas de retenciones: selecciona IVA o Fuente y deja visible una sola tabla. */
.assignment-page > .tree-tools.assignment-retention-tabs[role="tablist"] {
    align-items: center;
    gap: .25rem;
    margin: .35rem 0 0;
    border-bottom: 0;
}

.assignment-page > .tree-tools.assignment-retention-tabs[role="tablist"] .tree-tool {
    min-height: 1.9rem;
    padding: .35rem .65rem;
    border: 1px solid #c5d7e6;
    border-radius: .35rem;
    background: #fff;
    color: #315b7c;
    font-size: .76rem;
    font-weight: 650;
    cursor: pointer;
}

.assignment-page > .tree-tools.assignment-retention-tabs[role="tablist"] .tree-tool:hover {
    border-color: #8db5d3;
    background: #eaf4fb;
    color: #174f78;
}

.assignment-page > .tree-tools.assignment-retention-tabs[role="tablist"] .tree-tool[aria-selected="true"] {
    margin-bottom: 0;
    border-color: #8db5d3;
    background: #eaf4fb;
    color: #174f78;
    box-shadow: inset 0 2px #1976b5;
}

/* Barra de expansión del árbol: acciones compactas y contador separado. */
.assignment-page > .tree-tools:not([role="tablist"]) {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
    min-height: 2.65rem;
    padding: .42rem .55rem;
    border: 1px solid #dce8f2;
    border-top: 0;
    background: linear-gradient(180deg, #f8fbfe, #f1f6fa);
}

.assignment-page > .tree-tools:not([role="tablist"]) .tree-tool {
    min-height: 1.9rem;
    padding: .35rem .65rem;
    border: 1px solid #c5d7e6;
    border-radius: .35rem;
    background: #fff;
    color: #315b7c;
    font-size: .76rem;
    font-weight: 650;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}

.assignment-page > .tree-tools:not([role="tablist"]) .tree-tool:hover:not(:disabled) {
    border-color: #8db5d3;
    background: #eaf4fb;
    box-shadow: 0 1px 3px rgba(24, 67, 101, .12);
}

.assignment-page > .tree-tools:not([role="tablist"]) .tree-tool:active:not(:disabled) { transform: translateY(1px); }
.assignment-page > .tree-tools:not([role="tablist"]) .tree-tool:disabled { opacity: .5; cursor: not-allowed; }
.assignment-page > .tree-tools:not([role="tablist"]) > span {
    margin-left: auto;
    padding: .22rem .55rem;
    border: 1px solid #d7e5ef;
    border-radius: 99rem;
    background: #fff;
    color: #617b91;
    font-size: .72rem;
    font-variant-numeric: tabular-nums;
}

.assignment-page .tree-tool:focus-visible,
.assignment-page .dxbl-btn:focus-visible {
    outline: 3px solid rgba(30, 119, 181, .32);
    outline-offset: 2px;
}

.assignment-page .dxbl-btn {
    min-height: 2.2rem;
    padding-inline: .85rem;
    border-radius: .28rem;
    font-weight: 600;
    transition: filter .15s ease, box-shadow .15s ease, transform .15s ease;
}

.assignment-page .dxbl-btn:not(:disabled):hover {
    filter: brightness(.97);
    box-shadow: 0 2px 5px rgba(24, 67, 101, .16);
}

.assignment-page .dxbl-btn:not(:disabled):active { transform: translateY(1px); }
.assignment-page .dxbl-btn:disabled { cursor: not-allowed; opacity: .55; }

.assignment-page .editor-actions .dxbl-btn:first-child {
    box-shadow: 0 2px 5px rgba(20, 89, 143, .18);
}

.assignment-page .editor-actions > .button.primary {
    min-height: 2.2rem;
    padding-inline: .85rem;
    border-radius: .28rem;
}

.assignment-page .tree-account-cell .tree-toggle {
    display: inline-grid;
    width: 1.55rem;
    height: 1.55rem;
    place-items: center;
    padding: 0;
    border: 1px solid #a9c6dc;
    border-radius: .4rem;
    background: #f5faff;
    color: #236896;
    font: 600 .95rem/1 system-ui, sans-serif;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, color .15s ease, box-shadow .15s ease;
}

.assignment-page .tree-account-cell .tree-toggle:hover {
    border-color: #3984b5;
    background: #e6f3fc;
    color: #124e78;
    box-shadow: 0 1px 3px rgba(24, 67, 101, .15);
}

.assignment-page .tree-account-cell .tree-toggle[aria-expanded="true"] {
    border-color: #8ab6d5;
    background: #eaf4fb;
}

.assignment-page .retention-panel {
    margin: .85rem 0;
    padding: .8rem;
    border: 1px solid #c6d8e8;
    border-radius: .4rem;
    background: linear-gradient(180deg, #fff, #f9fcff);
    box-shadow: 0 2px 7px rgba(28, 68, 101, .07);
}

.assignment-page .retention-panel-iva { border-top: 4px solid #2482b9; }
.assignment-page .retention-panel-renta { border-top: 4px solid #49886b; }

.assignment-page .retention-panel-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding-bottom: .6rem;
    border-bottom: 1px solid #d8e5ef;
}

.assignment-page .retention-panel-heading h3 { margin: .1rem 0; color: #173f60; font-size: 1.05rem; }
.assignment-page .retention-panel-heading p { margin: .2rem 0 0; color: #627c92; font-size: .76rem; }
.assignment-page .retention-kicker { color: #66839b; font-size: .65rem; font-weight: 700; letter-spacing: .08em; }
.assignment-page .retention-count { flex: none; color: #54718a; font-size: .75rem; }

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    margin: .65rem 0;
    padding: .22rem .35rem;
    border: 1px solid #c7d6e2;
    background: linear-gradient(180deg, #f7fafc, #e6eef4);
    box-shadow: inset 0 1px rgba(255,255,255,.9);
}

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar button {
    display: inline-flex;
    min-height: 2rem;
    align-items: center;
    gap: .36rem;
    padding: .32rem .62rem;
    border: 1px solid transparent;
    border-radius: 2px;
    background: transparent;
    color: #32495d;
    font: inherit;
    font-size: .76rem;
    cursor: pointer;
}

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar button:hover:not(:disabled) {
    border-color: #b2c8d9;
    background: #fff;
    color: #174f78;
}

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar button:focus-visible {
    outline: 2px solid #347eb9;
    outline-offset: 1px;
}

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar button:disabled {
    color: #8c9ba7;
    cursor: not-allowed;
    opacity: .62;
}

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar button span {
    font-size: 1rem;
    font-weight: 700;
    line-height: 1;
}

:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar .command-new span { color: #39734c; }
:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar .command-edit span { color: #256ca5; }
:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar .command-save { color: #34734c; }
:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar .command-save span { color: #3c9460; }
:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar .command-delete span { color: #c44f57; }
:is(.assignment-page, .retencion-voucher-dialog) .retention-commandbar .command-separator {
    width: 1px;
    height: 1.45rem;
    margin: 0 .3rem;
    background: #b9c9d6;
}

.retention-delete-hint {
    margin: .35rem 0;
    color: #805b22;
    font-size: .78rem;
}

.retencion-voucher-dialog .retention-editor-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin: 0 0 .7rem;
    padding-bottom: .45rem;
    border-bottom: 1px solid #bfd2e2;
}

.retencion-voucher-dialog .retention-editor-header h2 { margin: 0; }
.retencion-voucher-dialog .retention-editor-close {
    display: inline-grid;
    width: 2rem;
    min-width: 2rem;
    height: 2rem;
    place-items: center;
    border: 1px solid #b7c8d6;
    border-radius: 2px;
    background: #f4f8fb;
    color: #4c6173;
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
}
.retencion-voucher-dialog .retention-editor-close:hover:not(:disabled) { background: #e4eef6; color: #173f60; }
.retencion-voucher-dialog .retention-editor-close:disabled { opacity: .55; cursor: not-allowed; }

.assignment-page .retention-panel .dxbl-grid { border-color: #c5d7e6; }

@media (max-width: 620px) {
    .assignment-page > .tree-tools[role="tablist"] { gap: .25rem; }
    .assignment-page > .tree-tools[role="tablist"] .tree-tool {
        flex: 1 1 calc(50% - .25rem);
        border-bottom: 1px solid #c4d5e4;
        border-radius: .3rem;
        text-align: center;
    }
    .assignment-page > .tree-tools[role="tablist"] .tree-tool[aria-selected="true"] {
        margin-bottom: 0;
        border-bottom-color: #8fb4d2;
    }
    .assignment-page > .tree-tools:not([role="tablist"]) > span { margin-left: 0; }
}

.status-message,
.notice {
    width: 100%;
    max-width: none;
    margin: 0 0 .7rem;
    padding: .5rem .7rem;
    border: 1px solid;
    border-left-width: 4px;
    border-radius: .1rem;
    font-size: .78rem;
    line-height: 1.4;
}

/* Nota permanente que describe lo que hace la pantalla. Sin esta variante la
   clase «info» quedaba sin definir: el recuadro heredaba el color del texto como
   borde y salía sin fondo. El amarillo queda reservado para lo que sí requiere
   atención. */
.status-message.info,
.notice.info { border-color: #a8c8e2; background: #eff6fc; color: #1d5480; }
.status-message.warning,
.notice.warning { border-color: #e0c36e; background: #fff9e7; color: #745b19; }
.status-message.error,
.notice.error { border-color: #dda5a5; background: #fff1f1; color: #952f2f; }
.status-message.success,
.notice.success { border-color: #92c9ad; background: #edf9f1; color: #217246; }

.bank-connection-warning {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
}

.text-output {
    width: 100%;
    margin-top: .6rem;
    padding: .55rem;
    border: 1px solid #a9c1d6;
    border-radius: .08rem;
    background: #f7fbfe;
    color: #23394f;
    font-family: Consolas, "Courier New", monospace;
    font-size: .75rem;
    resize: vertical;
}

/* Catálogos, fichas y pantallas auxiliares. */
.module-detail,
.status-list,
.configuration,
.hero-card {
    max-width: 68rem;
    padding: .85rem;
    border: 1px solid var(--lat-border);
    border-radius: .12rem;
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 1px 3px rgba(16, 56, 94, .15);
}

.detail-status {
    display: flex;
    gap: .7rem;
    align-items: flex-start;
    padding: .65rem;
    border: 1px solid #c5d9eb;
    background: #eff7fc;
}

.status-dot {
    width: .68rem;
    height: .68rem;
    flex: 0 0 .68rem;
    margin-top: .28rem;
    border-radius: 50%;
    background: #e0a228;
    box-shadow: 0 0 0 2px #fff;
}

.detail-status strong,
.module-detail dt { color: #195785; }
.detail-status p,
.detail-note,
.module-detail dd { color: #5a7084; line-height: 1.45; }

.module-detail dl {
    display: grid;
    grid-template-columns: 12rem 1fr;
    gap: .52rem .9rem;
    margin: 1rem 0;
    font-size: .8rem;
}

.module-detail dd { margin: 0; }

.module-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: .6rem;
    align-items: end;
    justify-content: space-between;
    max-width: 68rem;
    margin-bottom: .65rem;
    padding: .6rem .72rem;
    border: 1px solid #b5cee2;
    background: rgba(248, 252, 255, .96);
}

.module-toolbar label {
    display: grid;
    gap: .25rem;
    flex: 1 1 min(30rem, 70vw);
    min-width: min(16rem, 100%);
    color: #315a7e;
    font-size: .74rem;
    font-weight: 700;
}

.module-count {
    display: grid;
    gap: .1rem;
    flex: 0 1 10rem;
    min-width: 7rem;
    color: #5e7489;
    font-size: .72rem;
    text-align: right;
}

.module-count strong { color: #145488; font-size: 1.25rem; }

.migration-note {
    max-width: 68rem;
    margin: 0 0 .75rem;
    padding: .55rem .7rem;
    border: 1px solid #e2ca7e;
    border-left: 4px solid #d89b1e;
    background: rgba(255, 250, 235, .97);
    color: #6a5c34;
    font-size: .78rem;
    line-height: 1.42;
}

.module-section { max-width: 76rem; margin-bottom: 1rem; }

.section-heading {
    display: flex;
    gap: .55rem;
    align-items: baseline;
    margin-bottom: .38rem;
    padding: .38rem .55rem;
    border: 1px solid #b7cee0;
    border-bottom: 0;
    background: linear-gradient(180deg, #f5faff, #e2eff9);
}

.section-heading h2 { margin: 0; color: #135383; font-size: .94rem; }
.section-heading span { color: #698096; font-size: .72rem; }

.module-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(16rem, 1fr));
    gap: .5rem;
}

.module-grid article {
    display: flex;
    min-height: 8.4rem;
    flex-direction: column;
    padding: .7rem;
    border: 1px solid #bdd1e2;
    border-top: 3px solid #71a3c9;
    background: rgba(255, 255, 255, .97);
    box-shadow: 0 1px 2px rgba(16, 56, 94, .1);
}

.module-grid h3 { margin: 0; color: #195684; font-size: .84rem; overflow-wrap: anywhere; }
.module-label { margin-bottom: .3rem; color: #57809e; font-size: .65rem; font-weight: 700; text-transform: uppercase; }
.module-grid p { margin: .45rem 0; color: #63778a; font-size: .74rem; line-height: 1.38; }

.module-link {
    display: inline-flex;
    width: fit-content;
    margin-top: auto;
    color: #0c5b99;
    font-size: .74rem;
    font-weight: 700;
    text-decoration: none;
}

.module-link:hover { color: #063f70; text-decoration: underline; }
.functional-link { color: #177047; }
.partial-link { color: #99711a; }
.empty-state { color: #667d91; }

/* Menú clásico compartido con los nodos renderizados por componentes hijos. */
.menu-item-list { display: grid; min-width: 0; }
.menu-entry { display: flex; align-items: center; gap: .55rem; min-height: 2rem; box-sizing: border-box; padding: .25rem .48rem; color: #1d3650; font-size: .8rem; line-height: 1.18; text-decoration: none; white-space: nowrap; }
.menu-entry:hover,
.menu-link.active,
.submenu-item.is-open > .submenu-trigger { background: linear-gradient(180deg, #e8f5ff 0%, #cfe7f8 100%); color: #073f77; }
.menu-label { min-width: 0; overflow: hidden; text-overflow: ellipsis; }
.menu-icon { display: grid; flex: 0 0 1.3rem; place-items: center; width: 1.3rem; height: 1.35rem; color: #1b73ae; }
.menu-icon svg { width: 1.12rem; height: 1.12rem; fill: none; stroke: currentColor; stroke-linecap: round; stroke-linejoin: round; stroke-width: 1.55; }
.menu-icon-folder svg,
.menu-icon-open svg { color: #d88b18; fill: #fff2bf; }
.menu-icon-new svg { color: #2274ba; }
.menu-icon-save svg,
.menu-icon-print svg { color: #59758f; }
.menu-icon-settings svg { color: #596f86; }
.menu-icon-exit svg { color: #b04b57; }
.submenu-item { position: relative; }
.submenu-trigger { width: 100%; border: 0; outline: 0; background: transparent; cursor: pointer; font: inherit; text-align: left; }
.menu-arrow { margin-left: auto; color: #547896; font-size: 1.1rem; line-height: 1; }
/* CE-134/28 (lote 1835): el submenú flota a la derecha de su opción (BarSubItem del original). Es fijo porque el desplegable raíz tiene
   scroll propio y recortaría uno absoluto; legacy-menu.js le da top, left y max-height dentro de la ventana, y hasta entonces no se ve. */
.submenu-flyout { position: fixed; z-index: 120; top: 0; left: 0; display: none; width: 20rem; max-height: min(72vh, 42rem); overflow-y: auto; padding: .28rem; box-sizing: border-box; border: 1px solid #79a2c7; background: #fff; box-shadow: 0 8px 17px rgba(15, 54, 91, .3); }
.submenu-flyout:not(.submenu-inline):not([data-posicionado]) { visibility: hidden; }
.submenu-flyout.submenu-inline { position: static; top: auto; left: auto; display: block; width: auto; max-height: none; overflow: visible; padding: 0 0 0 .75rem; border: 0; box-shadow: none; }
.submenu-item.is-open > .submenu-flyout { display: block; }
@media (max-width: 760px) {
    /* En ancho de teléfono el desplegable ocupa la pantalla: los submenús siguen en línea dentro de él. */
    .submenu-flyout { position: static; width: auto; max-height: none; overflow: visible; border: 0; box-shadow: none; padding: 0 0 0 .75rem; }
    .submenu-flyout:not(.submenu-inline):not([data-posicionado]) { visibility: visible; }
}
.menu-separator { height: 1px; margin: .22rem .35rem; background: #d7e3ee; }
/* Las opciones sin destino web se dibujan deshabilitadas. Con el mismo color que
   las activas parecían pulsables y no respondían; DevExpress las atenúa. */
.menu-disabled { width: 100%; border: 0; background: transparent; color: #93a5b6; cursor: default; font: inherit; text-align: left; }
.menu-disabled:hover { background: transparent; color: #93a5b6; }
.menu-disabled .menu-icon { opacity: .45; filter: grayscale(1); }
.menu-shortcut { margin-left: auto; color: #63809b; font-size: .7rem; }
.legacy-badge { flex: 0 0 auto; padding: .1rem .25rem; border: 1px solid #ecd68b; border-radius: .12rem; background: #fff5cf; color: #806116; font-size: .6rem; }

/* Barra de accesos rápidos. Sus botones son enlaces que dibuja NavLink y sus
   iconos los dibuja LegacyMenuIcon: ninguno de los dos recibe el atributo de
   ámbito de MainLayout.razor.css, así que las reglas viven aquí. */
.quick-button {
    display: inline-grid;
    flex: 0 0 1.45rem;
    place-items: center;
    width: 1.45rem;
    height: 1.45rem;
    min-width: 1.45rem;
    padding: 0;
    border: 1px solid transparent;
    border-radius: 2px;
    background: transparent;
    color: #34546e;
    cursor: pointer;
    font: inherit;
    font-size: .64rem;
    font-weight: 600;
    line-height: 1;
    text-decoration: none;
}

.quick-button .menu-icon { display: grid; flex: none; place-items: center; width: 1.05rem; height: 1.05rem; color: #176aa4; }
.quick-button .menu-icon svg { width: 1rem; height: 1rem; stroke-width: 1.6; }
.quick-button .menu-icon-new svg { color: #2b75b5; }
.quick-button .menu-icon-login svg { color: #5982a3; }
.quick-button .menu-icon-open svg { color: #d28b17; }
.quick-button .menu-icon-save svg { color: #426ea3; }
.quick-button .menu-icon-accounts svg,
.quick-button .menu-icon-journal svg { color: #6a63a8; }
.quick-button .menu-icon-purchase svg { color: #cf7710; }
.quick-button .menu-icon-sale svg { color: #2f8a55; }
.quick-button .menu-icon-article svg,
.quick-button .menu-icon-inventory svg { color: #a26b25; }
.quick-button .menu-icon-customer svg { color: #387cac; }
.quick-button .menu-icon-report svg,
.quick-button .menu-icon-summary svg,
.quick-button .menu-icon-chart svg { color: #397ba4; }
.quick-button .menu-icon-security svg { color: #9a5656; }
.quick-button .menu-icon-pay svg { color: #b06a2a; }
.quick-button .menu-icon-collect svg { color: #2c8b58; }
.quick-button .menu-icon-screen svg { color: #4a6c8a; }

.quick-button:hover,
.quick-button.active {
    border-color: #78a7cf;
    background: linear-gradient(180deg, #fff 0%, #d9efff 50%, #b9dcf6 100%);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .68);
    color: #0b477f;
    text-decoration: none;
}

.quick-button:focus-visible { outline: 1px dotted #234f74; outline-offset: -3px; }
.quick-button:disabled { cursor: default; filter: grayscale(1); opacity: .42; }
.quick-button-text { flex-basis: auto; width: auto; min-width: 2rem; padding: 0 .28rem; color: #244e72; font-size: .62rem; }
.toolbar-user .menu-icon { flex: none; width: .9rem; height: .9rem; color: #607d94; }
.toolbar-user .menu-icon svg { width: .82rem; height: .82rem; }

/* Punto de venta: la misma información del formulario clásico, distribuida en
   bloques más legibles para una pantalla web. */
.pos-page-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .65rem;
    padding: .8rem 1rem;
    border-left-width: 5px;
}

.pos-header-description { margin-bottom: 0 !important; }
.pos-header-meta { display: grid; gap: .35rem; justify-items: end; text-align: right; }
.pos-status {
    display: inline-flex;
    align-items: center;
    min-height: 1.55rem;
    padding: .2rem .62rem;
    border: 1px solid #b9cad8;
    border-radius: 999px;
    background: #f1f6fa;
    color: #526c80;
    font-size: .72rem;
    font-weight: 700;
}

.pos-status::before { content: ""; width: .42rem; height: .42rem; margin-right: .38rem; border-radius: 50%; background: #8aa0b2; }
.pos-status.is-editing { border-color: #a8cce0; background: #eaf6fd; color: #17618d; }
.pos-status.is-editing::before { background: #1884bd; }
.pos-shortcuts { color: #6d8495; font-size: .68rem; }

.pos-shell {
    padding: 1rem;
    border-top: 4px solid #1d79b6;
    border-color: #b7ccdc;
    border-top-color: #1d79b6;
    background: #fbfdff;
}

.pos-topbar {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 1rem;
    align-items: start;
    padding-bottom: .85rem;
    border-bottom: 1px solid #d3e1eb;
}

.pos-header-fields {
    grid-template-columns: repeat(8, minmax(0, 1fr));
    align-items: end;
    gap: .68rem .7rem;
}

.pos-field-type { grid-column: span 1; }
.pos-field-number { grid-column: span 1; }
.pos-client-action { align-self: end; }
.field-label-spacer { display: block; min-height: .9rem; }
.pos-client-action .button { width: 100%; }

.pos-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .42rem;
    max-width: 17rem;
    padding-top: 1.05rem;
}

.pos-actions .dxbl-btn { min-height: 2.12rem; }

.pos-lines-head {
    display: flex;
    align-items: end;
    justify-content: space-between;
    gap: .75rem;
    margin-top: 1rem;
    margin-bottom: .42rem;
}

.pos-lines-head h2 { margin: 0; color: #164f7d; font-size: .96rem; font-weight: 700; }
.pos-lines-head span { display: block; margin-top: .16rem; color: #6b8293; font-size: .7rem; }
.pos-lines-table { min-height: 15rem; max-height: 29rem; overflow: auto; border: 1px solid #b9cede; border-radius: .22rem; background: #fff; }
.pos-lines-table .master-table { min-width: 57rem; }
.pos-lines-table .master-table th { position: sticky; top: 0; z-index: 2; padding-top: .55rem; padding-bottom: .55rem; background: #eaf4fa; color: #215b83; }
.pos-lines-table .master-table td { padding: .48rem .5rem; }
.pos-lines-table .master-table tbody tr { cursor: default; }
.pos-lines-table .master-table tbody tr:hover { background: #f2f9fd; }
.pos-lines-table .master-table input,
.pos-lines-table .master-table select { min-height: 2rem; border-color: #c4d5e1; background: #fff; }
.pos-lines-table .master-table td:first-child { width: 7rem; }
.pos-lines-table .master-table td:nth-child(4),
.pos-lines-table .master-table td:nth-child(6) { text-align: right; }

.pos-lower {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(20rem, .85fr);
    gap: .85rem;
    align-items: stretch;
    margin-top: .9rem;
}

.pos-tabs-panel,
.pos-total-card {
    min-width: 0;
    border: 1px solid #c1d3df;
    border-radius: .3rem;
    background: #fff;
}

.pos-tabs-panel { overflow: hidden; }
.pos-tabs-panel .dxbl-tabs { min-height: 15rem; }
.pos-tabs-panel textarea { min-height: 6rem; resize: vertical; }
.pos-total-card { padding: .85rem; background: linear-gradient(180deg, #fafdff 0%, #f2f8fc 100%); }
.pos-total-heading { display: flex; align-items: center; justify-content: space-between; gap: .5rem; margin-bottom: .65rem; padding-bottom: .5rem; border-bottom: 1px solid #cedee8; color: #164f7d; font-size: .92rem; font-weight: 700; }
.pos-total-heading small { color: #6b8293; font-size: .68rem; font-weight: 500; }
.pos-total-grid { gap: .38rem .55rem; }
.pos-total-grid > .muted { color: #758a9b; font-size: .68rem; }
.pos-total-grid input { min-height: 1.8rem; border-color: #bfd2df; background: #fff; text-align: right; }
.pos-total-grid output,
.pos-total-grid [data-testid="pos-total"] { display: flex; align-items: center; justify-content: flex-end; min-height: 3.1rem; padding: .2rem .55rem; border: 1px solid #9fc0d4; border-radius: .18rem; background: #e7f3fb; color: #124f7d; font-size: 1.7rem !important; font-weight: 800; }
.pos-total-grid .dxbl-btn { min-height: 2.25rem; }
.pos-footer-actions { align-items: center; margin-top: .85rem; padding-top: .75rem; }

@media (max-width: 1050px) {
    .pos-topbar { grid-template-columns: 1fr; }
    .pos-actions { max-width: none; justify-content: flex-start; padding-top: 0; }
    .pos-lower { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 720px) {
    .pos-page-header { align-items: flex-start; flex-direction: column; }
    .pos-header-meta { justify-items: start; text-align: left; }
    .pos-header-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .pos-header-fields .field,
    .pos-header-fields .field[style*="span 2"] { grid-column: span 2 !important; }
    .pos-lines-head { align-items: flex-start; flex-direction: column; }
    .pos-total-card { min-width: 0; }
}

@media (max-width: 900px) {
    .master-layout { grid-template-columns: 1fr; }
}

@media (max-width: 600px) {
    :root { font-size: 13px; }
    .master-toolbar { align-items: stretch; }
    .master-toolbar label { flex-basis: 100%; }
    .editor-grid { grid-template-columns: 1fr; }
    .field-wide { grid-column: auto; }
    .module-toolbar { display: grid; align-items: start; }
    .module-toolbar label { min-width: 0; }
    .module-count { text-align: left; }
    .module-detail dl { grid-template-columns: 1fr; gap: .2rem; }
    .module-detail dd { margin-bottom: .5rem; }
}

/* El balance dedicado se imprime como reporte, sin el marco de navegación ni
   el alto fijo del escritorio que recortaría las filas posteriores. */
@media print {
    body:has(.balance-print-page) {
        background: #fff !important;
    }

    body:has(.balance-print-page) .app-shell,
    body:has(.balance-print-page) .content,
    body:has(.balance-print-page) .workspace {
        width: auto !important;
        height: auto !important;
        min-height: 0 !important;
        overflow: visible !important;
        background: #fff !important;
    }

    body:has(.balance-print-page) .application-chrome,
    body:has(.balance-print-page) .content::before {
        display: none !important;
    }

    body:has(.balance-print-page) .content {
        padding: 0 !important;
    }
}

/* D5: paleta común sobre OfficeWhite. Se conserva la geometría del tema. */
.dxbl-grid {
    --dxbl-grid-bg: var(--lat-window);
    --dxbl-grid-color: var(--lat-window-text);
    --dxbl-grid-border-color: var(--lat-border);
    --dxbl-grid-header-bg: var(--lat-control);
    --dxbl-grid-header-color: var(--lat-control-text);
    --dxbl-grid-selection-bg: var(--lat-hide-selection);
    --dxbl-grid-selection-color: var(--lat-window-text);
    --dxbl-grid-focus-bg: var(--lat-highlight);
    --dxbl-grid-focus-color: var(--lat-highlight-text);
    --dxbl-grid-focus-frame-color: var(--lat-highlight);
    --dxbl-grid-selection-focus-bg: var(--lat-highlight);
    --dxbl-grid-selection-focus-color: var(--lat-highlight-text);
    --dxbl-grid-hover-bg: var(--lat-control);
    --dxbl-grid-hover-color: var(--lat-control-text);
}

.dxbl-modal {
    --dxbl-popup-bg: var(--lat-window);
    --dxbl-popup-color: var(--lat-window-text);
    --dxbl-popup-header-bg: var(--lat-control);
    --dxbl-popup-header-color: var(--lat-control-text);
    --dxbl-popup-border-color: var(--lat-border);
}

.asiento-busqueda-popup {
    overflow: hidden;
    border: 1px solid #b8cde0 !important;
    border-radius: .65rem !important;
    box-shadow: 0 24px 64px rgb(18 43 68 / 32%) !important;
}

.asiento-busqueda-popup .dxbl-popup-header {
    min-height: 3.1rem;
    padding: .72rem 1rem;
    border-bottom: 1px solid #d4e1ed;
    background: linear-gradient(135deg, #f7fbff, #e8f2fb);
    color: #17466f;
    font-size: .96rem;
    font-weight: 700;
}

.asiento-busqueda-popup .dxbl-popup-body {
    display: flex;
    flex-direction: column;
    min-height: 0;
    padding: .75rem .9rem .9rem;
    background: #fff;
}

.asiento-busqueda-popup .asiento-busqueda-window {
    flex: 1 1 auto;
    min-height: 0;
}

.dxbl-btn-primary {
    --dxbl-btn-bg: var(--lat-highlight);
    --dxbl-btn-color: var(--lat-highlight-text);
    --dxbl-btn-border-color: var(--lat-highlight);
    --dxbl-btn-hover-bg: var(--lat-question);
    --dxbl-btn-hover-color: var(--lat-highlight-text);
    --dxbl-btn-hover-border-color: var(--lat-question);
    --dxbl-btn-active-bg: var(--lat-control-text);
    --dxbl-btn-active-color: var(--lat-highlight-text);
    --dxbl-btn-active-border-color: var(--lat-control-text);
    --dxbl-btn-focus-bg: var(--lat-highlight);
    --dxbl-btn-focus-color: var(--lat-highlight-text);
    --dxbl-btn-focus-border-bg: var(--lat-highlight);
    --dxbl-btn-focus-outline-color: var(--lat-highlight);
    --dxbl-btn-disabled-bg: var(--lat-disabled-control);
    --dxbl-btn-disabled-color: var(--lat-control-text);
    --dxbl-btn-disabled-border-color: var(--lat-border);
    background-color: #316ac5 !important;
    border-color: #316ac5 !important;
    color: #fff !important;
}

.dxbl-btn-primary:hover:not(:disabled) {
    background-color: #1b49a5 !important;
    border-color: #1b49a5 !important;
    color: #fff !important;
}

.dxbl-btn-primary:disabled {
    background-color: #d4e4f7 !important;
    border-color: #7a96df !important;
    color: #10257f !important;
}

.master-table thead th {
    background: var(--lat-control);
    color: var(--lat-control-text);
}
.master-table tbody tr:hover { background: var(--lat-control); }

/* Lote 836 (D6): los editores que abren como ventana propia (<section role="dialog" aria-modal="true" class="retencion-voucher-dialog">,
   unos cuarenta) usaban un marco definido solo en el CSS aislado de RetencionVoucherTypeEditor, así que en los demás salía una tabla
   sin marco ni desplazamiento sobre la página. El marco pasa a ser común: ventana centrada, fondo atenuado, rejilla con scroll. */
.retencion-voucher-dialog:is([role=dialog], [role=alertdialog])[aria-modal=true] {
    --erp-modal-top: calc(var(--titlebar-height, 2rem) + var(--menu-row-height, 27px) + var(--toolbar-row-height, 26px) + 14px);
    position: fixed;
    inset: var(--erp-modal-top) max(12px, calc((100vw - 850px) / 2)) 14px;
    z-index: 1100;
    max-height: min(760px, calc(100dvh - var(--erp-modal-top) - 14px));
    box-sizing: border-box;
    overflow: auto;
    background: white;
    color: #202c36;
    border: 1px solid #94a7b6;
    border-radius: 5px;
    box-shadow: 0 0 0 100vmax #0005;
    padding: 14px;
    display: flex;
    flex-direction: column;
}
.retencion-voucher-dialog.articulo-foto-dialog[role=dialog][aria-modal=true] {
    --erp-modal-top: calc(var(--titlebar-height, 2rem) + var(--menu-row-height, 27px) + var(--toolbar-row-height, 26px) + 32px);
    max-height: min(760px, calc(100dvh - var(--erp-modal-top) - 14px));
}
.retencion-voucher-dialog[role=dialog] h2 { font-size:18px; margin:0 0 12px; }
.retencion-voucher-dialog[role=dialog] .voucher-grid { overflow:auto; flex:1; min-height:0; }
.retencion-voucher-dialog[role=dialog] table { border-collapse:collapse; width:100%; font-size:12px; }
.retencion-voucher-dialog[role=dialog] th, .retencion-voucher-dialog[role=dialog] td { border:1px solid #c8d1da; padding:4px; text-align:left; }
.retencion-voucher-dialog[role=dialog] thead { position:sticky; top:0; z-index:3; background:#e3edf5; }
.retencion-voucher-dialog[role=dialog] thead th { background:#e3edf5; }
.retencion-voucher-dialog[role=dialog] tbody tr:nth-child(even) { background:#f1f6fa; }
.master-editor.retencion-sale-editor .retencion-toolbar button[aria-label="Buscar registro"] { display:none !important; }
.retencion-voucher-dialog[role=dialog] td input:not([type=checkbox]):not([type=radio]) { width:100%; min-width:60px; box-sizing:border-box; border:1px solid #b9c5cf; font:inherit; padding:4px; }
/* Los campos del editor de IVA deben ajustarse al ancho de su celda, incluso en la columna Código estrecha. */
.retencion-voucher-dialog[role=dialog] .voucher-grid { min-width:0; max-width:100%; overflow:auto; }
.retencion-voucher-dialog[role=dialog] .voucher-grid-frame { flex:1; min-width:0; min-height:0; overflow:hidden; display:flex; }
.retencion-voucher-dialog[role=dialog] .voucher-grid-frame > .voucher-grid { flex:1; min-width:0; min-height:0; }
.retencion-voucher-dialog[role=dialog] .voucher-table { width:100%; min-width:0; table-layout:fixed; }
.retencion-voucher-dialog[role=dialog] .voucher-table td input:not([type=checkbox]):not([type=radio]) { min-width:0; max-width:100%; }
.retencion-voucher-dialog[role=dialog] .voucher-table .vat-code-input { min-width:0; max-width:100%; }
.retencion-voucher-dialog[role=dialog].delete-mode .voucher-table .vat-code-input { width:calc(100% - 22px); }
.retencion-voucher-dialog[role=dialog] footer { display:flex; gap:8px; padding-top:12px; flex-wrap:wrap; }
.retencion-voucher-dialog[role=dialog] .voucher-grid-options {
    display:flex; align-items:center; gap:.08rem; min-height:1.8rem; padding:.12rem .3rem;
    border-top:1px solid #aebdcb; background:linear-gradient(180deg,#f8fafc,#e2e8ef);
    box-sizing:border-box; width:100%; flex:none;
}
.retencion-voucher-dialog[role=dialog] .voucher-grid-options .dxbl-btn {
    min-width:1.8rem; padding-inline:.3rem; color:#304e68;
}
.retencion-voucher-dialog[role=dialog] .voucher-grid-options .dxbl-btn:hover:not(:disabled) {
    background:#d7e4ef; color:#173f61;
}
.retencion-voucher-dialog[role=dialog] .voucher-grid-position {
    min-width:7.5rem; padding:.14rem .35rem; border:1px solid #b4c2cf; background:#fff;
    color:#314f6a; font-size:.7rem; font-variant-numeric:tabular-nums; text-align:center;
}
.retencion-voucher-dialog[role=dialog] .voucher-grid tbody tr[aria-selected="true"],
.retencion-voucher-dialog[role=dialog] .voucher-grid tbody tr.focused {
    background:#dceafa; outline:1px solid #7fa9ca;
}

/* Los editores de catálogos reutilizan estos diálogos; unifica sus botones HTML simples
   para que no aparezcan con el estilo gris predeterminado del navegador. */
:where(.retencion-voucher-dialog[role=dialog]) button:not([class]) {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 2rem;
    padding: .35rem .75rem;
    border: 1px solid #89aeca;
    border-radius: .25rem;
    background: linear-gradient(180deg, #fff 0%, #e8f2fa 100%);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .9), 0 1px 2px rgba(18, 57, 89, .08);
    color: #174f80;
    font: inherit;
    font-size: .78rem;
    font-weight: 600;
    line-height: 1.2;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .15s ease;
}
:where(.retencion-voucher-dialog[role=dialog]) button:not([class]):hover:not(:disabled) {
    border-color: #4f91c2;
    background: linear-gradient(180deg, #fff 0%, #d8ebfa 100%);
    box-shadow: 0 2px 5px rgba(18, 57, 89, .14);
    transform: translateY(-1px);
}
:where(.retencion-voucher-dialog[role=dialog]) button:not([class]):focus-visible {
    outline: 2px solid #3a83bf;
    outline-offset: 2px;
}
:where(.retencion-voucher-dialog[role=dialog]) button:not([class]):disabled {
    cursor: not-allowed;
    opacity: .55;
    box-shadow: none;
}
:where(.retencion-voucher-dialog[role=dialog]) td button:not([class]):only-child {
    border-color: #e2b7bb;
    background: linear-gradient(180deg, #fff 0%, #fff1f1 100%);
    color: #a3313d;
}
:where(.retencion-voucher-dialog[role=dialog]) td button:not([class]):only-child:hover:not(:disabled) {
    border-color: #cf737b;
    background: #ffe4e5;
}
.cliente-grupo-dialog .button.secondary {
    border-color: #9fbad2;
    background: linear-gradient(180deg, #fff 0%, #f1f6fa 100%);
    color: #244c70;
}
.cliente-grupo-dialog .button.secondary:hover:not(:disabled) {
    border-color: #6e9fc5;
    background: linear-gradient(180deg, #fff 0%, #e4f0f9 100%);
}

.retencion-voucher-dialog[role=dialog][aria-modal=true].asignacion-forma-pago-sri-dialog {
    left: 50%;
    right: auto;
    width: min(1280px, calc(100vw - 24px));
    transform: translateX(-50%);
}
.asignacion-forma-pago-sri-dialog > .asignacion-modal-header {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    margin:-.2rem 0 .5rem;
    padding-bottom:.5rem;
    border-bottom:1px solid #c8d7e4;
}
.asignacion-forma-pago-sri-dialog > .asignacion-modal-header h2 { margin:0; }
.asignacion-forma-pago-sri-dialog > .asignacion-modal-header button {
    flex:none;
    border:0;
    background:transparent;
    color:#315b7c;
    font-size:1.5rem;
    line-height:1;
    cursor:pointer;
}
.asignacion-forma-pago-sri-dialog > .page-header { display:none; }
.asignacion-forma-pago-sri-dialog .master-layout { grid-template-columns:minmax(17rem, 28%) minmax(0, 1fr); }
.asignacion-forma-pago-sri-dialog .master-layout > .master-list,
.asignacion-forma-pago-sri-dialog .master-layout > .master-editor { min-height:24rem; }

/* Importación electrónica por clave: disposición de ventana del formulario Latinium. */
.fact-clave-header {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(36rem, 1.15fr);
    gap: .75rem;
    align-items: center;
    margin-bottom: .45rem;
    padding: .35rem .55rem;
    border: 1px solid #c7cbd1;
    border-radius: .12rem;
    background: linear-gradient(180deg, #f7f8fa, #e9ebef);
}

.fact-clave-query {
    display: grid;
    grid-template-columns: minmax(12rem, 1fr) auto;
    gap: .5rem;
    align-items: end;
}

.fact-clave-query .field { grid-column: auto; }

.fact-clave-options {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .35rem .55rem;
    align-items: end;
    min-width: 0;
    margin: 0;
    padding: .35rem .55rem .5rem;
    border: 1px solid #d1d3d7;
    background: rgba(255,255,255,.38);
}

.fact-clave-options > .fact-clave-sucursal { grid-column: 1; grid-row: 1; }
.fact-clave-options > .fact-clave-sustento { grid-column: 2; grid-row: 1; }
.fact-clave-options > .dxbl-checkbox { grid-column: 1 / -1; grid-row: 2; }

.fact-clave-options legend {
    padding: 0 .3rem;
    color: #304a64;
    font-size: .76rem;
    font-weight: 600;
}

.fact-clave-options label,
.fact-clave-side label {
    display: grid;
    gap: .18rem;
    min-width: 0;
    color: #315a7e;
    font-size: .74rem;
}

.fact-clave-options .fact-clave-sustento,
.fact-clave-options > label,
.fact-clave-options > label > *,
.fact-clave-options > label .dxbl-combobox,
.fact-clave-options > label .dxbl-text-edit {
    width: 100%;
    min-width: 0;
}

.fact-clave-options .dxbl-checkbox { align-self: center; white-space: nowrap; }

.fact-clave-tabs {
    gap: 0;
    /* Fuera de un panel: sin el margen negativo de .master-toolbar, que la subía sobre «Clave que se consultará». */
    margin: 0;
    width: 100%;
    box-sizing: border-box;
    padding: .1rem .25rem 0;
    border: 1px solid #b8bdc5;
    border-bottom: 0;
    background: linear-gradient(180deg, #f5f6f8, #e2e4e8);
}

.fact-clave-tabs > .dxbl-btn {
    min-height: 1.85rem;
    margin: .12rem .04rem 0;
    padding-inline: .75rem;
    border: 1px solid #c3c7ce;
    border-radius: .16rem .16rem 0 0;
    background: #e9eaed;
    color: #263a50;
}

.fact-clave-tabs > .dxbl-btn.dxbl-btn-primary {
    border-bottom-color: #fff;
    background: #fff;
}

.fact-clave-panel {
    display: flex;
    flex-direction: column;
    min-height: max(31rem, calc(100dvh - 19rem));
    margin-top: 0;
    border-top: 1px solid #b8bdc5;
    border-radius: 0 .12rem .12rem .12rem;
    box-shadow: none;
}

.fact-clave-panel > .master-toolbar { flex: 0 0 auto; }
.fact-clave-empty { flex: 1 1 auto; min-height: 12rem; background: #fff; }

.fact-clave-grid-empty {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 12rem;
    overflow: hidden;
    border: 1px solid #d2d5da;
    background: #fff;
}

.fact-clave-grid-empty > div:first-child {
    flex: 0 0 auto;
    min-height: 2.35rem;
    padding: .5rem .55rem;
    border-bottom: 1px solid #cdd1d7;
    background: linear-gradient(105deg,#f1f2f4 0%,#f7f7f8 82%,#eee8f4 100%);
    color: #27394d;
    font-size: .78rem;
}

.fact-clave-grid-empty .fact-clave-empty { min-height: 0; background: linear-gradient(90deg,#f4f1e6,#fff); }

.fact-clave-split {
    display: grid;
    grid-template-columns: minmax(17rem, 31%) minmax(0, 1fr);
    flex: 1 1 auto;
    min-height: 0;
    border: 1px solid #c7cbd1;
}

.fact-clave-side,
.fact-clave-results { min-width: 0; min-height: 0; padding: .45rem; }
.fact-clave-side { border-right: 1px solid #c7cbd1; background: #fff; }
.fact-clave-results { display: flex; flex-direction: column; background: #fff; }
.fact-clave-lotes-body { grid-template-columns: 21rem minmax(0, 1fr); }
.fact-clave-lotes-body .fact-clave-side { padding: .75rem .85rem; }
.fact-clave-lotes-body .fact-clave-side > p { max-width: 18rem; font-size: .8rem; }
.fact-clave-lotes-body .fact-clave-results { min-height: 0; }
.fact-clave-lote-grid { flex: 1 1 auto; min-height: 12rem; }
.fact-clave-file { display: grid; gap: .7rem; margin-top: .75rem; }
.fact-clave-file input[type=file] { width: 100%; }
.fact-clave-file > .dxbl-btn { justify-self: stretch; }
.fact-clave-lotes .editor-actions { margin-top: auto; padding-top: .5rem; }
.fact-clave-lotes .fact-clave-results > section { flex: 1 1 auto; min-height: 0; }
.fact-clave-estado-body { grid-template-columns: minmax(23rem, 32%) minmax(0, 1fr); }
.fact-clave-estado-side { display: flex; flex-direction: column; gap: .35rem; }
.fact-clave-estado-side > p { margin: .1rem .2rem .35rem; padding: .7rem .45rem; border: 1px solid #d2d4d8; border-radius: .16rem; background: #f0f0f1; text-align: center; font-size: .8rem; }
.fact-clave-estado-side::after { position: absolute; z-index: 1; top: 50%; right: -.53rem; width: 1rem; height: 1.6rem; border: 1px solid #c7cbd1; border-radius: .08rem; background: #f1f2f4; color: #2677cc; content: "›"; text-align: center; line-height: 1.4rem; }
.fact-clave-estado-side { position: relative; }
.fact-clave-estado-side > .dxbl-memo { flex: 1 1 auto; min-height: 16rem; }
.fact-clave-filter { display: grid; gap: .55rem; padding: .35rem; border: 1px solid #d1d3d7; background: #f3f3f4; }
.fact-clave-date-range { display: grid; gap: .3rem; padding: .4rem; border: 1px solid #d3d5d9; background: #fff; }
.fact-clave-date-range label { color: #315a7e; }
.fact-clave-filter-fields { display: grid; gap: .4rem; }
.fact-clave-filter-fields > .dxbl-checkbox { padding: .15rem 0; }
.fact-clave-filter-fields > .dxbl-btn { width: 100%; }
.fact-clave-filter-grid { flex: 1 1 auto; min-height: 10rem; margin-top: .35rem; }
.fact-clave-estado-results > .editor-actions { justify-content: flex-end; margin: 0 0 .35rem; }
.fact-clave-estado-results > section { display: flex; flex: 1 1 auto; flex-direction: column; min-height: 0; }

@media (max-width: 850px) {
    .fact-clave-header { grid-template-columns: minmax(0,1fr); }
    .fact-clave-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .fact-clave-split,
    .fact-clave-lotes-body,
    .fact-clave-estado-body { grid-template-columns: minmax(0,1fr); }
    .fact-clave-side { border-right: 0; border-bottom: 1px solid #c7cbd1; }
}
.asignacion-forma-pago-sri-dialog .legacy-single-grid-navigator { display:none; }

/* Catálogos abiertos desde Facturación: búsqueda visible, tabla estable y acciones alineadas. */
.catalog-editor-dialog[role=dialog] { min-height: 0; max-height: min(760px, calc(100dvh - var(--erp-modal-top, 100px) - 14px)); padding: 1rem 1.1rem .85rem; border-top: 4px solid #1971b4; }
.catalogo-articulo-shell-modal,
.articulo-grupos-shell-modal {
    --erp-modal-top: calc(var(--titlebar-height, 2rem) + var(--menu-row-height, 27px) + var(--toolbar-row-height, 26px) + 14px);
    position: fixed;
    inset: var(--erp-modal-top) max(12px, calc((100vw - 1180px) / 2)) 12px;
    z-index: 1200;
    max-height: min(760px, calc(100dvh - var(--erp-modal-top) - 12px));
    box-sizing: border-box;
    overflow: auto;
    box-sizing: border-box;
    padding: 1rem 1.15rem;
    border: 1px solid #9bb6cf;
    border-top: 4px solid #1971b4;
    border-radius: .3rem;
    background: #fff;
    color: #173f60;
    box-shadow: 0 0 0 100vmax rgba(9, 25, 42, .58), 0 1rem 3rem rgba(4, 18, 34, .35);
}

.catalogo-articulo-shell-modal .master-layout {
    min-height: 0;
    height: min(560px, calc(100dvh - var(--erp-modal-top, 100px) - 12rem));
}

.articulo-grupos-shell-modal .master-layout {
    min-height: 0;
    height: auto;
}

.catalogo-articulo-shell-modal > .page-header,
.articulo-grupos-shell-modal > .page-header {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .35rem .8rem;
    margin-top: 0;
}

.catalogo-articulo-shell-modal > .page-header > p,
.articulo-grupos-shell-modal > .page-header > p { margin-block: .1rem; }

@media (max-width: 850px) {
    .catalogo-articulo-shell-modal,
    .articulo-grupos-shell-modal { inset: var(--erp-modal-top) 10px 10px; padding: .75rem; }
    .catalogo-articulo-shell-modal .master-layout,
    .articulo-grupos-shell-modal .master-layout { height: auto; max-height: none; }
}
.catalog-dialog-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:1rem; padding-bottom:.8rem; border-bottom:1px solid #d5e1ec; }
.catalog-dialog-eyebrow { margin:0 0 .2rem; color:#477495; font-size:.68rem; font-weight:700; letter-spacing:.08em; text-transform:uppercase; }
.catalog-dialog-heading h2 { margin:0; color:#114d82; font-size:1.35rem; }
.catalog-dialog-subtitle { margin:.25rem 0 0; color:#60768c; font-size:.82rem; }
.catalog-dialog-count { flex:0 0 auto; padding:.35rem .6rem; border:1px solid #c7d9e8; border-radius:999px; background:#f1f7fc; color:#315a7e; font-size:.76rem; font-weight:600; }
.catalog-search-toolbar { display:flex; align-items:flex-end; gap:.55rem; padding:.85rem 0; }
.catalog-search-field { display:grid; flex:1 1 22rem; gap:.25rem; color:#315a7e; font-size:.76rem; font-weight:700; }
.catalog-search-field input { min-height:2.15rem; padding:.4rem .6rem; border:1px solid #8eacc6; border-radius:.2rem; background:#fff; color:#1c3248; }
.catalog-search-field input::placeholder { color:#8195a7; }
.catalog-search-field input:focus { border-color:#347eb9; box-shadow:0 0 0 2px rgba(60,137,194,.18); outline:none; }
.catalog-clear-button { min-height:2.15rem; padding:.35rem .75rem; border:1px solid #9fbad2; border-radius:.2rem; background:#f5f9fc; color:#315a7e; cursor:pointer; }
.catalog-clear-button:disabled { cursor:default; opacity:.55; }
.catalog-search-status { padding-bottom:.55rem; color:#60768c; font-size:.76rem; white-space:nowrap; }
.catalog-editor-dialog[role=dialog] .voucher-grid { border:1px solid #c8d8e6; border-radius:.2rem; background:#fff; }
.catalog-editor-dialog[role=dialog] th { padding:.55rem .5rem; background:#e4f0f9; color:#1d4f78; font-size:.75rem; }
.catalog-editor-dialog[role=dialog] td { padding:.35rem .4rem; }
.catalog-editor-dialog[role=dialog] tbody tr:hover { background:#edf6fd; }
.catalog-editor-dialog[role=dialog] footer.catalog-dialog-footer { align-items:center; min-height:2.8rem; }
.catalog-dialog-footer button { min-height:2.15rem; padding:.35rem .9rem; border:1px solid #9fbad2; border-radius:.2rem; background:#f5f9fc; color:#244c70; cursor:pointer; }
.catalog-dialog-footer button:hover:not(:disabled) { background:#e3f1fe; border-color:#347eb9; }
.catalog-dialog-footer button:disabled { cursor:default; opacity:.55; }
.catalog-dialog-footer .catalog-primary-button { border-color:#1971b4; background:#1971b4; color:#fff; font-weight:650; }
.catalog-dialog-footer .catalog-primary-button:hover:not(:disabled) { background:#155e95; }
.catalog-footer-hint { color:#60768c; font-size:.74rem; }
.catalog-footer-spacer { flex:1 1 auto; }
.report-preview-popup { margin-block: 1rem; }
.report-preview-popup .report-preview-content {
    min-height: 0;
    overflow: hidden;
    padding: 0;
    box-sizing: border-box;
}

.report-preview-popup .report-viewer-shell {
    display: flex;
    flex-direction: column;
    height: calc(100dvh - 16rem);
    min-height: 0;
    margin: 0;
    padding: 0;
    overflow: hidden;
}

.report-preview-popup .editor-heading {
    display: none;
}

.report-preview-popup .latinium-report-viewer {
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-height: 0;
}

.report-preview-embedded {
    display: flex;
    flex-direction: column;
    width: 100%;
    height: 100dvh;
    min-height: 0;
    overflow: hidden;
    background: #fff;
}

.report-preview-embedded .report-viewer-shell {
    display: flex;
    flex: 1 1 auto;
    width: 100%;
    height: auto;
    min-height: 0;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: 0;
    overflow: hidden;
}

.report-preview-direct-actions {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: flex-end;
    gap: .75rem;
    min-height: 3.25rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid var(--lat-border-soft);
    background: #f4f8fc;
}

.report-preview-direct-actions span { margin-right: auto; color: var(--lat-blue-900); font-weight: 600; }

.report-preview-embedded .latinium-report-viewer {
    flex: 1 1 auto;
    width: 100%;
    height: 100%;
    min-height: 0;
}

.report-viewer-directo-oculto {
    position: fixed !important;
    top: 0 !important;
    left: -200vw !important;
    width: 1100px !important;
    height: 85vh !important;
    visibility: hidden !important;
    pointer-events: none !important;
}

/* El visor debe conservar su tamaño mientras genera el documento para imprimir. */
.report-viewer-directo-preparando {
    opacity: 0;
    pointer-events: none;
}

.report-preview-loading {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    min-height: 5rem;
    color: var(--lat-blue-900);
    font-weight: 600;
}

.report-preview-loading-spinner {
    width: 1.25rem;
    height: 1.25rem;
    border: 3px solid var(--lat-border-soft);
    border-top-color: var(--lat-highlight);
    border-radius: 50%;
    animation: report-preview-spin .75s linear infinite;
}

@keyframes report-preview-spin { to { transform: rotate(360deg); } }

/* Reportes de análisis: ventana compacta y controles alineados como el formulario heredado. */
.legacy-settings-window.presupuesto-c-reporte-compacto {
    width: min(650px, calc(100vw - 2rem));
    height: auto;
    min-height: 0;
    flex: 0 1 auto;
    align-self: center;
    margin: auto;
}

.presupuesto-c-reporte-form {
    display: grid;
    grid-template-columns: 8.5rem minmax(0, 1fr);
    gap: .55rem 1.1rem;
    align-items: start;
    width: min(100%, 37rem);
    margin: auto;
}

.presupuesto-c-reporte-periodo {
    display: grid;
    align-content: start;
    gap: .35rem;
    min-width: 0;
    padding: .4rem;
    border: 1px solid #b9c2cc;
    border-radius: .2rem;
    background: #f7f8fa;
    box-sizing: border-box;
}

.presupuesto-c-reporte-periodo .selector-periodo,
.presupuesto-c-reporte-periodo .presupuesto-c-desde,
.presupuesto-c-reporte-periodo .presupuesto-c-hasta {
    width: 100%;
    min-width: 0;
}

.presupuesto-c-reporte-periodo > label,
.presupuesto-c-reporte-periodo .dxbl-date-edit,
.presupuesto-c-reporte-periodo .presupuesto-c-desde,
.presupuesto-c-reporte-periodo .presupuesto-c-hasta {
    width: 100%;
    min-width: 0;
}

.presupuesto-c-reporte-opciones {
    display: grid;
    grid-template-columns: 6.7rem minmax(0, 1fr);
    gap: .4rem .65rem;
    align-items: center;
    min-width: 0;
}

.presupuesto-c-reporte-opciones > label {
    color: #315a7e;
    font-size: .74rem;
    font-weight: 600;
    white-space: nowrap;
}

.presupuesto-c-reporte-opciones > .dxbl-combobox,
.presupuesto-c-reporte-opciones > .presupuesto-c-obra,
.presupuesto-c-reporte-opciones > .presupuesto-c-capitulo,
.presupuesto-c-reporte-opciones > .presupuesto-c-subcapitulo,
.presupuesto-c-reporte-opciones > .presupuesto-c-rubro,
.presupuesto-c-reporte-opciones > .presupuesto-c-estado,
.presupuesto-c-reporte-opciones > .presupuesto-c-reporte {
    width: 100%;
    min-width: 0;
}

.presupuesto-c-reporte-cargando {
    display: flex;
    align-items: center;
    width: 100%;
    min-height: 1.88rem;
    box-sizing: border-box;
    padding: .32rem .48rem;
    border: 1px solid #9fbad2;
    border-radius: .08rem;
    background: #f5f9fc;
    color: #60768c;
    font-size: .78rem;
}

.presupuesto-c-reporte-acciones {
    display: flex;
    justify-content: space-between;
    gap: .45rem;
    grid-column: 2;
    width: 100%;
    padding-top: .1rem;
    box-sizing: border-box;
}

.presupuesto-c-reporte-acciones .dxbl-btn {
    width: 6rem;
    min-width: 6rem;
    flex: 0 0 6rem;
}

@media (max-width: 560px) {
    .legacy-settings-window.presupuesto-c-reporte-compacto {
        width: calc(100vw - 1rem);
        height: auto;
    }

    .presupuesto-c-reporte-form {
        grid-template-columns: 1fr;
        width: 100%;
    }

    .presupuesto-c-reporte-opciones {
        grid-template-columns: 6.7rem minmax(0, 1fr);
    }
}

@media (max-width: 640px) {
    .report-preview-popup { margin: 0; }
}

/* Ficha de Artículos, pestaña Complemento: cada casilla mantiene su texto
   en la misma línea y las opciones quedan alineadas de forma consistente. */
.articulo-complemento-opciones {
    display: grid;
    gap: .55rem;
    align-content: start;
}

.articulo-complemento-opciones > label,
.articulo-complemento-descontinuado > label,
.articulo-complemento-opciones .checkbox-row > label {
    display: inline-flex;
    align-items: center;
    gap: .38rem;
    min-height: 1.65rem;
}

.articulo-complemento-descontinuado {
    display: grid;
    gap: .4rem;
    margin: 0;
}

.articulo-complemento-opciones > .checkbox-row {
    display: grid;
    gap: .2rem;
    margin: 0;
}

/* Ficha de Artículos, pestaña Básico: rótulos y dos columnas de Latinium. */
.articulos-layout {
    display: grid;
    grid-template-columns: minmax(25rem, 31vw) minmax(0, 1fr);
    gap: .8rem;
    align-items: start;
    width: 100%;
    max-width: none;
}

.articulos-layout > .master-editor { min-width: 0; }

.articulos-lista-panel {
    order: 0;
    position: sticky;
    top: .5rem;
    min-width: 0;
    min-height: min(48rem, calc(100dvh - 11rem));
    max-height: calc(100dvh - 10rem);
    overflow: auto;
    border: 1px solid #cbd8e3;
    background: #fff;
}

.articulos-layout > .master-editor { order: 1; }

.articulos-lista-panel.master-list {
    display: flex;
    flex-direction: column;
    padding: .65rem;
}

.articulos-lista-panel .legacy-single-grid-shell {
    flex: 1 1 auto;
    width: 100%;
    min-width: 0;
}

/* Selectores de catálogos con el mismo ancho útil que los demás campos de la ficha. */
.articulo-basico-grid .lookup-field > label {
    width: 100%;
}

.articulo-basico-grid .lookup-field > label > *:last-child,
.articulo-basico-grid .lookup-field > label .dxbl-combobox,
.articulo-basico-grid .lookup-field > label .dxbl-combo-box,
.articulo-basico-grid .lookup-field > label .dxbl-text-edit,
.articulo-basico-grid .lookup-field > label .dxbl-textbox {
    width: 100% !important;
    min-width: 0;
}

.articulos-barra-fotos {
    display: inline-flex;
    align-items: center;
    gap: .2rem;
    flex: 0 0 auto;
}

/* La barra de la ficha de artículos corresponde a una sola banda en Latinium.
   Los datos de foto/barras no deben crear filas: los grupos conservan su ancho y
   la barra se desplaza horizontalmente si la ventana no alcanza. */
.barra-dato-sql.articulos-barra-dato {
    display: flex;
    flex-wrap: nowrap;
    gap: .18rem;
    min-width: 0;
    overflow-x: auto;
    overflow-y: hidden;
    white-space: nowrap;
    scrollbar-width: thin;
}

.articulos-barra-dato > .barra-grupo,
.articulos-barra-dato > .barra-separador,
.articulos-barra-dato > .barra-acciones-adicionales {
    flex: 0 0 auto;
}

.articulos-barra-dato .barra-acciones,
.articulos-barra-dato .barra-acciones-adicionales {
    flex-wrap: nowrap !important;
    width: max-content;
    white-space: nowrap;
}
.articulos-barra-dato .barra-boton:has(.oi-bar-chart) { color: #246fa8; }
.articulos-barra-dato .barra-boton:has(.oi-bar-chart) .oi-bar-chart { width: 1.2rem; height: 1.2rem; }
.articulos-barra-dato .barra-boton:has(.barra-icono-auditoria-varita) { color: #7043a0; }
.articulos-barra-dato .barra-boton:has(.barra-icono-auditoria-varita) .barra-icono-auditoria-varita { width: 1.18rem; height: 1.18rem; }

.articulos-barra-cantidad-barras {
    display: inline-flex;
    flex: 0 0 3.8rem;
    width: 3.8rem;
    align-items: center;
}

.articulos-barra-cantidad-barras .dxbl-spin-edit,
.articulos-barra-fotos .dxbl-spin-edit {
    width: 100% !important;
    min-width: 0;
}

.articulos-barra-dato .barra-movimiento {
    width: max-content;
    justify-content: flex-start;
}

.articulos-barra-dato .articulos-barra-fotos .dxbl-spin-edit {
    flex: 0 0 4.4rem;
    width: 4.4rem !important;
}

.articulos-barra-dato .articulos-barra-fotos .dxbl-spin-edit input {
    min-height: 1.8rem;
    padding: .15rem .25rem;
    text-align: center;
}

.articulo-basico-grid {
    grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
    grid-template-areas:
        "codigo grupo"
        "descripcion descripcion"
        "alterno ubicacion"
        "caracteristica ubicacion2"
        "precio-dist cantidades"
        "pvp sucursal"
        "iva iva-diferenciado"
        "unidad saldo"
        "marca subgrupo"
        "modelo arancel"
        "clase color"
        "ice sri"
        "material .";
    align-items: end;
    column-gap: 1rem;
    row-gap: .72rem;
}

.articulos-barra-dato {
    position: sticky;
    top: 0;
    z-index: 8;
    margin: .35rem 0 .65rem;
    padding: .25rem .4rem;
    border: 1px solid #cbd8e3;
    background: #f4f7fa;
}

.articulo-basico-grid > .field {
    display: grid;
    grid-template-columns: minmax(6.8rem, max-content) minmax(0, 1fr);
    align-items: center;
    gap: .35rem .6rem;
}

.articulo-basico-grid > .field.field-wide {
    grid-template-columns: minmax(6.8rem, max-content) minmax(0, 1fr);
}

.articulo-basico-grid > .field,
.articulo-basico-grid > .lookup-field { min-width: 0; }
.articulo-basico-grid .ab-codigo { grid-area: codigo; }
.articulo-basico-grid .ab-grupo { grid-area: grupo; }
.articulo-basico-grid .ab-descripcion { grid-area: descripcion; }
.articulo-basico-grid .ab-alterno { grid-area: alterno; }
.articulo-basico-grid .ab-ubicacion { grid-area: ubicacion; }
.articulo-basico-grid .ab-caracteristica { grid-area: caracteristica; }
.articulo-basico-grid .ab-ubicacion2 { grid-area: ubicacion2; }
.articulo-basico-grid .ab-precio-dist { grid-area: precio-dist; }
.articulo-basico-grid .ab-cantidades { grid-area: cantidades; }
.articulo-basico-grid .ab-pvp { grid-area: pvp; }
.articulo-basico-grid .ab-sucursal { grid-area: sucursal; }
.articulo-basico-grid .ab-iva { grid-area: iva; }
.articulo-basico-grid .ab-iva-diferenciado { grid-area: iva-diferenciado; }
.articulo-basico-grid .ab-unidad { grid-area: unidad; }
.articulo-basico-grid .ab-saldo { grid-area: saldo; }
.articulo-basico-grid .ab-marca { grid-area: marca; }
.articulo-basico-grid .ab-subgrupo { grid-area: subgrupo; }
.articulo-basico-grid .ab-modelo { grid-area: modelo; }
.articulo-basico-grid .ab-arancel { grid-area: arancel; }
.articulo-basico-grid .ab-clase { grid-area: clase; }
.articulo-basico-grid .ab-color { grid-area: color; }
.articulo-basico-grid .ab-ice { grid-area: ice; }
.articulo-basico-grid .ab-sri { grid-area: sri; }
.articulo-basico-grid .ab-material { grid-area: material; }
.articulo-basico-grid .lookup-field > label {
    grid-template-columns: minmax(7.2rem, max-content) minmax(10rem, 1fr);
    align-items: center;
}

/* En los campos de catálogo el selector y su botón «…» comparten el ancho
   completo de la celda, igual que una caja de texto normal. */
.articulo-basico-grid > .lookup-field,
.articulo-basico-opcionales > .lookup-field {
    grid-template-columns: minmax(0, 1fr) auto;
}
.articulo-basico-grid .lookup-field > label,
.articulo-basico-opcionales .lookup-field > label {
    min-width: 0;
    width: 100%;
}
.articulo-basico-grid .lookup-field > label > .dxbl-combobox,
.articulo-basico-opcionales .lookup-field > label > .dxbl-combobox {
    width: 100% !important;
    min-width: 0;
}

.articulos-barras-reporte-contenido {
    width: 100%;
    height: 100%;
    min-height: 0;
    overflow: hidden;
}
.articulos-barras-reporte-contenido .report-preview-embedded {
    width: 100%;
    height: 100%;
    min-height: 0;
}
.articulos-barras-reporte-contenido .report-preview-embedded .report-viewer-shell,
.articulos-barras-reporte-contenido .report-preview-embedded .latinium-report-viewer {
    min-height: 0;
}
.articulos-impresion-modal .report-preview-embedded {
    height: 100%;
    min-height: 0;
}
.articulos-impresion-modal .report-preview-embedded .report-viewer-shell,
.articulos-impresion-modal .report-preview-embedded .latinium-report-viewer {
    min-height: 0;
}

.articulo-basico-grid .ab-cantidades,
.articulo-basico-grid .ab-iva-diferenciado {
    display: grid;
    grid-template-columns: minmax(6.8rem, max-content) minmax(0, 1fr);
    align-items: center;
    gap: .35rem .6rem;
}
.articulo-basico-grid .ab-cantidades { grid-template-columns: minmax(0, 1fr); }
.articulo-basico-cantidades { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: .4rem; }
.articulo-basico-cantidades > label { display: grid; grid-template-columns: max-content minmax(0, 1fr); align-items: center; gap: .25rem; min-width: 0; }
.articulo-basico-radio { display: flex; align-items: center; gap: 1rem; min-height: 2rem; padding: .2rem .55rem; border: 1px solid #cbd8e3; }
.articulo-basico-radio > label { display: inline-flex; align-items: center; gap: .3rem; font-weight: 500; }
.articulo-basico-grid .ab-iva { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(5rem, .4fr); gap: .35rem; align-items: end; }
.articulo-basico-grid .ab-iva > label { display: grid; min-width: 0; gap: .24rem; }

.articulo-basico-opcionales {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .58rem .68rem;
    margin-top: .7rem;
}

.articulo-basico-opcionales > .field {
    display: grid;
    grid-template-columns: minmax(6.8rem, max-content) minmax(0, 1fr);
    align-items: center;
    gap: .35rem .6rem;
    min-width: 0;
}

.articulo-basico-opcionales .lookup-field {
    grid-template-columns: minmax(0, 1fr) auto;
    align-items: end;
}

.articulo-basico-opcionales .lookup-field > label {
    display: grid;
    grid-template-columns: minmax(6.8rem, max-content) minmax(0, 1fr);
    align-items: center;
    min-width: 0;
    gap: .35rem .6rem;
}

@media (max-width: 760px) {
    .articulos-layout { grid-template-columns: minmax(0, 1fr); }
    .articulos-lista-panel { position: static; order: 0; }
    .articulos-lista-panel.master-list { min-height: 24rem; max-height: 40vh; }
    .articulos-layout > .master-editor { order: 1; }
    .articulo-basico-grid {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "codigo" "grupo" "descripcion" "alterno" "ubicacion" "caracteristica"
            "ubicacion2" "precio-dist" "cantidades" "pvp" "sucursal" "iva"
            "iva-diferenciado" "unidad" "saldo" "marca" "subgrupo" "modelo"
            "arancel" "clase" "color" "ice" "sri" "material";
    }

    .articulo-basico-opcionales { grid-template-columns: minmax(0, 1fr); }
}

@media (min-width: 761px) and (max-width: 1100px) {
    .articulos-layout { grid-template-columns: minmax(21rem, 26rem) minmax(0, 1fr); }
}

/* Ficha de Grupos de Artículos: distribución compacta como Latinium. */
.articulo-grupo-columnas {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas:
        "nombre codigo"
        "mercaderia egreso"
        "venta transferencia"
        "costo ingreso"
        "descuento otros"
        "devolucion iva"
        "sri tipo";
    gap: .65rem 1.2rem;
    align-items: end;
}

.ag-nombre { grid-area: nombre; }
.ag-codigo { grid-area: codigo; }
.ag-mercaderia { grid-area: mercaderia; }
.ag-egreso { grid-area: egreso; }
.ag-venta { grid-area: venta; }
.ag-transferencia { grid-area: transferencia; }
.ag-costo { grid-area: costo; }
.ag-ingreso { grid-area: ingreso; }
.ag-descuento { grid-area: descuento; }
.ag-otros { grid-area: otros; }
.ag-devolucion { grid-area: devolucion; }
.ag-iva { grid-area: iva; }
.ag-sri { grid-area: sri; }
.ag-tipo { grid-area: tipo; }

.articulo-grupo-columnas > .field,
.articulo-grupo-columnas > .articulo-grupo-sri,
.articulo-grupo-columnas > .articulo-grupo-iva {
    min-width: 0;
}

.articulo-grupo-sri,
.articulo-grupo-iva {
    display: flex;
    align-items: end;
    gap: .55rem;
}

.articulo-grupo-sri > span,
.articulo-grupo-sri-valor,
.articulo-grupo-iva-opciones {
    flex: 1 1 auto;
    min-width: 0;
}

.articulo-grupo-sri-valor,
.articulo-grupo-sri-valor .dxbl-btn {
    width: 100%;
    min-width: 0;
}

.articulo-grupo-sri-valor {
    position: relative;
}

.articulo-grupo-sri-valor .dxbl-btn {
    justify-content: flex-start;
    overflow: hidden;
    text-overflow: ellipsis;
}

.articulo-grupo-sri-selector {
    position: absolute;
    z-index: 1200;
    top: calc(100% + .25rem);
    left: 0;
    display: grid;
    gap: .55rem;
    width: min(760px, calc(100vw - 2rem));
    max-width: calc(100vw - 2rem);
    padding: .7rem;
    color: #1f2937;
    background: #fff;
    border: 1px solid #aab7c5;
    border-radius: .3rem;
    box-shadow: 0 .35rem 1rem rgb(0 0 0 / 24%);
}

.articulo-grupo-sri-busqueda {
    display: flex;
    gap: .5rem;
}

.articulo-grupo-sri-busqueda input {
    flex: 1 1 auto;
    min-width: 0;
    height: 2.25rem;
    padding: .25rem .5rem;
    border: 1px solid #b9c2cc;
    border-radius: .2rem;
    font: inherit;
}

.articulo-grupo-sri-pie {
    display: flex;
    justify-content: flex-end;
    gap: .5rem;
}

.articulo-grupo-sri-tabla {
    max-height: min(360px, 52vh);
    overflow: auto;
    border: 1px solid #c5ced8;
}

.articulo-grupo-sri-tabla table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}

.articulo-grupo-sri-tabla th,
.articulo-grupo-sri-tabla td {
    padding: .35rem .5rem;
    border-bottom: 1px solid #d7dee7;
    text-align: left;
}

.articulo-grupo-sri-tabla th {
    position: sticky;
    top: 0;
    z-index: 1;
    background: #edf2f7;
    font-weight: 600;
}

.articulo-grupo-sri-tabla th:first-child,
.articulo-grupo-sri-tabla td:first-child {
    width: 100px;
}

.articulo-grupo-sri-tabla th:nth-child(2),
.articulo-grupo-sri-tabla td:nth-child(2) {
    width: 110px;
    text-align: right;
}

.articulo-grupo-sri-tabla tbody tr {
    cursor: pointer;
}

.articulo-grupo-sri-tabla tbody tr:hover,
.articulo-grupo-sri-tabla tbody tr.seleccionado {
    background: #e2edf9;
}

.articulo-grupo-sri-sin-resultados {
    margin: 0;
    padding: .75rem;
    color: #64748b;
}

.articulo-grupo-iva-opciones {
    box-sizing: border-box;
    padding: .25rem .5rem;
    border: 1px solid #cbd8e3;
    border-radius: .15rem;
}

.articulo-grupo-tipo {
    display: flex;
    align-items: end;
    gap: .65rem;
}

.articulo-grupo-tipo > .field {
    flex: 1 1 auto;
    min-width: 0;
}

@media (max-width: 760px) {
    .articulo-grupo-columnas {
        grid-template-columns: minmax(0, 1fr);
        grid-template-areas:
            "nombre" "codigo" "mercaderia" "egreso" "venta" "transferencia"
            "costo" "ingreso" "descuento" "otros" "devolucion" "sri" "iva" "tipo";
    }
    .articulo-grupo-tipo { flex-wrap: wrap; }
    .articulo-grupo-tipo > .field { flex-basis: 100%; }
}
.reporte-inventario {
    min-height: calc(100vh - 11rem);
    margin: .75rem 1.25rem;
    padding: 0 1rem 1rem;
    border: 1px solid #b9c4d0;
    background: #e9e9ed;
    color: #24364a;
    display: flex;
    flex-direction: column;
    box-shadow: 0 1px 3px #173b5c24;
}
.reporte-inventario__header { display:flex; align-items:center; gap:.5rem; margin:0 -1rem 1rem; padding:.45rem .7rem; min-height:2.6rem; color:#18446e; background:linear-gradient(#f2f8fd,#dcebf8); border-bottom:1px solid #a9c6df; }
.reporte-inventario__header h1 { font-size:1rem; font-weight:600; margin:0; }
.reporte-inventario__app-icon { display:inline-grid; place-items:center; width:1.2rem; height:1.2rem; color:#7544ab; }
.reporte-inventario__body { display:grid; grid-template-columns:minmax(14rem, 19rem) minmax(30rem, 1fr); gap:1.25rem; flex:1; }
.reporte-inventario__left { display:flex; flex-direction:column; gap:1rem; min-width:0; }
.reporte-inventario fieldset { border:1px solid #c8cbd0; background:#f0f0f2; margin:0; padding:.55rem .65rem; min-width:0; }
.reporte-inventario__radios,.reporte-inventario__transit { display:flex; flex-direction:column; gap:.45rem; }
.reporte-inventario label { display:flex; align-items:center; gap:.4rem; line-height:1.2; font-size:.9rem; }
.reporte-inventario input[type=checkbox],.reporte-inventario input[type=radio] { accent-color:#516c8c; width:1rem; height:1rem; margin:0; flex:0 0 auto; }
.reporte-inventario__report-group legend { padding:0 .25rem; }
.reporte-inventario select,.reporte-inventario input[type=date] { width:100%; min-width:0; height:2rem; border:1px solid #c4c8ce; border-radius:2px; padding:.2rem .4rem; color:#29394b; background:#f8f8f8; }
.reporte-inventario__report-group select { margin-top:.15rem; }
.reporte-inventario__extras { display:flex; flex-direction:column; gap:.45rem; padding:.1rem 0; }
.reporte-inventario__extras .disabled { color:#a7adb4; }
.reporte-inventario__period { padding:.6rem .45rem !important; display:flex; flex-direction:column; gap:.35rem; }
.reporte-inventario__period label { display:grid; grid-template-columns:1fr; gap:.15rem; }
.reporte-inventario__period label span { display:none; }
.reporte-inventario__filters { min-width:0; padding-top:.1rem; }
.reporte-inventario__filter-column { display:flex; flex-direction:column; gap:.35rem; }
.reporte-inventario__filter-row { display:grid; grid-template-columns:minmax(10rem, 11rem) minmax(10rem, 1fr); align-items:center; gap:.65rem; min-height:1.55rem; }
.reporte-inventario__all { white-space:nowrap; }
.reporte-inventario__filter-row select:disabled { background:#e4e5e8; color:#777; }
.reporte-inventario__filter-spacer { height:3rem; }
.reporte-inventario__actions { display:flex; align-items:center; justify-content:flex-end; gap:1.25rem; padding:.6rem 1rem 0; min-height:3.7rem; }
.reporte-inventario__actions span { margin-right:auto; color:#5e6670; }
.reporte-inventario__actions button { min-width:6.5rem; height:2.35rem; border:1px solid #aeb8c4; border-radius:3px; background:linear-gradient(#fff,#e7eaf0); color:#29415e; box-shadow:0 1px 2px #0001; }
.reporte-inventario__actions button.primary { background:linear-gradient(#fff,#d6e5f8); border-color:#98abc4; }
@media(max-width:900px) { .reporte-inventario__body { grid-template-columns:1fr; } .reporte-inventario__filter-row { grid-template-columns:minmax(9rem, 11rem) minmax(8rem, 1fr); } }
.reporte-resumenes { min-height:calc(100vh - 11rem); margin:.75rem 1.25rem; padding:0 1rem 1rem; background:#e9e9ed; border:1px solid #b9c4d0; display:flex; flex-direction:column; color:#24364a; }
.reporte-resumenes>header { display:flex; align-items:center; gap:.5rem; min-height:2.6rem; margin:0 -1rem 1rem; padding:.45rem .7rem; color:#18446e; background:linear-gradient(#f2f8fd,#dcebf8); border-bottom:1px solid #a9c6df; }
.reporte-resumenes>header h1 { margin:0; font-size:1rem; font-weight:600; }
.reporte-resumenes__layout { display:grid; grid-template-columns:minmax(17rem,21rem) minmax(35rem,1fr); gap:1rem; flex:1; }
.reporte-resumenes__left { display:flex; flex-direction:column; gap:.85rem; }
.reporte-resumenes fieldset { border:1px solid #c8cbd0; background:#f0f0f2; margin:0; min-width:0; padding:.55rem .65rem; }
.reporte-resumenes label { display:flex; align-items:center; gap:.4rem; font-size:.88rem; line-height:1.25; }
.reporte-resumenes input[type=checkbox],.reporte-resumenes input[type=radio] { width:1rem; height:1rem; margin:0; accent-color:#536f8d; flex:0 0 auto; }
.reporte-resumenes__types { display:flex; flex-direction:column; gap:.35rem; }
.reporte-resumenes__report legend { padding:0 .25rem; }.reporte-resumenes select,.reporte-resumenes input[type=date],.reporte-resumenes input[type=text] { height:2rem; min-width:0; width:100%; border:1px solid #c4c8ce; border-radius:2px; padding:.2rem .4rem; color:#29394b; background:#f8f8f8; }
.reporte-resumenes__checks { display:flex; flex-direction:column; gap:.35rem; padding:0 .1rem; }.reporte-resumenes__checks .inline { display:flex; justify-content:space-between; gap:.6rem; }.reporte-resumenes__checks .indented { margin-left:9.5rem; }
.reporte-resumenes__dates { display:grid; grid-template-columns:1fr 1fr; gap:.4rem; }.reporte-resumenes__dates fieldset:first-child { display:flex; flex-direction:column; gap:.35rem; }.reporte-resumenes__dates .period { display:flex; flex-direction:column; gap:.35rem; padding:.4rem !important; }
.reporte-resumenes__filters { display:grid; grid-template-columns:minmax(25rem,1.15fr) minmax(22rem,1fr); gap:1.2rem; min-width:0; }.reporte-resumenes__filters .column { display:flex; flex-direction:column; gap:.3rem; min-width:0; }.reporte-resumenes__filters .reporte-inventario__filter-row { grid-template-columns:minmax(11rem,12rem) minmax(9rem,1fr); gap:.45rem; }.reporte-resumenes__filters .reporte-inventario__filter-row label { white-space:nowrap; }.reporte-resumenes__filters .column--right .reporte-inventario__filter-row { grid-template-columns:minmax(11rem,12rem) minmax(9rem,1fr); }.reporte-resumenes__spacer { height:6.5rem; }.reporte-resumenes__filters .short-input { display:grid; grid-template-columns:minmax(11rem,12rem) minmax(9rem,1fr); gap:.45rem; align-items:center; }
.reporte-resumenes__actions { display:flex; justify-content:flex-end; gap:1rem; padding:.5rem 1rem; border:1px solid #d1d4d8; margin-left:auto; min-width:27rem; }.reporte-resumenes__actions button { min-width:6.5rem; height:2.25rem; border:1px solid #aeb8c4; border-radius:3px; background:linear-gradient(#fff,#e7eaf0); color:#29415e; }.reporte-resumenes__actions .primary { background:linear-gradient(#fff,#d6e5f8); }.reporte-resumenes__message { padding:.4rem; color:#5e6670; }
@media(max-width:1000px) { .reporte-resumenes__layout,.reporte-resumenes__filters { grid-template-columns:1fr; } }
.reporte-inventario,.reporte-resumenes { background:#fff; border-color:#a9c6df; box-shadow:0 2px 7px #173b5c18; }
.reporte-inventario fieldset,.reporte-resumenes fieldset { background:#f7fbff; border-color:#c8dbea; }
.reporte-inventario select,.reporte-inventario input[type=date],.reporte-resumenes select,.reporte-resumenes input[type=date],.reporte-resumenes input[type=text] { background:#fff; border-color:#b8ccde; }
.reporte-inventario__filter-row select:disabled { background:#f2f7fb; color:#5e7082; }
.facturacion-report-preview-backdrop { position:fixed; inset:0; z-index:20000; padding:calc(var(--titlebar-height, 2rem) + var(--menu-row-height, 27px) + var(--toolbar-row-height, 26px) + 8px) 1vw 1vh; display:grid; place-items:center; background:#102b4880; }
.facturacion-report-preview { display:flex; flex-direction:column; width:min(1800px,100%); height:100%; min-height:0; overflow:hidden; border:1px solid #8faccc; border-radius:5px; background:#fff; box-shadow:0 14px 42px #132e4f55; }
.facturacion-report-preview>header { display:flex; flex:0 0 auto; align-items:center; justify-content:space-between; min-height:2.8rem; padding:.4rem .8rem; color:#194d78; background:#e3f1fc; border-bottom:1px solid #b9d3e8; }
.facturacion-report-preview>header button { display:grid; place-items:center; width:2rem; height:2rem; border:1px solid #abc5db; border-radius:3px; background:#fff; color:#315b7e; font-size:1.5rem; line-height:1; cursor:pointer; }
.facturacion-report-preview iframe { width:100%; min-height:0; flex:1; border:0; background:#fff; }
.reporte-articulos { min-height:calc(100vh - 11rem); margin:.75rem 1.25rem; padding:0 1rem 1rem; border:1px solid #a9c6df; background:#fff; color:#24364a; box-shadow:0 2px 7px #173b5c18; }
.reporte-articulos>header { display:flex; align-items:center; gap:.5rem; min-height:2.6rem; margin:0 -1rem 1rem; padding:.45rem .7rem; color:#18446e; background:linear-gradient(#f2f8fd,#dcebf8); border-bottom:1px solid #a9c6df; }
.reporte-articulos>header h1 { margin:0; font-size:1rem; font-weight:600; }
.reporte-articulos__layout { display:grid; grid-template-columns:minmax(14rem,16rem) minmax(40rem,1fr); gap:1rem; }
.reporte-articulos__left { display:flex; flex-direction:column; gap:.5rem; }
.reporte-articulos label { display:flex; align-items:center; gap:.35rem; min-height:1.35rem; font-size:.86rem; white-space:nowrap; }
.reporte-articulos input[type=checkbox],.reporte-articulos input[type=radio] { width:1rem; height:1rem; margin:0; accent-color:#526e8e; }
.reporte-articulos select,.reporte-articulos input[type=date] { width:100%; height:2rem; min-width:0; padding:.2rem .4rem; border:1px solid #b8ccde; border-radius:2px; background:#fff; color:#24364a; }
.reporte-articulos fieldset { min-width:0; margin:0; padding:.5rem; border:1px solid #c8dbea; background:#f7fbff; }
.reporte-articulos__inline { display:flex; justify-content:space-between; }
.reporte-articulos__dates { display:grid; grid-template-columns:1fr 1.15fr; gap:.4rem; }
.reporte-articulos__dates fieldset { display:flex; flex-direction:column; gap:.4rem; }
.reporte-articulos__report { margin-top:2.6rem !important; }
.reporte-articulos__actions { display:flex; gap:1rem; margin-top:.35rem; }
.reporte-articulos__actions button { min-width:6.5rem; height:2.25rem; border:1px solid #aeb8c4; border-radius:3px; color:#29415e; background:linear-gradient(#fff,#e7eaf0); }
.reporte-articulos__actions button.primary { background:linear-gradient(#fff,#d6e5f8); }
.reporte-articulos__filters { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:1rem; }
.reporte-articulos__filters .column { display:flex; flex-direction:column; gap:.36rem; }
.reporte-articulos__filters .reporte-inventario__filter-row { grid-template-columns:minmax(9.5rem,12rem) minmax(8rem,1fr); }
.reporte-articulos__filters .reporte-inventario__filter-row select { width:100%; height:1.75rem; border:1px solid #b8ccde; background:#fff; }
.reporte-articulos__filters .reporte-inventario__filter-row select:disabled { background:#f2f7fb; }
.reporte-articulos__filters .column:last-child .reporte-inventario__filter-row:nth-child(6) { margin-top:5.2rem; }
.reporte-articulos__filters .column:last-child .reporte-inventario__filter-row:nth-child(10) { margin-top:3.4rem; }
@media(max-width:1050px) { .reporte-articulos__layout,.reporte-articulos__filters { grid-template-columns:1fr; } }

.cliente-toolbar-extra { display:inline-grid; place-items:center; flex:0 0 auto; width:2rem; height:2rem; padding:.3rem; border:1px solid transparent; border-radius:3px; color:#356b94; background:transparent; cursor:pointer; }
.cliente-toolbar-extra:hover:not(:disabled) { border-color:#b8cfe3; background:#e8f3fc; }
.cliente-toolbar-extra:focus-visible { outline:2px solid #377fb7; outline-offset:2px; }
.cliente-toolbar-extra:disabled { color:#aab6c2; cursor:default; opacity:.6; }
.cliente-toolbar-extra svg { width:1.2rem; height:1.2rem; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; stroke-linejoin:round; }
.cliente-toolbar-crm { color:#25855f; }
.cliente-toolbar-copiar { color:#6a63a8; }
.cliente-toolbar-imprimir { color:#4b708d; }
.clientes-barra-dato .cliente-digitalizacion { color:#397ba4; }
.clientes-barra-dato .cliente-digitalizacion:hover:not(:disabled) { color:#205f89; background:#e8f3fc; }
.clientes-barra-dato .barra-acciones-adicionales { flex:1 1 auto; margin-left:0; }
.cliente-acciones-secundarias { display:inline-flex; flex:0 0 auto; align-items:center; gap:.12rem; }
.clientes-barra-dato .cliente-acceso-datos { margin-left:auto; }
.articulos-barra-saldo .articulo-saldo-costo { color:#7544ab; }
.articulos-barra-saldo .articulo-saldo-costo:hover:not(:disabled) { color:#63358f; background:#f0eafd; }

/* Asignación de Cuentas: disposición de formulario de escritorio de la referencia. */
.assignment-page {
    display: flex;
    flex-direction: column;
    min-height: max(30rem, calc(100dvh - 10rem));
    height: calc(100dvh - 10rem);
    padding: 0;
    overflow: hidden;
    border: 1px solid #aeb5c0;
    border-radius: 0;
    border-top: 1px solid #aeb5c0;
    background: #f3f1e8;
    box-shadow: none;
}
.assignment-page > .assignment-tab-scroll {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    max-height: none;
    overflow: hidden;
    padding: 0;
}
.assignment-page > .assignment-tab-scroll > .dxbl-grid {
    flex: 1 1 auto;
    min-height: 0;
    height: 100%;
}
.assignment-page > .tree-tools[role="tablist"] {
    display: flex;
    flex: 0 0 auto;
    flex-wrap: wrap;
    align-items: stretch;
    gap: 0;
    min-height: 1.9rem;
    margin: 0;
    border-bottom: 1px solid #9299a4;
    background: #e9e9ec;
}
.assignment-page > .tree-tools[role="tablist"] .tree-tool {
    min-height: 1.8rem;
    padding: .22rem .55rem;
    border: 1px solid #aeb4bf;
    border-bottom: 0;
    border-radius: 0;
    background: linear-gradient(180deg, #f9f9fa, #dfe1e5);
    color: #3e4650;
    font-size: .76rem;
    font-weight: 500;
}
.assignment-page > .tree-tools[role="tablist"] .tree-tool[aria-selected="true"] {
    position: relative;
    margin-bottom: -1px;
    border-color: #8f96a1;
    border-bottom: 1px solid #f8f8fa;
    background: #f8f8fa;
    color: #222;
    box-shadow: none;
}
.assignment-page .assignment-grid-actions {
    flex: 0 0 auto;
    justify-content: flex-end;
    min-height: 2.6rem;
    margin: 0;
    padding: .25rem .35rem;
    border: 1px solid #b6bac2;
    border-top: 1px solid #c4c7cd;
    background: #f0efeb;
}
.assignment-page > .assignment-footer {
    display: flex;
    flex: 0 0 auto;
    justify-content: space-between;
    gap: .35rem;
    min-height: 3.15rem;
    margin-top: 0;
    padding: .35rem .4rem;
    border-top: 1px solid #b6bac2;
    background: #efefef;
}
.assignment-page > .assignment-footer .button.primary,
.assignment-page > .assignment-footer .dxbl-btn {
    min-width: 8rem;
    min-height: 2.2rem;
    border-radius: .16rem;
    font-weight: 500;
}
.assignment-page .dxbl-grid .dxbl-grid-table > tbody > tr > td,
.assignment-page .dxbl-grid .dxbl-grid-table > thead > tr > th { padding-block: .15rem; }
.assignment-page .tree-account-cell .tree-toggle,
.assignment-page .tree-account-cell .tree-toggle:hover,
.assignment-page .tree-account-cell .tree-toggle[aria-expanded="true"] {
    width: 1rem;
    height: 1.2rem;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #718092;
    font-size: .8rem;
}
.assignment-page .tree-account-cell .tree-leaf { visibility: hidden; }
.assignment-page > .assignment-retention-scroll {
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-gutter: stable;
    scrollbar-width: auto;
    scrollbar-color: #8795a5 #e2e6ea;
    padding: .35rem;
}
.assignment-page > .assignment-cobros-scroll {
    overflow-y: auto;
    overflow-x: hidden;
    scrollbar-gutter: stable;
    scrollbar-width: auto;
    scrollbar-color: #8795a5 #e2e6ea;
    padding: .35rem;
}
.assignment-page .retention-panel {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
    min-height: 0;
    overflow: auto;
    scrollbar-width: auto;
    scrollbar-color: #8795a5 #e2e6ea;
}
.assignment-page .retention-panel::-webkit-scrollbar,
.assignment-page > .assignment-retention-scroll::-webkit-scrollbar,
.assignment-page > .assignment-cobros-scroll::-webkit-scrollbar { width: 12px; height: 12px; }
.assignment-page .retention-panel::-webkit-scrollbar-track,
.assignment-page > .assignment-retention-scroll::-webkit-scrollbar-track,
.assignment-page > .assignment-cobros-scroll::-webkit-scrollbar-track { background: #e2e6ea; }
.assignment-page .retention-panel::-webkit-scrollbar-thumb,
.assignment-page > .ass