﻿/* Propiedades generales */
a { cursor: pointer !important; text-decoration:none; }
a.disabled,a[aria-disabled="true"] { cursor: not-allowed !important; pointer-events: none; opacity: .65;}
.oculto_pantalla { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.form-check-input-static[disabled] { opacity: 1; cursor: default; pointer-events: none;}
.check-static-label { color: #000 !important; opacity: unset !important; }

/* Personalización de cada tipo */
.toast-success { background-color: #28a745 !important; color: white !important; }
.toast-error { background-color: #dc3545 !important; color: white !important; }
.toast-warning { background-color: #ffc107 !important; color: black !important;}
.toast-info { background-color: #17a2b8 !important; color: white !important; }

/* Ajusta el ancho del input de búsqueda */
.dataTables_filter input { width:100% !important; max-width: 300px !important; margin-bottom:10px; }

/* Custom Class*/
.it0001{ cursor:pointer; background:none; margin-right:10px; border:0; text-decoration:none;}
.it0002{ white-space: nowrap; }
.it0006{ cursor:pointer; background:none; border:0; text-decoration:none;}
.it0003{ font-size:100px !important;}

.bg-orange {background-color: orange !important;}

.ts-control {
    flex-wrap: nowrap !important;
    overflow-x: auto !important;
    white-space: nowrap !important;
    max-height: 42px !important;
    align-items: center !important;
    padding-right: 2.5rem !important;
    position: relative !important;
}
.ts-wrapper.single .ts-control::after,
.ts-wrapper.multi .ts-control::after {
    display: none !important;
}
/* Bootstrap Select */
.bootstrap-select .dropdown-menu {
    /*max-height: 250px !important;*/
    overflow-y: auto;
}
/* Estilo personalizado para que Bootstrap Select se parezca a .form-select */
.bootstrap-select.form-select-like .dropdown-toggle { display: block; width: 100%; padding: 0.375rem 2.25rem 0.375rem 0.75rem; font-size: 0.9rem; font-weight: 400; line-height: 1.5; color: var(--bs-body-color); background-color: var(--bs-body-bg); background-image: var(--bs-form-select-bg-img), var(--bs-form-select-bg-icon, none); background-repeat: no-repeat; background-position: right 0.75rem center; background-size: 16px 12px; border: var(--bs-border-width) solid var(--bs-border-color); border-radius: var(--bs-border-radius); box-shadow: var(--bs-box-shadow-inset); transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; text-align: left; }
.bootstrap-select.form-select-like .dropdown-toggle:focus { border-color: var(--bs-primary); outline: 0; box-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25); }
.bootstrap-select .dropdown-menu li.selected a { background-color: #d0e4f7 !important; color: #212529 !important; font-weight: 500; }
.bootstrap-select .dropdown-menu li.selected a:hover { background-color: #d0e4f7 !important; }

/* Afectos flechas colapsables */
.fa-chevron-down { transition: transform 0.3s ease !important; }
.fa-chevron-down.rotate { transform: rotate(180deg) !important; }
.form-check-input:checked { border-color: white !important; }
input[type="checkbox"].semi-checked {
    outline: 2px dashed #35adb0 !important;
    outline-offset: 2px !important;
    background-color: #addff3 !important;
    border-color: #35adb0 !important;
}

/* Semaforos de relación de egresos */
.semaforo-td { color: #fff !important; font-weight: bold !important; text-align: center !important; }
.semaforo-gris { background-color: #6c757d !important;}
.semaforo-naranja { background-color: #fd7e14 !important; }
.semaforo-rojo { background-color: #dc3545 !important; }

.input-disabled-look { background-color: #e9ecef; color: #6c757d; cursor: not-allowed; border-color: #ced4da; }

/* Readonly field - campos de solo lectura con apariencia visual distintiva */
.readonly-field {
    background-color: #e9ecef !important;
    cursor: not-allowed !important;
}

/* Campo bloqueado - campos bloqueados de forma programática (reutilizable en toda la aplicación) */
.campo-bloqueado {
    background-color: #f0f0f0 !important;
    cursor: not-allowed !important;
    border-color: #d0d0d0 !important;
}

.campo-bloqueado:focus {
    background-color: #f0f0f0 !important;
    border-color: #d0d0d0 !important;
    box-shadow: none !important;
}

select.campo-bloqueado {
    pointer-events: none;
}

.modal .bootstrap-select .dropdown-menu {
    max-width: 100% !important;
    overflow-x: auto !important;
    white-space: nowrap !important;
}
.bootstrap-select .dropdown-menu {
    max-width: 100% !important;
    overflow-x: auto !important;
    white-space: nowrap !important;
}

/* ADJUNTOS (GALERÍA) */
.adjunto-item{border:1px solid #dee2e6;border-radius:6px;overflow:hidden;background:#f8f9fa;display:flex;flex-direction:column;}
.adjunto-imagen{width:100%;height:120px;object-fit:cover;cursor:pointer;}
.adjunto-icono{width:100%;height:120px;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#6c757d;padding:.4rem;}
.adjunto-acciones{display:flex;border-top:1px solid #eee;background:#fff;}
.btn-icono{width:32px;height:32px;display:flex;align-items:center;justify-content:center;padding:0;}
.adjunto-item:hover{box-shadow:0 4px 12px rgba(0,0,0,.15);transform:translateY(-2px);transition:.2s;}

/* DROP ZONE */
.dropzone-adjuntos{cursor:pointer;min-height:60px;}
.dropzone-adjuntos:hover{background:#EEE !important;border-color:#adb5bd;}

/* TIMELINE EB */
.timeline-eb{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:5px 0;}
.timeline-eb-item{flex:0 0 auto;min-width:130px;text-align:center;}
.timeline-eb-head{display:flex;justify-content:center;margin-bottom:2px;}
.timeline-eb-icon{width:26px;height:26px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-size:11px;}
.timeline-eb-title{font-size:12px;font-weight:600;white-space:nowrap;}
.timeline-eb-meta{font-size:10px;color:#6c757d;line-height:1.2;}
.timeline-eb-badge{font-size:9px;padding:1px 5px;margin-left:4px;}

/* FLECHA */
.timeline-eb-arrow{color:#adb5bd;font-size:12px;display:flex;align-items:center;}

/* MOBILE */
@media(max-width:768px){
.timeline-eb{flex-direction:column;align-items:flex-start;}
.timeline-eb-item{display:flex;gap:8px;text-align:left;min-width:auto;}
.timeline-eb-head{margin:0;}
.timeline-eb-arrow{display:none;}
}

/* Visor de fotografias */
.thumb-img { width: 25px; height: 25px; border-radius: 50%; object-fit: cover; }
.thumb-link { display: inline-block; width: 25px; height: 25px; text-decoration: none; }
.thumb-placeholder { display: inline-flex; align-items: center; justify-content: center; width: 25px; height: 25px; border-radius: 50%; background: #f1f1f1; }

/* Tablero Servicios */
.card-servicios-tab { border-color:#1C76B0!important; border-radius:.5rem!important; overflow:hidden; }
.card-servicios-tab .card-header { background:#FFF!important; }
.tab-servicios .nav-link { border-radius:0!important; font-weight:600!important; text-transform:uppercase!important; font-size:.85rem!important; padding:.55rem 1rem!important; color:#888!important; background:#f2f2f2; }
.tab-servicios .nav-item { flex:1 1 0; }
.tab-servicios .nav-link { font-size: 1.2rem !important;}
@media (max-width:576px){
    .tab-servicios .nav-link { font-size: 1rem !important;}
}
.tab-servicios .nav-link .small { font-size: .72rem !important; }
.tab-servicios .nav-link.active { color:#fff!important; background-color:#1C76B0!important; border-color:#1C76B0!important; }
.tab-servicios .nav-link.active i { color:#fff!important; }
.barra-segmentos { display:flex; border-radius:.5rem; overflow:hidden; font-weight:600; text-align:center; }
.segmento { flex:1; padding:.45rem; }
.s1 { background:#ffa726; }
.s2 { background:#fff176; }
.s3 { background:#e0e0e0; }
.bootstrap-select .dropdown-toggle.bs-placeholder[data-id="tipoVehiculoList"] .filter-option-inner-inner {color:#000 !important;}

/* LOGIN / IDENTITY (SOLO pantallas de autenticación) */
.login-box{width:min(520px,92vw)!important;}
.login-box .card-body{padding:1.75rem!important;}
.login-box .login-box-msg{margin-bottom:1.25rem;}
.login-box .form-control{height:44px;}
.login-box .input-group-text{min-width:44px;justify-content:center;}
.login-box .btn-login{height:44px;font-weight:600;}
.login-box .form-check{min-height:unset;}
.login-box .form-check-input{width:1.05rem;height:1.05rem;}
.login-box .form-check-label{line-height:1.2;}
#formResetPassword .invalid-feedback,#formForgotPassword .invalid-feedback,#account .invalid-feedback{text-align:left!important;}
#loginSummary,#forgotSummary,#resetSummary{text-align:left!important;}
#loginSummary ul,#forgotSummary ul,#resetSummary ul{margin:0;padding:0;list-style:none;}
#loginSummary li,#forgotSummary li,#resetSummary li{margin:0;padding-top:5px;text-align:center;font-weight:bold;font-size:1.05rem;}
#loginSummary li{font-size:1.1rem;}
#account .input-group .js-toggle-password,#formResetPassword .input-group .js-toggle-password{min-width:44px;display:flex;align-items:center;justify-content:center;cursor:pointer;}
#account .input-group .js-toggle-password i,#formResetPassword .input-group .js-toggle-password i{pointer-events:none;}
#loginSummary .input-group-text { width: 46px !important; color:var(--bs-secondary-color);}
#formForgotPassword .input-group-text { width: 46px !important; color: var(--bs-secondary-color);}
#formForgotPassword .form-floating > label { color: var(--bs-secondary-color);}
#formResetPassword .form-floating > label { color: var(--bs-secondary-color);}
#account .input-group-text { width: 46px !important; color: var(--bs-secondary-color);}
.campo-bloqueado { background-color: #e9ecef !important; color: #6c757d !important; cursor: not-allowed !important; }
.campo-bloqueado:focus { background-color: #e9ecef !important; box-shadow: none !important; border-color: #ced4da !important;}

.bootstrap-select > .dropdown-menu{ transform:none!important; inset:auto!important; top:100%!important; left:0!important; }

/* OPERACIONES SOLICITUD TRASLADOS */
.op-card{border-left:6px solid #0d6efd;border-radius:.5rem;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.05);}
.op-card .card-header{background:#eef3f9;border-bottom:1px solid #dce3ec;padding:.5rem .75rem;}
.op-card .card-body{background:#f8fafc;padding:.6rem .75rem;}
.op-header{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
.op-header-left{display:flex;flex-wrap:wrap;gap:6px;align-items:center;flex:1 1 auto;min-width:0;}
.op-header-right{margin-left:auto;}
.op-index{white-space:nowrap; font-size:1rem;}
.op-meta{color:#495057;}
.op-status{display:inline-block;font-weight:600;letter-spacing:.3px;padding:.35rem .7rem;font-size:.85rem;}
.op-route{display:flex;gap:8px;align-items:stretch;}
.op-box{border:1px solid #dce3ec;border-radius:.4rem;padding:.5rem .6rem;background:#fff;}
.op-box.origen{background:#eaf4ff;border-color:#b6d4fe;}
.op-box.destino{background:#f1f3f5;border-color:#ced4da;}
.op-box .badge{display:inline-block;width:auto;padding:.2rem .5rem;font-size:.75rem;}
.op-label{font-size:.85rem;font-weight:600;color:#495057;margin-bottom:2px;}
.op-line{display:flex;flex-direction:column;gap:2px;}
.op-location{font-weight:600;font-size:.95rem;}
.op-time-text{font-size:.85rem;color:#495057; display:inline;}
.op-arrow{display:flex;align-items:center;justify-content:center;color:#444;}
.op-arrow i{font-size:1.8rem;}
.op-arrow-down{display:none;}
.op-mercancia{background:#ffffff;border:1px solid #e5e7eb;border-radius:.4rem;padding:.45rem .6rem;font-size:.9rem;}
.op-mercancia b{color:#495057;}
.op-line .badge{display:inline-flex;align-items:center;width:auto;}

@media (max-width:767px){
.op-header{flex-direction:column;align-items:flex-start;}
.op-header-left{flex-direction:column;align-items:flex-start;}
.op-route{flex-direction:column;}
.op-arrow{display:none;}
.op-arrow-down{display:flex;justify-content:center;align-items:center;margin:4px 0;color:#444;}
.op-arrow-down i{font-size:1.3rem;}
.op-status{display:block;width:100%;text-align:center;font-size:.9rem;padding:.5rem;border-radius:.4rem;}
.op-header-right{width:100%;justify-content:center;}
.op-meta{display:block;width:100%;}
.op-line{flex-direction:column;}
.op-line .badge{width:auto;}
}

@media (min-width:768px){
.op-line{flex-direction:row;align-items:center;gap:6px;}
.op-header{flex-wrap:nowrap;}
.op-status{font-size:.95rem;}
.op-header-right{justify-content:flex-end;}
.op-header-left{flex-direction:row;align-items:center;}
.op-meta{display:inline;}
}

/* TABLERO DE SERVICIOS */
.unidad-card{border-radius:10px;padding:10px;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.08);display:flex;flex-direction:column;gap:6px;border-left:4px solid #ddd;transition:.15s;}
.unidad-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(0,0,0,.12);}
.unidad-header{display:flex;justify-content:space-between;align-items:center;}
.unidad{font-weight:700;font-size:14px;}
.tipo{font-size:12px;color:#666;}
.unidad-body{font-size:13px;color:#333;}
.unidad-body .small{font-size:12px;}
.estado-vencido{border-left-color:#000;background:#ffe5e5;}
.estado-critico{border-left-color:#dc3545;background:#fff5f5;}
.estado-urgente{border-left-color:#fd7e14;background:#fff7ed;}
.estado-proximo{border-left-color:#ffc107;background:#fffdf3;}
.estado-normal{border-left-color:#dee2e6;background:#fafafa;}
.toolbar-tablero{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;}
.filtro-box{background:#f5f5f5;border-radius:8px;padding:6px 10px;display:flex;align-items:center;gap:6px;}
.periodo-box{background:#e9f6fb;border-radius:8px;padding:6px 10px;display:flex;align-items:center;gap:6px;}
.kpi-mini{background:#f1f1f1;border-radius:6px;padding:6px 10px;font-size:14px;display:flex;gap:6px;align-items:center;}
.kpi-mini b{font-size:14px;}
.scroll-col{max-height:72vh;overflow-y:auto;padding-right:4px;}
.unidad-footer{margin-top:auto;text-align:right;}
.unidad-footer i{font-size:14px;color:#6c757d;}
.unidad-footer i:hover{color:#000;}

/* REPORTE FALLAS */
.servicio-header-productos{margin-left:auto;}
@media (max-width:768px){.servicio-header-productos{width:100%;margin-top:.5rem;}}
@media (min-width:769px){.servicio-header-productos{width:auto;margin-top:0;}}

/* Dashboard Factura */
.dashboard-card{}
.dashboard-separator{border-color:#e5e7eb!important;}
.dashboard-item{min-width:140px;flex:1;}
.dashboard-item-total{background-color:#2a9d4e;min-width:190px;flex-shrink:0;}
.dashboard-title{font-size:1rem;}
.dashboard-title-total{font-size:.95rem;}
.dashboard-value{font-size:1.25rem;line-height:1;}
.dashboard-value-total{font-size:1.4rem;}
.dashboard-subvalue{font-size:.95rem;}
.dashboard-currency{font-size:.9rem;opacity:.8;}
.dashboard-badge{background-color:#ef4444;font-size:.7rem;padding:2px 6px;}
.dashboard-chart{height:38px;}
.dashboard-bar{width:4px;border-radius:2px;}
.dashboard-bar-1{height:35%;background-color:#f59e0b;}
.dashboard-bar-2{height:55%;background-color:#3b82f6;}
.dashboard-bar-3{height:100%;background-color:#3b82f6;}
.dashboard-bar-4{height:40%;background-color:#f59e0b;}
.dashboard-bar-5{height:75%;background-color:#ef4444;}
.dashboard-bar-6{height:50%;background-color:#3b82f6;}
.dashboard-bar-7{height:85%;background-color:#3b82f6;}
.dashboard-bar-8{height:30%;background-color:#f59e0b;}
.dashboard-card-disabled{overflow:hidden;position:relative;}
.dashboard-card-disabled .card-body{filter:grayscale(.15);opacity:.55;}
.dashboard-disabled-overlay{position:absolute;inset:0;background:rgba(255,255,255,.35);backdrop-filter:blur(1px);display:flex;align-items:center;justify-content:center;padding:1rem;z-index:2;}
.dashboard-disabled-message{
    background:#fff3cd;
    border:1px solid #d39e00;
    color:#856404;
    border-radius:.5rem;
    padding:.75rem 1rem;
    font-weight:600;
    text-align:center;
    box-shadow:0 2px 10px rgba(0,0,0,.08);
}
@media(max-width:991.98px){
    .dashboard-item-total{flex:0 0 100%;max-width:100%;}
    .dashboard-subvalue{font-size:.8rem;line-height:1.1;}
}
@media(max-width:768px){
    .dashboard-por{display:none;}
}

/* Dashboard movimientos adicional */
.mb-dashboard .dashboard-item{ min-width:200px;}
.mb-dashboard .dashboard-value, .mb-dashboard .dashboard-value-total{ white-space:nowrap; overflow:hidden; text-overflow:ellipsis;}
.mb-dashboard .dashboard-subvalue{ font-size:.75rem;}

/* Proyectos */
.proyecto-dashboard { background:linear-gradient(180deg,#f4f9ff 0%,#eaf4ff 100%) !important; border:1px solid #c9ddf5 !important; border-radius:10px !important; transition:all .18s ease; box-shadow:0 1px 2px rgba(0,0,0,.03); }
.proyecto-dashboard:hover { transform:translateY(-1px); box-shadow:0 6px 14px rgba(37,99,235,.08); border-color:#9fc5f8 !important; }
.proyecto-dashboard i { font-size:1.45rem; color:#1d6fb8; }
.proyecto-dashboard .me-2 { width:42px; height:42px; min-width:42px; border-radius:10px; background:rgba(255,255,255,.7); display:flex; align-items:center; justify-content:center; box-shadow:inset 0 0 0 1px rgba(255,255,255,.7); }
.proyecto-dashboard .small { font-size:.78rem; color:#5f6b7a !important; line-height:1.1; margin-bottom:3px; }
.proyecto-dashboard .fw-bold { font-size:1rem; line-height:1.15; color:#111827; word-break:break-word; }

/* Botones Mecanicos */
.card-sistema { border-radius:8px; overflow:hidden; transition:all .2s ease; }
.card-sistema:hover { transform:translateY(-3px); box-shadow:0 12px 28px rgba(0,0,0,.08); }
.card-sistema .card-body { display:flex; padding:0; align-items:stretch; }
.contenido-sistema { display:flex; align-items:center; gap:12px; padding:16px; flex:1; }
.icono-sistema { width:52px; height:52px; border-radius:50%; background:#eef6fb; color:#1862DF; font-size:22px; border:1px solid #1862DF; box-shadow:0 6px 14px rgba(13,110,253,.12); }
.titulo-sistema { font-weight:600; font-size:1.05rem; color:#1f2937; }
.subtitulo-sistema { font-size:.85rem; color:#6b7280; }
.btn-sistema-lateral { display:flex; align-items:center; justify-content:center; padding:0 20px; background: linear-gradient(135deg, #2A85C7, #1C76B0); color:#fff; text-decoration:none; font-weight:500; border-left:1px solid rgba(0,0,0,.1); border-top-right-radius:8px; border-bottom-right-radius:8px; }
.btn-sistema-lateral:hover { background: linear-gradient(135deg, #1C76B0, #155D8A); color:#fff; }
.contenido-btn { display:flex; align-items:center; gap:10px; }
.icono-btn { font-size:.85rem; }
.flecha-btn { font-size:.8rem; }
@media (max-width: 768px) { .card-sistema .card-body { flex-direction:column; } }
@media (max-width: 768px) { .btn-sistema-lateral { width:100%; min-width:100%; border-left:none; border-top:1px solid rgba(0,0,0,.1); border-radius:0 0 8px 8px; padding:12px; } }
@media (max-width: 768px) { .contenido-sistema { padding:14px; } }


/* ACORDEONES PROYECTO */
.accordion-item { border-radius:10px; overflow:hidden; border:1px solid #dbe2ea; transition:all .22s ease; background:#fff; }
.accordion-button { background:#f3f4f6; padding:7px 12px !important; box-shadow:none !important; transition:all .22s ease; }
.accordion-button:not(.collapsed) { background:#eef5ff; color:#0f172a; }
.accordion-button:focus { box-shadow:none; border:none; }
.accordion-button::after { width:16px; height:16px; background-size:16px; transition:all .22s ease; }
.accordion-body { background:#f8fbff; border-top:1px solid #d6e4f5; padding:14px; }
.accordion-item:hover { border-color:#dbe2ea; box-shadow:0 8px 20px rgba(0,0,0,.06); transform:translateY(-1px); }
.accordion-item:hover .accordion-button { background:#f0f7ff; }
.accordion-item:has(.accordion-button:not(.collapsed)) { border-color:#dbe2ea; box-shadow:0 8px 20px rgba(0,0,0,.06); }
.accordion-item:has(.accordion-button:not(.collapsed)) .accordion-button { background:linear-gradient(to right,#e8f1ff,#dbeafe); }
.accordion-item:has(.accordion-button:not(.collapsed)) .accordion-button::after { transform:rotate(-180deg) scale(1.08); filter:hue-rotate(190deg) saturate(2); }
.accordion .badge { font-size:.72rem; }
.accordion .small { font-size:.82rem; }
.accordion .fw-bold.fs-5 { font-size:1rem !important; }
.accordion-body .border { border-color:#dbe7f5 !important; }
.accordion-body .bg-white { transition:all .2s ease; }
.accordion-body .bg-white:hover { transform:translateY(-1px); border-color:#93c5fd !important; box-shadow:0 6px 16px rgba(37,99,235,.08); }
.detalle-chip { background:#fff; border:1px solid #dbe4ef; border-radius:8px; padding:8px 10px; height:100%; transition:all .18s ease; }
.detalle-chip:hover { border-color:#93c5fd; background:#fcfdff; }
.detalle-chip-label { font-size:.72rem; color:#64748b; line-height:1; margin-bottom:4px; }
.detalle-chip-value { font-size:.92rem; font-weight:600; color:#0f172a; line-height:1.15; word-break:break-word; }
.accordion-body { padding:10px !important; }
.accordion-body .row { --bs-gutter-x:.55rem; --bs-gutter-y:.55rem; }

/* PAGOS */
.detalle-dashboard { transition:all .2s ease; }
.detalle-dashboard:hover { transform:translateY(-2px); box-shadow:0 8px 18px rgba(0,0,0,.06); }
.detalle-chip { background:#f8f9fa; border:1px solid #dee2e6; border-radius:8px; padding:.65rem; height:100%; }
.detalle-chip-label { font-size:.72rem; color:#6c757d; line-height:1; margin-bottom:.35rem; }
.detalle-chip-value { font-weight:600; line-height:1.15; word-break:break-word; }
.uuid-code { font-size:.78rem; background:#f8f9fa; border:1px solid #dee2e6; border-radius:6px; padding:.2rem .45rem; display:inline-block; word-break:break-all; }

