/* Ajustes transversales posteriores a la migración a PrimeFaces 16. */

/* El texto de las tablas debe poder seleccionarse y copiarse. */
.ui-datatable tbody td,
.ui-datatable tbody td *,
.ui-treetable tbody td,
.ui-treetable tbody td *,
.ui-datatable thead th,
.ui-datatable thead th * {
    -webkit-user-select: text !important;
    user-select: text !important;
}

/* La regla histórica top:0 desplazaba los diálogos a una esquina. */
body .ui-dialog {
    position: fixed !important;
    top: 50% !important;
    left: 50% !important;
    right: auto !important;
    margin: 0 !important;
    transform: translate(-50%, -50%);
    max-width: calc(100vw - 2rem) !important;
    max-height: calc(100vh - 2rem) !important;
}

body .ui-dialog .ui-dialog-content {
    max-height: calc(100vh - 8rem);
    overflow: auto;
}

/*
 * PrimeFaces 16 renderiza todos los elementos del paginador en línea. Las
 * reglas históricas posicionaban el selector de filas de forma absoluta y
 * convertían el reporte de página en bloque, provocando superposiciones.
 */
body .ui-datatable .ui-paginator,
body .ui-treetable .ui-paginator {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

body .ui-paginator .ui-paginator-rpp-options.ui-state-default,
body .ui-paginator .ui-paginator-current {
    position: static;
    inset: auto;
    display: inline-flex;
    align-items: center;
    width: auto !important;
    margin: 0;
}

body .ui-paginator .ui-paginator-current {
    padding: 0 0.25rem;
}

body .ui-paginator .ui-paginator-pages {
    display: inline-flex;
    align-items: center;
    gap: 0.25rem;
}

body .ui-paginator .ui-paginator-page,
body .ui-paginator .ui-paginator-prev,
body .ui-paginator .ui-paginator-next {
    margin: 0;
}

@media (max-width: 600px) {
    body .ui-dialog {
        min-width: 0 !important;
        width: calc(100vw - 2rem) !important;
    }
}
