/* Tema unificado para todas las pantallas operativas. */
:root {
    --ui-navy: #0b1f5f;
    --ui-blue: #123b8f;
    --ui-blue-soft: #edf4ff;
    --ui-red: #e51d2a;
    --ui-red-dark: #bf1420;
    --ui-bg: #f4f7fb;
    --ui-surface: #ffffff;
    --ui-text: #17233b;
    --ui-muted: #667085;
    --ui-border: #d9e2ef;
    --ui-shadow: 0 6px 20px rgba(11, 31, 95, .09);
}

body {
    background: var(--ui-bg) !important;
    color: var(--ui-text);
    font-family: "Segoe UI", Tahoma, Arial, sans-serif !important;
}

.contenedor {
    width: calc(100% - 32px) !important;
    max-width: 1600px !important;
    border: 1px solid rgba(11, 31, 95, .10) !important;
    border-radius: 0 0 14px 14px !important;
    background: var(--ui-surface) !important;
    box-shadow: 0 12px 34px rgba(11, 31, 95, .11) !important;
}

#aplicacion {
    box-sizing: border-box;
    min-height: 170px;
    padding: 0 14px 18px !important;
    background: var(--ui-surface) !important;
}

#aplicacion > h3 {
    box-sizing: border-box;
    width: 100% !important;
    margin: 0 0 14px !important;
    padding: 14px 2px 9px !important;
    border-bottom: 1px solid var(--ui-border);
    color: var(--ui-navy) !important;
    font-size: 17px;
    letter-spacing: -.01em;
}

/* Superficies y paneles */
#catalogo,
#tbldatos,
#cnt_clientes,
#cnt_prov,
#nuevo,
#nvodatos,
#nuevousu,
#nuevacja,
#nuevapromo,
#nuevomov,
#nvocorte,
#nvoart,
#detalle,
#detalles,
.cnt_abono,
.cnt_venta,
.cnt_inv,
.cnt_invc,
.groupbox,
.suc-card,
.suc-form,
fieldset {
    box-sizing: border-box;
    border: 1px solid var(--ui-border) !important;
    border-radius: 10px !important;
    background: var(--ui-surface) !important;
    box-shadow: var(--ui-shadow) !important;
}

#filtros,
.filtros,
.filtro,
#filmov {
    box-sizing: border-box;
    color: var(--ui-muted);
}

#filtros,
.filtros {
    margin-bottom: 12px !important;
    padding: 10px !important;
    border: 1px solid var(--ui-border);
    border-radius: 8px;
    background: #f8fafc;
}

/* Tablas heredadas construidas con divs flotantes */
.encabezado {
    overflow: hidden;
    border-radius: 8px 8px 0 0 !important;
    background: var(--ui-navy) !important;
    box-shadow: var(--ui-shadow);
}

.encabezado > .fila:first-child,
.encabezado > .fila:first-child > div,
.pintar,
.naranja,
.suc-head {
    border-color: rgba(255, 255, 255, .18) !important;
    background: linear-gradient(110deg, var(--ui-navy), var(--ui-blue)) !important;
    color: #fff !important;
    font-weight: 700;
}

.encabezado #datos,
.encabezado #datos .fila,
#datos,
#datos .fila,
.suc-row {
    background: var(--ui-surface);
    color: #344054;
}

#datos .fila,
.group .fila,
.suc-row {
    border-bottom: 1px solid #e8edf5;
}

#datos .fila:nth-child(even),
.group .fila:nth-child(even),
.suc-row:nth-child(even) {
    background: #f8fafc !important;
}

#datos .fila:hover,
.group .fila:hover,
.suc-row:hover {
    background: var(--ui-blue-soft) !important;
    box-shadow: inset 4px 0 0 #2871c8;
}

.cel30,
.cel50,
.cel70,
.cel100,
.cel150,
.cel200,
.cel250,
.cel300,
.cel350,
.cel400,
.cel450 {
    box-sizing: border-box;
    border-color: #e1e7f0 !important;
    border-top: 0 !important;
}

.celfinal img,
.fila img[src*="editar"],
.fila img[src*="eliminar"],
.fila img[src*="ver"] {
    box-sizing: content-box;
    margin: 0 2px;
    padding: 5px;
    border-radius: 6px;
    background: #edf2f9;
    cursor: pointer;
    transition: background .16s ease, transform .16s ease;
}

.celfinal img:hover,
.fila img[src*="editar"]:hover,
.fila img[src*="eliminar"]:hover,
.fila img[src*="ver"]:hover {
    background: #dbe8fa;
    transform: translateY(-1px);
}

