:root{--marca: #1b3159;--marca-clara: #2e5395;--marca-honda: #142442;--marca-tenue: #eef2fa;--acento: #f0b429;--azteca-rojo: #d61f26;--azteca-oro: #f4c81e;--fondo: #eef1f7;--panel: #ffffff;--borde: #e1e7f0;--linea: #eef1f7;--texto: #101728;--texto2: #45536b;--tenue: #78879f;--verde: #15803d;--amarillo: #b45309;--rojo: #be123c;--sombra1: 0 1px 2px rgba(16, 23, 40, .05);--sombra2: 0 6px 16px -4px rgba(16, 23, 40, .1), 0 2px 5px -2px rgba(16, 23, 40, .05);--radio: 10px}*{box-sizing:border-box}body{margin:0;font-family:Segoe UI,system-ui,-apple-system,Roboto,sans-serif;background:var(--fondo);color:var(--texto);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}.app{display:flex;min-height:100vh}.lienzo{flex:1;min-width:0;display:flex;flex-direction:column}.contenido{flex:1;padding:26px 30px 40px}.ancho{max-width:1560px;margin:0 auto}.app.sin-sesion .contenido{padding:0}.app.sin-sesion .ancho{max-width:none}.lateral{width:236px;flex-shrink:0;background:linear-gradient(180deg,#1e355f 0%,var(--marca-honda) 100%);color:#fff;display:flex;flex-direction:column;position:sticky;top:0;height:100vh;overflow-y:auto}.lateral .marca{display:flex;align-items:center;gap:11px;padding:18px 18px 16px;border-bottom:1px solid rgba(255,255,255,.09)}.logotipo{width:36px;height:36px;flex-shrink:0;display:grid;place-items:center;border-radius:9px;background:linear-gradient(145deg,var(--acento),#d99311);color:#3b2600;font-weight:800;font-size:17px;box-shadow:0 2px 6px #00000040}.marca-txt{display:flex;flex-direction:column;line-height:1.25;min-width:0}.marca-txt strong{font-size:13.5px;font-weight:600;letter-spacing:.2px}.marca-txt span{font-size:11px;color:#96afd8;letter-spacing:.3px}.menu{padding:14px 0 10px;flex:1}.grupo{margin:12px 20px 6px;font-size:10px;font-weight:700;letter-spacing:1px;text-transform:uppercase;color:#7d95c2}.grupo:first-child{margin-top:0}.lateral a{position:relative;display:flex;align-items:center;gap:11px;margin:1px 10px;padding:9px 12px;border-radius:8px;color:#cddaf0;text-decoration:none;font-size:13.5px;transition:background .12s,color .12s}.lateral a svg{width:17px;height:17px;flex-shrink:0;opacity:.82}.lateral a:hover{background:#ffffff14;color:#fff}.lateral a.router-link-exact-active{background:#ffffff21;color:#fff;font-weight:600}.lateral a.router-link-exact-active svg{opacity:1;color:var(--acento)}.lateral a.router-link-exact-active:before{content:"";position:absolute;left:-10px;top:7px;bottom:7px;width:3px;border-radius:0 3px 3px 0;background:var(--acento)}.lateral .pie{padding:12px 14px 14px;border-top:1px solid rgba(255,255,255,.09)}.lateral .usuario{display:flex;align-items:center;gap:10px;margin:0 0 10px;padding:6px;border-radius:8px;color:inherit}.lateral .usuario.router-link-exact-active:before{content:none}.avatar{width:32px;height:32px;flex-shrink:0;display:grid;place-items:center;border-radius:50%;background:#ffffff24;font-size:12px;font-weight:700;letter-spacing:.3px}.usuario-txt{display:flex;flex-direction:column;line-height:1.3;min-width:0}.usuario-txt strong{font-size:12.5px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.usuario-txt span{font-size:10.5px;color:#93abd6;text-transform:capitalize}button.salir{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:8px;background:#ffffff14;color:#cddaf0;border:1px solid rgba(255,255,255,.12);border-radius:8px;font-size:12.5px}button.salir:hover{background:#ffffff29;color:#fff}button.salir svg{width:15px;height:15px}.superior{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 30px;height:60px;background:#ffffffeb;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);border-bottom:1px solid var(--borde)}.cliente{display:flex;flex-direction:column;line-height:1.3;min-width:0}.cliente strong{font-size:13.5px;font-weight:600}.cliente span{font-size:11.5px;color:var(--tenue)}.contexto{display:flex;align-items:center;gap:14px;flex-shrink:0}.reloj{font-size:12px;color:var(--tenue);font-variant-numeric:tabular-nums;text-transform:capitalize;white-space:nowrap}.indicador{display:inline-flex;align-items:center;gap:7px;padding:5px 11px;border-radius:20px;font-size:12px;font-weight:600;text-decoration:none;border:1px solid var(--borde);background:#f7f9fc;color:var(--texto2);white-space:nowrap}.indicador:hover{border-color:#c6d4ea;background:#fff}.indicador .punto{width:7px;height:7px;border-radius:50%}.indicador.lleno .punto{background:var(--verde)}.indicador.hueco .punto{background:var(--amarillo)}h2{margin:0 0 3px;font-size:21px;font-weight:650;letter-spacing:-.2px}h3{font-weight:650;color:var(--texto2)}.sub{color:var(--tenue);margin:0 0 20px;font-size:13px;max-width:90ch}.barra{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra1);padding:12px 14px;margin-bottom:18px}.tarjetas{display:grid;grid-template-columns:repeat(auto-fit,minmax(168px,1fr));gap:14px;margin-bottom:22px}.tarjeta{display:flex;flex-direction:column-reverse;gap:5px;background:var(--panel);border:1px solid var(--borde);border-radius:12px;padding:15px 17px;box-shadow:var(--sombra1);transition:box-shadow .15s,transform .15s}.tarjeta:hover{box-shadow:var(--sombra2);transform:translateY(-1px)}.tarjeta .n{font-size:29px;font-weight:650;line-height:1.05;letter-spacing:-.5px;font-variant-numeric:tabular-nums}.tarjeta .r{font-size:11px;color:var(--tenue);font-weight:600;text-transform:uppercase;letter-spacing:.6px}.tarjeta.verde{border-left:3px solid var(--verde)}.tarjeta.amarillo{border-left:3px solid var(--amarillo)}.tarjeta.rojo{border-left:3px solid var(--rojo)}.tarjeta.verde .n{color:var(--verde)}.tarjeta.amarillo .n{color:var(--amarillo)}.tarjeta.rojo .n{color:var(--rojo)}.tarjeta.clicable{cursor:pointer}.tarjeta.clicable.activo{border-left-width:6px;box-shadow:var(--sombra2)}table{width:100%;border-collapse:separate;border-spacing:0;background:var(--panel);border:1px solid var(--borde);border-radius:12px;box-shadow:var(--sombra1)}thead tr:first-child th:first-child{border-top-left-radius:11px}thead tr:first-child th:last-child{border-top-right-radius:11px}tbody tr:last-child td:first-child{border-bottom-left-radius:11px}tbody tr:last-child td:last-child{border-bottom-right-radius:11px}th,td{text-align:left;padding:11px 14px;font-size:13px}th{position:sticky;top:60px;z-index:10;background:#f6f8fc;color:var(--texto2);font-weight:600;font-size:11px;text-transform:uppercase;letter-spacing:.5px;border-bottom:1px solid var(--borde);white-space:nowrap}td{border-bottom:1px solid var(--linea)}tbody tr:last-child td{border-bottom:none}tbody tr:nth-child(2n){background:#fbfcfe}tbody tr:hover{background:#f2f7ff}.chip{display:inline-block;padding:2px 9px;border-radius:20px;font-size:11.5px;font-weight:600;line-height:1.5;border:1px solid transparent}.chip.verde{background:#dcfce7;color:#14532d;border-color:#b7e9c9}.chip.amarillo{background:#fef3c7;color:#7c3a06;border-color:#f3d68d}.chip.rojo{background:#ffe4e6;color:#9f1239;border-color:#f7c0c8}.chip.gris{background:#eef1f7;color:#64748b;border-color:#e0e6f0}.faro{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:7px;font-size:14px;font-weight:700;line-height:1;border:1px solid transparent}.faro.verde{background:#16a34a;color:#fff;border-color:#15803d}.faro.amarillo{background:#f59e0b;color:#422006;border-color:#d97706}.faro.rojo{background:#e11d48;color:#fff;border-color:#9f1239;box-shadow:0 0 0 3px #e11d4833}.faro.pendiente{background:#eef1f7;color:#94a3b8;border-color:#dde4ef}.faro.ninguno{background:transparent;border-color:#e8edf6}.faro.tocable{cursor:pointer}.faro.tocable:hover{transform:translateY(-1px);filter:brightness(1.08)}th.col-faro,td.col-faro{text-align:center;padding:6px 5px}td.col-faro{position:relative}.confirma-inline{position:absolute;top:-6px;left:50%;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;z-index:30;white-space:nowrap;background:#fff;border:1px solid #dde4ef;border-radius:8px;box-shadow:0 4px 14px #141e3c2e}.confirma-inline .pregunta{font-size:11px;font-weight:600;color:var(--texto2)}.confirma-inline .botones{display:flex;gap:4px}.confirma-inline button{flex:none;width:30px;height:30px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:6px;border:1px solid transparent;font-size:14px;font-weight:700;line-height:1;cursor:pointer}.confirma-inline .ok{background:#16a34a;color:#fff;border-color:#15803d}.confirma-inline .no{background:#eef1f7;color:#64748b;border-color:#dde4ef}.confirma-inline button:disabled{opacity:.6;cursor:default}.bitacora td{padding:5px 12px}.bitacora .faro{width:22px;height:22px;font-size:12px;border-radius:6px}.bitacora .col-hora{font-variant-numeric:tabular-nums;font-weight:600;white-space:nowrap;width:1%}.bitacora .nowrap{white-space:nowrap}.bitacora .ic{font-style:normal;margin-right:6px}.bitacora .paso{color:var(--texto2)}.punto-mapa{display:inline-block;padding:1px 8px;border-radius:20px;font-size:11.5px;font-weight:600;white-space:nowrap;background:var(--marca-tenue);color:var(--marca-clara);border:1px solid #d4e0f5;text-decoration:none}.punto-mapa:hover{background:#fff;border-color:var(--marca-clara)}th.col-faros,td.col-faros{width:1%;white-space:nowrap}.faros{display:inline-flex;gap:4px}.fila-ruta{cursor:pointer}.fila-ruta:hover,.fila-ruta.abierta{background:var(--marca-tenue)}.fila-ruta.abierta td{border-bottom-color:transparent}th.col-abrir,td.col-abrir{width:1%;text-align:center}.flecha{color:var(--tenue);font-size:11px}.senal{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:7px;vertical-align:1px}.senal.verde{background:var(--verde)}.senal.amarillo{background:var(--amarillo)}.senal.rojo{background:var(--rojo)}.senal.pendiente{background:#cbd5e1}.fila-detalle>td{padding:0 12px 10px;background:var(--marca-tenue)}.detalle{width:100%;border-collapse:collapse}.detalle td{padding:4px 10px;border:0;border-top:1px solid #e3eaf6}.detalle tr:first-child td{border-top:0}.detalle .col-mapa{width:1%;text-align:right;white-space:nowrap}.cab-faro{display:flex;flex-direction:column;align-items:center;gap:4px}.nom-faro{display:inline-flex;align-items:center;gap:4px;text-transform:none;font-size:11px;font-weight:600;letter-spacing:0;color:var(--texto2);cursor:help}.nom-faro i{font-style:normal;font-size:12px}.cab-faro select{padding:2px 3px;font-size:10px;border-radius:6px;max-width:80px;color:var(--texto2);font-weight:600}.cab-faro select.activo{border-color:var(--marca-clara);background:var(--marca-tenue);color:var(--marca)}.estatus{position:relative;display:inline-flex;align-items:center;gap:6px;padding:3px 11px;border-radius:20px;font-size:11.5px;font-weight:600;line-height:1.55;white-space:nowrap;border:1px solid transparent;cursor:help}.estatus:focus{outline:none;box-shadow:0 0 0 3px #2e53952e}.estatus:before{content:"";flex:none;width:7px;height:7px;border-radius:50%;background:currentColor}.estatus.verde{background:#dcfce7;color:#14532d;border-color:#b7e9c9}.estatus.amarillo{background:#fef3c7;color:#7c3a06;border-color:#f3d68d}.estatus.rojo{background:#ffe4e6;color:#9f1239;border-color:#f7c0c8}.estatus.espera{background:#e7eeff;color:#1d4ed8;border-color:#c8d9fb}.estatus.gris{background:#eef1f7;color:#64748b;border-color:#e0e6f0}.pista{display:none;position:absolute;z-index:40;top:calc(100% + 9px);left:0;width:340px;padding:12px 14px;background:var(--marca-honda);color:#cbd8ee;border-radius:10px;box-shadow:var(--sombra2);font-size:12px;font-weight:400;line-height:1.6;white-space:normal;text-align:left;pointer-events:none}.estatus:hover .pista,.estatus:focus .pista{display:block}.pista strong{display:block;margin-bottom:9px;padding-bottom:9px;border-bottom:1px solid rgba(255,255,255,.12);color:#fff;font-weight:500}.pista .reng{display:block;font-variant-numeric:tabular-nums}.pista:after{content:"";position:absolute;bottom:100%;left:18px;border:6px solid transparent;border-bottom-color:var(--marca-honda)}tr.tiene-rojo td:first-child{box-shadow:inset 3px 0 0 var(--rojo)}tbody tr.tiene-rojo{background:#fff6f7}tbody tr.tiene-rojo:hover{background:#ffecef}button,.boton{display:inline-flex;align-items:center;gap:7px;background:var(--marca);color:#fff;border:1px solid transparent;border-radius:8px;padding:8px 15px;font-size:13px;font-weight:500;font-family:inherit;cursor:pointer;box-shadow:var(--sombra1);transition:background .12s,box-shadow .12s}button:hover,.boton:hover{background:var(--marca-clara)}button:disabled{background:#a3aec1;cursor:not-allowed;box-shadow:none}button.tenue{background:var(--panel);color:var(--texto2);border-color:var(--borde)}button.tenue:hover{background:#f6f8fc;border-color:#c6d4ea;color:var(--texto)}input,select{border:1px solid var(--borde);border-radius:8px;padding:8px 11px;font-size:13px;font-family:inherit;background:#fff;color:var(--texto)}input:focus,select:focus{outline:none;border-color:var(--marca-clara);box-shadow:0 0 0 3px #2e539524}input::placeholder{color:#9aa8bd}.aviso,.error,.ok{border-radius:var(--radio);padding:12px 15px;margin-bottom:18px;font-size:13px;box-shadow:var(--sombra1)}.aviso{background:#fffbeb;border:1px solid #f6e3ac;color:#713f12}.aviso.amarillo{border-left:4px solid var(--amarillo)}.error{background:#fff1f2;border:1px solid #f7c0c8;color:#9f1239}.ok{background:#f0fdf4;border:1px solid #b7e9c9;color:#14532d}.aviso a,.ok a,.error a{color:inherit;font-weight:600}.tenue-txt{color:var(--tenue);font-size:12px}.tenue-txt.mal{color:var(--rojo)}ol.canales{margin:0 0 12px;padding-left:20px}ol.canales li{margin-bottom:6px}.login{display:flex;align-items:center;justify-content:center;min-height:100vh;width:100%;padding:24px;background:radial-gradient(900px 520px at 12% 18%,rgba(214,31,38,.16),transparent 62%),radial-gradient(760px 460px at 88% 88%,rgba(244,200,30,.13),transparent 60%),linear-gradient(150deg,#16294a 0%,var(--marca-honda) 52%,#0a1526 100%)}.login .marco{display:grid;grid-template-columns:1.02fr 1fr;width:100%;max-width:880px;border-radius:18px;overflow:hidden;box-shadow:0 28px 70px -18px #0000008c,0 2px 8px #0003}.login .sello{padding:44px 40px;display:flex;flex-direction:column;align-items:flex-start;color:#dbe4f4;background:radial-gradient(560px 340px at 24% 6%,rgba(244,200,30,.12),transparent 66%),linear-gradient(165deg,#1d3358,#132444 58%,#0e1c35)}.login .sello img{width:148px;height:148px;margin:-6px 0 20px -8px;filter:drop-shadow(0 6px 18px rgba(0,0,0,.45))}.login .sello h1{margin:0;font-size:25px;font-weight:650;letter-spacing:-.02em;color:#fff}.login .razon{margin:5px 0 0;font-size:13px;color:#9fb2d2}.login .sello hr{width:54px;height:3px;margin:22px 0 20px;border:0;border-radius:2px;background:linear-gradient(90deg,var(--azteca-oro),var(--azteca-rojo))}.login .sello ul{margin:0;padding:0;list-style:none;display:grid;gap:13px}.login .sello li{display:flex;gap:11px;align-items:flex-start;font-size:13px;line-height:1.45}.login .sello li svg{width:17px;height:17px;flex:none;margin-top:1px;color:var(--azteca-oro)}.login .acceso{background:var(--panel);padding:48px 44px;display:flex;align-items:center}.login .acceso form{width:100%}.login .acceso h2{margin:0;font-size:20px;font-weight:650;color:var(--marca)}.login .pie-h2{margin:4px 0 26px;font-size:12.5px;color:var(--tenue)}.login label{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--texto2)}.login input{width:100%;margin-bottom:16px;padding:11px 13px}.login button{width:100%;padding:12px;justify-content:center;font-size:14px;font-weight:600;margin-top:6px}.login .error{margin-bottom:16px}.login .firma{margin:26px 0 0;padding-top:16px;border-top:1px solid var(--linea);font-size:11.5px;color:var(--tenue);text-align:center}@media(max-width:800px){.login{padding:0}.login .marco{grid-template-columns:1fr;max-width:460px;border-radius:16px}.login .sello{padding:30px 32px 26px;align-items:center;text-align:center}.login .sello img{width:104px;height:104px;margin:0 0 14px}.login .sello h1{font-size:21px}.login .sello hr{margin:16px auto 0}.login .sello ul{display:none}.login .acceso{padding:32px 32px 34px}}.cuenta{display:grid;gap:18px;align-items:start;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));max-width:860px}.caja{background:var(--panel);border:1px solid var(--borde);border-radius:var(--radio);box-shadow:var(--sombra1);padding:20px 22px}.caja h3{margin:0 0 16px;font-size:14px}.mapa-previa{height:260px;margin:14px 0 6px;border-radius:10px;border:1px solid var(--borde);z-index:1}.cuenta dl{display:grid;grid-template-columns:auto 1fr;gap:9px 18px;margin:0 0 16px;font-size:13px}.cuenta dt{color:var(--tenue)}.cuenta dd{margin:0;font-weight:600;word-break:break-word}.cuenta dd.rol{text-transform:capitalize}.cuenta dd.importe{font-size:20px;font-variant-numeric:tabular-nums}.cuenta .setear{margin-top:16px;padding-top:16px;border-top:1px solid var(--borde)}.cuenta label{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--texto2)}.cuenta input{width:100%;margin-bottom:14px;padding:10px 12px}.cuenta form .tenue-txt{margin:-9px 0 14px}.cuenta button{width:100%;justify-content:center;padding:11px;margin-top:4px}.caja.alta{margin-bottom:22px}.caja.alta .campos{display:grid;gap:14px 18px;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));margin-bottom:10px}.caja.alta label{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--texto2)}.caja.alta input,.caja.alta select{width:100%;padding:9px 11px}.caja.alta .con-boton{display:flex;gap:8px}.caja.alta .con-boton button{flex:none}.caja.alta>form>button{margin-top:12px}.clave{display:inline-block;margin:0 2px;padding:3px 9px;border-radius:6px;background:#00000012;border:1px solid rgba(0,0,0,.1);font-family:ui-monospace,Menlo,Consolas,monospace;font-size:14px;font-weight:700;letter-spacing:.5px;-webkit-user-select:all;user-select:all}tr.apagado td{opacity:.55}td.acciones{white-space:nowrap;text-align:right}td.acciones button{padding:5px 10px;font-size:12px;margin-left:6px}@media(max-width:1000px){.lateral{width:62px}.lateral .marca{justify-content:center;padding:18px 0 16px}.marca-txt,.grupo,.lateral a span,.usuario-txt,button.salir span{display:none}.lateral a{justify-content:center;padding:10px 0}.lateral a.router-link-exact-active:before{left:-10px}.usuario{justify-content:center}.contenido{padding:20px 16px 32px}.superior{padding:0 16px}.cliente span{display:none}}
