/* ==========================================================================
   AsissCAD .NET 8 - estilos propios sobre Bootstrap 5.3.8 (+ Bootstrap Icons 1.13.2).
   Decisión del usuario: MANTENER LA APARIENCIA que el sistema tenía con Bootstrap 3 (letra de 14 px, mismo
   gris del navbar, mismos colores de botones, mismos tamaños). Por eso la sección 1 ajusta las variables
   de Bootstrap 5 y la sección 2 define unas pocas clases "de compatibilidad" que Bootstrap 5 eliminó.
   ========================================================================== */

/* ---------- 1. Tema: apariencia equivalente a la de Bootstrap 3 ---------- */

/* 1rem = 14 px (en Bootstrap 5 todos los componentes se miden en rem; antes eran px de 14) */
html { font-size: 14px; }

:root, [data-bs-theme=light] {
    --bs-body-font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
    --bs-body-font-size: 1rem;
    --bs-body-line-height: 1.42857143;
    --bs-body-color: #333;
    --bs-body-color-rgb: 51, 51, 51;
    --bs-body-bg: #fff;

    --bs-primary: #337ab7;  --bs-primary-rgb: 51, 122, 183;
    --bs-success: #5cb85c;  --bs-success-rgb: 92, 184, 92;
    --bs-secondary: #777;   --bs-secondary-rgb: 119, 119, 119;
    --bs-info: #5bc0de;     --bs-info-rgb: 91, 192, 222;
    --bs-warning: #f0ad4e;  --bs-warning-rgb: 240, 173, 78;
    --bs-danger: #d9534f;   --bs-danger-rgb: 217, 83, 79;

    --bs-link-color: #337ab7;        --bs-link-color-rgb: 51, 122, 183;
    --bs-link-hover-color: #23527c;  --bs-link-hover-color-rgb: 35, 82, 124;

    --bs-border-color: #ddd;
    --bs-border-radius: 4px;
    --bs-border-radius-sm: 3px;
    --bs-border-radius-lg: 6px;
    --bs-focus-ring-color: rgba(102, 175, 233, .35);
}

.row { --bs-gutter-x: 30px; }
.container-fluid { --bs-gutter-x: 30px; }