/* Campos */
label,
legend {
    color: #344054;
    font-weight: 600;
}

legend {
    padding: 0 7px;
    color: var(--ui-blue);
}

input[type="text"],
input[type="password"],
input[type="number"],
input[type="date"],
input[type="email"],
select,
textarea,
.textedit,
.textedithis,
.texteditcol,
.texteditinv,
.txteditabo,
.lookup,
.lookuphis,
.lookcobro,
.lokcol {
    box-sizing: border-box;
    min-height: 30px;
    padding: 5px 8px;
    border: 1px solid #b8c5d8 !important;
    border-radius: 6px !important;
    background: #fff !important;
    color: var(--ui-text) !important;
    outline: none;
    transition: border-color .16s ease, box-shadow .16s ease;
}

input[type="text"]:focus,
input[type="password"]:focus,
input[type="number"]:focus,
input[type="date"]:focus,
input[type="email"]:focus,
select:focus,
textarea:focus,
.textedit:focus,
.lookup:focus {
    border-color: #2871c8 !important;
    box-shadow: 0 0 0 3px rgba(40, 113, 200, .14) !important;
}

input:disabled,
select:disabled,
textarea:disabled,
.inactivo {
    border-color: #cbd5e1 !important;
    background: #e9eef5 !important;
    color: var(--ui-muted) !important;
}

/* Botones: rojo primario, blanco secundario */
button,
input[type="button"],
input[type="submit"],
.boton,
#btnentrar {
    min-height: 30px;
    padding: 6px 12px;
    border: 1px solid var(--ui-red-dark) !important;
    border-radius: 7px !important;
    background: linear-gradient(135deg, var(--ui-red), var(--ui-red-dark)) !important;
    color: #fff !important;
    box-shadow: 0 3px 9px rgba(229, 29, 42, .18) !important;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    font-weight: 700;
    text-shadow: none !important;
    cursor: pointer;
    transition: transform .16s ease, box-shadow .16s ease, background .16s ease;
}

button:hover,
input[type="button"]:hover,
input[type="submit"]:hover,
.boton:hover,
#btnentrar:hover {
    background: linear-gradient(135deg, #f02a36, #c91420) !important;
    box-shadow: 0 6px 14px rgba(201, 20, 32, .24) !important;
    transform: translateY(-1px);
}

button:active,
input[type="button"]:active,
input[type="submit"]:active,
.boton:active {
    transform: translateY(1px);
}

#cancel,
#cancelar,
.cancelar,
button.close,
input[value="Cancelar"] {
    border-color: #cbd5e1 !important;
    background: #fff !important;
    color: #344054 !important;
    box-shadow: none !important;
}

.botones {
    box-sizing: border-box;
    height: auto !important;
    min-height: 42px;
    padding: 8px 10px;
}

/* Paginación, selecciones y avisos */
ul.numpag li {
    width: auto !important;
    border: 1px solid var(--ui-border) !important;
    border-radius: 5px;
    background: #fff;
}

body .selpag {
    border-color: var(--ui-navy) !important;
    background: var(--ui-navy) !important;
}

.marcar,
.selfil,
.selcli {
    background: #dce9fb !important;
    color: var(--ui-navy) !important;
}

.error {
    border: 1px solid #f2a5ac !important;
    border-radius: 7px;
    background: #fff1f2 !important;
    color: #9f1722;
}

/* jQuery UI y modales antiguos */
.ui-widget,
.modal,
.modal-content {
    font-family: "Segoe UI", Tahoma, Arial, sans-serif !important;
}

.ui-dialog,
.modal-content {
    overflow: hidden;
    border: 1px solid var(--ui-border) !important;
    border-radius: 11px !important;
    background: #fff !important;
    box-shadow: 0 18px 50px rgba(7, 20, 63, .24) !important;
}

.ui-dialog .ui-dialog-titlebar,
.modal-header {
    border: 0 !important;
    border-radius: 10px 10px 0 0 !important;
    background: linear-gradient(110deg, var(--ui-navy), var(--ui-blue)) !important;
    color: #fff !important;
}

.ui-dialog .ui-dialog-content,
.modal-body {
    background: #fff !important;
    color: var(--ui-text) !important;
}

.ui-widget-overlay,
.modal-backdrop {
    background: #07143f !important;
    opacity: .48 !important;
}

.ui-state-default,
.ui-widget-content .ui-state-default,
.ui-widget-header .ui-state-default {
    border-color: var(--ui-border) !important;
    background-color: #f8fafc !important;
    color: var(--ui-blue) !important;
}

