﻿/* ========================================================================== 
   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 ===== */
#sidebar-left.pos-sidebar {
    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 88px !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-y: auto !important;
    overflow-x: hidden !important;
}
#sidebar-left.pos-sidebar::-webkit-scrollbar { width: 5px; }
#sidebar-left.pos-sidebar::-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 { height: auto !important; overflow: visible !important; margin: 0 !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 { 
    position: absolute; 
    left: 21px; 
    right: 21px;
    bottom: 22px; 
    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 72px !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; }
    .pos-content-wrap .table th,.pos-content-wrap .table td { padding: 8px !important; white-space: nowrap; }
    .pos-content-wrap .bootstrap-datatable { min-width: 600px; }
    .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; }
}
