:root{--sidebar-bg: #111f17;--sidebar-hover: #1a3327;--sidebar-active: #1e4730;--sidebar-active-accent: #27ae60;--sidebar-width: 240px;--top-nav-height: 64px;--primary: #27ae60;--primary-dark: #1e8449;--accent-orange: #e67e22;--top-nav-bg: #ffffff;--body-bg: #f0f4f2;--border: #dde8e3;--text: #1a2e22;--text-muted: #6c8278;--shadow-sm: 0 1px 3px rgba(0, 0, 0, .08);--shadow-md: 0 4px 16px rgba(0, 0, 0, .12);--spacing-xs: 4px;--spacing-sm: 8px;--spacing-md: 16px;--spacing-lg: 24px;--spacing-xl: 32px;--text-xs: 11px;--text-sm: 13px;--text-base: 14px;--text-md: 16px;--text-lg: 18px;--text-xl: 22px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{font-family:Segoe UI,-apple-system,BlinkMacSystemFont,Roboto,sans-serif;background-color:var(--body-bg);color:var(--text);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}a{text-decoration:none;color:inherit}button{cursor:pointer;border:none;outline:none;background:none;font-family:inherit;-webkit-tap-highlight-color:transparent}input,textarea,select{font-family:inherit;outline:none}img{max-width:100%;display:block}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#b0c4ba;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#8fa89e}body.dark{--sidebar-bg: #091510;--sidebar-hover: #112a1d;--sidebar-active: #163825;--top-nav-bg: #0f1d15;--body-bg: #0c1710;--border: #1e3327;--text: #ddeee3;--text-muted: #6d9a7c;--shadow-sm: 0 1px 4px rgba(0, 0, 0, .4);--shadow-md: 0 4px 20px rgba(0, 0, 0, .6)}body.dark .card,body.dark .kpi-card,body.dark .stats-card,body.dark .table-section,body.dark .filter-panel,body.dark .detail-panel,body.dark .detail-header,body.dark .main-area,body.dark .map-badge,body.dark .notif-panel,body.dark .user-menu,body.dark .btn-refresh,body.dark .modal{background:#162219!important;border-color:#1e3327;color:var(--text)}body.dark .main-tabs,body.dark .filter-bar,body.dark .alerts-table thead tr,body.dark .metrics-table thead tr,body.dark .data-table thead tr,body.dark .pagination,body.dark .steps-bar,body.dark .preview-header,body.dark .file-row,body.dark .db-header{background:#111d17!important;border-color:#1e3327}body.dark .drop-zone{background:#111d17;border-color:#263d2e}body.dark .drop-zone--over{border-color:var(--primary);background:#27ae600f}body.dark .status-box--success{background:#16a34a1a;border-color:#16a34a40}body.dark .status-box--error{background:#dc26261a;border-color:#dc262640}body.dark .status-box--loading{background:#162219;border-color:#1e3327}body.dark .map-overlay{background:#091510d1;color:var(--text-muted)}body.dark .map-overlay--error{color:#f87171}body.dark input,body.dark select,body.dark textarea{background:#1a2b20!important;border-color:#1e3327!important;color:var(--text)!important;color-scheme:dark}body.dark input::placeholder,body.dark select::placeholder,body.dark textarea::placeholder{color:#4a7360}body.dark input:focus,body.dark select:focus,body.dark textarea:focus{border-color:var(--primary)!important}body.dark .filter-input,body.dark .filter-select{background:#1a2b20!important;border-color:#1e3327!important;color:var(--text)!important}body.dark .alerts-table th,body.dark .metrics-table th,body.dark .data-table th{color:var(--text-muted);background:#111d17!important}body.dark .alerts-table td,body.dark .metrics-table td,body.dark .data-table td{border-bottom-color:#1a2f22;color:var(--text)!important}body.dark .alerts-table tbody tr:hover td,body.dark .metrics-table tbody tr:hover td,body.dark .data-table tbody tr:hover td{background:#1e3228!important;color:var(--text)!important}body.dark .alerts-table tbody tr:last-child td,body.dark .metrics-table tbody tr:last-child td,body.dark .data-table tbody tr:last-child td{border-bottom:none}body.dark .info-row,body.dark .rank-row,body.dark .risk-row{border-bottom-color:#1a2f22}body.dark .page-btn,body.dark .pg-btn{background:#162219;border-color:#1e3327;color:var(--text)}body.dark .page-btn:hover:not(:disabled),body.dark .pg-btn:hover:not(:disabled){background:#1c2e22}body.dark .page-btn.active,body.dark .page-btn.pg-btn--active,body.dark .pg-btn.active,body.dark .pg-btn.pg-btn--active{background:var(--primary);color:#fff;border-color:var(--primary)}body.dark .page-btn:disabled,body.dark .pg-btn:disabled{opacity:.35}body.dark .btn-reset{border-color:#1e3327;color:var(--text-muted)}body.dark .btn-reset:hover{color:var(--text)!important;background:#1c2e22!important}body.dark .btn-close-detail{border-color:#1e3327}body.dark .btn-close-detail:hover{background:#1c2e22}body.dark .progress-bar,body.dark .score-bar,body.dark .score-mini-bar,body.dark .desgaste-bar{background:#1e3327}body.dark .kpi-icon--blue{background:#3b82f626;color:#60a5fa}body.dark .kpi-icon--blue2{background:#0284c726;color:#38bdf8}body.dark .kpi-icon--green{background:#22c55e26;color:#4ade80}body.dark .kpi-icon--orange{background:#f9731626;color:#fb923c}body.dark .kpi-icon--red{background:#ef444426;color:#f87171}body.dark .kpi-icon--amber{background:#f59e0b26;color:#fbbf24}body.dark .kpi-icon--purple{background:#a855f726;color:#c084fc}body.dark .kpi-skeleton{background:linear-gradient(90deg,#1a2b20 25%,#243d2e,#1a2b20 75%)!important;background-size:200% 100%!important}body.dark .sev-badge.sev-critica{background:#be185d2e;color:#f472b6}body.dark .sev-badge.sev-alta{background:#dc26262e;color:#f87171}body.dark .sev-badge.sev-media{background:#d977062e;color:#fbbf24}body.dark .sev-badge.sev-baja{background:#16a34a2e;color:#4ade80}body.dark .estado-badge.estado-abierta{background:#2563eb26;color:#60a5fa;border-color:#2563eb4d}body.dark .estado-badge.estado-proceso{background:#c2410c26;color:#fb923c;border-color:#c2410c4d}body.dark .estado-badge.estado-cerrada{background:#6b728026;color:#9ca3af;border-color:#6b72804d}body.dark .score-badge.score-excelente{background:#16a34a2e;color:#4ade80}body.dark .score-badge.score-buena{background:#0596692e;color:#34d399}body.dark .score-badge.score-regular{background:#ca8a042e;color:#fbbf24}body.dark .score-badge.score-riesgosa{background:#c2410c2e;color:#fb923c}body.dark .score-badge.score-critica{background:#dc26262e;color:#f87171}body.dark .score-badge--sm.score-excelente{background:#16a34a2e;color:#4ade80}body.dark .score-badge--sm.score-buena{background:#0596692e;color:#34d399}body.dark .score-badge--sm.score-regular{background:#ca8a042e;color:#fbbf24}body.dark .score-badge--sm.score-riesgosa{background:#c2410c2e;color:#fb923c}body.dark .score-badge--sm.score-critica,body.dark .risk-nivel.nivel-alto{background:#dc26262e;color:#f87171}body.dark .risk-nivel.nivel-medio{background:#c2410c2e;color:#fb923c}body.dark .risk-nivel.nivel-bajo{background:#16a34a2e;color:#4ade80}body.dark .status-badge.status-online{background:#16a34a2e;color:#4ade80;border-color:#16a34a4d}body.dark .status-badge.status-offline{background:#6b72802e;color:#9ca3af;border-color:#6b72804d}body.dark .status-badge.status-move{background:#3b82f62e;color:#60a5fa;border-color:#3b82f64d}body.dark .status-badge.status-engine{background:#f973162e;color:#fb923c;border-color:#f973164d}body.dark .alert-card{background:#fbbf2412;border-color:#fbbf2433}body.dark .alert-sev.sev-alta{background:#dc26262e;color:#f87171}body.dark .alert-sev.sev-media{background:#d977062e;color:#fbbf24}body.dark .alert-sev.sev-baja{background:#16a34a2e;color:#4ade80}body.dark .btn-enviado{background:#16a34a2e;color:#4ade80;border-color:#16a34a4d}body.dark .desgaste-tabs{border-color:#1e3327}body.dark .desgaste-tab{background:#162219;color:var(--text-muted);border-color:#1e3327}body.dark .desgaste-tab:hover{background:#1c2e22;color:var(--text)}body.dark .desgaste-tab.active{background:var(--primary);color:#fff}body.dark .rank-num{background:#1a2b20;color:var(--text-muted)}body.dark .main-tabs{background:#162219}body.dark .main-tab{color:var(--text-muted)}body.dark .main-tab:hover{background:#1c2e22;color:var(--text)}body.dark .chip{background:#27ae601f;color:var(--text);border-color:#27ae6033}body.dark .record-chips .chip{color:var(--text)}body.dark .step-circle{background:#1a2b20;border-color:#1e3327;color:var(--text-muted)}body.dark .step-connector{background:#1e3327}body.dark .file-row__name{color:var(--text)}body.dark .file-row__size{color:var(--text-muted)}body.dark .file-row__icon{color:var(--primary)}body.dark .error-banner{background:#dc26261f;border-color:#dc262640;color:#f87171}body.dark .empty-state,body.dark .loading-state{color:var(--text-muted)}body.dark .error-list li,body.dark .error-list{color:#f87171}body.dark .db-collection-badge{background:#27ae6026;color:#4ade80;border-color:#27ae6040}body.dark .db-count{color:var(--text-muted)}body.dark .modal-overlay{background:#000000b8}body.dark .modal-icon{background:#f59e0b1f;color:#fbbf24}body.dark .modal-title,body.dark .modal-body{color:var(--text)}body.dark code{background:#1a2b20;color:#f87171}body.dark .db-filter-bar{background:#111d17!important;border-color:#1e3327}body.dark .db-filter-input,body.dark .db-filter-select{background:#1a2b20!important;border-color:#1e3327!important;color:var(--text)!important}body.dark .db-btn-clear{border-color:#1e3327;color:var(--text-muted)}body.dark .db-btn-clear:hover{background:#1c2e22!important;color:var(--text)}body.dark .help-panel{background:#162219;border-color:#1e3327}body.dark .help-panel-heading{color:var(--primary)}body.dark .help-panel-text{color:var(--text-muted)}body.dark .help-panel-close:hover{background:#1c2e22;color:var(--text)}body.dark .notif-panel,body.dark .user-menu{background:#162219;border-color:#1e3327}body.dark .panel-header{border-bottom-color:#1e3327}body.dark .panel-empty{color:#3a5c47}body.dark .menu-item{color:var(--text)}body.dark .menu-item svg{color:var(--text-muted)}body.dark .menu-item:hover{background:#1c2e22}body.dark .menu-item--danger{color:#f87171}body.dark .menu-item--danger svg{color:#f87171}body.dark .menu-item--danger:hover{background:#dc26261f}body.dark .menu-divider{background:#1e3327}body.dark ::-webkit-scrollbar-thumb{background:#2a4535}body.dark ::-webkit-scrollbar-thumb:hover{background:#3a5c47}body.dark .preview-tab-item{color:var(--text-muted);border-color:#1e3327}body.dark .preview-tab-item.active{color:var(--text)}body.dark .preview-tab-item.deselected{opacity:.45}body.dark .preview-tab-btn{color:inherit}body.dark .col-num{color:var(--text-muted)}.page{display:flex;flex-direction:column;height:100%}.page-header{flex-shrink:0;margin-bottom:var(--spacing-lg)}@media(max-width:767px){.page-header{margin-bottom:var(--spacing-md)}}.page-title{font-size:var(--text-xl);font-weight:700;color:var(--text);margin-bottom:4px}@media(max-width:767px){.page-title{font-size:var(--text-lg)}}.page-subtitle{font-size:var(--text-base);color:var(--text-muted)}.card{background:#fff;border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-sm)}@media(max-width:767px){.card{border-radius:12px}}.card-body{padding:var(--spacing-lg)}@media(max-width:767px){.card-body{padding:var(--spacing-md)}}.grid{display:grid;gap:var(--spacing-lg)}@media(max-width:767px){.grid{gap:var(--spacing-md)}}.grid--cols-2{grid-template-columns:repeat(2,1fr)}@media(max-width:600px){.grid--cols-2{grid-template-columns:1fr}}.grid--cols-3{grid-template-columns:repeat(3,1fr)}@media(max-width:1023px){.grid--cols-3{grid-template-columns:repeat(2,1fr)}}@media(max-width:600px){.grid--cols-3{grid-template-columns:1fr}}.grid--cols-4{grid-template-columns:repeat(4,1fr)}@media(max-width:1023px){.grid--cols-4{grid-template-columns:repeat(2,1fr)}}@media(max-width:480px){.grid--cols-4{grid-template-columns:1fr}}@media(max-width:767px){.hide-mobile{display:none!important}}@media(max-width:1023px){.hide-tablet{display:none!important}}.show-mobile-only{display:none!important}@media(max-width:767px){.show-mobile-only{display:block!important}}.veh-map-marker{position:absolute;display:flex;align-items:center;gap:0;border:0;background:transparent;transform:translate(-24px,-48px);transform-origin:24px 48px;cursor:grab;z-index:1;filter:drop-shadow(0 8px 16px rgba(15,23,42,.22));transition:transform .16s ease,filter .16s ease;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.veh-map-marker:hover{transform:translate(-24px,-52px) scale(1.04);filter:drop-shadow(0 12px 22px rgba(15,23,42,.26));z-index:5}.veh-map-marker svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}.veh-map-marker--dragging,.veh-map-marker--dragging:hover{cursor:grabbing;transform:translate(-24px,-52px) scale(1.06);filter:drop-shadow(0 16px 26px rgba(15,23,42,.3));z-index:10}.veh-map-marker--compact .veh-map-marker__card{display:none}.veh-map-marker__pin{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border:3px solid #ffffff;border-radius:999px;color:#fff;box-shadow:0 4px 12px #0f172a38;position:relative;z-index:2}.veh-map-marker__pin svg{width:21px;height:21px;stroke-width:2.3}.veh-map-marker__pin:after{content:"";position:absolute;left:50%;bottom:-10px;width:12px;height:12px;border-right:3px solid #ffffff;border-bottom:3px solid #ffffff;transform:translate(-50%) rotate(45deg);border-radius:0 0 4px}.veh-map-marker__card{min-width:128px;max-width:176px;margin-left:-8px;padding:7px 10px 7px 14px;display:flex;flex-direction:column;gap:4px;background:#fffffff5;border:1px solid rgba(226,232,240,.98);border-radius:8px;box-shadow:0 3px 10px #0f172a1f;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.veh-map-marker__label{display:block;max-width:148px;color:#17251d;font-size:12px;line-height:1.1;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:left}.veh-map-marker__icons{display:grid;grid-template-columns:repeat(6,minmax(14px,auto));align-items:center;gap:4px;min-height:16px}.veh-map-marker__mini{display:inline-flex;align-items:center;justify-content:center;gap:1px;min-width:14px;height:16px;color:#64748b;font-size:9px;font-weight:700;line-height:1}.veh-map-marker__mini svg{width:12px;height:12px;stroke-width:2.4}.veh-map-marker__mini small{font-size:8px;line-height:1}.veh-map-marker__mini--alert{color:#cbd5e1}.veh-map-marker__mini--alert small:empty{display:none}.veh-map-marker--moving .veh-map-marker__pin,.veh-map-marker--moving .veh-map-marker__pin:after{background:#0f9f6e}.veh-map-marker--moving .veh-map-marker__mini:first-child,.veh-map-marker--moving .veh-map-marker__mini:nth-child(3){color:#0f9f6e}.veh-map-marker--stopped .veh-map-marker__pin,.veh-map-marker--stopped .veh-map-marker__pin:after{background:#f59e0b}.veh-map-marker--stopped .veh-map-marker__mini:nth-child(2),.veh-map-marker--stopped .veh-map-marker__mini:nth-child(4){color:#d97706}.veh-map-marker--offline{opacity:.9}.veh-map-marker--offline .veh-map-marker__pin,.veh-map-marker--offline .veh-map-marker__pin:after{background:#64748b}.veh-map-marker--offline .veh-map-marker__card{background:#f8fafcf5}.veh-map-marker--alert .veh-map-marker__pin,.veh-map-marker--alert .veh-map-marker__pin:after{background:#ef4444}.veh-map-marker--alert .veh-map-marker__mini--alert{color:#ef4444}body.dark .veh-map-marker{filter:drop-shadow(0 10px 18px rgba(0,0,0,.42))}body.dark .veh-map-marker__card{background:#162219f5;border-color:#1e3327;box-shadow:0 4px 16px #00000059}body.dark .veh-map-marker__label{color:var(--text)}body.dark .veh-map-marker__mini{color:#7fa08d}body.dark .veh-map-marker__mini--alert{color:#3a5145}body.dark .veh-map-marker--alert .veh-map-marker__mini--alert{color:#f87171}