.ui-state-hover,
.ui-widget-content .ui-state-hover,
.ui-widget-header .ui-state-hover,
.ui-state-active,
.ui-widget-content .ui-state-active {
    border-color: #2871c8 !important;
    background-color: var(--ui-blue-soft) !important;
    color: var(--ui-navy) !important;
}

/* Botones que jQuery UI genera dentro de dialogos (dialog({buttons:{...}})):
   heredan .ui-state-default, que pinta texto azul oscuro sobre el fondo rojo
   del boton generico de arriba. Se fuerza letras blancas para que combinen. */
.ui-dialog-buttonpane button,
.ui-dialog-buttonpane button.ui-state-default,
.ui-dialog-buttonpane .ui-state-default,
.ui-dialog-buttonpane .ui-button-text {
    color: #fff !important;
}
.ui-dialog-buttonpane button:hover,
.ui-dialog-buttonpane button:focus {
    background: linear-gradient(135deg, #f02a36, #c91420) !important;
}

/* Los formularios de sucursales usan componentes propios. */
.suc-toolbar {
    border-color: var(--ui-border) !important;
    border-radius: 9px;
    background: #f8fafc !important;
}

.suc-help {
    border-color: #b9d3f2 !important;
    border-radius: 7px;
    background: var(--ui-blue-soft) !important;
    color: var(--ui-navy) !important;
}

/* Navegación lateral compartida */
.menu {
    box-sizing: border-box;
    width: 190px !important;
    min-height: 260px;
    padding: 10px 8px 14px;
    background: linear-gradient(180deg, #0b1f5f 0%, #071743 100%) !important;
    box-shadow: 6px 0 20px rgba(7, 23, 67, .14) !important;
}

#aplicacion {
    width: calc(100% - 190px) !important;
}

.menu > ul,
.menu > ul > li {
    width: 100%;
}

.menu > ul > li {
    margin: 0 0 5px;
    border-radius: 8px;
    background: transparent !important;
    overflow: hidden;
}

.menu .menu-heading {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: space-between;
    box-sizing: border-box;
    width: 100%;
    height: 42px;
    padding: 0 13px !important;
    border: 1px solid rgba(255, 255, 255, .08) !important;
    border-radius: 8px;
    background: rgba(255, 255, 255, .055) !important;
    color: #fff !important;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: .015em;
    line-height: 1.2;
}

.menu .menu-heading:hover,
.menu .menu-heading:focus,
.menu .menu-section.is-open > .menu-heading,
.menu .menu-section.is-active > .menu-heading {
    padding-left: 13px !important;
    border-color: rgba(255, 255, 255, .16) !important;
    background: linear-gradient(135deg, #e51d2a, #c81421) !important;
    box-shadow: 0 5px 14px rgba(164, 12, 25, .24) !important;
}

.menu-chevron {
    width: 7px;
    height: 7px;
    margin-left: 8px;
    border-right: 2px solid rgba(255, 255, 255, .85);
    border-bottom: 2px solid rgba(255, 255, 255, .85);
    transform: rotate(45deg) translateY(-2px);
    transition: transform .2s ease;
}

.menu .menu-section.is-open .menu-chevron {
    transform: rotate(225deg) translate(-2px, -1px);
}

.menu .menu-submenu {
    box-sizing: border-box;
    margin: 5px 0 2px;
    padding: 4px 0 5px;
    border-left: 1px solid rgba(142, 168, 225, .32);
    background: rgba(3, 15, 51, .46);
}

.menu .menu-section.is-open > .menu-submenu {
    display: block;
}

.menu .menu-submenu li {
    box-sizing: border-box;
    padding: 0 6px 0 10px;
    background: transparent !important;
}

.menu .menu-submenu a {
    position: relative;
    box-sizing: border-box;
    height: auto !important;
    min-height: 36px;
    margin: 0 !important;
    padding: 9px 10px 9px 20px !important;
    border: 0 !important;
    border-radius: 6px;
    background: transparent !important;
    color: #dce6ff !important;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif;
    font-size: 12px !important;
    font-weight: 500 !important;
    line-height: 17px;
}

.menu .menu-submenu a::before {
    position: absolute;
    top: 15px;
    left: 8px;
    width: 5px;
    height: 5px;
    border-radius: 50%;
    background: #7895d3;
    content: "";
}

.menu .menu-submenu a:hover,
.menu .menu-submenu a:focus {
    padding-left: 22px !important;
    background: rgba(255, 255, 255, .10) !important;
    box-shadow: none !important;
    color: #fff !important;
}

.menu .menu-submenu .is-current a {
    background: #fff !important;
    box-shadow: 0 4px 12px rgba(2, 12, 42, .22) !important;
    color: #0b1f5f !important;
    font-weight: 700 !important;
}

.menu .menu-submenu .is-current a::before {
    background: #e51d2a;
}

.menu-empty {
    padding: 10px 12px !important;
    color: #aebddd;
    font-size: 11px;
}

/* Barra moderna de contexto de la sesión */
.barestado {
    box-sizing: border-box !important;
    display: flex !important;
    min-height: 42px !important;
    height: auto !important;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    padding: 6px 18px !important;
    line-height: 1.15 !important;
    background: linear-gradient(105deg, #08194f, #123b8f) !important;
    font-family: "Segoe UI", Tahoma, Arial, sans-serif !important;
}

.barestado .txtbarsta {
    display: flex !important;
    margin: 0 !important;
}

.barestado .status-context {
    min-height: 28px;
    align-items: center;
    gap: 6px;
    padding: 0 10px;
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 8px;
    background: rgba(255, 255, 255, .07);
    white-space: nowrap;
}

.barestado .status-context span {
    color: #aebfe5;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}

.barestado .status-context strong {
    color: #fff;
    font-size: 11px;
    font-weight: 650;
    letter-spacing: .01em;
}

.barestado .status-exit {
    margin-left: 4px !important;
}

.barestado .status-exit a {
    display: inline-flex;
    min-height: 30px;
    box-sizing: border-box;
    align-items: center;
    gap: 5px;
    padding: 6px 11px !important;
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: 8px;
    background: rgba(255, 255, 255, .09);
    font-size: 11px;
    font-weight: 700;
}

.barestado .status-exit a:hover,
.barestado .status-exit a:focus {
    border-color: #ff6672;
    background: #e51d2a !important;
    box-shadow: 0 4px 12px rgba(181, 18, 36, .28);
}

@media (max-width: 1060px) {
    .contenedor {
        width: calc(100% - 20px) !important;
        margin: 0 10px !important;
    }

    #aplicacion {
        width: calc(100% - 190px) !important;
    }
}

@media (max-width: 760px) {
    .cabecera,
    .cabecera img {
        height: auto !important;
    }

    .barestado {
        height: auto !important;
        justify-content: flex-start;
        flex-wrap: wrap;
        padding: 8px !important;
        line-height: 24px !important;
    }

    .txtbarsta {
        margin: 0 !important;
    }

    .barestado .status-context { flex: 1 1 auto; justify-content: center; }

    .menu,
    #aplicacion {
        width: 100% !important;
        float: none !important;
    }

    .menu ul li a {
        box-sizing: border-box;
    }

    #aplicacion {
        overflow-x: auto;
    }

    #filtros,
    #tbldatos,
    #catalogo,
    #nuevo,
    #nvodatos,
    #nuevousu,
    #nuevacja,
    #nuevapromo,
    #nvocorte,
    #cnt_clientes,
    #detalle,
    .cnt_abono,
    .cnt_venta,
    .cnt_inv,
    .cnt_invc,
    .izq,
    .der,
    .forcobro,
    #detcobro,
    .totales,
    .datven {
        box-sizing: border-box;
        width: 100% !important;
        margin: 0 0 12px !important;
        float: none !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        transition-duration: .01ms !important;
    }
}

/* Paginacion compartida para catalogos que recargan sus filas por AJAX. */
.pv-pagination {
    display: flex;
    align-items: center;
    justify-content: space-between;
    box-sizing: border-box;
    min-height: 58px;
    padding: 12px 16px;
    border-top: 1px solid #e8edf5;
    background: #fbfcfe;
    gap: 12px;
}

.pv-page-summary {
    color: #667085;
    font-size: 12px;
}

.pv-page-controls {
    display: flex;
    align-items: center;
    gap: 5px;
}

body .pv-page-button {
    min-width: 32px;
    min-height: 32px;
    padding: 5px 9px;
    border: 1px solid #d9e2ef !important;
    border-radius: 6px !important;
    background: #fff !important;
    color: #123b8f !important;
    box-shadow: none !important;
}

body .pv-page-button:hover:not(:disabled),
body .pv-page-button.is-active {
    border-color: #123b8f !important;
    background: #123b8f !important;
    color: #fff !important;
    transform: none;
}

body .pv-page-button:disabled {
    opacity: .45;
    cursor: not-allowed;
}

@media (max-width: 560px) {
    .pv-pagination {
        align-items: flex-start;
        flex-direction: column;
    }
}
