﻿/* ========================================================================== 
   MI POS - MODERN LEGACY THEME
   Plantilla visual reutilizable para ASP.NET MVC + Bootstrap 2.
   Se carga despues de los estilos historicos y solo modifica presentacion.
   ========================================================================== */

html, body { min-height: 100%; }
html { background: #f3f7fb; }
body.pos-authenticated {
    margin: 0 !important;
    padding: 0 !important;
    background: #f3f7fb !important;
    color: #183153;
    font-family: "Segoe UI", Arial, Helvetica, sans-serif;
    font-size: 14px;
    line-height: 1.45;
    overflow-x: hidden;
}
body.pos-authenticated:before { display: none !important; }
body.pos-authenticated a { transition: color .16s ease, background .16s ease, border-color .16s ease, box-shadow .16s ease; }

/* ===== Sidebar ===== */
/*
   El menu se reparte en columna: la marca arriba, la lista en medio con su
   propio desplazamiento y el pie abajo. Antes el pie iba flotando y se
   encimaba con las ultimas opciones cuando no cabian.
*/
#sidebar-left.pos-sidebar {
    display: flex !important;
    flex-direction: column !important;
    position: fixed !important;
    left: 0 !important;
    top: 0 !important;
    bottom: 0 !important;
    width: 236px !important;
    height: 100vh !important;
    z-index: 1040 !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 18px 10px 14px !important;
    background: linear-gradient(180deg,#123b68 0%,#0b2f55 100%) !important;
    color: #fff !important;
    box-shadow: 8px 0 30px rgba(14,45,79,.10) !important;
    overflow: hidden !important;
}
#sidebar-left .pos-sidebar-nav::-webkit-scrollbar { width: 5px; }
#sidebar-left .pos-sidebar-nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,.16); border-radius: 10px; }

.pos-brand {
    display: flex !important;
    align-items: center;
    gap: 12px;
    min-height: 70px;
    box-sizing: border-box;
    padding: 0 11px 17px;
    margin: 0 0 12px;
    border-bottom: 1px solid rgba(255,255,255,.12);
    color: #fff !important;
    text-decoration: none !important;
}
.pos-brand-logo { width: 58px; height: 58px; flex: 0 0 58px; border-radius: 50%; background: #fff; overflow: hidden; display: flex; align-items: center; justify-content: center; box-shadow: 0 3px 12px rgba(0,0,0,.13); }
.pos-brand-logo img { max-width: 52px; max-height: 52px; width: auto; height: auto; object-fit: contain; }
.pos-brand-copy { display: block; min-width: 0; line-height: 1.1; }
.pos-brand-copy strong { display: block; color: #fff !important; font-size: 22px; font-weight: 700; letter-spacing: -.35px; white-space: nowrap; }
.pos-brand-copy small { display: block; margin-top: 5px; color: #b9cee2 !important; font-size: 13px; white-space: nowrap; }

#sidebar-left .pos-sidebar-nav.nav-collapse,
#sidebar-left .pos-sidebar-nav.nav-collapse.collapse {
    flex: 1 1 auto; min-height: 0;
    height: auto !important; margin: 0 !important;
    overflow-y: auto !important; overflow-x: hidden !important;
}
#sidebar-left .sidebar-nav > ul,
#sidebar-left .main-menu { margin: 0 !important; padding: 0 !important; text-align: left !important; border: 0 !important; }
#sidebar-left .main-menu > li { margin: 5px 0 !important; padding: 0 !important; border: 0 !important; list-style: none; }
#sidebar-left .main-menu > li > a {
    min-height: 48px;
    box-sizing: border-box;
    display: flex !important;
    align-items: center;
    gap: 13px;
    margin: 0 !important;
    padding: 12px 14px !important;
    border: 0 !important;
    border-radius: 8px !important;
    background: transparent !important;
    color: #dce9f6 !important;
    text-shadow: none !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    line-height: 20px !important;
    box-shadow: none !important;
}
#sidebar-left .main-menu > li > a:hover { background: rgba(255,255,255,.09) !important; color: #fff !important; }
#sidebar-left .main-menu > li.active > a,
#sidebar-left .main-menu > li.active > a:hover {
    background: linear-gradient(135deg,#338df0,#2879df) !important;
    color: #fff !important;
    box-shadow: 0 8px 20px rgba(0,91,207,.30) !important;
}
#sidebar-left .main-menu > li > a > i {
    display: inline-block !important;
    width: 25px !important;
    flex: 0 0 25px;
    margin: 0 !important;
    color: inherit !important;
    opacity: 1 !important;
    font-size: 20px !important;
    line-height: 22px !important;
    text-align: center;
}
#sidebar-left .main-menu > li > a > span { display: inline !important; width: auto !important; color: inherit !important; font-weight: 600 !important; }

.pos-sidebar-footer { 
    flex: 0 0 auto;
    margin: 14px 11px 4px;
    padding-top: 14px; 
    border-top: 1px solid rgba(255,255,255,.11); 
    color: #9fb6ce; 
}
.pos-sidebar-footer span,.pos-sidebar-footer small { display: block; }
.pos-sidebar-footer span { margin-bottom: 3px; color: #c8d9ea; font-size: 12px; }
.pos-sidebar-footer small { font-size: 12px; }

/* ===== Topbar ===== */
.pos-topbar {
    position: fixed;
    top: 0;
    left: 236px;
    right: 0;
    height: 76px;
    z-index: 1030;
    box-sizing: border-box;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 28px 0 32px;
    background: rgba(255,255,255,.98);
    border-bottom: 1px solid #e5edf5;
    box-shadow: 0 2px 14px rgba(18,55,91,.04);
}
.pos-topbar-left,.pos-topbar-right { display: flex; align-items: center; min-width: 0; }
.pos-topbar-right { gap: 10px; }
.pos-page-heading strong,.pos-page-heading small { display: block; }
.pos-page-heading strong { color: #16385f; font-size: 18px; font-weight: 700; line-height: 1.1; }
.pos-page-heading small { margin-top: 3px; color: #7d91a7; font-size: 12px; }
.pos-mobile-menu,.pos-mobile-brand { display: none; }

.pos-notification { position: relative; width: 40px; height: 40px; box-sizing: border-box; display: inline-flex; align-items: center; justify-content: center; color: #17395f; font-size: 19px; border-right: 1px solid #e9eff5; padding-right: 12px; }
.pos-notification b { position: absolute; width: 8px; height: 8px; border-radius: 50%; background: #2f8cf0; top: 4px; right: 11px; box-shadow: 0 0 0 2px #fff; }
.pos-user-menu { margin: 0 !important; }
.pos-user-menu > li { margin: 0 !important; }
.pos-user-menu > li > a.btn { display: flex !important; align-items: center; border: 0 !important; background: transparent !important; box-shadow: none !important; color: #173456 !important; text-shadow: none !important; font-weight: 600; border-radius: 8px !important; padding: 8px 9px !important; }
.pos-user-menu > li > a.btn:hover { background: #f3f7fb !important; }
.pos-user-menu .halflings-icon.user { background-image: none !important; width: 32px !important; height: 32px !important; margin: -4px 8px -4px 0 !important; border-radius: 50%; background: #adc0d4 !important; position: relative; }
.pos-user-menu .halflings-icon.user:after { content: ""; display: block; position: absolute; width: 12px; height: 12px; border-radius: 50%; background: #fff; left: 10px; top: 5px; box-shadow: 0 11px 0 4px #fff; }
.pos-user-menu .dropdown-menu { right: 0; left: auto; margin-top: 8px; border: 1px solid #e1eaf2; border-radius: 9px; box-shadow: 0 12px 30px rgba(14,45,79,.13); }

/* ===== Application surface ===== */
.pos-app-shell { margin-left: 236px; padding-top: 76px; min-height: 100vh; box-sizing: border-box; background: #f3f7fb; }
.pos-content-wrap { max-width: 100%; margin: 0 auto; padding: 25px 28px 20px; box-sizing: border-box; }
.pos-content-wrap > .row-fluid { margin: 0; }
.pos-content-wrap #content,
.pos-content-wrap #content.span11,
.pos-content-wrap #content[class*="span"] {
    float: none !important;
    width: 100% !important;
    max-width: none !important;
    min-height: 0 !important;
    margin: 0 !important;
    padding: 0 !important;
    box-sizing: border-box;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    overflow: visible !important;
}
.pos-app-shell-public { margin-left: 0; padding-top: 0; }
.pos-footer { margin: 26px 0 3px; padding: 15px 1px 0; border-top: 1px solid #e2eaf2; color: #8b9bad; display: flex; justify-content: space-between; gap: 20px; font-size: 11px; }

/* ===== Legacy page title injected from Master ===== */
.pos-legacy-page-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 16px; margin: 0 0 20px; }
.pos-legacy-page-heading h1 { margin: 0; color: #173456; font-size: 28px; line-height: 1.15; font-weight: 700; letter-spacing: -.5px; }
.pos-legacy-page-heading p { margin: 5px 0 0; color: #7b8ea4; font-size: 13px; }

/* ===== Shared cards / Bootstrap 2 boxes ===== */
.pos-content-wrap .box,
.pos-content-wrap .well,
.pos-content-wrap .thumbnail {
    box-sizing: border-box;
    border: 1px solid #e3ebf3 !important;
    border-radius: 11px !important;
    background: #fff !important;
    box-shadow: 0 6px 22px rgba(20,55,91,.055) !important;
}
.pos-content-wrap .box { margin-bottom: 20px !important; overflow: hidden; }
.pos-content-wrap .box-header {
    min-height: 58px !important;
    box-sizing: border-box;
    display: flex !important;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    padding: 12px 18px !important;
    background: #fff !important;
    color: #173456 !important;
    border: 0 !important;
    border-bottom: 1px solid #eaf0f5 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.pos-content-wrap .box-header h2 { margin: 0 !important; color: #173456 !important; font-size: 17px !important; line-height: 1.25 !important; font-weight: 700 !important; text-shadow: none !important; }
.pos-content-wrap .box-header h2 i { margin-right: 8px !important; opacity: .8; }
.pos-content-wrap .box-header .break { display: none !important; }
.pos-content-wrap .box-header .box-icon { position: static !important; float: none !important; height: auto !important; margin: 0 !important; padding: 0 !important; }
.pos-content-wrap .box-header .box-icon a { display: inline-flex !important; align-items: center; gap: 6px; min-height: 34px; box-sizing: border-box; margin: 0 0 0 6px !important; padding: 7px 11px !important; color: #1f6fc3 !important; font-size: 12px; font-weight: 600; text-decoration: none !important; background: #eef6ff !important; border: 1px solid #d9eaff !important; border-radius: 7px !important; }
.pos-content-wrap .box-header .box-icon a:hover { background: #e1f0ff !important; }
.pos-content-wrap .box-content { box-sizing: border-box; padding: 18px !important; background: #fff !important; color: #304b68; }
.pos-content-wrap .well { padding: 16px !important; }

/* ===== Filters / forms ===== */
/*
.pos-legacy-filter { margin: 0 0 18px !important; padding: 16px 18px !important; background: #fff; border: 1px solid #e3ebf3; border-radius: 10px; box-shadow: 0 5px 18px rgba(20,55,91,.045); }
*/
.pos-legacy-filter .controls { margin: 0 !important; }
.pos-content-wrap label { color: #304b68; font-weight: 600; }
.pos-content-wrap input[type="text"],
.pos-content-wrap input[type="password"],
.pos-content-wrap input[type="email"],
.pos-content-wrap input[type="number"],
.pos-content-wrap input[type="date"],
.pos-content-wrap input[type="time"],
.pos-content-wrap textarea,
.pos-content-wrap select,
.pos-content-wrap .uneditable-input {
    box-sizing: border-box;
    min-height: 38px;
    margin-bottom: 10px;
    padding: 8px 10px;
    color: #203b59;
    background: #fff;
    border: 1px solid #cdd9e5 !important;
    border-radius: 7px !important;
    box-shadow: none !important;
    outline: none;
}
.pos-content-wrap textarea { min-height: 90px; resize: vertical; }
.pos-content-wrap input:focus,.pos-content-wrap textarea:focus,.pos-content-wrap select:focus { border-color: #4b97e9 !important; box-shadow: 0 0 0 3px rgba(47,140,240,.10) !important; }
.pos-content-wrap .form-horizontal .control-group { margin-bottom: 14px; }
.pos-content-wrap .form-horizontal .control-label { color: #304b68; font-weight: 600; }
.pos-content-wrap fieldset { min-width: 0; }

/* ===== Buttons ===== */
.pos-content-wrap .btn,
.modal .btn,
.pos-topbar .btn { box-sizing: border-box; border-radius: 7px !important; background-image: none !important; text-shadow: none !important; box-shadow: none !important; }
.pos-content-wrap .btn { min-height: 36px; padding: 8px 12px; border-color: #d5dee8; color: #34506d; background: #fff; }
.pos-content-wrap .btn:hover { background: #f4f7fa; }
.pos-content-wrap .btn-primary,.pos-content-wrap .btn-info,.modal .btn-primary { color: #fff !important; border-color: #2e82e6 !important; background: #2e82e6 !important; }
.pos-content-wrap .btn-primary:hover,.pos-content-wrap .btn-info:hover,.modal .btn-primary:hover { background: #2275d3 !important; }
.pos-content-wrap .btn-success { color: #fff !important; border-color: #20a565 !important; background: #20a565 !important; }
.pos-content-wrap .btn-danger { color: #fff !important; border-color: #e24d4d !important; background: #e24d4d !important; }
.pos-content-wrap .label { border-radius: 6px; padding: 5px 8px; text-shadow: none; }

/* ===== Tables / DataTables ===== */
.pos-content-wrap .table,
.pos-content-wrap table.table { width: 100%; margin-bottom: 0; background: #fff; border-collapse: separate; border-spacing: 0; color: #304b68; }
.pos-content-wrap .table th { padding: 11px 10px !important; color: #234260; background: #f6f9fc !important; border-color: #e6edf4 !important; font-size: 12px; font-weight: 700; vertical-align: middle; }
.pos-content-wrap .table td { padding: 10px !important; border-color: #edf2f6 !important; vertical-align: middle; }
.pos-content-wrap .table-striped tbody tr:nth-child(odd) td { background: #fbfdff; }
.pos-content-wrap .table-hover tbody tr:hover td,.pos-content-wrap .table tbody tr:hover td { background: #f4f9ff; }
.pos-content-wrap .table-bordered { border: 1px solid #e5edf4 !important; border-radius: 8px; overflow: hidden; }
.pos-content-wrap .bootstrap-datatable { min-width: 620px; }
.pos-content-wrap .dataTables_wrapper { width: 100%; overflow: auto; }
.pos-content-wrap .dataTables_filter,.pos-content-wrap .dataTables_length { margin-bottom: 12px; }
.pos-content-wrap .dataTables_filter input { width: 220px; max-width: 100%; margin-left: 7px; }
.pos-content-wrap .dataTables_paginate { margin-top: 12px; }
.pos-content-wrap .pagination ul { box-shadow: none; }
.pos-content-wrap .pagination ul > li > a,.pos-content-wrap .pagination ul > li > span { border-color: #dce5ee; color: #3c5d7d; }
.pos-content-wrap .pagination ul > .active > a,.pos-content-wrap .pagination ul > .active > span { color: #fff; background: #2e82e6; border-color: #2e82e6; }

/* ===== Tarjetas de usuario (listado de Usuarios) ===== */
/*
   Rejilla compacta: tantas tarjetas por renglon como quepan sin bajar de
   260px. Bootstrap 2 le pone un clearfix a .thumbnails con :before y :after;
   dentro de una rejilla esos pseudoelementos contarian como tarjetas, asi que
   se anulan.
*/
.pos-content-wrap .thumbnails {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
    gap: 10px;
    margin: 0 !important;
    padding: 0;
    list-style: none;
}
.pos-content-wrap .thumbnails:before,
.pos-content-wrap .thumbnails:after { display: none !important; }

.pos-content-wrap .thumbnails > li {
    display: flex;
    align-items: center;
    gap: 11px;
    box-sizing: border-box;
    float: none !important;
    width: auto !important;
    min-width: 0;
    margin: 0 !important;
    padding: 10px 12px;
    list-style: none;
    background: #fff;
    border: 1px solid #e5edf5;
    border-radius: 10px;
    transition: border-color .15s ease, box-shadow .15s ease;
}
.pos-content-wrap .thumbnails > li:hover {
    border-color: #cfe0f2;
    box-shadow: 0 4px 14px rgba(22,53,88,.07);
}

/* Retrato circular. La foto conserva su recorte con object-fit. */
.pos-content-wrap .thumbnails .thumbnail {
    display: flex;
    flex: 0 0 auto;
    align-items: center;
    justify-content: center;
    width: 46px !important;
    height: 46px;
    margin: 0 !important;
    padding: 0 !important;
    float: none !important;
    overflow: hidden;
    background: #eef4fb;
    border: 0 !important;
    border-radius: 50% !important;
    box-shadow: none !important;
}
.pos-content-wrap .thumbnails .thumbnail img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 50%;
}

/*
   Datos y boton. El marcado de la vista no agrupa el nombre con los datos, asi
   que la caja se reparte con una rejilla de dos columnas: a la izquierda el
   nombre sobre el usuario y el correo, a la derecha el boton centrado.
*/
.pos-content-wrap .thumbnails .caption {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    grid-template-areas: "nombre boton" "datos boton";
    align-items: center;
    column-gap: 10px;
    flex: 1 1 auto;
    min-width: 0;
    min-height: 0;
    padding: 0 !important;
}
.pos-content-wrap .thumbnails .caption h4 {
    grid-area: nombre;
    margin: 0;
    color: #173456;
    font-size: 14px;
    font-weight: 700;
    line-height: 1.3;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pos-content-wrap .thumbnails .caption > p:first-of-type {
    grid-area: datos;
    margin: 2px 0 0;
    color: #7186a0;
    font-size: 12px;
    line-height: 1.45;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pos-content-wrap .thumbnails .caption > p:first-of-type strong { color: #45607d; font-weight: 600; }
.pos-content-wrap .thumbnails .caption > p:first-of-type a { color: #7186a0; }
/* El salto de linea entre usuario y correo sobra en una tarjeta compacta. */
.pos-content-wrap .thumbnails .caption > p:first-of-type br { display: none; }
/* El punto separador se omite cuando el usuario no tiene correo. */
.pos-content-wrap .thumbnails .caption > p:first-of-type a:before { content: " \00b7 "; color: #b3c2d2; }
.pos-content-wrap .thumbnails .caption > p:first-of-type a:empty:before { content: none; }

.pos-content-wrap .thumbnails .caption > p:last-child {
    grid-area: boton;
    margin: 0;
}
.pos-content-wrap .thumbnails .caption > p:last-child .btn {
    margin: 0;
    min-height: 0 !important;
    padding: 5px 11px !important;
    font-size: 12px;
    line-height: 1.35;
}
.pos-content-wrap .user-group { width: 100% !important; margin: 0 0 16px !important; border: 0 !important; }
.pos-content-wrap .user-group > h4 { margin: 0 0 8px; padding: 4px 2px !important; color: #6b8096; font-size: 11px; text-transform: uppercase; letter-spacing: .6px; }

/* ===== Tabs, breadcrumbs, alerts ===== */
.pos-content-wrap .nav-tabs { border-bottom-color: #dfe8f1; }
.pos-content-wrap .nav-tabs > li > a { border-radius: 7px 7px 0 0; color: #49657f; }
.pos-content-wrap .nav-tabs > .active > a { color: #1d6fc4; font-weight: 600; }
.pos-content-wrap .breadcrumb { margin: 0 0 16px; padding: 9px 12px; background: #fff; border: 1px solid #e4ecf3; border-radius: 8px; }
.pos-content-wrap .alert { border: 0; border-radius: 8px; box-shadow: none; text-shadow: none; }

/* ===== Modals ===== */
.modal { border: 0 !important; border-radius: 12px !important; overflow: hidden; box-shadow: 0 20px 60px rgba(8,31,55,.25) !important; }
.modal-header { padding: 15px 18px !important; background: #fff; border-bottom: 1px solid #e8eef4 !important; }
.modal-header h1,.modal-header h2,.modal-header h3 { margin: 0 !important; color: #173456; font-weight: 700; }
.modal-header h3 { font-size: 19px; line-height: 1.3; }
.modal-body { box-sizing: border-box; max-height: 70vh; padding: 18px !important; background: #fff; }
.modal-footer { padding: 12px 18px !important; background: #f7f9fc !important; border-top: 1px solid #e8eef4 !important; box-shadow: none !important; }
.modal-backdrop { background: #0e2a47; }

/* ===== Chosen ===== */
.pos-content-wrap .chzn-container { max-width: 100%; }
.pos-content-wrap .chzn-container-single .chzn-single { height: 36px; line-height: 36px; border-color: #cdd9e5; border-radius: 7px; background: #fff; box-shadow: none; }
.pos-content-wrap .chzn-container-active .chzn-single { border-color: #4b97e9; box-shadow: 0 0 0 3px rgba(47,140,240,.10); }
.pos-content-wrap .chzn-drop { border-color: #d6e0ea; border-radius: 0 0 7px 7px; box-shadow: 0 10px 24px rgba(20,55,91,.12); }

/* ===== Dashboard ===== */
.pos-dashboard { max-width: 1400px; margin: 0 auto; text-align: left; }
.pos-dashboard-title { margin: 0 0 20px; }
.pos-dashboard-title h1 { margin: 0; color: #183153; font-size: 29px; line-height: 1.1; font-weight: 700; letter-spacing: -.6px; }
.pos-dashboard-title p { margin: 5px 0 0; color: #75879d; font-size: 14px; }
.pos-card { box-sizing: border-box; background: #fff; border: 1px solid #e5edf5; border-radius: 11px; box-shadow: 0 7px 24px rgba(22,53,88,.05); }
.pos-filter-card { padding: 20px 24px; margin-bottom: 22px; }
.pos-filter-grid { display: flex; align-items: flex-end; gap: 22px; }
.pos-field { flex: 1 1 0; min-width: 0; }
.pos-field label { display: block; margin-bottom: 7px; color: #173456; font-weight: 700; font-size: 13px; }
.pos-input-wrap { position: relative; }
.pos-input-wrap i { position: absolute; left: 14px; top: 50%; margin-top: -8px; color: #456887; font-size: 16px; z-index: 2; }
.pos-input-wrap input,.pos-input-wrap select { width: 100%; height: 42px !important; box-sizing: border-box; margin: 0 !important; padding: 8px 13px 8px 42px !important; background: #fff; border: 1px solid #cbd7e3 !important; border-radius: 7px !important; color: #173456; font-size: 14px; }
.pos-filter-action { flex: 0 0 150px; }
.pos-filter-btn { width: 100%; height: 42px; margin: 0 !important; border: 0 !important; border-radius: 7px !important; background: linear-gradient(135deg,#2f8cf0,#2776dc) !important; color: #fff !important; font-weight: 700; font-size: 14px; text-shadow: none !important; box-shadow: 0 7px 16px rgba(40,122,225,.20) !important; }
.pos-filter-btn i { margin-right: 7px; }
.pos-income-card { position: relative; overflow: hidden; display: flex; align-items: center; justify-content: space-between; min-height: 138px; padding: 23px 28px; margin-bottom: 22px; background: linear-gradient(105deg,#d9edff 0%,#d7ecff 70%,#c9e5ff 100%); border-color: #d4e8fa; }
.pos-income-card:after { content: ""; position: absolute; right: -28px; bottom: -75px; width: 285px; height: 185px; border-radius: 48% 52% 0 0; background: rgba(255,255,255,.25); transform: rotate(-12deg); }
.pos-income-main { position: relative; z-index: 1; display: flex; align-items: center; gap: 24px; }
.pos-income-icon { width: 74px; height: 74px; border-radius: 13px; background: rgba(255,255,255,.38); display: flex; align-items: center; justify-content: center; color: #1682ef; font-size: 38px; }
.pos-income-copy small { display: block; color: #476987; font-weight: 700; text-transform: uppercase; letter-spacing: .7px; }
.pos-income-copy strong { display: block; margin-top: 4px; color: #0e3266; font-size: 39px; line-height: 1.1; letter-spacing: -1px; }
.pos-income-meta { position: relative; z-index: 1; display: flex; align-items: center; gap: 16px; min-width: 34%; border-left: 1px solid rgba(55,104,145,.18); padding-left: 34px; color: #4d6b85; }
.pos-income-meta i { color: #1682ef; font-size: 25px; }
.pos-income-meta span { display: block; line-height: 1.55; }
.pos-dashboard-grid { display: grid; grid-template-columns: minmax(0,1fr) 315px; gap: 20px; align-items: start; }
.pos-performance-card { padding: 20px 22px; }
.pos-card-heading { display: flex; justify-content: space-between; align-items: center; gap: 14px; margin-bottom: 17px; }
.pos-card-title { display: flex; align-items: center; gap: 13px; min-width: 0; }
.pos-card-title-icon { width: 46px; height: 46px; flex: 0 0 46px; border-radius: 50%; background: #e7f4ff; display: flex; align-items: center; justify-content: center; color: #1682ef; font-size: 21px; }
.pos-card-title h2 { margin: 0; color: #0f3263; font-size: 19px; line-height: 1.15; }
.pos-card-title p { margin: 3px 0 0; color: #778aa0; font-size: 12px; }
.pos-pill { flex: 0 0 auto; padding: 7px 12px; border-radius: 999px; background: #f0f6fb; color: #48627d; font-size: 12px; }
.pos-pill i { margin-right: 6px; }
.pos-seller-list { display: flex; flex-direction: column; gap: 15px; }
.pos-seller-card { display: grid; grid-template-columns: 330px minmax(0,1fr); overflow: hidden; background: #fff; border: 1px solid #dfe8f1; border-radius: 9px; }
.pos-seller-info { padding: 17px 19px; background: linear-gradient(180deg,#f3f9ff 0,#fff 48%); border-right: 1px solid #e4ebf2; }
.pos-seller-person { display: flex; align-items: center; gap: 15px; padding-bottom: 14px; }
.pos-seller-avatar { width: 66px; height: 66px; flex: 0 0 66px; overflow: hidden; border: 1px solid #d7e5f3; border-radius: 50%; background: #eef5fb; }
.pos-seller-avatar img { width: 100%; height: 100%; object-fit: cover; }
.pos-seller-person h3 { margin: 0; color: #103263; font-size: 18px; line-height: 1.1; }
.pos-seller-person span { display: block; margin-top: 5px; color: #6c8198; }
.pos-seller-stats { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 10px; padding: 13px 0; border-top: 1px solid #e6edf4; border-bottom: 1px solid #e6edf4; }
.pos-stat small,.pos-stat strong { display: block; }
.pos-stat small { margin-bottom: 3px; color: #5c728b; }
.pos-stat strong { color: #102f58; font-size: 15px; }
.pos-seller-counts { padding-top: 12px; color: #506880; line-height: 1.9; }
.pos-seller-counts i { width: 21px; margin-right: 7px; color: #3e6386; text-align: center; }
.pos-seller-counts .cancelled i { color: #ef3333; }
.pos-seller-performance { display: flex; flex-direction: column; justify-content: center; min-width: 0; padding: 26px 31px; }
.pos-total-row { display: flex; align-items: center; justify-content: space-between; gap: 14px; margin-bottom: 13px; color: #19395d; font-size: 15px; font-weight: 700; }
.pos-total-row strong { color: #1178db; font-size: 18px; }
.pos-progress { display: flex; align-items: center; gap: 11px; }
.pos-progress-track { height: 15px; flex: 1 1 auto; min-width: 0; overflow: hidden; border-radius: 999px; background: #eaf0f5; }
.pos-progress-bar { height: 100%; min-width: 2px; border-radius: 999px; background: linear-gradient(90deg,#2787e9,#1f95ea); }
.pos-progress-label { flex: 0 0 auto; color: #667b92; }
.pos-top-seller { display: flex; align-items: center; gap: 13px; margin-top: 27px; padding: 15px 17px; border-radius: 7px; background: #dff1ff; color: #45657f; }
.pos-top-seller i { color: #1682ef; font-size: 25px; }
.pos-top-seller strong { display: block; margin-bottom: 2px; color: #123d73; }
.pos-activity-card { padding: 20px; }
.pos-day-summary { border-top: 1px solid #edf2f6; }
.pos-summary-line { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 14px 3px; border-bottom: 1px solid #edf2f6; color: #49647f; }
.pos-summary-line span { display: flex; align-items: center; gap: 9px; }
.pos-summary-line i { width: 18px; color: #1682ef; text-align: center; }
.pos-summary-line strong { color: #167ad9; font-size: 15px; }
.pos-summary-cancelled i,.pos-summary-cancelled strong { color: #ef4747; }
.pos-operation-ok { display: flex; gap: 11px; align-items: center; margin-top: 18px; padding: 13px 14px; border-radius: 8px; background: #e2f8ea; color: #198c4c; }
.pos-operation-ok i { font-size: 20px; }
.pos-operation-ok strong,.pos-operation-ok small { display: block; }
.pos-operation-ok small { margin-top: 2px; color: #5a7c68; }

/* ===== POS sale page: keep it usable on narrow screens ===== */
#TablaVenta input,#TablaVenta select { max-width: 100%; }
.pos-content-wrap #divExcel,.pos-content-wrap #divExcel2 { max-width: 100%; overflow-x: auto; }

/* ===== Mobile bottom navigation ===== */
.pos-mobile-bottom-nav { display: none; }
.pos-sidebar-backdrop { display: none; }
.pos-submenu { margin: 0 !important; }
.pos-submenu > li > a.btn { border: 0 !important; background: #338df0 !important; box-shadow: none !important; border-radius: 8px !important; }

/* ===== Medium desktop ===== */
@media (max-width: 1180px) {
    .pos-dashboard-grid { grid-template-columns: 1fr; }
    .pos-activity-card { display: block; }
    .pos-seller-card { grid-template-columns: 310px minmax(0,1fr); }
    .pos-income-copy strong { font-size: 34px; }
}
/* ============================================================
   BOX HEADER - ACCIONES RESPONSIVE
   ============================================================ */
@media (max-width: 1128px) {
    /*
        El header deja de tener una altura fija.
        Así puede crecer dependiendo de cuántos botones existan.
    */
    .pos-content-wrap .box-header {
        height: auto !important;
        min-height: 40px !important;
        padding: 8px 10px !important;
        box-sizing: border-box !important;
        overflow: visible !important;
        display: -webkit-box !important;
        display: -ms-flexbox !important;
        display: flex !important;
        -webkit-box-align: center !important;
        -ms-flex-align: center !important;
        align-items: center !important;
        -ms-flex-wrap: wrap !important;
        flex-wrap: wrap !important;
    }
    /*
        Título de la caja
    */
    .pos-content-wrap .box-header h2 {
        float: none !important;
        width: auto !important;
        margin: 0 !important;
        display: -webkit-box !important;
        display: -ms-flexbox !important;
        display: flex !important;
        -webkit-box-align: center !important;
        -ms-flex-align: center !important;
        align-items: center !important;
        font-size: 13px !important;
        line-height: 20px !important;
        -webkit-box-flex: 1 !important;
        -ms-flex: 1 1 auto !important;
        flex: 1 1 auto !important;
    }


    .pos-content-wrap .box-header h2 i {
        margin-right: 6px !important;
    }
    /*
        Contenedor de botones.

        Bootstrap viejo lo manda flotando a la derecha.
        En móvil quitamos el float y dejamos que los botones
        puedan acomodarse en varias líneas.
    */
    .pos-content-wrap .box-header .box-icon {
        position: static !important;
        float: none !important;
        width: 100% !important;
        margin: 7px 0 0 0 !important;
        padding: 0 !important;
        display: -webkit-box !important;
        display: -ms-flexbox !important;
        display: flex !important;
        -webkit-box-align: center !important;
        -ms-flex-align: center !important;
        align-items: center !important;
        -ms-flex-wrap: wrap !important;
        flex-wrap: wrap !important;
        gap: 5px;
        box-sizing: border-box !important;
        overflow: visible !important;
    }
    /*
        Botones de acción
    */
    .pos-content-wrap .box-header .box-icon a {
        float: none !important;
        display: -webkit-inline-box !important;
        display: -ms-inline-flexbox !important;
        display: inline-flex !important;
        -webkit-box-align: center !important;
        -ms-flex-align: center !important;
        align-items: center !important;
        -webkit-box-pack: center !important;
        -ms-flex-pack: center !important;
        justify-content: center !important;
        width: auto !important;
        min-width: 0 !important;
        height: auto !important;
        min-height: 30px !important;
        margin: 0 !important;
        padding: 5px 8px !important;
        box-sizing: border-box !important;
        font-size: 10px !important;
        line-height: 18px !important;
        white-space: nowrap !important;
        border-radius: 5px !important;
    }
    /*
        Iconos internos
    */
    .pos-content-wrap .box-header .box-icon a i {
        margin: 0 3px 0 0 !important;
        font-size: 12px !important;
    }
    /*
        Algunos botones únicamente contienen icono.
        No necesitan margen adicional.
    */
    .pos-content-wrap .box-header .box-icon a i:only-child {
        margin-right: 0 !important;
    }
    /*
        Evita que clearfix / floats antiguos
        interfieran con flexbox.
    */
    .pos-content-wrap .box-header:before,
    .pos-content-wrap .box-header:after,
    .pos-content-wrap .box-header .box-icon:before,
    .pos-content-wrap .box-header .box-icon:after {
        display: none !important;
        content: none !important;
    }

}
   
/* ===== Tablet ===== */
@media (min-width: 768px) and (max-width: 979px) {
    #sidebar-left.pos-sidebar { width: 208px !important; }
    .pos-topbar { left: 208px; padding-left: 24px; }
    .pos-app-shell { margin-left: 208px; }
    .pos-brand-logo { width: 48px; height: 48px; flex-basis: 48px; }
    .pos-brand-logo img { max-width: 44px; max-height: 44px; }
    .pos-brand-copy strong { font-size: 19px; }
    #sidebar-left .main-menu > li > a { padding: 11px 10px !important; gap: 10px; font-size: 13px !important; }
    .pos-content-wrap { padding: 22px 20px; }
    .pos-filter-grid { gap: 14px; }
    .pos-seller-card { grid-template-columns: 280px minmax(0,1fr); }
}

/* ===== Phones ===== */
@media (max-width: 767px) {
    body.pos-authenticated { padding: 0 0 69px !important; background: #f4f8fc !important; }
    #sidebar-left.pos-sidebar {
        width: 286px !important;
        max-width: 86vw !important;
        margin: 0 !important;
        padding: 18px 10px 14px !important;
        transform: translateX(-103%);
        transition: transform .22s ease;
        box-shadow: 14px 0 35px rgba(11,37,67,.25) !important;
    }
    body.pos-sidebar-open #sidebar-left.pos-sidebar { transform: translateX(0); }
    body.pos-sidebar-open { overflow: hidden; }
    .pos-sidebar-backdrop { display: block; position: fixed; inset: 0; z-index: 1035; background: rgba(8,24,43,.45); opacity: 0; visibility: hidden; transition: opacity .2s ease,visibility .2s ease; }
    body.pos-sidebar-open .pos-sidebar-backdrop { opacity: 1; visibility: visible; }

    .pos-topbar { left: 0; height: 72px; padding: 0 12px; background: linear-gradient(100deg,#153d6c,#0f3158); border-bottom: 0; color: #fff; }
    .pos-mobile-menu { width: 40px; height: 40px; flex: 0 0 40px; margin: 0 7px 0 -4px; display: inline-flex; flex-direction: column; justify-content: center; align-items: center; gap: 5px; background: transparent; border: 0; }
    .pos-mobile-menu span { width: 23px; height: 2px; background: #fff; border-radius: 2px; }
    .pos-mobile-brand { display: flex; align-items: center; gap: 9px; min-width: 0; color: #fff !important; text-decoration: none !important; }
    .pos-mobile-brand img { width: 40px; height: 40px; flex: 0 0 40px; object-fit: contain; border-radius: 50%; background: #fff; }
    .pos-mobile-brand span { min-width: 0; }
    .pos-mobile-brand span strong,.pos-mobile-brand span small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .pos-mobile-brand span strong { color: #fff; font-size: 16px; }
    .pos-mobile-brand span small { margin-top: 1px; color: #b9cee4; font-size: 10px; }
    .pos-page-heading { display: none; }
    .pos-topbar-right { gap: 2px; }
    .pos-submenu { display: none; }
    .pos-notification { width: 31px; padding-right: 0; border-right: 0; color: #fff; }
    .pos-notification b { right: 0; box-shadow: 0 0 0 2px #153d6c; }
    .pos-user-menu > li > a.btn { color: #fff !important; font-size: 0; padding: 4px !important; background: transparent !important; }
    .pos-user-menu .caret { display: none; }
    .pos-user-menu .halflings-icon.user { margin: 0 !important; }
    .pos-user-menu .dropdown-menu { right: 0; left: auto; }

    .pos-app-shell { margin-left: 0; padding-top: 72px; }
    .pos-content-wrap { width: 100%; max-width: none; padding: 15px 11px 10px; }
    .pos-footer { display: none; }
    .pos-legacy-page-heading { margin-bottom: 14px; }
    .pos-legacy-page-heading h1 { font-size: 24px; }
    .pos-legacy-page-heading p { font-size: 12px; }

    .pos-content-wrap .row-fluid [class*="span"] { float: none !important; width: 100% !important; margin-left: 0 !important; }
    .pos-content-wrap .box { margin-bottom: 14px !important; border-radius: 10px !important; }
    .pos-content-wrap .box-header { min-height: 52px !important; padding: 10px 12px !important; }
    .pos-content-wrap .box-header h2 { font-size: 15px !important; }
    /*.pos-content-wrap .box-header .box-icon a { min-height: 32px; padding: 6px 8px !important; font-size: 0; }*/
    
    .pos-content-wrap .box-header .box-icon a i { margin: 0 !important; }
    .pos-content-wrap .box-content { padding: 12px !important; overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .pos-legacy-filter { 
        /*padding: 12px !important; 
        margin-bottom: 13px !important; */
    }

    .pos-content-wrap .form-horizontal .control-label { float: none !important; width: auto !important; padding-top: 0; margin-bottom: 5px; text-align: left !important; }
    .pos-content-wrap .form-horizontal .controls { margin-left: 0 !important; }
    .pos-content-wrap input[type="text"],.pos-content-wrap input[type="password"],.pos-content-wrap input[type="email"],.pos-content-wrap input[type="number"],.pos-content-wrap input[type="date"],.pos-content-wrap textarea,.pos-content-wrap select { max-width: 100% !important; }
    .pos-content-wrap .input-large { width: 100% !important; }
    .pos-content-wrap .controls { margin-left: 0 !important; }
    .pos-content-wrap .btn { margin-bottom: 5px; }

    .pos-content-wrap .table,.pos-content-wrap table.table { font-size: 12px; }
    /*
       Antes las celdas no partian el texto, asi que una nota larga estiraba la
       tabla fuera del panel y, como el panel recorta, la columna del importe
       quedaba sin verse. Ahora el texto se acomoda en varios renglones; solo
       los numeros y las fechas siguen en una sola linea.
    */
    .pos-content-wrap .table th,.pos-content-wrap .table td {
        padding: 8px !important;
        white-space: normal;
        overflow-wrap: break-word;
        word-wrap: break-word;
        word-break: break-word;
    }
    .pos-content-wrap .table th:last-child,
    .pos-content-wrap .table td:last-child { white-space: nowrap; }

    /*
       Las tablas anchas de varias columnas conservan sus columnas en una sola
       linea y se deslizan de lado dentro de su contenedor.
    */
    .pos-content-wrap .bootstrap-datatable {
        display: block; min-width: 0; width: 100%;
        overflow-x: auto; -webkit-overflow-scrolling: touch;
    }
    .pos-content-wrap .bootstrap-datatable th,
    .pos-content-wrap .bootstrap-datatable td { white-space: nowrap; }
    .pos-content-wrap .dataTables_filter,.pos-content-wrap .dataTables_length { float: none !important; width: 100%; text-align: left !important; }
    .pos-content-wrap .dataTables_filter input { width: calc(100% - 80px); }

    /* Telefono: una tarjeta por renglon, con el boton debajo de los datos. */
    .pos-content-wrap .thumbnails { grid-template-columns: 1fr; gap: 8px; }
    .pos-content-wrap .thumbnails > li { padding: 10px 12px 10px 12px; }
    .pos-content-wrap .thumbnails .thumbnail { width: 42px !important; height: 42px; }

    .modal { top: 4% !important; left: 3% !important; width: 94% !important; margin-left: 0 !important; max-height: 92vh; }
    .modal-body { max-height: 65vh; overflow-y: auto; }

    /* Dashboard mobile */
    .pos-dashboard-title { margin: 1px 2px 15px; }
    .pos-dashboard-title h1 { font-size: 25px; }
    .pos-dashboard-title p { font-size: 12px; }
    .pos-filter-card { padding: 14px; margin-bottom: 14px; }
    .pos-filter-grid { display: block; }
    .pos-field { margin-bottom: 11px; }
    .pos-filter-action { width: 100%; }
    .pos-filter-btn { width: 100%; }
    .pos-income-card { display: block; min-height: 0; padding: 17px; margin-bottom: 14px; }
    .pos-income-main { gap: 14px; }
    .pos-income-icon { width: 56px; height: 56px; flex: 0 0 56px; font-size: 29px; }
    .pos-income-copy small { font-size: 10px; }
    .pos-income-copy strong { font-size: 27px; }
    .pos-income-meta { min-width: 0; margin-top: 15px; padding: 12px 0 0; border-left: 0; border-top: 1px solid rgba(55,104,145,.18); }
    .pos-dashboard-grid { display: block; }
    .pos-performance-card { padding: 13px; }
    .pos-card-heading { align-items: flex-start; margin-bottom: 13px; }
    .pos-card-title-icon { width: 40px; height: 40px; flex-basis: 40px; }
    .pos-card-title h2 { font-size: 17px; }
    .pos-pill { padding: 5px 8px; font-size: 10px; }
    .pos-seller-card { display: block; }
    .pos-seller-info { padding: 14px; border-right: 0; border-bottom: 1px solid #e4ebf2; }
    .pos-seller-avatar { width: 55px; height: 55px; flex-basis: 55px; }
    .pos-seller-stats { grid-template-columns: repeat(3,1fr); gap: 4px; }
    .pos-stat small { font-size: 10px; }
    .pos-stat strong { font-size: 13px; }
    .pos-seller-performance { padding: 15px 14px; }
    .pos-total-row { font-size: 13px; }
    .pos-total-row strong { font-size: 15px; }
    .pos-top-seller { display: none; }
    .pos-activity-card { display: block; margin-top: 14px; padding: 14px; }
    .pos-summary-line { padding: 11px 2px; font-size: 12px; }

    /* Bottom nav inspired by the mobile reference. Horizontally scrollable so permissions never break it. */
    .pos-mobile-bottom-nav { position: fixed; left: 0; right: 0; bottom: 0; z-index: 1025; display: flex; align-items: stretch; height: 64px; box-sizing: border-box; overflow-x: auto; overflow-y: hidden; background: rgba(255,255,255,.98); border-top: 1px solid #dfe8f1; box-shadow: 0 -5px 18px rgba(18,55,91,.07); -webkit-overflow-scrolling: touch; }
    .pos-mobile-bottom-nav::-webkit-scrollbar { display: none; }
    .pos-mobile-bottom-nav a { position: relative; min-width: 82px; flex: 1 0 82px; box-sizing: border-box; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 7px 5px 5px; color: #516b86 !important; font-size: 10px; line-height: 1.05; text-decoration: none !important; text-align: center; }
    .pos-mobile-bottom-nav a i { width: auto !important; color: inherit !important; font-size: 20px !important; }
    .pos-mobile-bottom-nav a.active { color: #1682ef !important; font-weight: 700; }
    .pos-mobile-bottom-nav a.active:before { content: ""; position: absolute; left: 22%; right: 22%; top: 0; height: 3px; border-radius: 0 0 3px 3px; background: #1682ef; }
}

@media (max-width: 420px) {
    /*.pos-mobile-brand span small { display: none; }*/
    .pos-income-copy strong { font-size: 24px; }
    .pos-card-title h2 { font-size: 15px; }
    .pos-pill { max-width: 90px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
}

/* ===== Public / login ===== */
body.pos-public { margin: 0 !important; min-height: 100vh; background: linear-gradient(135deg,#0d3157 0%,#174c7e 52%,#eef5fb 52%,#f7fbff 100%) !important; font-family: "Segoe UI",Arial,Helvetica,sans-serif; }
body.pos-public .pos-app-shell-public { min-height: 100vh; display: flex; align-items: center; justify-content: center; box-sizing: border-box; padding: 28px 16px; }
body.pos-public .pos-content-wrap { width: 100%; max-width: 440px; margin: 0; padding: 0; }
body.pos-public .row-fluid { margin: 0; }
body.pos-public .login-box { width: 100% !important; max-width: 420px; box-sizing: border-box; margin: 0 auto !important; padding: 32px !important; background: rgba(255,255,255,.98) !important; border: 1px solid rgba(255,255,255,.75) !important; border-radius: 16px !important; box-shadow: 0 24px 70px rgba(6,29,52,.24) !important; }
body.pos-public .login-box:before { content: "Mi POS"; display: block; margin-bottom: 4px; color: #173c66; font-size: 28px; font-weight: 700; text-align: center; }
body.pos-public .login-box:after { content: "Punto de Venta"; display: block; position: absolute; }
body.pos-public .login-box h1 { margin: 22px 0 4px !important; color: #183153; font-size: 26px; line-height: 1.2; font-weight: 700; text-align: center; }
body.pos-public .login-box h2 { margin: 0 0 24px !important; color: #7a8da3; font-size: 13px; line-height: 1.4; font-weight: 400; text-align: center; }
body.pos-public .login-box .input-prepend { display: flex; width: 100%; margin-bottom: 13px; }
body.pos-public .login-box .input-prepend .add-on { width: 42px; height: 42px; box-sizing: border-box; display: flex; align-items: center; justify-content: center; padding: 0; background: #f2f7fc; border: 1px solid #cedae6; border-right: 0; border-radius: 8px 0 0 8px; }
body.pos-public .login-box input,body.pos-public .login-box select { width: 100% !important; height: 42px !important; box-sizing: border-box; margin: 0 !important; padding: 8px 11px !important; color: #213d5b; background: #fff; border: 1px solid #cedae6 !important; border-radius: 8px !important; box-shadow: none !important; }
body.pos-public .login-box .input-prepend input { border-radius: 0 8px 8px 0 !important; }
body.pos-public .login-box .button-login { float: none !important; width: 100%; margin: 8px 0 0 !important; }
body.pos-public .login-box .button-login .btn { width: 100%; height: 43px; color: #fff; font-size: 14px; font-weight: 700; background: linear-gradient(135deg,#2f8cf0,#2776dc) !important; border: 0 !important; border-radius: 8px !important; text-shadow: none !important; box-shadow: 0 8px 20px rgba(40,122,225,.22) !important; }
body.pos-public .validation-summary-errors { margin-bottom: 14px; padding: 10px 12px; color: #a83a3a; background: #fff0f0; border-radius: 8px; }
body.pos-public .validation-summary-errors ul { margin: 0 0 0 18px; }
@media (max-width: 600px) {
    body.pos-public { background: linear-gradient(180deg,#123b68 0,#0e3159 36%,#f3f7fb 36%,#f3f7fb 100%) !important; }
    body.pos-public .pos-app-shell-public { align-items: flex-start; padding-top: 68px; }
    body.pos-public .login-box { padding: 26px 20px !important; border-radius: 14px !important; }
}

/* ========================================================================== 
   MODERNIZATION PASS V3
   Ajustes globales para cabecera, calendarios, login y componentes heredados.
   Solo presentacion: no altera nombres, ids, rutas ni comportamiento JS.
   ========================================================================== */

/* Pie de pagina oculto por solicitud de diseno. */
.pos-footer { display: none !important; }

/* La cabecera muestra la seccion actual; evita saltos cuando el nombre es largo. */
.pos-page-heading strong {
    display: block;
    max-width: 430px;
    overflow: hidden;
    color: #153556 !important;
    font-size: 18px;
    font-weight: 750;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pos-page-heading small { margin-top: 4px; color: #7d91a7 !important; font-size: 12px; }

/* ===== jQuery UI Datepicker / calendarios heredados ===== */
.ui-datepicker {
    width: 292px !important;
    box-sizing: border-box !important;
    padding: 10px !important;
    background: #fff !important;
    border: 1px solid #dce6f0 !important;
    border-radius: 12px !important;
    box-shadow: 0 18px 45px rgba(18,55,91,.18) !important;
    color: #294762 !important;
    font-family: "Segoe UI", Arial, Helvetica, sans-serif !important;
    z-index: 99999 !important;
}
.ui-datepicker .ui-datepicker-header {
    position: relative;
    min-height: 38px;
    box-sizing: border-box;
    padding: 8px 38px !important;
    background: #f5f9fd !important;
    border: 0 !important;
    border-radius: 9px !important;
    color: #173b62 !important;
    font-weight: 700 !important;
}
.ui-datepicker .ui-datepicker-title { margin: 0 !important; line-height: 22px !important; text-align: center; }
.ui-datepicker .ui-datepicker-prev,
.ui-datepicker .ui-datepicker-next {
    top: 6px !important;
    width: 28px !important;
    height: 28px !important;
    border: 0 !important;
    border-radius: 7px !important;
    background: transparent !important;
    cursor: pointer;
}
.ui-datepicker .ui-datepicker-prev { left: 6px !important; }
.ui-datepicker .ui-datepicker-next { right: 6px !important; }
.ui-datepicker .ui-datepicker-prev:hover,
.ui-datepicker .ui-datepicker-next:hover { background: #e7f2fe !important; }
.ui-datepicker .ui-datepicker-prev span,
.ui-datepicker .ui-datepicker-next span { margin-top: -8px !important; }
.ui-datepicker table { width: 100% !important; margin: 8px 0 0 !important; border-collapse: separate !important; border-spacing: 3px !important; }
.ui-datepicker th {
    padding: 5px 2px !important;
    color: #8294a7 !important;
    background: transparent !important;
    border: 0 !important;
    font-size: 11px !important;
    font-weight: 700 !important;
    text-transform: uppercase;
}
.ui-datepicker td { padding: 0 !important; border: 0 !important; background: transparent !important; }
.ui-datepicker td span,
.ui-datepicker td a {
    display: flex !important;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    box-sizing: border-box;
    padding: 0 !important;
    margin: 0 auto;
    border: 0 !important;
    border-radius: 8px !important;
    background: transparent !important;
    color: #294762 !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    text-align: center !important;
    text-decoration: none !important;
}
.ui-datepicker td a:hover { background: #eaf4ff !important; color: #177ad8 !important; }
.ui-datepicker td .ui-state-highlight { background: #eef6ff !important; color: #137ce3 !important; font-weight: 700 !important; }
.ui-datepicker td .ui-state-active {
    background: #2f87e8 !important;
    color: #fff !important;
    font-weight: 700 !important;
    box-shadow: 0 5px 12px rgba(47,135,232,.24);
}
.ui-datepicker .ui-datepicker-buttonpane { margin: 8px 0 0 !important; padding: 8px 0 0 !important; border-top: 1px solid #edf2f7 !important; }
.ui-datepicker .ui-datepicker-buttonpane button {
    margin: 0 3px !important;
    padding: 6px 10px !important;
    background: #f1f6fb !important;
    border: 0 !important;
    border-radius: 7px !important;
    color: #2b577e !important;
    font-weight: 600 !important;
}

/* FullCalendar antiguo: se integra visualmente con la nueva plantilla. */
.pos-content-wrap .fc { color: #294762; }
.pos-content-wrap .fc-header { margin-bottom: 12px; }
.pos-content-wrap .fc-header-title h2 { color: #173456; font-size: 20px; font-weight: 700; }
.pos-content-wrap .fc-button {
    height: 32px !important;
    padding: 0 11px !important;
    background: #fff !important;
    border: 1px solid #d9e4ee !important;
    border-radius: 7px !important;
    box-shadow: none !important;
    color: #315778 !important;
    text-shadow: none !important;
}
.pos-content-wrap .fc-button.fc-state-active { background: #2f87e8 !important; border-color: #2f87e8 !important; color: #fff !important; }
.pos-content-wrap .fc-widget-header { padding: 8px 4px !important; background: #f5f8fc !important; border-color: #e2eaf2 !important; color: #355571 !important; }
.pos-content-wrap .fc-widget-content { border-color: #e7edf3 !important; }
.pos-content-wrap .fc-state-highlight { background: #eef7ff !important; }

/* ===== Modernizacion general de componentes Bootstrap 2 heredados ===== */
.pos-content-wrap .well,
.pos-content-wrap .hero-unit,
.pos-content-wrap .widget,
.pos-content-wrap .sortable-box,
.pos-content-wrap .accordion-group {
    background: #fff !important;
    border: 1px solid #e4edf5 !important;
    border-radius: 11px !important;
    box-shadow: 0 6px 20px rgba(20,55,91,.045) !important;
}
.pos-content-wrap .well { min-height: 0; padding: 16px !important; }
.pos-content-wrap .hero-unit { padding: 22px !important; }
.pos-content-wrap .form-actions {
    margin: 18px -18px -18px !important;
    padding: 14px 18px !important;
    background: #f8fafc !important;
    border-top: 1px solid #e6edf4 !important;
    border-radius: 0 0 10px 10px;
}
.pos-content-wrap .control-group { margin-bottom: 14px !important; }
.pos-content-wrap label,
.pos-content-wrap .control-label { color: #284965; font-weight: 600; }
.pos-content-wrap input[type="text"],
.pos-content-wrap input[type="password"],
.pos-content-wrap input[type="email"],
.pos-content-wrap input[type="number"],
.pos-content-wrap input[type="search"],
.pos-content-wrap input[type="tel"],
.pos-content-wrap input[type="date"],
.pos-content-wrap textarea,
.pos-content-wrap select {
    box-sizing: border-box;
    min-height: 38px;
    padding: 8px 10px !important;
    background: #fff !important;
    border: 1px solid #cfdae5 !important;
    border-radius: 7px !important;
    color: #26445f !important;
    box-shadow: none !important;
    outline: none !important;
}
.pos-content-wrap textarea { min-height: 92px; resize: vertical; }
.pos-content-wrap input:focus,
.pos-content-wrap textarea:focus,
.pos-content-wrap select:focus {
    border-color: #5da1e7 !important;
    box-shadow: 0 0 0 3px rgba(47,135,232,.11) !important;
}
.pos-content-wrap .input-prepend,
.pos-content-wrap .input-append { white-space: nowrap; }
.pos-content-wrap .input-prepend .add-on,
.pos-content-wrap .input-append .add-on {
    min-height: 38px;
    box-sizing: border-box;
    padding: 8px 10px;
    background: #f4f8fc !important;
    border-color: #cfdae5 !important;
    color: #54708a;
    text-shadow: none;
}
.pos-content-wrap .input-prepend .add-on:first-child { border-radius: 7px 0 0 7px; }
.pos-content-wrap .input-append .add-on:last-child { border-radius: 0 7px 7px 0; }

.pos-content-wrap .btn-group > .btn { border-radius: 0 !important; }
.pos-content-wrap .btn-group > .btn:first-child { border-radius: 7px 0 0 7px !important; }
.pos-content-wrap .btn-group > .btn:last-child,
.pos-content-wrap .btn-group > .dropdown-toggle { border-radius: 0 7px 7px 0 !important; }
.pos-content-wrap .dropdown-menu {
    padding: 6px !important;
    background: #fff !important;
    border: 1px solid #dfe7ef !important;
    border-radius: 9px !important;
    box-shadow: 0 12px 30px rgba(18,55,91,.14) !important;
}
.pos-content-wrap .dropdown-menu > li > a { padding: 8px 11px !important; border-radius: 6px; color: #355571 !important; }
.pos-content-wrap .dropdown-menu > li > a:hover { background: #eef6ff !important; color: #1676d2 !important; }

.pos-content-wrap .accordion-heading .accordion-toggle {
    padding: 12px 14px !important;
    color: #234766 !important;
    font-weight: 700;
    text-decoration: none;
}
.pos-content-wrap .accordion-inner { padding: 14px !important; border-top: 1px solid #e8eef4 !important; }
.pos-content-wrap hr { border: 0; border-top: 1px solid #e8eef4; }

/* Listados, bloques de notificaciones y elementos que conservaban look antiguo. */
.pos-content-wrap .notifications,
.pos-content-wrap .task,
.pos-content-wrap .message {
    border-color: #e5edf4 !important;
    background: #fff !important;
    box-shadow: none !important;
}
.pos-content-wrap .notifications li,
.pos-content-wrap .task,
.pos-content-wrap .message { border-radius: 8px !important; }
.pos-content-wrap .label,
.pos-content-wrap .badge { border-radius: 999px !important; text-shadow: none !important; }
.pos-content-wrap .progress {
    height: 9px !important;
    background: #e9f0f6 !important;
    border-radius: 99px !important;
    box-shadow: none !important;
    overflow: hidden;
}
.pos-content-wrap .progress .bar { border-radius: 99px; box-shadow: none !important; }

/* Ticket / reportes: moderniza contenedores sin imponer anchos que rompan calculos. */
.pos-content-wrap .ticket-table,
.pos-content-wrap table[class*="ticket"] {
    background: #fff;
    border-color: #e4ebf2 !important;
}
.pos-content-wrap .ticket-table td,
.pos-content-wrap .ticket-table th { border-color: #e8eef4 !important; }
.pos-content-wrap .ticket-table-total-cell,
.pos-content-wrap .total-cell { color: #143c67; font-weight: 700; }

/* ===== Login moderno ===== */
body.pos-public {
    position: relative;
    min-height: 100vh;
    background: #eef5fb !important;
    overflow-x: hidden;
}
body.pos-public:before,
body.pos-public:after {
    content: "";
    position: fixed;
    pointer-events: none;
    border-radius: 50%;
}
body.pos-public:before {
    width: 720px;
    height: 720px;
    left: -260px;
    top: -280px;
    background: radial-gradient(circle at 60% 60%,rgba(48,138,235,.24),rgba(17,61,104,.98) 62%,#0d3157 100%);
}
body.pos-public:after {
    width: 520px;
    height: 520px;
    right: -220px;
    bottom: -250px;
    background: rgba(55,145,235,.10);
}
body.pos-public .pos-app-shell-public {
    position: relative;
    z-index: 1;
    min-height: 100vh;
    padding: 34px 18px;
}
body.pos-public .pos-content-wrap { max-width: 455px !important; }
.pos-login-shell { width: 100%; }
.pos-login-card {
    width: 100%;
    box-sizing: border-box;
    padding: 34px 36px 25px;
    background: rgba(255,255,255,.98);
    border: 1px solid rgba(219,232,244,.92);
    border-radius: 18px;
    box-shadow: 0 24px 70px rgba(12,44,75,.18);
}
.pos-login-brand { display: flex; align-items: center; justify-content: center; gap: 12px; margin-bottom: 28px; }
.pos-login-logo {
    width: 58px;
    height: 58px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 58px;
    overflow: hidden;
    background: #fff;
    border: 1px solid #e0eaf3;
    border-radius: 50%;
    box-shadow: 0 6px 16px rgba(25,78,126,.11);
}
.pos-login-logo img { max-width: 52px; max-height: 52px; object-fit: contain; }
.pos-login-brand strong { display: block; color: #173a60; font-size: 24px; line-height: 1.05; font-weight: 750; }
.pos-login-brand small { display: block; margin-top: 4px; color: #8495a7; font-size: 12px; }
.pos-login-heading { margin-bottom: 22px; text-align: center; }
.pos-login-heading h1 { margin: 0 !important; color: #173456; font-size: 27px; line-height: 1.2; font-weight: 750; }
.pos-login-heading p { margin: 6px 0 0; color: #7b8da0; font-size: 13px; }
.pos-login-form { margin: 0; padding: 0; border: 0; }
.pos-login-form > label { display: block; margin: 0 0 6px; color: #2b4964; font-size: 12px; font-weight: 700; }
.pos-login-control { display: flex; align-items: stretch; width: 100%; margin-bottom: 15px; }
.pos-login-control > span {
    width: 44px;
    min-height: 44px;
    display: flex;
    align-items: center;
    justify-content: center;
    box-sizing: border-box;
    background: #f3f8fd;
    border: 1px solid #cfdae5;
    border-right: 0;
    border-radius: 8px 0 0 8px;
}
.pos-login-control > span i { margin: 0 !important; opacity: .7; }
.pos-login-control input,
.pos-login-control select {
    width: 100% !important;
    height: 44px !important;
    min-height: 44px !important;
    box-sizing: border-box;
    margin: 0 !important;
    padding: 9px 12px !important;
    background: #fff !important;
    border: 1px solid #cfdae5 !important;
    border-radius: 0 8px 8px 0 !important;
    color: #24425e !important;
    box-shadow: none !important;
    outline: 0 !important;
}
.pos-login-control input:focus,
.pos-login-control select:focus { border-color: #5c9fe5 !important; box-shadow: 0 0 0 3px rgba(48,135,230,.10) !important; }
.pos-login-submit {
    width: 100%;
    height: 45px;
    margin: 5px 0 0 !important;
    background: linear-gradient(135deg,#318bef,#2478d9) !important;
    border: 0 !important;
    border-radius: 8px !important;
    color: #fff !important;
    font-size: 14px !important;
    font-weight: 700 !important;
    text-shadow: none !important;
    box-shadow: 0 9px 20px rgba(39,126,220,.22) !important;
}
.pos-login-submit:hover { filter: brightness(.97); }
.pos-login-foot { margin-top: 20px; color: #94a3b2; font-size: 10px; text-align: center; }
body.pos-public .login-box { display: none !important; } /* evita que estilos heredados reaparezcan si queda markup viejo en cache */
body.pos-public .validation-summary-errors {
    margin: 0 0 16px;
    padding: 10px 12px;
    color: #a43c3c;
    background: #fff0f0;
    border: 1px solid #ffdada;
    border-radius: 8px;
    font-size: 12px;
}
body.pos-public .validation-summary-errors ul { margin: 0 0 0 17px; }

/* ===== Responsive: tipografia mas compacta y controles comodos ===== */
@media (max-width: 767px) {
    body.pos-authenticated { font-size: 12.5px !important; line-height: 1.4; }
    .pos-content-wrap { font-size: 12.5px; }
    .pos-content-wrap h1 { font-size: 23px !important; line-height: 1.2; }
    .pos-content-wrap h2 { font-size: 17px !important; line-height: 1.25; }
    .pos-content-wrap h3 { font-size: 15px !important; line-height: 1.25; }
    .pos-content-wrap h4 { font-size: 13px !important; line-height: 1.25; }
    .pos-content-wrap label,
    .pos-content-wrap .control-label { font-size: 11px !important; }
    .pos-content-wrap input[type="text"],
    .pos-content-wrap input[type="password"],
    .pos-content-wrap input[type="email"],
    .pos-content-wrap input[type="number"],
    .pos-content-wrap input[type="search"],
    .pos-content-wrap input[type="tel"],
    .pos-content-wrap input[type="date"],
    .pos-content-wrap textarea,
    .pos-content-wrap select { font-size: 12px !important; }
    .pos-content-wrap .btn { font-size: 11px !important; }
    .pos-content-wrap .table,
    .pos-content-wrap table.table { font-size: 11px !important; }
    .pos-content-wrap .table th,
    .pos-content-wrap .table td { padding: 7px !important; }
    .pos-card-title h2 { font-size: 15px !important; }
    .pos-card-title p { font-size: 10.5px !important; }
    .pos-summary-line { font-size: 11px !important; }
    .pos-mobile-bottom-nav a { font-size: 9px !important; }
    .pos-mobile-bottom-nav a i { font-size: 18px !important; }
    .ui-datepicker { width: 276px !important; max-width: calc(100vw - 22px) !important; }
    .ui-datepicker td span,
    .ui-datepicker td a { width: 32px; height: 32px; font-size: 11px !important; }
}

@media (max-width: 480px) {
    body.pos-authenticated { font-size: 12px !important; }
    .pos-content-wrap { padding-left: 9px; padding-right: 9px; }
    .pos-dashboard-title h1 { font-size: 22px !important; }
    .pos-dashboard-title p { font-size: 11px !important; }
    .pos-income-copy strong { font-size: 23px !important; }
    .pos-login-card { padding: 27px 20px 22px; border-radius: 14px; }
    .pos-login-brand { margin-bottom: 23px; }
    .pos-login-heading h1 { font-size: 24px; }
}


/* ==========================================================================
   MOBILE HEADER / PAGE HEADING FIX
   En escritorio el titulo vive en la cabecera. En movil vuelve al contenido.
   ========================================================================== */
.pos-mobile-page-heading {
    display: none;
}

@media (max-width: 767px) {
    /* La cabecera movil identifica al negocio; el titulo de pagina va en contenido. */
    .pos-mobile-brand {
        max-width: calc(100vw - 125px);
    }
    .pos-mobile-brand span strong {
        color: #fff !important;
        font-size: 14px !important;
        line-height: 16px !important;
    }
    .pos-mobile-brand span small {
        display: block !important;
        margin-top: 1px !important;
        color: #c4d6e8 !important;
        font-size: 9px !important;
        line-height: 11px !important;
    }

    .pos-mobile-page-heading {
        display: block;
        /*margin: 1px 2px 14px;*/
        margin: 0;
        padding: 0;
    }
    .pos-mobile-page-heading h1 {
        margin: 0 0 3px !important;
        color: #153556 !important;
        font-size: 19px !important;
        line-height: 23px !important;
        font-weight: 700 !important;
    }
    .pos-mobile-page-heading p {
        margin: 0 !important;
        color: #7d91a7 !important;
        font-size: 10px !important;
        line-height: 15px !important;
    }

    /* El dropdown debe quedar por encima del contenido y ser tocable. */
    .pos-user-menu,
    .pos-user-menu > li.dropdown {
        position: relative !important;
        overflow: visible !important;
    }
    .pos-user-menu .dropdown-menu {
        z-index: 1065 !important;
        min-width: 165px !important;
        margin-top: 7px !important;
    }
    .pos-user-menu .dropdown-menu > li > a {
        padding: 10px 12px !important;
        font-size: 11px !important;
        line-height: 16px !important;
    }
}


/* ==========================================================================
   MODERNIZATION PASS V4 - VISTAS INTERNAS
   Extiende la plantilla del Escritorio al resto del sistema.
   Solo presentacion: no cambia ids, names, rutas, eventos ni logica.
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. Restos de la plantilla antigua que ensucian los componentes nuevos
   -------------------------------------------------------------------------- */

/*
   custom.js envuelve cada <button class="btn"> en <div class="btn-overlay">.
   El estilo heredado dibuja bordes y sombras alrededor de cada boton.
   Se neutraliza el contenedor sin tocar el JS que lo genera.
*/
.pos-content-wrap .btn-overlay,
.modal .btn-overlay {
    display: inline-block;
    margin: 0 6px 6px 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
    filter: none !important;
    vertical-align: middle;
}
.modal-footer .btn-overlay { margin-bottom: 0 !important; }

/* Los botones heredados llevan margenes negativos en linea para "subirlos". */
.pos-content-wrap .box-content .btn[style*="margin-top"],
.pos-content-wrap form .btn[style*="margin-top"],
.pos-content-wrap .controls .btn[style*="margin-top"] { margin-top: 0 !important; }

/* Bootstrap 2 fuerza floats; el flex de las cabeceras nuevas los ignora. */
.pos-content-wrap .box-header:before,
.pos-content-wrap .box-header:after { content: none !important; display: none !important; }

/* Tipografia y espaciados base del area de contenido. */
.pos-content-wrap fieldset { margin: 0; padding: 0; border: 0; }
.pos-content-wrap legend { margin-bottom: 12px; color: #173456; font-size: 16px; font-weight: 700; border-bottom-color: #e7eef5; }
.pos-content-wrap p { margin: 0 0 10px; }
.pos-content-wrap a { color: #1c72cc; }
.pos-content-wrap a:hover { color: #14589f; }

/* --------------------------------------------------------------------------
   2. Barra de filtros que vive fuera de una caja (#Filtros, #forma)
   -------------------------------------------------------------------------- */

/*
   Site.Master agrega .pos-legacy-filter al primer <form> hijo de #content.
   Ahi viven los filtros de Inventario, Clientes, Punto de Venta y Usuarios.
*/

/*.pos-content-wrap .pos-legacy-filter {
    display: block;
    box-sizing: border-box;
    margin: 0 0 18px !important;
    padding: 14px 16px !important;
    background: #fff;
    border: 1px solid #e3ebf3;
    border-radius: 11px;
    box-shadow: 0 6px 22px rgba(20,55,91,.05);
}*/
.pos-content-wrap .pos-legacy-filter > .controls,
.pos-content-wrap .pos-legacy-filter .controls {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin: 0 !important;
}
.pos-content-wrap .pos-legacy-filter label { margin: 0 6px 0 0; }
.pos-content-wrap .pos-legacy-filter select,
.pos-content-wrap .pos-legacy-filter input[type="text"] { margin: 0 !important; }
.pos-content-wrap .pos-legacy-filter .btn { margin: 0 !important; }
.pos-content-wrap .pos-legacy-filter .btn-overlay { margin: 0 !important; }
.pos-content-wrap .pos-legacy-filter strong { color: #173456; }

/* Icono de exportar a Excel que acompania al filtro. */
.pos-content-wrap .pos-legacy-filter a#Excel {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    
    height: 38px;
    box-sizing: border-box;
    color: #1a7f4b !important;
    background: #e9f8f0;
    border: 1px solid #cdeddd;
    border-radius: 8px;
    text-decoration: none !important;
}
.pos-content-wrap .pos-legacy-filter a#Excel i { margin: 0 !important; zoom: 1 !important; font-size: 17px !important; }

/* --------------------------------------------------------------------------
   3. Cabeceras de caja: acciones y enlaces sueltos
   -------------------------------------------------------------------------- */

/*
   Inventario y Clientes colocan un enlace "Actualizar" como hermano del <h2>,
   fuera de .box-icon. Se le da el mismo aspecto que a las demas acciones.
*/
.pos-content-wrap .box-header > a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 34px;
    box-sizing: border-box;
    margin: 0 0 0 6px !important;
    padding: 7px 11px !important;
    color: #1f6fc3 !important;
    font-size: 12px;
    font-weight: 600;
    text-decoration: none !important;
    background: #eef6ff;
    border: 1px solid #d9eaff;
    border-radius: 7px;
    white-space: nowrap;
}
.pos-content-wrap .box-header > a:hover { background: #e1f0ff; }
.pos-content-wrap .box-header > a i { margin: 0 !important; }

/* Una cabecera vacia no debe reservar espacio muerto. */
.pos-content-wrap .box-header h2:empty { display: none !important; }
.pos-content-wrap .box-header .box-icon:empty { display: none !important; }

/* Separadores sueltos que quedaron entre acciones del encabezado. */
.pos-content-wrap .box-header .box-icon > i:empty { display: none !important; }

/* --------------------------------------------------------------------------
   4. Cuerpo de las cajas y desbordes
   -------------------------------------------------------------------------- */

/*
   Varias vistas traen overflow-x:scroll en linea, lo que deja una barra
   horizontal permanente incluso cuando no hace falta.
*/
.pos-content-wrap .box-content { overflow-x: auto !important; -webkit-overflow-scrolling: touch; }
.pos-content-wrap .box-content > form { margin-bottom: 0; }

/* Paneles de listado con altura fija (inventario, clientes). */
.pos-content-wrap #listainventario { border-radius: 0 0 11px 11px; }
.pos-content-wrap #listainventario::-webkit-scrollbar { width: 8px; height: 8px; }
.pos-content-wrap #listainventario::-webkit-scrollbar-thumb { background: #cfdbe7; border-radius: 8px; }

/* Bloques auxiliares que solo sirven para inyectar inputs ocultos. */
.pos-content-wrap #divExcel:empty,
.pos-content-wrap #divExcel2:empty { display: none !important; }

/* --------------------------------------------------------------------------
   5. Formularios de filtro dentro de cajas (Reportes, Movimientos, Tickets)
   -------------------------------------------------------------------------- */

.pos-content-wrap .box-content .control-group > label,
.pos-content-wrap .box-content .controls > label {
    display: block;
    margin: 0 0 6px;
    color: #2b4964;
    font-size: 12px;
    font-weight: 700;
}
.pos-content-wrap .box-content .control-group .control-group { margin-top: 14px !important; }
.pos-content-wrap .box-content .controls { margin: 0 0 14px; }
.pos-content-wrap .box-content .controls:last-child { margin-bottom: 0; }
.pos-content-wrap .input-xlarge,
.pos-content-wrap .input-large,
.pos-content-wrap .input-medium { max-width: 100%; }

/* Los datepickers heredados deben leerse como campos de fecha. */
.pos-content-wrap input.datepicker,
.pos-content-wrap #from,
.pos-content-wrap #to { cursor: pointer; background-image: none; }

/* Pie de acciones del formulario. */
.pos-content-wrap .form-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
}
.pos-content-wrap .form-actions .btn,
.pos-content-wrap .form-actions .btn-overlay { margin: 0 !important; }
.pos-content-wrap .row-fluid > .form-actions { margin-left: 0 !important; margin-right: 0 !important; border-radius: 10px; }

/* --------------------------------------------------------------------------
   6. Tablas y DataTables
   -------------------------------------------------------------------------- */

.pos-content-wrap table.table > tbody > tr > th {
    padding: 11px 10px !important;
    color: #234260;
    background: #f6f9fc !important;
    border-color: #e6edf4 !important;
    font-size: 12px;
    font-weight: 700;
    text-align: left;
    vertical-align: middle;
}
.pos-content-wrap .table td input[type="text"],
.pos-content-wrap .table td input[type="number"],
.pos-content-wrap .table td select {
    min-height: 32px;
    margin: 0 !important;
    padding: 5px 8px !important;
}
.pos-content-wrap .table tr.red td,
.pos-content-wrap .table td.red { color: #d9453f; }
.pos-content-wrap .table i.fa-icon-remove.red,
.pos-content-wrap .table i.fa-icon-ok-sign.green,
.pos-content-wrap .table i.fa-icon-warning-sign.red { font-size: 14px; }

/* Cabecera de controles que genera DataTables con el sDom heredado. */
.pos-content-wrap .dataTables_wrapper > .row-fluid { margin: 0 0 12px; }
.pos-content-wrap .dataTables_wrapper > .row-fluid:last-child { margin: 12px 0 0; }
.pos-content-wrap .dataTables_length select {
    display: inline-block;
    width: auto !important;
    min-height: 34px;
    margin: 0 6px 0 0 !important;
    padding: 5px 8px !important;
}
.pos-content-wrap .dataTables_filter label { display: flex; align-items: center; gap: 8px; justify-content: flex-end; margin: 0; }
.pos-content-wrap .dataTables_filter input { min-height: 34px; margin: 0 !important; }
.pos-content-wrap .dataTables_info { color: #6d8298; font-size: 12px; padding-top: 6px; }
.pos-content-wrap .dataTables_paginate .pagination { margin: 0; }
.pos-content-wrap .dataTables_paginate ul > li > a { padding: 6px 12px; }

/* --------------------------------------------------------------------------
   7. Panel de detalle heredado (.priority / .task)
   -------------------------------------------------------------------------- */

.pos-content-wrap .priority {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 10px;
    box-sizing: border-box;
    margin: 0 0 14px !important;
    padding: 11px 14px;
    background: #f4f9ff !important;
    border: 1px solid #dcebfb;
    border-radius: 9px;
    color: #1c4570;
    font-weight: 600;
}
.pos-content-wrap .priority > span { background: transparent !important; padding: 0 !important; color: #123d73 !important; font-size: 14px !important; }
.pos-content-wrap .priority > a {
    float: none !important;
    margin: 0 !important;
    padding: 0 12px !important;
    background: #1f9d5f;
    border-radius: 7px;
    color: #fff !important;
    font-size: 16px;
    font-weight: 700;
    text-decoration: none !important;
    white-space: nowrap;
}
.pos-content-wrap .priority > a:hover { background: #178a51; }
.pos-content-wrap .priority > a i { color: #fff !important; margin-left: 5px; }

.pos-content-wrap .task {
    box-sizing: border-box;
    margin: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
}
.pos-content-wrap .task.low,
.pos-content-wrap .task.high,
.pos-content-wrap .task.medium { border-left: 0 !important; }
.pos-content-wrap .task .title,
.pos-content-wrap .table span.title { color: #2b4964; font-size: 13px; font-weight: 600; }
.pos-content-wrap #detalles td { vertical-align: middle; }
.pos-content-wrap #detalles td input[type="text"],
.pos-content-wrap #detalles td input[type="number"],
.pos-content-wrap #detalles td select,
.pos-content-wrap #detalles td textarea { width: 100%; margin: 0 !important; }

/* --------------------------------------------------------------------------
   8. Accesos rapidos de la pagina de Reportes (.quick-button)
   -------------------------------------------------------------------------- */

.pos-content-wrap .quick-button {
    display: inline-flex !important;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 172px !important;
    min-height: 122px;
    box-sizing: border-box;
    float: none !important;
    margin: 0 12px 12px 0 !important;
    padding: 20px 12px !important;
    background: #fff !important;
    background-image: none !important;
    border: 1px solid #e2ebf4 !important;
    border-radius: 12px !important;
    box-shadow: 0 5px 18px rgba(20,55,91,.05) !important;
    color: #22456a !important;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
    text-shadow: none !important;
    text-decoration: none !important;
    vertical-align: top;
}
.pos-content-wrap .quick-button:hover {
    border-color: #bcdcfb !important;
    box-shadow: 0 10px 26px rgba(20,55,91,.11) !important;
    color: #1268c0 !important;
}
.pos-content-wrap .quick-button i {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 50px;
    height: 50px;
    flex: 0 0 50px;
    border-radius: 50%;
    background: #eaf4ff;
    color: #1682ef !important;
    font-size: 22px !important;
}
.pos-content-wrap .quick-button p { margin: 0 !important; line-height: 1.3; }

/* La rejilla vieja usaba <table class="table"> vacias como salto de linea. */
.pos-content-wrap .box-content table.table:empty { display: none !important; }

/* --------------------------------------------------------------------------
   9. Widgets y graficas heredadas (Corte de caja, Ventas por categorias)
   -------------------------------------------------------------------------- */

.pos-content-wrap .widget {
    box-sizing: border-box;
    margin-bottom: 20px !important;
    padding: 18px !important;
    overflow: hidden;
}
.pos-content-wrap .widget h2,
.pos-content-wrap .widget h3 { margin: 0 0 14px; color: #173456; font-size: 17px; font-weight: 700; }
.pos-content-wrap .verticalChart {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 12px;
    box-sizing: border-box;
    min-height: 0;
    padding: 10px 0 0;
    background: transparent;
    overflow-x: auto;
}
.pos-content-wrap .verticalChart .singleBar {
    float: none !important;
    width: auto !important;
    min-width: 78px;
    flex: 1 1 78px;
    margin: 0 !important;
    text-align: center;
    color: #4a637d;
}
.pos-content-wrap .verticalChart .singleBar i { display: block; margin-bottom: 6px; color: #2a4c6c; font-style: normal; font-size: 12px !important; font-weight: 600; }
.pos-content-wrap .verticalChart .bar {
    background: linear-gradient(180deg,#3f97ef,#1f74d4) !important;
    border: 0 !important;
    border-radius: 7px 7px 0 0 !important;
    box-shadow: none !important;
}
.pos-content-wrap .verticalChart .title { margin-top: 8px; color: #5c728b; font-size: 11px; font-weight: 600; }
.pos-content-wrap .verticalChart .value { color: #123d73; font-weight: 700; }

/* --------------------------------------------------------------------------
   10. Generacion de token
   -------------------------------------------------------------------------- */

.pos-content-wrap .token-user {
    display: block;
    box-sizing: border-box;
    width: 100% !important;
    max-width: 520px;
    margin: 26px auto !important;
    padding: 26px 18px !important;
    background: linear-gradient(135deg,#eaf4ff,#dceeff);
    border: 1px solid #cfe4fa;
    border-radius: 14px;
    color: #0e3266;
    font-size: 44px !important;
    font-weight: 700;
    letter-spacing: 8px !important;
    line-height: 1.15;
    text-align: center;
    word-break: break-all;
}
.pos-content-wrap #btnToken { margin-top: 0 !important; }
.pos-content-wrap #DataTableD { width: 100% !important; overflow-x: auto; }
.pos-content-wrap #userIdToken { float: none !important; margin-bottom: 12px !important; }

/* --------------------------------------------------------------------------
   11. Punto de venta

   La vista trae su propia presentacion en un bloque <style> propio: la
   rejilla de dos zonas, el campo del escaner, la tabla de la venta y el
   panel del ticket. Aqui solo queda lo que no depende de ese maquetado.
   -------------------------------------------------------------------------- */

.pos-content-wrap #TablaVenta th,
.pos-content-wrap #TablaVenta td { vertical-align: middle; }

/* --------------------------------------------------------------------------
   12. Modales heredados
   -------------------------------------------------------------------------- */

.modal-body { overflow-y: auto; }
.modal fieldset { margin: 0; padding: 0; border: 0; }
.modal label { color: #2b4964; font-weight: 600; }
.modal input[type="text"],
.modal input[type="password"],
.modal input[type="number"],
.modal input[type="email"],
.modal textarea,
.modal select {
    box-sizing: border-box;
    min-height: 38px;
    padding: 8px 10px !important;
    background: #fff;
    border: 1px solid #cfdae5 !important;
    border-radius: 7px !important;
    color: #26445f;
    box-shadow: none !important;
    outline: none;
}
.modal input:focus,
.modal textarea:focus,
.modal select:focus { border-color: #5da1e7 !important; box-shadow: 0 0 0 3px rgba(47,135,232,.11) !important; }
.modal textarea { min-height: 90px; resize: vertical; }
.modal .table { margin-bottom: 0; }
.modal .table th { padding: 9px 8px !important; background: #f6f9fc !important; border-color: #e6edf4 !important; color: #234260; font-size: 12px; font-weight: 700; }
.modal .table td { padding: 8px !important; border-color: #edf2f6 !important; vertical-align: middle; }
.modal .close {
    opacity: .55;
    color: #173456;
    font-size: 22px;
    line-height: 20px;
    text-shadow: none;
}
.modal .close:hover { opacity: 1; }
.modal .input-prepend .add-on,
.modal .input-append .add-on {
    min-height: 38px;
    box-sizing: border-box;
    padding: 8px 11px;
    background: #f4f8fc;
    border: 1px solid #cfdae5;
    color: #54708a;
    text-shadow: none;
}
.modal .input-prepend .add-on:first-child { border-radius: 7px 0 0 7px; border-right: 0; }
.modal .input-append .add-on:last-child { border-radius: 0 7px 7px 0; border-left: 0; }
.modal .input-prepend input,
.modal .input-append input { border-radius: 0 !important; }
.modal .chzn-container { max-width: 100%; }
.modal .chzn-drop { z-index: 1060; }
.modal .chzn-container-single .chzn-single { height: 36px; line-height: 36px; border-color: #cdd9e5; border-radius: 7px; background: #fff; box-shadow: none; }

/*
   Algunos modales traen width y margin-left en linea calculados para 800px.
   En pantallas medianas se recalculan para que no se salgan del viewport.
*/
@media (max-width: 979px) {
    .modal[style*="width"] {
        left: 3% !important;
        width: 94% !important;
        margin-left: 0 !important;
    }
}

/* --------------------------------------------------------------------------
   13. Menus desplegables de la barra superior (submenus por vista)
   -------------------------------------------------------------------------- */

.pos-submenu > li > a.btn { min-height: 40px; display: inline-flex !important; align-items: center; padding: 8px 12px !important; color: #17395f !important; }
.pos-submenu > li > a.btn:hover { background: #338df0 !important; }
.pos-submenu .dropdown-menu {
    right: 0;
    left: auto;
    min-width: 220px;
    margin-top: 8px;
    padding: 6px !important;
    background: #fff !important;
    border: 1px solid #e1eaf2 !important;
    border-radius: 10px !important;
    box-shadow: 0 14px 34px rgba(14,45,79,.15) !important;
}
.pos-submenu .dropdown-menu.notifications { width: auto; }
.pos-submenu .dropdown-menu .dropdown-menu-title {
    display: block;
    margin: 0 0 4px;
    padding: 8px 11px;
    background: #f5f9fd;
    border: 0;
    border-radius: 7px;
    color: #5a7390;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .5px;
    text-shadow: none;
}
.pos-submenu .dropdown-menu > li > a {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 9px 11px !important;
    border-radius: 7px;
    color: #355571 !important;
    font-size: 13px;
    white-space: normal;
}
.pos-submenu .dropdown-menu > li > a:hover { background: #eef6ff !important; color: #1268c0 !important; }
.pos-submenu .dropdown-menu > li > a i { width: 18px; text-align: center; }
.pos-submenu .dropdown-menu .message { font-size: 13px; }

/* --------------------------------------------------------------------------
   14. Alertas, etiquetas y estados
   -------------------------------------------------------------------------- */

.pos-content-wrap .alert {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px 14px;
    color: #2b4964;
    background: #eef6ff;
    font-size: 13px;
}
.pos-content-wrap .alert .close { margin-left: auto; opacity: .5; color: inherit; font-size: 19px; line-height: 18px; text-shadow: none; }
.pos-content-wrap .alert-success { background: #e6f8ee; color: #16724a; }
.pos-content-wrap .alert-error, .pos-content-wrap .alert-danger { background: #fdecec; color: #a5342f; }
.pos-content-wrap .alert-info { background: #e9f3fe; color: #1b5c9c; }
.pos-content-wrap .alert-block { background: #fff6e5; color: #8a5b12; }
.pos-content-wrap .alert.novisible { display: none !important; }

.pos-content-wrap .green { color: #17945a; }
.pos-content-wrap .red { color: #d9453f; }
.pos-content-wrap .yellow { color: #c98a12; }
.pos-content-wrap .blue { color: #1c72cc; }

/* --------------------------------------------------------------------------
   15. Responsive de las vistas internas
   -------------------------------------------------------------------------- */

/* Portatiles pequenos y tablets: los paneles maestro/detalle dejan de competir. */
@media (max-width: 979px) {
    .pos-content-wrap .row-fluid > .span7,
    .pos-content-wrap .row-fluid > .span8,
    .pos-content-wrap .row-fluid > .span5,
    .pos-content-wrap .row-fluid > .span10,
    .pos-content-wrap .row-fluid > .widget {
        float: none !important;
        width: 100% !important;
        margin-left: 0 !important;
    }
    .pos-content-wrap #listainventario { height: auto !important; max-height: 70vh; }
    .pos-content-wrap .quick-button { width: 154px !important; min-height: 112px; }
    .pos-content-wrap .token-user { font-size: 36px !important; letter-spacing: 6px !important; }
}

/* Telefonos. */
@media (max-width: 767px) {
    /* Barra de filtros suelta: los controles pasan a ocupar todo el ancho. */
    .pos-content-wrap .pos-legacy-filter { padding: 12px 0 !important; margin-bottom: 13px !important; }
    .pos-content-wrap .pos-legacy-filter > .controls,
    .pos-content-wrap .pos-legacy-filter .controls { flex-direction: column; align-items: stretch; gap: 9px; }
    .pos-content-wrap .pos-legacy-filter select,
    .pos-content-wrap .pos-legacy-filter input[type="text"],
    .pos-content-wrap .pos-legacy-filter .btn { width: 100% !important; }
    .pos-content-wrap .pos-legacy-filter .btn-overlay { display: block; width: 100%; }
    .pos-content-wrap .pos-legacy-filter a#Excel { align-self: flex-start; }

    /* Acciones de la cabecera de caja. */
    .pos-content-wrap .box-header > a { margin: 6px 0 0 !important; padding: 6px 9px !important; font-size: 11px; }

    /* Paneles con altura fija heredada. */
    .pos-content-wrap #listainventario { height: auto !important; max-height: 62vh; }

    /* Panel de detalle. */
    .pos-content-wrap .priority { flex-direction: column; align-items: stretch; }
    .pos-content-wrap .priority > a { text-align: center; }

    /* Botones: nunca microscopicos, siempre en varias lineas. */
    .pos-content-wrap .form-actions { padding: 12px !important; margin: 16px -12px -12px !important; }
    .pos-content-wrap .btn-overlay { margin: 0 6px 6px 0 !important; }
    .pos-content-wrap .box-content .btn { min-height: 36px; }

    /* DataTables. */
    .pos-content-wrap .dataTables_filter label { justify-content: flex-start; }
    .pos-content-wrap .dataTables_filter input { width: 100% !important; }
    .pos-content-wrap .dataTables_length,
    .pos-content-wrap .dataTables_filter { float: none !important; width: 100% !important; }
    .pos-content-wrap .dataTables_wrapper > .row-fluid > [class*="span"] { width: 100% !important; margin-left: 0 !important; }
    .pos-content-wrap .dataTables_paginate { float: none !important; text-align: center; }

    /* Accesos rapidos de reportes: dos por linea. */
    .pos-content-wrap .quick-button {
        width: calc(50% - 6px) !important;
        min-height: 104px;
        margin: 0 6px 10px 0 !important;
        padding: 15px 8px !important;
        font-size: 11.5px;
    }
    .pos-content-wrap .quick-button i { width: 40px; height: 40px; flex-basis: 40px; font-size: 18px !important; }

    /* Token. */
    .pos-content-wrap .token-user {
        margin: 16px auto !important;
        padding: 18px 12px !important;
        font-size: 27px !important;
        letter-spacing: 4px !important;
    }


    /* Graficas heredadas. */
    .pos-content-wrap .verticalChart { gap: 8px; }
    .pos-content-wrap .verticalChart .singleBar { min-width: 62px; flex-basis: 62px; }

    /* Fichas de usuario: la vista traia margenes en linea. */
    .pos-content-wrap .thumbnails > li { margin-left: 0 !important; }
    .pos-content-wrap .user-group { border-bottom: 0 !important; }

    /*
       Los submenus por vista (filtros de Usuarios, atajos de Reportes y
       Configuracion) volvian invisibles en telefono. Se muestran como un
       boton compacto dentro de la cabecera.
    */
    .pos-submenu { display: flex !important; margin: 0 !important; }
    .pos-submenu > li { list-style: none; }
    .pos-submenu > li > a.btn {
        min-height: 34px;
        padding: 5px 7px !important;
        color: #fff !important;
        background: transparent !important;
        border: 0 !important;
        box-shadow: none !important;
    }
    .pos-submenu > li > a.btn:hover { background: rgba(255,255,255,.12) !important; }
    .pos-submenu > li.dropdown { position: relative !important; }
    .pos-submenu .dropdown-menu {
        position: absolute;
        right: 0;
        left: auto;
        z-index: 1065 !important;
        max-width: calc(100vw - 26px);
        max-height: 66vh;
        overflow-y: auto;
    }
    .pos-mobile-brand { max-width: calc(100vw - 168px); }
}

/* Telefonos pequenos. */
@media (max-width: 420px) {
    .pos-content-wrap .quick-button { width: 100% !important; margin-right: 0 !important; }
    .pos-content-wrap .token-user { font-size: 22px !important; letter-spacing: 3px !important; }
    .pos-content-wrap .box-header > a { justify-content: center; }
}

/* --------------------------------------------------------------------------
   16. Impresion: el sistema imprime en ventanas nuevas, pero si alguien usa
       Ctrl+P sobre una vista, el chrome de la aplicacion no debe estorbar.
   -------------------------------------------------------------------------- */
@media print {
    #sidebar-left.pos-sidebar,
    .pos-topbar,
    .pos-mobile-bottom-nav,
    .pos-sidebar-backdrop,
    .pos-footer,
    .pos-content-wrap .box-icon,
    .pos-content-wrap .pos-legacy-filter { display: none !important; }
    .pos-app-shell { margin-left: 0 !important; padding-top: 0 !important; }
    .pos-content-wrap { padding: 0 !important; }
    .pos-content-wrap .box { border: 0 !important; box-shadow: none !important; }
    .pos-content-wrap .box-content { overflow: visible !important; }
}

/* --------------------------------------------------------------------------
   17. Ajustes finos detectados en la revision vista por vista
   -------------------------------------------------------------------------- */

/*
   Site.Master marca con .pos-blank los titulos y columnas que las vistas
   heredadas dejaron sin contenido. Solo es presentacion.
*/
.pos-content-wrap .pos-blank,
.pos-content-wrap .box-header h2.pos-blank,
.pos-content-wrap .box-content .control-group.pos-blank { display: none !important; }

/* Las alertas vuelven a ser bloque para que la X quede a la derecha del texto. */
.pos-content-wrap .alert { display: block; }
.pos-content-wrap .alert .close { float: right; margin: 0 0 0 10px; }

/* Paginacion generada por DataTables (custom.js, paginacion "bootstrap"). */
.pos-content-wrap .dataTables_paginate.pagination { display: block; height: auto; }
.pos-content-wrap .pagination ul {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 5px;
    margin: 0;
    border: 0 !important;
    border-radius: 0 !important;
    box-shadow: none !important;
}
.pos-content-wrap .pagination ul > li { float: none !important; display: inline-block; }
.pos-content-wrap .pagination ul > li > a,
.pos-content-wrap .pagination ul > li > span {
    float: none !important;
    display: inline-block;
    box-sizing: border-box;
    min-width: 34px;
    padding: 7px 11px !important;
    background: #fff !important;
    border: 1px solid #dce5ee !important;
    border-radius: 7px !important;
    color: #3c5d7d !important;
    line-height: 18px;
    text-align: center;
    text-decoration: none !important;
}
.pos-content-wrap .pagination ul > li > a:hover { background: #eef6ff !important; border-color: #c6dffa !important; }
.pos-content-wrap .pagination ul > .active > a,
.pos-content-wrap .pagination ul > .active > span {
    background: #2e82e6 !important;
    border-color: #2e82e6 !important;
    color: #fff !important;
}
.pos-content-wrap .pagination ul > .disabled > a,
.pos-content-wrap .pagination ul > .disabled > span {
    background: #f7f9fb !important;
    border-color: #e6ecf3 !important;
    color: #a9b8c7 !important;
    cursor: default;
}

/*
   En pantallas medianas el bloque de acciones de la cabecera solo baja de
   linea cuando realmente lo necesita, en lugar de reservar siempre una fila.
*/
@media (max-width: 1128px) {
    .pos-content-wrap .box-header .box-icon {
        width: auto !important;
        max-width: 100%;
        margin: 0 0 0 auto !important;
        justify-content: flex-end;
    }
}

/* Campos de filtro comodos en telefono. */
@media (max-width: 767px) {
    .pos-content-wrap .box-content .control-group > input[type="text"],
    .pos-content-wrap .box-content .control-group > input[type="number"],
    .pos-content-wrap .box-content .control-group > input[type="password"],
    .pos-content-wrap .box-content .control-group > input[type="email"],
    .pos-content-wrap .box-content .control-group > select,
    .pos-content-wrap .box-content .control-group > textarea,
    .pos-content-wrap .box-content .controls > input[type="text"],
    .pos-content-wrap .box-content .controls > input[type="number"],
    .pos-content-wrap .box-content .controls > select,
    .pos-content-wrap .box-content .controls > textarea { width: 100% !important; }
}

/* --------------------------------------------------------------------------
   18. Vistas de Usuarios
   -------------------------------------------------------------------------- */

/*
   Las vistas de Usuarios traen un <style> propio con
   .row-fluid [class*="span"]:first-child { margin-left: 10px }
   que descuadra la primera columna de cada fila. Se restablece el
   comportamiento normal de la rejilla sin tocar esa vista.
*/
.pos-content-wrap .row-fluid > [class*="span"]:first-child { margin-left: 0 !important; }

/* Agrupador por tipo de usuario. */
.pos-content-wrap .user-group { border-bottom: 1px solid #eaf0f6 !important; padding-bottom: 6px; }
.pos-content-wrap .user-group:last-child { border-bottom: 0 !important; }
.pos-content-wrap .caption p { margin: 0 0 8px; color: #5c748d; }
.pos-content-wrap .caption .btn { margin: 0; }

/*
   Editar usuario: la ficha de la foto es un .box.span2 suelto, fuera de
   cualquier .row-fluid, por lo que flotaba encima del formulario.
   Se coloca como bloque propio y el formulario recupera todo el ancho.
*/
.pos-content-wrap #content > .box.span2 {
    float: none !important;
    width: 100% !important;
    max-width: 260px;
    margin: 0 0 18px !important;
    padding: 14px !important;
}
.pos-content-wrap #content > .box.span2 .thumbnail {
    width: auto !important;
    height: auto !important;
    float: none !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    box-shadow: none !important;
}
.pos-content-wrap #content > .box.span2 .thumbnail > img {
    display: block;
    width: 100%;
    height: auto;
    margin: 0 0 12px;
    border-radius: 9px;
    object-fit: cover;
}
.pos-content-wrap #content > .box.span2 .caption { min-height: 0; padding: 0 !important; }
.pos-content-wrap #content > .box.span2 input[type="file"] { width: 100%; margin-bottom: 8px; }
.pos-content-wrap #content > .box.span2 .btn { width: 100%; margin: 0; }
.pos-content-wrap #content > .box.span2 br { display: none; }
.pos-content-wrap #content > .box.span2 + .row-fluid { clear: both; }

@media (max-width: 767px) {
    .pos-content-wrap #content > .box.span2 { max-width: 100%; }
}

/* ==========================================================================
   MODERNIZATION PASS V5 - CONFLICTOS CON style.css Y SUS @import
   --------------------------------------------------------------------------
   style.css importa en su cabecera 16 hojas heredadas (chosen.css,
   uniform.default.css, jquery-ui, fullcalendar, elfinder, uploadify...).
   Ademas define reglas con !important para alertas, botones y menus.

   Esas hojas visten los widgets que jquery crea DESPUES de cargar la pagina
   (uniform sobre casillas, radios y archivos; chosen sobre los selects), por
   eso la vista se veia moderna al cargar y volvia al aspecto de 2013 al
   terminar el JavaScript.

   Aqui se reescribe la presentacion de esos widgets y se recuperan las
   reglas que style.css estaba ganando. No se toca ningun script: uniform y
   chosen siguen generando el mismo marcado y conservando su comportamiento.
   ========================================================================== */

/* --------------------------------------------------------------------------
   19. Reglas de style.css que ganaban por !important o especificidad
   -------------------------------------------------------------------------- */

/* Alertas: style.css las fuerza en verde oliva, rojo ladrillo y amarillo. */
.pos-content-wrap .alert,
.pos-content-wrap .alert.alert-success,
.pos-content-wrap .alert.alert-error,
.pos-content-wrap .alert.alert-danger,
.pos-content-wrap .alert.alert-info,
.pos-content-wrap .alert.alert-block {
    box-sizing: border-box;
    padding: 12px 14px !important;
    border: 0 !important;
    border-radius: 8px !important;
    font-family: inherit !important;
    font-size: 13px !important;
    line-height: 1.45 !important;
    box-shadow: none !important;
    text-shadow: none !important;
}
.pos-content-wrap .alert { background-color: #fff6e5 !important; color: #8a5b12 !important; }
.pos-content-wrap .alert.alert-success { background-color: #e6f8ee !important; color: #16724a !important; }
.pos-content-wrap .alert.alert-error,
.pos-content-wrap .alert.alert-danger { background-color: #fdecec !important; color: #a5342f !important; }
.pos-content-wrap .alert.alert-info { background-color: #e9f3fe !important; color: #1b5c9c !important; }
.pos-content-wrap .alert.alert-block { background-color: #fff6e5 !important; color: #8a5b12 !important; }

/* Menus desplegables: style.css los deja negros y al 80% de opacidad. */
.dropdown-menu {
    opacity: 1 !important;
    filter: none !important;
    max-width: none;
}
.pos-topbar .dropdown-menu,
.pos-content-wrap .dropdown-menu {
    background-color: #fff !important;
    border: 1px solid #e1eaf2 !important;
    border-radius: 10px !important;
    padding: 6px !important;
}
.pos-topbar .dropdown-menu > li > a,
.pos-content-wrap .dropdown-menu > li > a {
    padding: 9px 11px !important;
    border-radius: 7px !important;
    background-image: none !important;
    color: #355571 !important;
    text-shadow: none !important;
}
.pos-topbar .dropdown-menu > li > a:hover,
.pos-topbar .dropdown-menu > li > a:focus,
.pos-content-wrap .dropdown-menu > li > a:hover,
.pos-content-wrap .dropdown-menu > li > a:focus {
    background-color: #eef6ff !important;
    background-image: none !important;
    color: #1268c0 !important;
}
.pos-topbar .dropdown-menu .divider,
.pos-content-wrap .dropdown-menu .divider { background-color: #eaf0f6 !important; border-bottom-color: #fff !important; }

/*
   Botones: style.css declara .btn { border: none; color: #222 !important }.
   Se restablece el borde y el color de la plantilla nueva.
*/
.pos-content-wrap .btn,
.modal .btn {
    border-width: 1px !important;
    border-style: solid !important;
    border-color: #d5dee8 !important;
}
.pos-content-wrap .btn { color: #34506d !important; background-color: #fff !important; }
.pos-content-wrap .btn:hover { background-color: #f4f7fa !important; }
.pos-content-wrap .btn-primary,
.pos-content-wrap .btn-info,
.modal .btn-primary,
.modal .btn-info {
    border-color: #2e82e6 !important;
    background-color: #2e82e6 !important;
    color: #fff !important;
}
.pos-content-wrap .btn-primary:hover,
.pos-content-wrap .btn-info:hover,
.modal .btn-primary:hover,
.modal .btn-info:hover { background-color: #2275d3 !important; }
.pos-content-wrap .btn-success,
.modal .btn-success { border-color: #20a565 !important; background-color: #20a565 !important; color: #fff !important; }
.pos-content-wrap .btn-danger,
.modal .btn-danger { border-color: #e24d4d !important; background-color: #e24d4d !important; color: #fff !important; }
.modal .btn { color: #34506d !important; /*background-color: #fff !important;*/ }
.modal .btn-primary, .modal .btn-info, .modal .btn-success, .modal .btn-danger { color: #fff !important; }

/* El cuerpo de la caja dibujaba una segunda linea bajo la cabecera. */
.pos-content-wrap .box-content {
    border-top: 0 !important;
    margin-top: 0 !important;
    border-radius: 0 0 11px 11px !important;
}
.pos-content-wrap .box-header { line-height: 1.25 !important; border-radius: 11px 11px 0 0 !important; }

/*
   La caja recortaba su contenido para redondear las esquinas, lo que cortaba
   cualquier desplegable que se abriera cerca del borde inferior. El redondeo
   pasa a la cabecera y al cuerpo, y la caja deja de recortar.
*/
.pos-content-wrap .box { overflow: visible !important; }

/* Etiquetas de estado y accesos rapidos. */
.pos-content-wrap .label { border-color: transparent !important; }
.pos-content-wrap .quick-button i { line-height: 1 !important; vertical-align: middle !important; }

/* --------------------------------------------------------------------------
   20. Uniform: casillas, radios y campo de archivo
   --------------------------------------------------------------------------
   Marcado que genera el plugin y que NO se modifica:
     <div class="checker"><span [class=checked]><input type="checkbox"></span></div>
     <div class="radio"><span [class=checked]><input type="radio"></span></div>
     <div class="uploader"><input type="file"><span class="filename"></span>
                           <span class="action"></span></div>
   El input real conserva su opacidad cero en linea y sigue recibiendo el
   clic, por lo que el comportamiento y el envio del formulario no cambian.
   -------------------------------------------------------------------------- */

.pos-content-wrap div.checker,
.pos-content-wrap div.radio,
.modal div.checker,
.modal div.radio {
    position: relative !important;
    display: inline-block !important;
    width: 18px !important;
    height: 18px !important;
    margin: 0 7px 0 0 !important;
    padding: 0 !important;
    background: none !important;
    background-image: none !important;
    vertical-align: -3px !important;
}

.pos-content-wrap div.checker span,
.pos-content-wrap div.radio span,
.modal div.checker span,
.modal div.radio span {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    display: block !important;
    width: 18px !important;
    height: 18px !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 !important;
    background: #fff !important;
    background-image: none !important;
    background-position: 0 0 !important;
    border: 1px solid #c4d2e0 !important;
    box-shadow: none !important;
    transition: background .14s ease, border-color .14s ease;
}
.pos-content-wrap div.checker span,
.modal div.checker span { border-radius: 5px !important; }
.pos-content-wrap div.radio span,
.modal div.radio span { border-radius: 50% !important; }

/* El input real cubre el widget para que el clic siga llegandole. */
.pos-content-wrap div.checker input,
.pos-content-wrap div.radio input,
.modal div.checker input,
.modal div.radio input {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 18px !important;
    height: 18px !important;
    margin: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    cursor: pointer;
    z-index: 2;
}

/* Estado marcado: palomita dibujada con CSS, sin sprite. */
.pos-content-wrap div.checker span.checked,
.modal div.checker span.checked { background: #2e82e6 !important; border-color: #2e82e6 !important; }
.pos-content-wrap div.checker span.checked:after,
.modal div.checker span.checked:after {
    content: "";
    position: absolute;
    left: 5px;
    top: 1px;
    width: 5px;
    height: 10px;
    border: solid #fff;
    border-width: 0 2px 2px 0;
    transform: rotate(43deg);
}
.pos-content-wrap div.radio span.checked,
.modal div.radio span.checked { background: #fff !important; border-color: #2e82e6 !important; }
.pos-content-wrap div.radio span.checked:after,
.modal div.radio span.checked:after {
    content: "";
    position: absolute;
    left: 4px;
    top: 4px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: #2e82e6;
}

/* Foco y desactivado. */
.pos-content-wrap div.checker.focus span,
.pos-content-wrap div.radio.focus span,
.pos-content-wrap div.checker:hover span,
.pos-content-wrap div.radio:hover span,
.modal div.checker.focus span,
.modal div.radio.focus span { border-color: #5da1e7 !important; }
.pos-content-wrap div.checker.disabled span,
.pos-content-wrap div.radio.disabled span,
.modal div.checker.disabled span,
.modal div.radio.disabled span { background: #f2f5f8 !important; border-color: #dde5ee !important; }

/* La etiqueta que envuelve la casilla recupera una linea comoda. */
.pos-content-wrap label.checkbox,
.pos-content-wrap label.radio,
.modal label.checkbox,
.modal label.radio {
    display: flex;
    align-items: center;
    min-height: 26px;
    margin: 0 0 6px;
    padding-left: 0 !important;
    color: #2b4964;
    font-weight: 500;
    cursor: pointer;
}

/*
   Algunas vistas colocan la etiqueta como hermana del control
   (<input type="radio" id="x"><label for="x">). Se mantienen en la misma
   linea ahora que uniform inserta un contenedor en medio.
*/
.pos-content-wrap div.checker + label,
.pos-content-wrap div.radio + label,
.modal div.checker + label,
.modal div.radio + label {
    display: inline-block !important;
    width: auto !important;
    margin: 0 16px 0 0 !important;
    color: #2b4964;
    font-weight: 500;
    vertical-align: middle;
    cursor: pointer;
}

/* Campo de archivo. */
.pos-content-wrap div.uploader,
.modal div.uploader {
    position: relative !important;
    display: flex !important;
    align-items: stretch;
    width: 100% !important;
    max-width: 340px;
    height: 38px !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 !important;
    overflow: hidden !important;
    background: #fff !important;
    background-image: none !important;
    border: 1px solid #cfdae5 !important;
    border-radius: 7px !important;
    vertical-align: middle !important;
}
.pos-content-wrap div.uploader input[type="file"],
.modal div.uploader input[type="file"] {
    position: absolute !important;
    top: 0 !important;
    left: 0 !important;
    width: 100% !important;
    height: 100% !important;
    margin: 0 !important;
    padding: 0 !important;
    cursor: pointer;
    z-index: 2;
}
.pos-content-wrap div.uploader span.filename,
.modal div.uploader span.filename {
    display: block !important;
    flex: 1 1 auto;
    width: auto !important;
    height: auto !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 11px !important;
    border: 0 !important;
    background: transparent !important;
    color: #5c748d !important;
    font-size: 12px !important;
    line-height: 36px !important;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    float: none !important;
}
.pos-content-wrap div.uploader span.action,
.modal div.uploader span.action {
    display: block !important;
    flex: 0 0 auto;
    width: auto !important;
    height: auto !important;
    box-sizing: border-box !important;
    margin: 0 !important;
    padding: 0 14px !important;
    background: #eef4fa !important;
    background-image: none !important;
    border: 0 !important;
    border-left: 1px solid #dfe8f1 !important;
    color: #2b577e !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    line-height: 36px !important;
    text-shadow: none !important;
    text-align: center;
    float: none !important;
}
.pos-content-wrap div.uploader:hover,
.modal div.uploader:hover { border-color: #b9d3ef !important; }
.pos-content-wrap div.uploader:hover span.action,
.modal div.uploader:hover span.action { background: #e2eefb !important; }
.pos-content-wrap div.uploader.disabled,
.modal div.uploader.disabled { background: #f5f8fb !important; }

/* --------------------------------------------------------------------------
   21. Chosen: selects con buscador (Clientes y Punto de Venta)
   --------------------------------------------------------------------------
   chosen coloca el desplegable con estilos en linea (left, top, width).
   Aqui solo se cambia la apariencia; ninguna regla toca esas propiedades.
   -------------------------------------------------------------------------- */

.pos-content-wrap .chzn-container,
.modal .chzn-container { max-width: 100%; font-size: 13px; }

.pos-content-wrap .chzn-container-single .chzn-single,
.modal .chzn-container-single .chzn-single {
    display: flex !important;
    align-items: center;
    height: 36px !important;
    box-sizing: border-box !important;
    padding: 0 30px 0 11px !important;
    background: #fff !important;
    background-image: none !important;
    border: 1px solid #cfdae5 !important;
    border-radius: 7px !important;
    box-shadow: none !important;
    color: #26445f !important;
    font-size: 13px !important;
    line-height: 34px !important;
    text-decoration: none !important;
}
.pos-content-wrap .chzn-container-single .chzn-single span,
.modal .chzn-container-single .chzn-single span {
    margin: 0 !important;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.pos-content-wrap .chzn-container-active .chzn-single,
.modal .chzn-container-active .chzn-single {
    border-color: #5da1e7 !important;
    box-shadow: 0 0 0 3px rgba(47,135,232,.11) !important;
}
.pos-content-wrap .chzn-container-single .chzn-single-with-drop,
.modal .chzn-container-single .chzn-single-with-drop { border-radius: 7px 7px 0 0 !important; }

/* Flecha dibujada con CSS en lugar del sprite heredado. */
.pos-content-wrap .chzn-container-single .chzn-single div,
.modal .chzn-container-single .chzn-single div {
    position: absolute !important;
    top: 0 !important;
    right: 0 !important;
    width: 30px !important;
    height: 100% !important;
    background: none !important;
    border: 0 !important;
}
.pos-content-wrap .chzn-container-single .chzn-single div b,
.modal .chzn-container-single .chzn-single div b {
    display: block !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -2px;
    margin-left: -5px;
    background: none !important;
    background-image: none !important;
    border-left: 5px solid transparent;
    border-right: 5px solid transparent;
    border-top: 5px solid #5c7b99;
}
.pos-content-wrap .chzn-container-active.chzn-with-drop .chzn-single div b,
.modal .chzn-container-active.chzn-with-drop .chzn-single div b {
    border-top: 0;
    border-bottom: 5px solid #2e82e6;
}

/* Desplegable. */
.pos-content-wrap .chzn-container .chzn-drop,
.modal .chzn-container .chzn-drop {
    box-sizing: border-box;
    padding: 0 !important;
    background: #fff !important;
    border: 1px solid #cfdae5 !important;
    border-top: 0 !important;
    border-radius: 0 0 9px 9px !important;
    box-shadow: 0 14px 32px rgba(18,55,91,.16) !important;
}
.pos-content-wrap .chzn-container-single .chzn-search,
.modal .chzn-container-single .chzn-search { padding: 8px !important; margin: 0 !important; border-bottom: 1px solid #eef2f7; }
.pos-content-wrap .chzn-container-single .chzn-search input,
.modal .chzn-container-single .chzn-search input {
    box-sizing: border-box !important;
    height: 34px !important;
    min-height: 34px !important;
    margin: 0 !important;
    padding: 6px 10px !important;
    background: #f7fafd !important;
    background-image: none !important;
    border: 1px solid #dbe4ee !important;
    border-radius: 6px !important;
    color: #26445f !important;
    font-size: 13px !important;
    box-shadow: none !important;
}
.pos-content-wrap .chzn-container .chzn-results,
.modal .chzn-container .chzn-results {
    margin: 0 !important;
    padding: 6px !important;
    max-height: 240px;
    color: #355571;
}
.pos-content-wrap .chzn-container .chzn-results li,
.modal .chzn-container .chzn-results li {
    padding: 9px 11px !important;
    border-radius: 6px;
    line-height: 1.3 !important;
    font-size: 13px !important;
}
.pos-content-wrap .chzn-container .chzn-results .highlighted,
.modal .chzn-container .chzn-results .highlighted {
    background-color: #eef6ff !important;
    background-image: none !important;
    filter: none !important;
    color: #1268c0 !important;
}
.pos-content-wrap .chzn-container .chzn-results .result-selected,
.modal .chzn-container .chzn-results .result-selected { color: #123d73 !important; font-weight: 700; }
.pos-content-wrap .chzn-container .chzn-results .no-results,
.modal .chzn-container .chzn-results .no-results { background: #f7f9fc !important; color: #6d8298 !important; }
.pos-content-wrap .chzn-container .chzn-results li em,
.modal .chzn-container .chzn-results li em { background: #fff6d6 !important; font-style: normal; }
.pos-content-wrap .chzn-container-single .chzn-default,
.modal .chzn-container-single .chzn-default { color: #8fa2b6 !important; }

@media (max-width: 767px) {
    .pos-content-wrap div.uploader,
    .modal div.uploader { max-width: 100%; }
    /* chosen fija el ancho en linea a partir del select original. */
    .pos-content-wrap .chzn-container,
    .pos-content-wrap .chzn-container .chzn-drop,
    .modal .chzn-container,
    .modal .chzn-container .chzn-drop { width: 100% !important; }
}

/* --------------------------------------------------------------------------
   Rejilla de filtros sobre la rejilla fluida de Bootstrap 2.

   La plantilla es Bootstrap 2.2.2, asi que las columnas se declaran con
   .row-fluid + .span1 ... .span12 y la suma de los span de cada fila debe
   dar 12. No existen las clases col-md-*, que son de Bootstrap 3 en
   adelante. bootstrap-responsive.css ya apila esas columnas al 100% por
   debajo de 768px.
   -------------------------------------------------------------------------- */

/* El boton no lleva etiqueta, asi que se le suma la altura de un <label>
   para que su linea base coincida con la de los campos. */
.pos-content-wrap .pos-filter-row .pos-field { margin-bottom: 0; }
.pos-content-wrap .pos-filter-row .pos-filter-action { padding-top: 20px; }

/*
   La seccion 15 apila span5, span7, span8 y span10 por debajo de 980px para
   que los paneles maestro/detalle no compitan. Una barra de filtros no
   necesita eso, cabe de sobra en tablet, y a medias quedaba descuadrada: los
   campos ocupaban todo el ancho mientras el boton seguia flotando al lado.
   Se restituye la rejilla solo dentro de .pos-filter-row.
*/
@media (min-width: 768px) and (max-width: 979px) {
    .pos-content-wrap .pos-filter-row > [class*="span"] {
        float: left !important;
        margin-left: 2.127659574468085% !important;
    }
    .pos-content-wrap .pos-filter-row > [class*="span"]:first-child { margin-left: 0 !important; }
    .pos-content-wrap .pos-filter-row > .span5 { width: 40.42553191489362% !important; }
    .pos-content-wrap .pos-filter-row > .span7 { width: 57.44680851063829% !important; }
    .pos-content-wrap .pos-filter-row > .span8 { width: 65.95744680851064% !important; }
    .pos-content-wrap .pos-filter-row > .span10 { width: 82.97872340425532% !important; }
}

/* Telefono: una columna por fila, con separacion entre ellas. */
@media (max-width: 767px) {
    .pos-content-wrap .pos-filter-row > [class*="span"] { margin-bottom: 11px; }
    .pos-content-wrap .pos-filter-row > [class*="span"]:last-child { margin-bottom: 0; }
    .pos-content-wrap .pos-filter-row .pos-filter-action { padding-top: 0; }
}

/* --------------------------------------------------------------------------
   Tablas dentro de ventanas modales.

   La regla general le da 620px de ancho minimo a .bootstrap-datatable, pensada
   para el listado de una pagina completa. Dentro de una ventana de 560px eso
   desbordaba, y como .modal recorta lo que sobresale, las ultimas columnas
   quedaban cortadas sin manera de alcanzarlas.

   Aqui la tabla se ajusta al ancho de la ventana y el texto puede partirse en
   varias lineas. Cada celda conserva un minimo legible, de modo que una tabla
   de pocas columnas entra completa y una de muchas columnas crece y se
   desplaza en horizontal dentro del cuerpo de la ventana.
   -------------------------------------------------------------------------- */

.modal .modal-body { overflow-x: auto; }
.modal .table,
.modal table.table { width: 100%; margin-bottom: 0; }
.modal .bootstrap-datatable,
.pos-content-wrap .modal .bootstrap-datatable { min-width: 0 !important; }
.modal .table th,
.modal .table td {
    min-width: 70px;
    white-space: normal;
    word-break: break-word;
}
/* Las columnas de importe y cantidad no necesitan tanto espacio. */
.modal .table th:first-child,
.modal .table td:first-child { min-width: 58px; }

@media (max-width: 767px) {
    /* Telefono: letra y espaciado mas chicos para que quepan mas columnas. */
    .modal .table,
    .modal table.table { font-size: 11px; }
    .modal .table th {
        padding: 7px 5px !important;
        font-size: 10px;
        letter-spacing: .2px;
    }
    .modal .table td { padding: 7px 5px !important; }
    .modal .table th,
    .modal .table td {
        min-width: 56px;
        white-space: normal;
    }
    .modal .table th:first-child,
    .modal .table td:first-child { min-width: 48px; }
    .modal .table .btn { padding: 4px 8px !important; min-height: 0 !important; font-size: 11px; }
}

/* --------------------------------------------------------------------------
   Ventana de alta y edicion de tipos de usuario.
   -------------------------------------------------------------------------- */

#tipoUsuarioModal { width: 680px; margin-left: -340px; }
#tipoUsuarioModal .modal-body { padding: 16px 20px !important; }

/* Datos a la izquierda, lista de permisos a la derecha. */
.tipo-usuario-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    column-gap: 20px;
}
.tipo-usuario-permisos { padding-left: 20px; border-left: 1px solid #eaf0f6; }
.tipo-usuario-permisos h4 {
    margin: 0 0 10px;
    color: #6b8096;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: .6px;
}
#tipoUsuarioModal .control-group { margin-bottom: 12px !important; }
#tipoUsuarioModal .control-group > label { display: block; margin-bottom: 4px; color: #45607d; font-size: 12px; font-weight: 600; }
#tipoUsuarioModal .input-large { width: 100% !important; box-sizing: border-box; }
#tipoUsuarioModal textarea { min-height: 76px; resize: vertical; }

/* La lista de secciones se desplaza sola si el sistema crece. */
#tPermisos { max-height: 300px; overflow-y: auto; margin-bottom: 0 !important; }
/*
   El tema ya presenta label.checkbox como una linea flexible con la casilla
   al frente, asi que aqui solo se ajusta el ritmo de la lista y la sangria
   de las subsecciones.
*/
#tPermisos label.checkbox {
    gap: 8px;
    min-height: 24px;
    margin: 0 0 3px;
    font-size: 13px;
}
#tPermisos label.checkbox.subsection {
    margin-left: 22px;
    color: #5c748d;
    font-size: 12px;
}
#tipoUsuarioAlerta { margin-bottom: 14px; }
#tipoUsuarioAlerta.novisible { display: none !important; }

@media (max-width: 767px) {
    #tipoUsuarioModal { width: 94% !important; margin-left: 0 !important; }
    .tipo-usuario-grid { grid-template-columns: 1fr; row-gap: 4px; }
    .tipo-usuario-permisos {
        padding-left: 0;
        padding-top: 12px;
        border-left: 0;
        border-top: 1px solid #eaf0f6;
    }
    #tPermisos { max-height: 220px; }
}

/* ==========================================================================
   COMPONENTES COMPARTIDOS

   Presentacion comun de las piezas que se repiten en todas las vistas:
   ventanas modales, campos de formulario y estados de foco. Se escribe con
   selectores de clase, sin identificadores, para que cualquier vista que
   tenga su propio diseno siga mandando sobre esto.
   ========================================================================== */

/* ---------- Cabecera de la ventana ---------- */

.modal-header {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 15px 18px !important;
}
.modal-header h1,
.modal-header h2,
.modal-header h3 {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 17px !important;
    line-height: 1.25 !important;
}
/* Varias vistas dejan el titulo vacio y lo escribe el script al abrir. */
.modal-header h1:empty,
.modal-header h2:empty,
.modal-header h3:empty { display: none; }
.modal-header p { margin: 0; color: #7186a0; font-size: 12.5px; }
.modal-header p:empty { display: none; }

.modal-header .close {
    /* En el marcado va antes del titulo; aqui se manda al extremo. */
    /* Va antes del titulo en el marcado; aqui cierra la cabecera. El margen
       automatico la mantiene a la derecha aunque el titulo lo escriba el
       script y la cabecera arranque sin el. */
    order: 2;
    display: flex;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    width: 30px;
    height: 30px;
    margin: 0 0 0 auto !important;
    padding: 0;
    background: none;
    border: 0;
    border-radius: 7px;
    color: #8fa4ba;
    font-size: 21px;
    line-height: 1;
    opacity: 1;
    text-shadow: none;
}
.modal-header .close:hover { background: #f1f5fa; color: #173456; opacity: 1; }

/* ---------- Cuerpo de la ventana ---------- */

.modal-body fieldset { margin: 0; padding: 0; border: 0; }
.modal-body .control-group { margin-bottom: 14px; }
.modal-body .control-group:last-child { margin-bottom: 0; }
.modal-body .control-group > label {
    display: block;
    margin: 0 0 5px;
    color: #45607d;
    font-size: 12px;
    font-weight: 600;
}

/*
   Los campos sueltos de una ventana ocupan el ancho disponible. Se excluyen
   los que viven dentro de una tabla o de un grupo con prefijo, porque ahi el
   ancho lo define la columna.
*/
.modal-body .control-group > input[type="text"],
.modal-body .control-group > input[type="password"],
.modal-body .control-group > input[type="email"],
.modal-body .control-group > input[type="number"],
.modal-body .control-group > input[type="date"],
.modal-body .control-group > select,
.modal-body .control-group > textarea,
.modal-body label + input[type="text"],
.modal-body label + input[type="password"],
.modal-body label + input[type="number"],
.modal-body label + select,
.modal-body label + textarea {
    box-sizing: border-box;
    width: 100% !important;
    max-width: 100% !important;
    margin-bottom: 0 !important;
}
.modal-body textarea { resize: vertical; }

/* ---------- Pie de la ventana ---------- */

.modal-footer {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 18px !important;
}
.modal-footer .btn {
    min-width: 96px;
    min-height: 40px;
    margin: 0 !important;
    border-radius: 9px !important;
    font-weight: 600;
}
/*
   La accion principal siempre cierra la fila, sin importar en que orden la
   haya escrito cada vista.
*/
.modal-footer .btn { order: 1; }
.modal-footer .btn-primary,
.modal-footer .btn-success,
.modal-footer .btn-info,
.modal-footer .btn-danger { order: 2; }

/* ---------- Estados de foco ---------- */

.pos-content-wrap input[type="text"]:focus,
.pos-content-wrap input[type="password"]:focus,
.pos-content-wrap input[type="email"]:focus,
.pos-content-wrap input[type="number"]:focus,
.pos-content-wrap input[type="search"]:focus,
.pos-content-wrap input[type="tel"]:focus,
.pos-content-wrap input[type="date"]:focus,
.pos-content-wrap textarea:focus,
.pos-content-wrap select:focus,
.modal input[type="text"]:focus,
.modal input[type="password"]:focus,
.modal input[type="email"]:focus,
.modal input[type="number"]:focus,
.modal textarea:focus,
.modal select:focus {
    border-color: #2e82e6 !important;
    box-shadow: 0 0 0 3px rgba(46, 130, 230, .14) !important;
    outline: none;
}

/* El teclado tiene que ver donde esta parado. */
.pos-content-wrap .btn:focus-visible,
.modal .btn:focus-visible,
.pos-content-wrap a:focus-visible {
    outline: 3px solid rgba(46, 130, 230, .4);
    outline-offset: 2px;
}

/* ---------- Telefono ---------- */

@media (max-width: 767px) {
    .modal-header { padding: 13px 14px !important; }
    .modal-body { padding: 14px !important; }
    .modal-footer { padding: 12px 14px !important; }
    /* Los botones del pie se reparten el ancho en lugar de amontonarse. */
    .modal-footer .btn { flex: 1 1 0; min-width: 0; }
}

/* ==========================================================================
   Filas row-fluid de las vistas rediseñadas (clase pos-fila).
   ========================================================================== */

/*
   bootstrap-responsive.css de esta plantilla deja el hueco entre span en
   10px a partir de 1200px, pero conserva los anchos en porcentaje. La fila
   no suma el 100% y sobra espacio a la derecha. En las filas marcadas se
   usa un hueco fluido; va un poco por debajo del exacto (2.564%) porque con
   seis columnas el redondeo pasaba del 100% y la ultima brincaba de renglon.
*/
@media (min-width: 1200px) {
    .pos-content-wrap .row-fluid.pos-fila > [class*="span"] { margin-left: 2.56%; }
}

/*
   Los conteos usan nth-of-type y no nth-child: cuando el usuario no es
   administrador, el campo oculto de la sucursal queda dentro de la fila y
   con nth-child descuadraba las columnas.
*/
@media (min-width: 768px) {
    .pos-content-wrap .row-fluid.pos-fila > [class*="span"]:first-of-type { margin-left: 0 !important; }
}

/*
   Si hay mas elementos de los que caben, cada renglon nuevo empieza a la
   izquierda y por debajo del elemento mas alto del anterior. pos-fila-N
   indica cuantos van por renglon en escritorio; en tableta cada vista
   declara su propio conteo.
*/
@media (min-width: 980px) {
    .pos-content-wrap .pos-fila-2 > [class*="span"]:nth-of-type(2n+1),
    .pos-content-wrap .pos-fila-3 > [class*="span"]:nth-of-type(3n+1),
    .pos-content-wrap .pos-fila-4 > [class*="span"]:nth-of-type(4n+1),
    .pos-content-wrap .pos-fila-6 > [class*="span"]:nth-of-type(6n+1) { margin-left: 0 !important; clear: left; }
}
