:root{--sena-green:#39a900;--sena-green-hover:#2e8700;--sena-dark:#00324d;--sena-dark-hover:#002235;--sena-gray-bg:#f8f9fa;--sena-border:#e9ecef}body{color:#212529;background-color:#fff;font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;overflow-x:hidden}.bg-sena{background-color:var(--sena-green)!important}.bg-sena-subtle{background-color:#39a9001f!important}.text-sena{color:var(--sena-green)!important}.bg-sena-dark{background-color:var(--sena-dark)!important}.bg-sena-dark-subtle{background-color:#00324d1a!important}.text-sena-dark{color:var(--sena-dark)!important}.btn-sena{background-color:var(--sena-green);border:1px solid var(--sena-green);font-weight:600;transition:all .2s;color:#fff!important}.btn-sena:hover,.btn-sena:focus{background-color:var(--sena-green-hover);border-color:var(--sena-green-hover);box-shadow:0 4px 10px #39a90040;color:#fff!important}.btn-sena-dark{background-color:var(--sena-dark);border:1px solid var(--sena-dark);font-weight:600;transition:all .2s;color:#fff!important}.btn-sena-dark:hover,.btn-sena-dark:focus{background-color:var(--sena-dark-hover);border-color:var(--sena-dark-hover);color:#fff!important}.navbar{transition:all .3s}.navbar .nav-link{color:#495057;border-radius:.5rem;font-size:.925rem;font-weight:500;transition:all .2s;position:relative;padding:.5rem 1rem!important}.navbar .nav-link:hover{color:var(--sena-dark);background-color:#00324d0f}.navbar .nav-link.active{position:relative;color:var(--sena-dark)!important;background-color:#39a9001f!important;font-weight:700!important}.navbar .nav-link.active:after{content:"";background-color:var(--sena-green);border-radius:3px;height:3px;position:absolute;bottom:2px;left:12%;right:12%}.hero-section{background-color:var(--sena-dark);color:#fff;background-image:linear-gradient(90deg,#00324ded 0%,#00324dd6 55%,#00324da6 100%),url(/images/cefa.jpg);background-position:50%;background-repeat:no-repeat;background-size:cover;position:relative}.hero-fullscreen{flex-direction:column;justify-content:space-between;min-height:calc(100vh - 74px);display:flex}@keyframes bounceSlow{0%,to{transform:translateY(0)}50%{transform:translateY(5px)}}.bounce-scroll{animation:2s ease-in-out infinite bounceSlow}.card-sena{border:1px solid var(--sena-border);border-radius:.75rem;transition:transform .2s,box-shadow .2s}.card-sena:hover{border-color:#ced4da;transform:translateY(-3px);box-shadow:0 .5rem 1.25rem #00000014!important}.section-scroll{scroll-margin-top:74px}@media (width>=768px){.border-start-md{border-left:1px solid #6c757d40!important}}.contenedor-nodos{max-width:1400px;margin:0 auto;padding:24px}.herramientas-nodos{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px;display:flex}.filtros-nodos{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.filtro-nodo{color:#475569;cursor:pointer;background:#f1f5f9;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:8px 16px;font-size:13.5px;font-weight:600;transition:all .2s;display:inline-flex}.filtro-nodo:hover{color:#1e293b;background:#e2e8f0}.filtro-nodo.activo{color:var(--sena-green,#39a900);background:#39a9001f;border-color:#39a9004d;font-weight:700}.numero-filtro{color:#475569;background:#fff;border-radius:999px;padding:2px 8px;font-size:12px;font-weight:700;box-shadow:0 1px 2px #0000000d}.filtro-nodo.activo .numero-filtro{background:var(--sena-green,#39a900);color:#fff}.buscador-nodo input{background:#fff;border:1px solid #cbd5e1;border-radius:12px;outline:none;min-width:260px;padding:9px 16px;font-size:14px;transition:all .2s}.buscador-nodo input:focus{border-color:var(--sena-green,#39a900);box-shadow:0 0 0 3px #39a90026}.tabla-nodos{width:100%;margin-top:20px}.tabla-contenedor{background:#fff;border:1px solid #e5e7eb;border-radius:16px;width:100%;overflow-x:auto;box-shadow:0 1px 3px #0000000a}.tabla-contenedor table{border-collapse:collapse;width:100%}.tabla-contenedor thead{background:#f8fafc}.tabla-contenedor th{text-align:left;color:#475569;white-space:nowrap;border-bottom:1px solid #e5e7eb;padding:16px 18px;font-size:13px;font-weight:700}.tabla-contenedor td{color:#334155;border-bottom:1px solid #f1f5f9;padding:17px 18px;font-size:14px}.tabla-contenedor tbody tr{transition:background .2s}.tabla-contenedor tbody tr:hover{background:#f8fafc}.device-uid{color:#4f46e5;font-weight:600}.ambiente-nodo{align-items:center;gap:8px;display:flex}.ambiente-nodo i{color:#6366f1}.badge-conectividad{border-radius:999px;align-items:center;gap:7px;padding:6px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge-conectividad.online{color:#166534;background:#dcfce7}.badge-conectividad.offline{color:#991b1b;background:#fee2e2}.badge-conectividad.unknown{color:#4b5563;background:#e5e7eb}.punto-estado{background:currentColor;border-radius:50%;width:7px;height:7px}.ultima-transmision{align-items:center;gap:8px;display:flex}.ultima-transmision i{color:#64748b}.sin-transmision{color:#94a3b8;font-style:italic}.tabla-vacia{text-align:center!important;padding:45px!important}.tabla-vacia i{color:#94a3b8;font-size:32px}.tabla-vacia p{color:#64748b;margin-top:10px}.btn-asignar{color:#4338ca;cursor:pointer;background:#e0e7ff;border:1px solid #c7d2fe;border-radius:8px;align-items:center;gap:6px;padding:6px 12px;font-size:12.5px;font-weight:600;transition:all .2s;display:inline-flex}.btn-asignar:hover{color:#fff;background:#4338ca;border-color:#4338ca}.alerta-exito{color:#15803d;background:#dcfce7;border:1px solid #bbf7d0;border-radius:12px;align-items:center;gap:10px;margin-bottom:20px;padding:12px 18px;font-size:14px;font-weight:600;display:flex}.encabezado-infraestructura{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.subtitulo-infra{color:#39a900;letter-spacing:1px;text-transform:uppercase;margin-bottom:4px;font-size:11.5px;font-weight:800}.titulo-infra{color:#0f172a;margin:0 0 4px;font-size:26px;font-weight:800}.desc-infra{color:#64748b;margin:0;font-size:13.5px}.btn-registrar-nodo{cursor:pointer;background:#00875a;border:none;border-radius:999px;align-items:center;gap:8px;padding:10px 20px;font-size:14px;font-weight:700;transition:all .2s;display:inline-flex;box-shadow:0 4px 12px #00875a33;color:#fff!important}.btn-registrar-nodo:hover{background:#00704a;box-shadow:0 6px 16px #00875a4d}.lista-nodos-cards{background:#fff;border:1px solid #e2e8f0;border-radius:20px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 1px 4px #00000008}.card-nodo-item{border-bottom:1px solid #f1f5f9;justify-content:space-between;align-items:center;padding:20px 24px;transition:background .2s;display:flex}.card-nodo-item:last-child{border-bottom:none}.card-nodo-item:hover{background:#f8fafc}.info-izquierda-nodo{align-items:center;gap:16px;display:flex}.icono-nodo-box{border-radius:16px;flex-shrink:0;justify-content:center;align-items:center;width:48px;height:48px;font-size:18px;display:flex}.icono-nodo-box.online{color:#166534;background:#dcfce7}.icono-nodo-box.offline{color:#94a3b8;background:#f1f5f9}.nombre-nodo-titulo{color:#1e293b;align-items:center;gap:10px;font-size:16px;font-weight:700;display:flex}.badge-estado-pill{border-radius:999px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;font-weight:700;display:inline-flex}.badge-estado-pill.online{color:#166534;background:#dcfce7}.badge-estado-pill.cambio{color:#92400e;background:#fef3c7}.badge-estado-pill.offline{color:#64748b;background:#f1f5f9}.datos-nodo-sub{color:#64748b;margin-top:4px;font-size:13px}.info-derecha-nodo{align-items:center;gap:24px;display:flex}.coordenada-box{text-align:right;gap:16px;display:flex}.coordenada-item small{color:#94a3b8;margin-bottom:2px;font-size:11px;display:block}.coordenada-item strong{color:#1e293b;font-size:14px;font-weight:700}.btn-editar-nodo-circle{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:50%;justify-content:center;align-items:center;width:42px;height:42px;transition:all .2s;display:flex}.btn-editar-nodo-circle:hover{color:#0f172a;background:#f1f5f9;border-color:#cbd5e1}.btn-registrar-cambio{color:#334155;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:12px;padding:8px 16px;font-size:13px;font-weight:700;transition:all .2s}.btn-registrar-cambio:hover{background:#f8fafc;border-color:#cbd5e1}.modal-custom-ref{padding:12px;border:none!important;border-radius:28px!important}.modal-custom-header{border:none;justify-content:space-between;align-items:flex-start;padding:24px 28px 12px;display:flex}.modal-custom-sub{color:#00875a;letter-spacing:1px;text-transform:uppercase;margin-bottom:4px;font-size:11px;font-weight:800}.modal-custom-title{color:#0f172a;margin:0;font-size:24px;font-weight:800}.btn-close-modal-circle{color:#475569;cursor:pointer;background:#fff;border:1px solid #e2e8f0;border-radius:14px;justify-content:center;align-items:center;width:40px;height:40px;transition:all .2s;display:flex}.btn-close-modal-circle:hover{background:#f1f5f9}.box-nodo-token-info{background:#f8fafc;border:1px solid #e2e8f0;border-radius:18px;justify-content:space-between;align-items:center;margin-bottom:20px;padding:16px 20px;display:flex}.badge-token-valido{color:#166534;background:#dcfce7;border-radius:999px;align-items:center;gap:6px;padding:4px 12px;font-size:12px;font-weight:700;display:inline-flex}.banner-info-blue{color:#1e40af;background:#eff6ff;border-radius:16px;align-items:center;gap:12px;margin-top:16px;padding:14px 18px;font-size:13.5px;font-weight:500;display:flex}.grid-comparacion-ubicacion{align-items:center;gap:16px;margin-bottom:20px;display:flex}.card-ubicacion-box{background:#fff;border:1px solid #e2e8f0;border-radius:18px;flex:1;padding:18px 20px}.card-ubicacion-box.nueva{background:#f0fdf4;border-color:#bbf7d0}.card-ubicacion-box small{letter-spacing:.8px;color:#64748b;text-transform:uppercase;margin-bottom:6px;font-size:10.5px;font-weight:800;display:block}.card-ubicacion-box.nueva small{color:#166534}.card-ubicacion-box h4{color:#0f172a;margin:0 0 4px;font-size:16px;font-weight:700}.card-ubicacion-box p{color:#64748b;margin:0;font-size:12px}.flecha-comparacion{color:#94a3b8;font-size:18px}.btn-descartar-modal{color:#475569;cursor:pointer;background:#f1f5f9;border:none;border-radius:14px;padding:10px 22px;font-weight:700;transition:all .2s}.btn-descartar-modal:hover{background:#e2e8f0}.btn-confirmar-modal{cursor:pointer;background:#00875a;border:none;border-radius:14px;padding:10px 22px;font-weight:700;transition:all .2s;box-shadow:0 4px 12px #00875a40;color:#fff!important}.btn-confirmar-modal:hover{background:#00704a}