h1, h2, h3 { margin-top: 20px; margin-bottom: 10px; }
h4, h5, h6 { margin-top: 10px; margin-bottom: 10px; }
h1, h2, h3, h4, h5, h6 { font-weight: 500; line-height: 1.1; }
h1 { font-size: 36px; } h2 { font-size: 30px; } h3 { font-size: 24px; }
h4 { font-size: 18px; } h5 { font-size: 14px; } h6 { font-size: 12px; }
p { margin-bottom: 10px; }
hr { margin: 20px 0; color: #eee; opacity: 1; }
label { font-weight: 700; margin-bottom: 5px; }
.form-check-label, .radio-inline, .btn { font-weight: 400; margin-bottom: 0; }
.text-muted { color: #777 !important; }
.text-danger { color: #a94442 !important; }
.text-success { color: #3c763d !important; }
.text-warning { color: #8a6d3b !important; }
.text-info { color: #31708f !important; }
.text-primary { color: #337ab7 !important; }

/* Botones (mismos colores y tamaños) */
.btn { --bs-btn-line-height: 1.42857143; --bs-btn-border-radius: 4px; }
.btn-sm { --bs-btn-padding-y: 5px; --bs-btn-padding-x: 10px; --bs-btn-font-size: 12px; --bs-btn-border-radius: 3px; }
.btn-default { --bs-btn-color: #333; --bs-btn-bg: #fff; --bs-btn-border-color: #ccc;
               --bs-btn-hover-color: #333; --bs-btn-hover-bg: #e6e6e6; --bs-btn-hover-border-color: #adadad;
               --bs-btn-active-color: #333; --bs-btn-active-bg: #d4d4d4; --bs-btn-active-border-color: #8c8c8c;
               --bs-btn-disabled-color: #333; --bs-btn-disabled-bg: #fff; --bs-btn-disabled-border-color: #ccc; }
.btn-primary { --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; --bs-btn-bg: #337ab7; --bs-btn-border-color: #2e6da4; --bs-btn-hover-bg: #286090; --bs-btn-hover-border-color: #204d74;
               --bs-btn-active-bg: #204d74; --bs-btn-active-border-color: #122b40; --bs-btn-disabled-bg: #337ab7; --bs-btn-disabled-border-color: #2e6da4; }
.btn-success { --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; --bs-btn-bg: #5cb85c; --bs-btn-border-color: #4cae4c; --bs-btn-hover-bg: #449d44; --bs-btn-hover-border-color: #398439;
               --bs-btn-active-bg: #398439; --bs-btn-active-border-color: #255625; --bs-btn-disabled-bg: #5cb85c; --bs-btn-disabled-border-color: #4cae4c; }
.btn-info { --bs-btn-color: #fff; --bs-btn-bg: #5bc0de; --bs-btn-border-color: #46b8da; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #31b0d5; --bs-btn-hover-border-color: #269abc;
            --bs-btn-active-color: #fff; --bs-btn-active-bg: #269abc; --bs-btn-active-border-color: #1b6d85; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #5bc0de; --bs-btn-disabled-border-color: #46b8da; }
.btn-warning { --bs-btn-color: #fff; --bs-btn-bg: #f0ad4e; --bs-btn-border-color: #eea236; --bs-btn-hover-color: #fff; --bs-btn-hover-bg: #ec971f; --bs-btn-hover-border-color: #d58512;
               --bs-btn-active-color: #fff; --bs-btn-active-bg: #d58512; --bs-btn-active-border-color: #985f0d; --bs-btn-disabled-color: #fff; --bs-btn-disabled-bg: #f0ad4e; --bs-btn-disabled-border-color: #eea236; }
.btn-danger { --bs-btn-color: #fff; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-color: #fff; --bs-btn-bg: #d9534f; --bs-btn-border-color: #d43f3a; --bs-btn-hover-bg: #c9302c; --bs-btn-hover-border-color: #ac2925;
              --bs-btn-active-bg: #ac2925; --bs-btn-active-border-color: #761c19; --bs-btn-disabled-bg: #d9534f; --bs-btn-disabled-border-color: #d43f3a; }

/* Formularios */
.form-control, .form-select, .input-group-text { border-color: #ccc; border-radius: 4px; }
.form-control, .form-select { color: #555; box-shadow: inset 0 1px 1px rgba(0,0,0,.075); }
.form-control:focus, .form-select:focus { border-color: #66afe9; box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(102,175,233,.6); }
.form-control:disabled, .form-select:disabled, .form-control[readonly] { background-color: #eee; }
.form-control-sm, .form-select-sm { border-radius: 3px; }
.input-group-text { background-color: #eee; color: #555; }
.form-text { display: block; margin-top: 5px; margin-bottom: 10px; font-size: inherit; color: #737373; }

/* Paneles = cards (mismo aspecto que los .panel-default) */
.card {
    --bs-card-border-color: #ddd;
    --bs-card-border-radius: 4px;
    --bs-card-inner-border-radius: 3px;
    --bs-card-spacer-y: 15px;
    --bs-card-spacer-x: 15px;
    --bs-card-cap-padding-y: 10px;
    --bs-card-cap-padding-x: 15px;
    --bs-card-cap-bg: #f5f5f5;
    --bs-card-cap-color: #333;
    margin-bottom: 20px;
    box-shadow: 0 1px 1px rgba(0,0,0,.05);
}
.card-title { margin: 0; font-size: 16px; }

/* Tablas */
.table { --bs-table-striped-bg: #f9f9f9; --bs-table-hover-bg: #f5f5f5; --bs-table-border-color: #ddd; }
.table > thead > tr > th { vertical-align: bottom; border-bottom-width: 2px; }
.table-sm > :not(caption) > * > * { padding: 5px; }

/* Modales (BS3: 600 px, grande 900 px) */
.modal { --bs-modal-width: 600px; --bs-modal-border-radius: 6px; --bs-modal-header-padding: 15px; --bs-modal-padding: 15px; --bs-modal-header-border-color: #e5e5e5; }
.modal-lg, .modal-xl { --bs-modal-width: 900px; }
.modal-sm { --bs-modal-width: 300px; }
.modal-title { font-size: 18px; margin: 0; }
.modal-content { box-shadow: 0 5px 15px rgba(0,0,0,.5); border-color: rgba(0,0,0,.2); }

/* Alertas (mismos colores) */
.alert { --bs-alert-padding-x: 15px; --bs-alert-padding-y: 15px; --bs-alert-border-radius: 4px; }
.alert-success { --bs-alert-color: #3c763d; --bs-alert-bg: #dff0d8; --bs-alert-border-color: #d6e9c6; }
.alert-info    { --bs-alert-color: #31708f; --bs-alert-bg: #d9edf7; --bs-alert-border-color: #bce8f1; }
.alert-warning { --bs-alert-color: #8a6d3b; --bs-alert-bg: #fcf8e3; --bs-alert-border-color: #faebcc; }
.alert-danger  { --bs-alert-color: #a94442; --bs-alert-bg: #f2dede; --bs-alert-border-color: #ebccd1; }

/* Notificaciones (abrirNotificacion en site.js): toasts con los colores de las alertas */
.toast.aviso { --bs-toast-border-width: 1px; --bs-toast-border-radius: 4px; --bs-toast-max-width: 350px; --bs-toast-font-size: 14px; }
.aviso-success { color: #3c763d; background-color: #dff0d8; border-color: #d6e9c6; }
.aviso-info    { color: #31708f; background-color: #d9edf7; border-color: #bce8f1; }
.aviso-warning { color: #8a6d3b; background-color: #fcf8e3; border-color: #faebcc; }
.aviso-danger  { color: #a94442; background-color: #f2dede; border-color: #ebccd1; }
.aviso .btn-close { margin: 10px 10px 0 0; padding: 4px; font-size: 10px; }

/* Paginación (mismos colores y tamaños) */
.pagination {
    --bs-pagination-color: #337ab7; --bs-pagination-hover-color: #23527c; --bs-pagination-hover-bg: #eee; --bs-pagination-hover-border-color: #ddd;
    --bs-pagination-bg: #fff; --bs-pagination-border-color: #ddd; --bs-pagination-border-radius: 4px;
    --bs-pagination-active-bg: #337ab7; --bs-pagination-active-border-color: #337ab7; --bs-pagination-focus-color: #23527c; --bs-pagination-focus-bg: #eee;
    --bs-pagination-padding-x: 12px; --bs-pagination-padding-y: 6px; --bs-pagination-font-size: 14px;
}
/* En Bootstrap 3 el paginador pasaba a una segunda línea cuando no cabía; en Bootstrap 5 es flex sin salto de línea */
.pagination { flex-wrap: wrap; }
.pagination-sm { --bs-pagination-padding-x: 10px; --bs-pagination-padding-y: 5px; --bs-pagination-font-size: 12px; --bs-pagination-border-radius: 3px; }

/* Pestañas */
.nav-tabs { --bs-nav-tabs-border-color: #ddd; --bs-nav-tabs-link-hover-border-color: #eee #eee #ddd; --bs-nav-tabs-link-active-color: #555; --bs-nav-tabs-border-radius: 4px; }
.nav-tabs .nav-link { color: #337ab7; }

/* ---------- 2. Clases de Bootstrap 3 que Bootstrap 5 eliminó y que se siguen usando (compatibilidad) ---------- */

/* Botón extra chico (.btn-xs de BS3). El botón blanco .btn-default está en la sección 1, ANTES de las variantes de color:
   algunos botones llevan .btn-default y el JS les agrega .btn-success/.btn-warning, y el color debe ganar (como en BS3). */
.btn-xs { --bs-btn-padding-y: 1px; --bs-btn-padding-x: 5px; --bs-btn-font-size: 12px; --bs-btn-border-radius: 3px; }

/* Formulario en línea (búsquedas en el encabezado de los paneles) */
.form-inline { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.form-inline > .mb-3 { margin-bottom: 0 !important; display: flex; align-items: center; gap: 6px; }
.form-inline label { margin-bottom: 0; }
.form-inline .form-control, .form-inline .form-select { width: auto; }

/* Radios en línea */
.radio-inline { display: inline-flex; align-items: center; gap: 4px; margin-right: 12px; cursor: pointer; }

/* Caja gris (.well) y miniaturas */
.well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; border-radius: 4px; box-shadow: inset 0 1px 1px rgba(0,0,0,.05); }
.well-sm { padding: 9px; border-radius: 3px; }
.thumbnail { display: block; padding: 4px; margin-bottom: 20px; line-height: 1.42857143; background-color: #fff; border: 1px solid #ddd; border-radius: 4px; }
.thumbnail > img, .thumbnail a > img { display: block; max-width: 100%; height: auto; margin-left: auto; margin-right: auto; }
.thumbnail .caption { padding: 9px; color: #333; }
.text-justify { text-align: justify; }
.btn-group-justified > .btn { flex: 1 1 0; }
.pad-10 { padding: 10px; }
.card > .table { margin-bottom: 0; }

/* ---------- 3. Fondo y navbar principal ---------- */

body.con-cielo {
    background-image: url('../imagenes/cielo_top.png');
    background-size: 100% auto;
    background-repeat: no-repeat;
}

/* Colores del menú original: gris #5a5c5e. Barra de 46 px fijos; el logo ocupa todo su alto sin agrandarla. */
.navbar-asisscad {
    --bs-navbar-padding-x: 0;
    --bs-navbar-padding-y: 0;
    --bs-navbar-color: #fff;
    --bs-navbar-hover-color: #fff;
    --bs-navbar-active-color: #fff;
    --bs-navbar-nav-link-padding-x: 10px;
    --bs-navbar-toggler-border-color: #abafb0;
    background-color: #5a5c5e;
    min-height: 46px;
    padding: 0;
    border-radius: 0;
}
.navbar-asisscad > .container-fluid { padding: 0; flex-wrap: wrap; }

/* Cabecera = logo + nombre del cliente (+ botón hamburguesa si el menú está colapsado) */
.navbar-cabecera { display: flex; align-items: center; min-width: 0; flex: 1 1 100%; }
.navbar-asisscad .navbar-brand { height: 46px; padding: 0; margin: 0 10px 0 0; display: block; line-height: 0; }
.navbar-asisscad .navbar-brand img { height: 46px; width: auto; display: block; }

.navbar-empresa {
    flex: 0 1 auto;
    min-width: 0;                       /* permite recortar con "…" cuando falta espacio */
    margin: 0 10px 0 0;
    padding: 0 0 0 12px;
    border-left: 1px solid rgba(255,255,255,.3);
    color: #fff;
    font-size: 14px;
    font-weight: bold;
    line-height: 26px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.navbar-asisscad .navbar-toggler { margin: 0 8px 0 auto; padding: 4px 10px; }
.navbar-asisscad .navbar-toggler:hover, .navbar-asisscad .navbar-toggler:focus { background-color: #abafb0; box-shadow: none; }

.navbar-asisscad .nav-link {
    color: #fff;
    font-size: 14px;
    line-height: 20px;
    padding: 13px 10px;
    white-space: nowrap;
}
.navbar-asisscad .nav-link:hover, .navbar-asisscad .nav-link:focus,
.navbar-asisscad .nav-link.show, .navbar-asisscad .show > .nav-link {
    color: #fff;
    background-color: #abafb0;
}

/* Ícono de salir: el texto solo aparece cuando el menú está colapsado; altura fija = alto de la barra */
.navbar-asisscad .solo-colapsado { display: none; }
.navbar-asisscad #lnkLogout { display: flex; align-items: center; height: 46px; padding-top: 0; padding-bottom: 0; }
.navbar-asisscad #lnkLogout .bi { font-size: 16px; line-height: 1; }

/* Submenús */
.navbar-asisscad .dropdown-menu {
    --bs-dropdown-bg: #5a5c5e;
    --bs-dropdown-color: #fff;
    --bs-dropdown-border-width: 0;
    --bs-dropdown-border-radius: 0;
    --bs-dropdown-padding-y: 0;
    --bs-dropdown-padding-x: 0;
    --bs-dropdown-min-width: 225px;
    --bs-dropdown-font-size: 12px;
    --bs-dropdown-box-shadow: none;
    --bs-dropdown-link-color: #fff;
    --bs-dropdown-link-hover-color: #fff;
    --bs-dropdown-link-hover-bg: #abafb0;
    --bs-dropdown-link-active-bg: #abafb0;
    --bs-dropdown-link-disabled-color: #fff;
    --bs-dropdown-item-padding-y: 9px;
    --bs-dropdown-item-padding-x: 15px;
    margin-top: 0;
}
.navbar-asisscad .dropdown-menu > li.separador { border-bottom: 1px solid rgba(255,255,255,.15); }

/* Sin permiso: tachado (igual que el original). Módulo no migrado: atenuado.
   Se mantiene pointer-events para que se vea el tooltip "Módulo en migración"; site.js evita que naveguen. */
.navbar-asisscad .tachado { text-decoration: line-through; }
.navbar-asisscad .disabled, .navbar-asisscad .disabled:hover, .navbar-asisscad .disabled:focus {
    color: #fff;
    opacity: .5;
    background-color: transparent;
    cursor: not-allowed;
    pointer-events: auto;
}
.navbar-asisscad .pendiente { font-style: italic; }

/* Bajo 1280 px no caben logo + cliente + todas las opciones en una fila: el menú se colapsa a botón
   (hamburguesa) en vez de partir la barra en dos filas. */
.navbar-asisscad .navbar-collapse { border-top: 1px solid rgba(255,255,255,.15); padding: 0 15px; }
.navbar-asisscad .navbar-nav { margin: 0 -15px; }
.navbar-asisscad .navbar-nav .nav-link { padding: 10px 15px; }
.navbar-asisscad .navbar-nav .dropdown-menu { background-color: transparent; }
.navbar-asisscad .navbar-nav .dropdown-item { padding: 8px 15px 8px 30px; }
.navbar-asisscad .solo-colapsado { display: inline; margin-left: 6px; }
.navbar-asisscad #lnkLogout { height: auto; display: block; padding: 10px 15px; }

/* Barra completa (una sola fila): el nombre del cliente cede espacio (se recorta) antes que el menú.
   Los submenús se abren al pasar el mouse (como el menú original). */
@media (min-width: 1280px) {
    .navbar-asisscad > .container-fluid { flex-wrap: nowrap; }
    .navbar-cabecera { flex: 0 1 auto; }
    .navbar-asisscad .navbar-toggler { display: none; }
    .navbar-asisscad .navbar-collapse {
        display: flex !important;
        flex: 1 0 auto;
        flex-basis: auto;
        justify-content: space-between;
        border-top: 0;
        padding: 0;
    }
    .navbar-asisscad .navbar-nav { flex-direction: row; flex: none; margin: 0; }
    .navbar-asisscad .navbar-nav .nav-link { padding: 13px 10px; }
    .navbar-asisscad #lnkLogout { height: 46px; display: flex; padding: 0 10px; }
    .navbar-asisscad .solo-colapsado { display: none; }

    .navbar-asisscad .navbar-nav .dropdown-menu { position: absolute; background-color: #5a5c5e; top: 100%; left: 0; }
    .navbar-asisscad .navbar-nav .dropdown-menu-end { right: 0; left: auto; }
    .navbar-asisscad .navbar-nav .dropdown-item { padding: 9px 15px; }
    .navbar-asisscad .navbar-nav > li.dropdown:hover > .dropdown-menu { display: block; }
    .navbar-asisscad .navbar-nav > li.dropdown:hover > .nav-link { background-color: #abafb0; }
}

/* Pantallas de 1280 a 1499 px: menú un poco más compacto para dejarle más espacio al nombre del cliente */
@media (min-width: 1280px) and (max-width: 1499px) {
    .navbar-asisscad .navbar-nav .nav-link { padding-left: 7px; padding-right: 7px; font-size: 13px; }
}

main.contenido { padding: 5px 15px 15px; }   /* arriba 5 px (antes 15): menos espacio entre el navbar y el título de cada pantalla */

/* ---------- 3b. Pantalla de ingreso: barras superior (accesos) e inferior, como las del sistema original ---------- */
.login-barra { position: fixed; left: 0; right: 0; z-index: 1030; min-height: 50px; background-color: #222; border: 0 solid #080808; color: #9d9d9d; }
.login-barra-superior { top: 0; border-bottom-width: 1px; }
.login-barra-inferior { bottom: 0; border-top-width: 1px; padding: 15px; }
.login-accesos { position: absolute; right: 10px; top: 10%; }
.responsive { width: 100%; height: auto; }

/* ---------- 4. Módulos ---------- */

/* Paginador de ancho fijo: todos los botones miden lo mismo y nunca cambian de lugar al paginar */
.pagination.pag-fijo .page-link { width: 46px; padding-left: 0; padding-right: 0; text-align: center; }
.pagination.pag-fijo .page-link[title] { font-weight: bold; }
/* Filas "sin registros": sin resaltado al pasar el mouse. Bootstrap 5 pinta las celdas con --bs-table-bg-state. */
.table > tbody > tr.fila-vacia > * { --bs-table-bg-state: transparent; }

/* Personal: autocompletar de Region/Comuna y pestaña deshabilitada */
.ac-contenedor { position: relative; }
.ac-lista { position: absolute; z-index: 1000; left: 0; right: 0; top: 100%; margin: 2px 0 0; padding: 0; list-style: none; max-height: 220px; overflow-y: auto;
            background: #fff; border: 1px solid #ccc; border-radius: 3px; box-shadow: 0 4px 10px rgba(0,0,0,.15); }
.ac-lista li { padding: 5px 10px; cursor: pointer; font-size: 13px; }
.ac-lista li:hover, .ac-lista li.activo { background-color: #337ab7; color: #fff; }
/* Personal: la búsqueda cede ancho a la ficha (de 41,7 % / 58,3 % a 30 % / 70 % desde 992 px; bajo eso apilan como siempre) */
@media (min-width: 992px) {
    #colBusquedaPersonal { flex: 0 0 auto; width: 30%; }
    #colFichaPersonal { flex: 0 0 auto; width: 70%; }
}

/* Personal > pestañas Horarios / Marcas / Permisos */
.mapa-marca { width: 100%; height: 420px; background: #e9ecef; border-radius: 4px; }
#tblMarcas td, #tblPermisos td, #tblHorarios td { vertical-align: middle; }
#tblHorarios tbody tr[data-id] { cursor: pointer; }
#tblHorarios tbody tr.active > * { --bs-table-bg-state: #d9edf7; }
#tblMarcas tr.fila-vacia:hover > *, #tblPermisos tr.fila-vacia:hover > * { --bs-table-bg-state: transparent; }
#tituloFicha.titulo-ficha { margin-left: 8px; font-size: 18px; font-weight: bold; color: #337ab7; }
#tabsFicha .nav-link.disabled { color: #999; cursor: not-allowed; }
#tblPersonal > tbody > tr.active > * { --bs-table-bg-state: #d9edf7; }

/* Turnos Normales: selectores de hora y minuto lado a lado */
.hhmm { display: inline-flex; gap: 1px; vertical-align: middle; }
.hhmm select.form-select { width: 46px; height: 24px; padding: 0 2px; font-size: 12px; background-size: 8px; background-position: right 2px center; }
.turno-horas > tbody > tr > td { vertical-align: middle; padding: 3px 4px; }
/* Tolerancia y casillas en una sola línea (pasan a la siguiente si no caben) */
.turno-opciones { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; }
.turno-opciones .turno-opcion { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-weight: normal; }
.turno-opciones .turno-opcion input[type=checkbox] { margin: 0; }

/* Turnos Ciclicos: combo de horarios disponibles y lista de la secuencia (listas de varias líneas) */
select.form-select.ciclico-combo { margin: 4px 0; height: 170px; line-height: 1.4; padding: 2px 4px; font-size: 13px; }
select.form-select.ciclico-combo option { padding: 2px 4px; }
select.form-select.ciclico-pasos { height: 232px; }
.ciclico-resumen { margin: 6px 0 0; }

/* Turnos Adaptivos: secciones de la ficha (definicion de jornada / jornadas asignadas) */
.adaptivo-seccion { border: 1px solid #ddd; border-radius: 4px; padding: 10px; margin-bottom: 12px; background: #fafafa; }
.adaptivo-titulo { font-weight: bold; margin-bottom: 8px; }
.adaptivo-seccion label { margin-bottom: 2px; }
/* Las 6 horas de la jornada y «Col. con Marcas» en una sola línea (pasan a la siguiente solo si no caben) */
.adaptivo-horas { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 6px 10px; }
.adaptivo-horas label { white-space: nowrap; }
.adaptivo-horas .adaptivo-marcas { display: inline-flex; align-items: center; gap: 6px; height: 24px; margin: 0; font-weight: normal; }
.adaptivo-horas .adaptivo-marcas input { margin: 0; }
select.form-select.adaptivo-lista { margin: 4px 0; height: 190px; line-height: 1.4; padding: 2px 4px; font-size: 13px; }
select.form-select.adaptivo-lista option { padding: 2px 4px; }
.adaptivo-resumen { margin: 6px 0 0; }

/* Asignacion masiva de turnos */
.asig-filtros-pie { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 16px; margin-bottom: 10px; }
.asig-check { display: inline-flex; align-items: center; gap: 6px; margin: 0; font-weight: normal; }
.asig-check input { margin: 0; }
.asig-botones { margin-left: auto; display: inline-flex; gap: 6px; }
.asig-tabla > tbody > tr > td { vertical-align: middle; }
.asig-tabla.asig-obsoleta { opacity: .5; }
.asig-seleccion { margin: 12px 0 0; }
select.form-select.asig-lista { margin: 4px 0 8px; height: 190px; line-height: 1.4; padding: 2px 4px; font-size: 13px; }
select.form-select.asig-lista option, select.form-select.asig-horarios option { padding: 2px 4px; }
select.form-select.asig-horarios { margin-top: 4px; height: 128px; line-height: 1.4; padding: 2px 4px; font-size: 13px; }
.asig-tipos { display: flex; gap: 18px; }
.asig-modos { border: 1px solid #ddd; border-radius: 4px; padding: 8px 10px; background: #fafafa; }
.asig-modo { display: flex; align-items: flex-start; gap: 8px; margin: 2px 0; font-weight: normal; }
.asig-modo input { margin-top: 4px; }
.asig-resumen { margin-bottom: 8px; }

/* ---------------- Turnos Planilla ---------------- */
.plan-calendario { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 3px; }
.plan-cab { text-align: center; font-weight: bold; font-size: 12px; background: #f0f0f0; padding: 3px 0; border-radius: 3px; }
.plan-celda { min-height: 54px; }
.plan-vacia { background: transparent; }
button.plan-dia { display: flex; flex-direction: column; align-items: flex-start; text-align: left; border: 1px solid #ddd; border-radius: 3px; background: #fff; padding: 3px 5px; cursor: pointer; overflow: hidden; }
button.plan-dia:hover { border-color: #5bc0de; background: #f4fbfd; }
button.plan-dia.plan-con { background: #eef7ee; border-color: #b6d7b6; }
button.plan-dia.plan-duplicada { background: #fff8e1; border-color: #f0ad4e; }
button.plan-dia.plan-hoy { box-shadow: inset 0 0 0 2px #337ab7; }
.plan-num { font-size: 12px; color: #666; }
.plan-nemo { font-size: 12px; font-weight: bold; word-break: break-all; line-height: 1.2; }
.plan-dup { color: #f0ad4e; }
.plan-leyenda { font-size: 14px; }
.plan-semana { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.plan-personas { display: flex; flex-direction: column; max-width: 520px; margin-top: 6px; border: 1px solid #ddd; border-radius: 4px; }
.plan-scroll { max-height: 220px; overflow: auto; }
@media (max-width: 575.98px) { .plan-celda { min-height: 44px; } .plan-nemo { font-size: 10px; } }
.plan-horas { display: flex; flex-wrap: wrap; gap: 8px 16px; }
.plan-hora label { display: block; margin-bottom: 2px; }
#modalNemo .modal-dialog { --bs-modal-width: 1100px; }
#pagNemo { flex-wrap: nowrap; }

/* ---- Calendario (flatpickr) ---- */
.flatpickr-calendar { font-family: inherit; font-size: 13px; z-index: 2100; }
.flatpickr-calendar.open { z-index: 2100; }
.plan-aut-ayuda { font-size: 13px; background: #f9f9f9; border: 1px solid #ddd; border-radius: 4px; padding: 8px 10px; margin-bottom: 10px; }
.plan-aut-archivo { max-width: 420px; }

/* ---- Genera consulta ---- */
.gc-card { margin-bottom: 15px; }
.gc-botones { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.gc-lista { height: 220px; }
.gc-condiciones { min-height: 72px; height: auto; background: #f9f9f9; display: flex; flex-wrap: wrap; align-items: flex-start; gap: 4px 6px; padding: 6px 8px; }
.gc-tok { display: inline-block; padding: 1px 6px; border-radius: 3px; font-size: 13px; }
.gc-tok-cond { background: #d9edf7; border: 1px solid #bce8f1; }
.gc-tok-op { background: #eee; border: 1px solid #ddd; font-weight: bold; }
.gc-acciones { margin: 5px 0 20px; }
.gc-resultado th { white-space: nowrap; }
.gc-resultado td { white-space: nowrap; }

/* ===== Sistema GPS: Ubicaciones y Asignaciones ===== */
.gps-mapa { height: 420px; width: 100%; background: #e9eef3; }
.gps-direccion { min-width: 280px; }
.gps-tabla > tbody > tr { cursor: pointer; }
.gps-tabla > tbody > tr.active > * { --bs-table-bg-state: #d9e8f5; font-weight: bold; }
.gps-tabla > tbody > tr.fila-vacia { cursor: default; }
.gps-subtitulo { font-weight: bold; margin: 0 0 6px; }
.gps-scroll { max-height: 260px; overflow-y: auto; margin-bottom: 4px; }
.gps-scroll-pers { max-height: 220px; }
.gps-scroll thead th { position: sticky; top: 0; background: #f5f5f5; z-index: 1; }
tr.gps-fuera-perfil > * { color: #999; }
@media (max-width: 991.98px) { .gps-mapa { height: 320px; } }

/* ---- Calculo (pantalla 21) ---- */
.calc-scroll { max-height: 260px; overflow-y: auto; margin-bottom: 4px; }
.calc-scroll-pers { max-height: 260px; }
.calc-scroll-err { max-height: 220px; }
.calc-scroll thead th { position: sticky; top: 0; background: #f5f5f5; z-index: 1; }
.informe-visor { width: 100%; height: 75vh; border: 0; }
.modal-informe { --bs-modal-width: 1400px; max-width: 96vw; }
.informe-lateral { border-right: 1px solid #ddd; background: #fafafa; }
.informe-lista { height: calc(75vh - 150px); min-height: 220px; overflow-y: auto; border: 1px solid #ddd; background: #fff; margin-bottom: 4px; }
.informe-lista .form-check { margin: 0; padding: 2px 6px 2px 28px; border-bottom: 1px solid #f0f0f0; font-size: 12px; }
.informe-lista .form-check:hover { background: #eef5fb; }
@media (max-width: 767.98px) { .informe-lista { height: 220px; } .informe-lateral { border-right: 0; border-bottom: 1px solid #ddd; } }
