:root{
  --font:-apple-system,BlinkMacSystemFont,"SF Pro Text","Figtree","Helvetica Neue",sans-serif;
  --accent:#0a84ff;--accent2:#0060df;--text:#1d1d1f;--muted:#86868b;--line:rgba(0,0,0,.09);
  --win:rgba(250,250,252,.92);--side:rgba(238,238,242,.75);--ok:#34c759;--bad:#ff3b30;--warn:#ff9f0a;
  --bar:40px;--dock:74px;--radius:12px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-font-smoothing:antialiased;}
[hidden]{display:none!important;}   /* el atributo hidden siempre oculta, aunque haya display:flex por clase */
html,body{height:100%;overflow:hidden;font-family:var(--font);color:var(--text);}
body{background:radial-gradient(130% 130% at 78% 5%,#8fd3ff 0%,#5b8def 32%,#6a5cff 64%,#312a7a 100%);
  background-attachment:fixed;user-select:none;cursor:default;}
button{font-family:inherit;cursor:default;border:none;background:none;}
input,select{font-family:inherit;}
.mi-r{font-family:'Material Icons Round';font-style:normal;font-size:calc(18px * var(--fs,1));line-height:1;vertical-align:middle;
  text-transform:none;letter-spacing:normal;font-variant-ligatures:normal;white-space:nowrap;}

/* menubar */
.menubar{position:fixed;top:0;left:0;right:0;height:var(--bar);z-index:9000;display:flex;align-items:stretch;
  gap:4px;padding:0 12px;font-size:calc(13px * var(--fs,1));font-weight:500;background:rgba(245,245,247,.72);
  backdrop-filter:blur(22px) saturate(180%);border-bottom:.5px solid rgba(0,0,0,.06);}
.menubar .brand{display:flex;align-items:center;gap:7px;font-weight:700;padding-right:10px;margin-right:4px;
  border-right:.5px solid var(--line);color:var(--text);white-space:nowrap;}
.mb-burger{display:none;align-items:center;justify-content:center;width:32px;border-radius:7px;color:#3a3a3c;}
.mb-burger .mi-r{font-size:calc(22px * var(--fs,1));}
.mb-burger:hover{background:rgba(0,0,0,.06);}
.menu-bg{display:none;}
.menubar .sp{flex:1;}
.menubar .st{display:flex;align-items:center;gap:14px;font-size:calc(12.5px * var(--fs,1));color:#3a3a3c;white-space:nowrap;}

/* centro de notificaciones (campanita + panel) */
/* indicador de actividad de red: ↑ TX, ↓ RX (titilan), rojo = sin conexión */
.netind{display:inline-flex;align-items:center;color:#b4b8bd;line-height:1;}
.netind .mi-r{font-size:calc(15px * var(--fs,1));line-height:1;transition:color .15s;}
.netind .net-up{margin-right:-4px;}
.netind .net-up.blink{animation:netUp .45s ease;}
.netind .net-dn.blink{animation:netDn .45s ease;}
@keyframes netUp{0%,55%{color:#f5a623;}100%{color:#b4b8bd;}}
@keyframes netDn{0%,55%{color:#34c759;}100%{color:#b4b8bd;}}
.netind.off{animation:netOff 1s ease-in-out infinite;}
.netind.off .mi-r{color:var(--bad)!important;}
@keyframes netOff{0%,100%{opacity:1;}50%{opacity:.35;}}
.bell{position:relative;display:grid;place-items:center;width:30px;height:26px;border-radius:7px;color:#3a3a3c;}
.bell:hover{background:rgba(0,0,0,.06);}
.bell .mi-r{font-size:calc(19px * var(--fs,1));}
.bell.has .mi-r{color:var(--accent);}
.bell-badge{position:absolute;top:-3px;right:-3px;min-width:15px;height:15px;padding:0 3px;border-radius:8px;
  background:var(--bad);color:#fff;font-size:calc(9px * var(--fs,1));font-weight:700;display:none;place-items:center;box-shadow:0 1px 2px rgba(0,0,0,.3);}
.notif-panel{position:fixed;z-index:9700;width:330px;max-height:72vh;display:flex;flex-direction:column;overflow:hidden;
  background:var(--win);backdrop-filter:blur(30px) saturate(180%);border:.5px solid rgba(0,0,0,.08);
  border-radius:12px;box-shadow:0 22px 50px -14px rgba(0,0,0,.45);}
.np-head{display:flex;align-items:center;justify-content:space-between;padding:11px 14px;font-weight:700;font-size:calc(14px * var(--fs,1));
  border-bottom:.5px solid var(--line);}
.np-clear{font-size:calc(12px * var(--fs,1));font-weight:600;color:var(--accent);}
.np-clear:hover{text-decoration:underline;}
.np-list{overflow:auto;}
.np-empty{padding:28px;text-align:center;color:var(--muted);font-size:calc(13px * var(--fs,1));}
.np-it{display:flex;gap:10px;padding:11px 14px;border-bottom:.5px solid var(--line);}
.np-it:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.np-it.unread{background:color-mix(in srgb,var(--accent) 10%,transparent);}
.np-ic{font-size:calc(20px * var(--fs,1));color:var(--accent);flex:none;margin-top:1px;}
/* notificación roja (ej. envío cancelado) + clickeable (abre cliente) */
.np-it.np-danger{background:color-mix(in srgb,var(--bad) 10%,transparent);border-left:3px solid var(--bad);}
.np-it.np-danger .np-ic{color:var(--bad);}
.np-it.np-danger .np-ti{color:var(--bad);}
.np-it.np-link{cursor:pointer;}
.np-tx{min-width:0;}
.np-ti{font-size:calc(13.5px * var(--fs,1));font-weight:600;}
.np-it.unread .np-ti::before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--accent);margin-right:6px;vertical-align:middle;}
.np-ms{font-size:calc(12.5px * var(--fs,1));color:#555;}
.np-fe{font-size:calc(11px * var(--fs,1));color:var(--muted);margin-top:2px;}

/* chat flotante (abajo a la derecha): usuarios activos / IA / soporte */
.chat-fab{position:fixed;right:20px;bottom:18px;z-index:9600;width:50px;height:50px;border-radius:50%;
  display:grid;place-items:center;color:#fff;background:var(--accent);
  box-shadow:0 10px 26px -6px color-mix(in srgb,var(--accent) 65%,#000);transition:transform .15s,box-shadow .15s;}
.chat-fab:hover{transform:translateY(-2px) scale(1.04);}
.chat-fab .mi-r{font-size:calc(24px * var(--fs,1));}
.chat-badge{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;
  display:none;place-items:center;font-size:calc(11px * var(--fs,1));font-weight:700;color:#fff;background:#ff3b30;border:2px solid var(--win);}
.chat-panel{position:fixed;right:20px;bottom:78px;z-index:9650;width:340px;height:min(70vh,540px);
  display:flex;flex-direction:column;overflow:hidden;background:var(--win);backdrop-filter:blur(30px) saturate(180%);
  border:.5px solid rgba(0,0,0,.08);border-radius:14px;box-shadow:0 24px 56px -14px rgba(0,0,0,.5);}
.chat-head{display:flex;align-items:center;gap:9px;padding:11px 12px;border-bottom:.5px solid var(--line);}
.chat-head .chat-ti{font-weight:700;font-size:calc(14px * var(--fs,1));flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-back,.chat-x{display:grid;place-items:center;width:28px;height:28px;border-radius:7px;color:#3a3a3c;flex:none;}
.chat-back:hover,.chat-x:hover{background:rgba(0,0,0,.07);}
.chat-back .mi-r,.chat-x .mi-r{font-size:calc(19px * var(--fs,1));}
.chat-body{overflow:auto;flex:1;}
.chat-sec{display:flex;align-items:center;gap:6px;padding:12px 14px 5px;font-size:calc(11px * var(--fs,1));font-weight:700;
  text-transform:uppercase;letter-spacing:.4px;color:var(--muted);}
.chat-cnt{background:color-mix(in srgb,var(--accent) 16%,transparent);color:var(--accent);
  border-radius:9px;padding:0 6px;font-size:calc(10px * var(--fs,1));}
.chat-it{display:flex;align-items:center;gap:10px;padding:8px 14px;cursor:pointer;}
.chat-it:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);}
.chat-meta{min-width:0;flex:1;}
.chat-nm{font-size:calc(13.5px * var(--fs,1));font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-sb{font-size:calc(12px * var(--fs,1));color:#666;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.chat-dot{min-width:18px;height:18px;padding:0 5px;border-radius:9px;display:grid;place-items:center;
  font-size:calc(11px * var(--fs,1));font-weight:700;color:#fff;background:var(--accent);flex:none;}
.chat-ico{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;flex:none;color:#fff;}
.chat-ico .mi-r{font-size:calc(21px * var(--fs,1));}
.chat-ico.sm{width:30px;height:30px;}.chat-ico.sm .mi-r{font-size:calc(17px * var(--fs,1));}
.chat-ico.ia{background:linear-gradient(135deg,#7b5cff,#b06bff);}
.chat-ico.soporte{background:linear-gradient(135deg,#0a84ff,#34c0ff);}
.chat-vacio{padding:14px;text-align:center;color:var(--muted);font-size:calc(12.5px * var(--fs,1));}
.chat-msgs{flex:1;overflow:auto;padding:12px;display:flex;flex-direction:column;gap:7px;background:rgba(0,0,0,.02);}
.chat-msg{max-width:80%;padding:7px 11px 16px;border-radius:13px;font-size:calc(13px * var(--fs,1));line-height:1.35;position:relative;word-wrap:break-word;}
.chat-msg.them{align-self:flex-start;background:#fff;border:.5px solid var(--line);border-bottom-left-radius:4px;}
.chat-msg.me{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px;}
.chat-hr{position:absolute;right:9px;bottom:3px;font-size:calc(9.5px * var(--fs,1));opacity:.55;}
.chat-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px;padding-top:6px;}
.chat-act{border:.5px solid var(--accent);background:#fff;color:var(--accent);border-radius:8px;padding:5px 8px;font-size:calc(12px * var(--fs,1));font-weight:700;cursor:pointer;line-height:1.2;}
.chat-act:hover{background:var(--accent);color:#fff;}
.chat-input{display:flex;align-items:flex-end;gap:7px;padding:9px 10px;border-top:.5px solid var(--line);}
.chat-ta{flex:1;resize:none;max-height:90px;border:.5px solid var(--line);border-radius:10px;padding:8px 10px;
  font:inherit;font-size:calc(13px * var(--fs,1));background:var(--inp,#fff);outline:none;}
.chat-ta:focus{border-color:var(--accent);}
.chat-send{width:36px;height:36px;border-radius:50%;display:grid;place-items:center;flex:none;color:#fff;background:var(--accent);}
.chat-send .mi-r{font-size:calc(19px * var(--fs,1));}
.chat-send:hover{filter:brightness(1.07);}

/* menú superior (lanzador) */
.menu{display:flex;align-items:stretch;}
.mgrp{position:relative;display:flex;align-items:center;}
.mbtn{display:flex;align-items:center;gap:5px;padding:0 10px;height:28px;font-size:calc(13px * var(--fs,1));font-weight:600;
  color:#2a2a2c;border-radius:8px;white-space:nowrap;}
.mbtn .mi-r{font-size:calc(18px * var(--fs,1));}.mbtn .car{font-size:calc(16px * var(--fs,1));opacity:.45;margin-left:-3px;}
.mbtn:hover{background:rgba(0,0,0,.06);}
.mgrp.open .mbtn{background:var(--accent);color:#fff;}
.mdrop{position:absolute;top:calc(100% + 4px);left:0;min-width:215px;max-height:72vh;overflow:auto;
  background:var(--win);backdrop-filter:blur(30px) saturate(180%);border:.5px solid rgba(0,0,0,.08);
  border-radius:10px;box-shadow:0 18px 44px -12px rgba(0,0,0,.4);padding:6px;display:none;z-index:9500;}
.mgrp.open .mdrop{display:block;}
.mitem{display:flex;align-items:center;justify-content:space-between;gap:10px;width:100%;text-align:left;
  padding:8px 10px;border-radius:7px;font-size:calc(13px * var(--fs,1));color:var(--text);}
.mitem:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.mitem.dis{color:var(--muted);}
.mitem .soon{font-size:calc(10px * var(--fs,1));font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);
  background:rgba(0,0,0,.06);padding:2px 6px;border-radius:20px;}

#desktop{position:fixed;inset:var(--bar) 0 var(--dock) 0;}

/* dock */
.dock{position:fixed;bottom:8px;left:50%;transform:translateX(-50%);z-index:9000;display:flex;
  align-items:flex-end;gap:7px;padding:7px 9px;border-radius:20px;background:rgba(30,30,34,.5);
  backdrop-filter:blur(26px) saturate(180%);border:.5px solid rgba(255,255,255,.16);box-shadow:0 12px 40px rgba(0,0,0,.35);}
.dock .it{width:50px;height:50px;border-radius:13px;display:grid;place-items:center;font-size:calc(24px * var(--fs,1));position:relative;
  background:linear-gradient(160deg,#fff,#e7ebf0);box-shadow:inset 0 1px 1px rgba(255,255,255,.7),0 2px 5px rgba(0,0,0,.2);
  transition:transform .15s,margin .15s;}
.dock .it:hover{transform:translateY(-12px) scale(1.16);margin:0 7px;}
.dock .it .tip{position:absolute;bottom:60px;left:50%;transform:translateX(-50%);white-space:nowrap;
  background:rgba(40,40,44,.92);color:#fff;font-size:calc(12px * var(--fs,1));padding:4px 9px;border-radius:7px;opacity:0;transition:.12s;}
.dock .it:hover .tip{opacity:1;}
.dock .it .run{position:absolute;bottom:-4px;width:4px;height:4px;border-radius:50%;background:#444;opacity:.7;}
.dock .it.active{outline:2px solid rgba(255,255,255,.7);}
.dock .it.active .run{background:var(--accent);opacity:1;}
.dock:empty{display:none;}
.dock .it .badge{position:absolute;top:-4px;right:-4px;min-width:17px;height:17px;padding:0 4px;border-radius:9px;
  background:var(--accent);color:#fff;font-size:calc(10px * var(--fs,1));font-weight:700;display:none;place-items:center;
  box-shadow:0 1px 3px rgba(0,0,0,.35);}

/* popup de ventanas abiertas (cuando hay varias del mismo tipo) */
.dock-pop{position:fixed;transform:translateX(-50%);z-index:9600;min-width:200px;max-height:50vh;overflow:auto;
  background:var(--win);backdrop-filter:blur(30px) saturate(180%);border:.5px solid rgba(0,0,0,.08);
  border-radius:10px;box-shadow:0 18px 44px -12px rgba(0,0,0,.45);padding:6px;}
.dp-it{display:flex;align-items:center;justify-content:space-between;gap:8px;border-radius:7px;padding:7px 9px;}
.dp-it:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.dp-name{flex:1;font-size:calc(13px * var(--fs,1));color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.dp-x{font-size:calc(16px * var(--fs,1));color:var(--muted);border-radius:5px;padding:1px;}
.dp-x:hover{color:var(--bad);background:color-mix(in srgb,var(--bad) 14%,transparent);}

/* título de ventana en modo edición (renombrar) */
.tbar .ti.editing{pointer-events:auto;user-select:text;background:#fff;border-radius:6px;padding:1px 8px;
  box-shadow:0 0 0 2px var(--accent);outline:none;}

/* ---- tabs (reutilizable) ---- */
.tabs{display:flex;gap:4px;border-bottom:.5px solid var(--line);margin-bottom:16px;}
.tab{padding:8px 14px;font-size:calc(13.5px * var(--fs,1));font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;}
.tab:hover{color:var(--text);}
.tab.on{color:var(--accent);border-bottom-color:var(--accent);}
.tab-panel[hidden]{display:none;}

/* ---- módulo Configuración ---- */
.cfg{padding:22px 26px;}
.srv-tabla input.srv-nom{max-width:360px;}
.srv-del{color:var(--muted);cursor:pointer;}
.srv-del:hover{color:var(--bad);}
.cfg-top{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;margin-bottom:8px;}
.cfg-foto,.cfg-qr{display:flex;flex-direction:column;gap:10px;}
.cfg-foto-label,.cfg-qr-label{font-size:calc(12px * var(--fs,1));color:var(--muted);font-weight:600;}
.cfg-foto-box{width:100%;height:190px;border:1px dashed #c7c7cc;border-radius:12px;overflow:hidden;
  display:grid;place-items:center;background:#fafafb;}
.cfg-foto-box img{max-width:100%;max-height:190px;display:none;}
.cfg-foto-empty{display:flex;flex-direction:column;align-items:center;gap:6px;color:var(--muted);font-size:calc(13px * var(--fs,1));}
.cfg-foto-empty .mi-r{font-size:calc(30px * var(--fs,1));}
.cfg-foto-acc{display:flex;gap:8px;flex-wrap:wrap;align-items:center;}
.fc-tools{display:flex;gap:4px;align-items:center;flex-wrap:wrap;}
.fc-tools .fc-asp{width:auto;min-width:118px;height:34px;padding:4px 8px;}
.fc-tools .fc-t{width:34px;height:34px;}
.cfg-qr{align-items:center;}
.cfg-qr .cfg-qr-label{align-self:flex-start;}
.cfg-qr-box{width:160px;height:160px;display:grid;place-items:center;background:#fff;border-radius:12px;
  border:.5px solid var(--line);padding:5px;}
.cfg-qr-box img,.cfg-qr-box canvas{width:150px !important;height:150px !important;}
.cfg-codigo{font-size:calc(24px * var(--fs,1));font-weight:700;letter-spacing:2px;color:var(--text);}
.cfg-paletas{display:flex;flex-wrap:wrap;gap:10px;margin:2px 0 10px;}
.pal{width:34px;height:34px;border-radius:9px;border:2px solid transparent;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.pal.on{box-shadow:0 0 0 2px #fff,0 0 0 4px var(--accent);}
.cfg-attr{display:grid;grid-template-columns:1fr 1fr;gap:0 24px;}
.cfg-attr .field:last-child{grid-column:1 / -1;}
.cfg-foot{display:flex;justify-content:center;padding-top:12px;margin-top:6px;border-top:.5px solid var(--line);}

/* nombre de usuario clickeable + módulo Mi perfil */
.mb-click{cursor:pointer;border-radius:6px;padding:2px 6px;}
.mb-click:hover{background:rgba(0,0,0,.08);}
.perfil{padding:22px 26px;}
.pf-foto{max-width:220px;margin:0 auto 6px;align-items:center;}
.pf-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 20px;}
.pf-hash{display:flex;align-items:center;gap:6px;margin-top:16px;padding-top:12px;border-top:.5px solid var(--line);
  font-size:calc(11.5px * var(--fs,1));font-weight:700;letter-spacing:.4px;color:var(--muted);text-transform:uppercase;}
.pf-hash .mi-r{font-size:calc(15px * var(--fs,1));}
.pf-hash code{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:600;color:var(--accent);text-transform:none;letter-spacing:0;
  background:color-mix(in srgb,var(--accent) 9%,transparent);padding:2px 7px;border-radius:6px;word-break:break-all;}
.pf-grid-3{grid-template-columns:1fr 1fr 1fr;}

/* menú de cuenta + bloqueo de sesión */
.user-menu{position:fixed;z-index:9700;min-width:190px;background:var(--win);backdrop-filter:blur(30px) saturate(180%);
  border:.5px solid rgba(0,0,0,.08);border-radius:10px;box-shadow:0 18px 44px -12px rgba(0,0,0,.45);padding:6px;}
.um-it{display:flex;align-items:center;gap:10px;padding:9px 11px;border-radius:7px;font-size:calc(13.5px * var(--fs,1));cursor:pointer;color:var(--text);}
.um-it:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.um-it .mi-r{font-size:calc(19px * var(--fs,1));color:var(--muted);}
.um-sep{height:.5px;background:var(--line);margin:6px 4px;}
.um-lbl{font-size:calc(11px * var(--fs,1));font-weight:700;text-transform:uppercase;letter-spacing:.3px;color:var(--muted);padding:4px 11px 2px;}
.um-flag{display:inline-flex;width:calc(22px * var(--fs,1));flex:0 0 auto;}
.um-flag svg{width:100%;height:auto;display:block;border-radius:3px;box-shadow:0 0 0 1px rgba(0,0,0,.12);}
/* menú contextual (click derecho) — reusa .um-it / .um-sep */
.ctx-menu{position:fixed;z-index:9850;min-width:184px;background:var(--win);backdrop-filter:blur(30px) saturate(180%);
  border:.5px solid rgba(0,0,0,.08);border-radius:10px;box-shadow:0 18px 44px -12px rgba(0,0,0,.45);padding:5px;
  animation:ctxIn .09s ease;}
@keyframes ctxIn{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
/* info flotante sobre el mapa de clientes */
.cli-mapinfo{position:absolute;top:10px;left:10px;z-index:500;background:var(--win);backdrop-filter:blur(10px);
  border:.5px solid var(--line);border-radius:8px;padding:6px 11px;font-size:calc(12.5px * var(--fs,1));font-weight:600;box-shadow:0 4px 14px rgba(0,0,0,.18);}

/* ---- alta de clientes (tabs General/Cuentas/Direcciones/Contactos) ---- */
.cli-alta{height:100%;display:flex;flex-direction:column;}
.cli-tabs{padding:12px 16px 0;margin:0;}
.cli-panels{flex:1;overflow:auto;padding:16px;}
.cli-foot{display:flex;justify-content:flex-end;gap:10px;padding:11px 16px;border-top:.5px solid var(--line);background:var(--win);}
.btn.danger{background:#e53935;color:#fff;}
.btn.danger:hover{filter:brightness(1.06);}
.cli-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px 16px;align-items:end;}
.cli-grid .cli-wide{grid-column:span 2;}
.cli-grid .cli-full{grid-column:1/-1;}
.cli-chk{display:flex;align-items:center;gap:8px;font-size:calc(13.5px * var(--fs,1));font-weight:500;padding-bottom:9px;cursor:pointer;user-select:none;}
.cli-chk input{width:17px;height:17px;accent-color:var(--accent);cursor:pointer;}
.cli-sub{display:flex;flex-direction:column;gap:14px;}
.cli-addbar{display:flex;align-items:flex-end;gap:12px;flex-wrap:wrap;}
.cli-empty{color:var(--muted);font-size:calc(13px * var(--fs,1));text-align:center;padding:22px;}
/* cuentas (una tarjeta por origen) */
.cli-acct-list{display:flex;flex-direction:column;gap:10px;}
.cli-acct{display:flex;align-items:flex-start;gap:14px;padding:12px 14px;border:.5px solid var(--line);border-radius:12px;background:color-mix(in srgb,var(--accent) 4%,transparent);}
.cli-acct-ic{width:92px;flex:none;display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center;padding-top:14px;}
.cli-acct-emoji{font-size:calc(30px * var(--fs,1));}
.cli-acct-logo{width:38px;height:38px;object-fit:contain;}
.cli-acct-svg{display:inline-flex;align-items:center;justify-content:center;}
.cli-acct-svg svg{width:56px!important;height:auto!important;max-height:38px;}
.cli-acct-nom{font-size:calc(12px * var(--fs,1));font-weight:700;color:var(--muted);}
.cli-acct-fields{flex:1;display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:10px 14px;}
.cli-inpwrap{display:flex;gap:6px;align-items:center;}
.cli-inpwrap .inp{flex:1;}
.cli-acct .cli-del{align-self:center;color:#e53935;flex:none;}
.cli-copy{flex:none;}
.cli-acct-st{flex:none;width:150px;display:flex;flex-direction:column;align-items:center;gap:6px;align-self:center;}
.cli-acct-estado{font-size:calc(12.5px * var(--fs,1));font-weight:700;}
.cli-acct-estado.on{color:#1a8a3b;}.cli-acct-estado.off{color:#c52a2a;}
.cli-acct-acc2{display:flex;gap:6px;}
.cli-acct-actions{flex:none;align-self:center;display:flex;gap:4px;}
.cli-acct-actions .cli-edit{color:var(--accent);}
/* direcciones (tabla con inputs en línea) */
.cli-dir td{padding:6px 8px;}
.cli-cell{height:32px;font-size:calc(12.5px * var(--fs,1));padding:4px 7px;}
.cli-hora.on{color:var(--ok);}
.cli-del{color:#e53935;}

/* ---- listado de Envíos ---- */
.env-filtros{padding:10px 14px 6px;}
/* align-items:start → las celdas cortas se alinean ARRIBA (sin el hueco que dejaba 'end' cuando el multiselect crece) */
.env-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 14px;align-items:start;}
.env-adv{grid-column:1/-1;display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 14px;align-items:start;
  border-top:.5px dashed var(--line);margin-top:6px;padding-top:10px;}
/* en los filtros, el multiselect no debe empujar la tabla: tope de altura + scroll si hay muchos chips */
.env-filtros .ms-control{max-height:72px;overflow-y:auto;}
.env-adv[hidden]{display:none;}
.env-acc{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-top:10px;}
.btn.ok{background:#1f9d57;color:#fff;}.btn.ok:hover{filter:brightness(1.07);}
.btn.warn{background:#f0951f;color:#fff;}.btn.warn:hover{filter:brightness(1.07);}
.env-toggle{margin-left:auto;}
.env-toggle.on{background:var(--accent);color:#fff;}
#bElim.on{outline:2px solid #e53935;}
/* tabla */
.env-tabla{min-width:1040px;}
.env-th{cursor:pointer;white-space:nowrap;user-select:none;}
.env-cbar{border-left:4px solid var(--c,transparent);overflow:visible;}
.env-qr{display:inline-block;color:#444;cursor:zoom-in;transition:transform .12s ease;transform-origin:left center;}
.env-qr .mi-r{font-size:calc(22px * var(--fs,1));}
.env-qr:hover{transform:scale(4);background:#fff;border-radius:4px;box-shadow:0 6px 20px rgba(0,0,0,.35);padding:2px;position:relative;z-index:50;}
.env-cli{cursor:pointer;color:var(--accent);font-weight:600;}
.env-cli:hover{text-decoration:underline;}
.env-estado{border:.5px solid var(--line);border-left:4px solid var(--c,#999);border-radius:6px;padding:4px 6px;
  font:inherit;font-size:calc(12.5px * var(--fs,1));background:var(--inp,#fff);max-width:170px;cursor:pointer;}
.env-estado:focus{outline:none;border-color:var(--accent);border-left-color:var(--c,#999);}

/* ---- ficha de Envío (tabs + panel lateral) ---- */
.efi{display:flex;gap:14px;height:100%;padding:14px;box-sizing:border-box;}
.efi-main{flex:1;min-width:0;display:flex;flex-direction:column;}
.efi-tabs{margin:0 0 12px;}
.efi-panels{flex:1;overflow:auto;}
.efi-side{width:340px;flex:none;overflow:auto;display:flex;flex-direction:column;gap:8px;}
.efi-card{background:var(--win,#fff);border:.5px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px;box-shadow:0 1px 3px rgba(0,0,0,.05);}
.efi-grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px 16px;margin-bottom:0;}
.efi-card .inp[readonly]{background:transparent;border:none;border-bottom:.5px solid var(--line);border-radius:0;padding:4px 2px;}
.efi-card label{color:var(--accent);}
.efi-qrline{display:flex;gap:18px;align-items:flex-start;}
.efi-qr{width:130px;height:130px;flex:none;display:grid;place-items:center;}
.efi-qr img,.efi-qr canvas{width:130px;height:130px;}
.efi-qrfields{flex:1;display:flex;flex-direction:column;gap:8px;}
.efi-itemsh{font-weight:700;text-align:center;color:var(--muted);margin-bottom:8px;}
.efi-dot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:7px;vertical-align:middle;}
.efi-addest,.efi-addobs{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:8px;}
.efi-addest[hidden]{display:none;}
.efi-addest .inp{max-width:230px;}
/* lateral */
.efi-map{height:340px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);}
.efi-geo{text-align:center;}
.efi-nogeo{color:#e53935;font-size:calc(12.5px * var(--fs,1));font-weight:600;}
.efi-dest{font-size:calc(13px * var(--fs,1));line-height:1.7;padding:4px 2px;}
.efi-dest b{color:var(--accent);}
.efi-tel{color:#1f9d57;font-weight:600;}
.efi-wsp{color:#25d366;font-size:calc(16px * var(--fs,1));vertical-align:middle;}
.efi-acc{display:flex;flex-direction:column;gap:8px;margin-top:6px;}
.efi-acc .btn{justify-content:center;padding:9px;}
.btn.out{background:transparent;border:1px solid var(--accent);color:var(--accent);}
.btn.out:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);}

/* ---- Subida NO FLEX (Excel) ---- */
.nfx{display:flex;flex-direction:column;height:100%;}
.nfx-top{display:flex;align-items:stretch;gap:18px;flex-wrap:wrap;}
.nfx-col{flex:1;min-width:240px;display:flex;flex-direction:column;gap:10px;}
.nfx-sep{width:1px;background:var(--line);align-self:stretch;}
.nfx-big{flex:none;width:118px;border:none;border-radius:10px;background:#1f9d57;color:#fff;font-weight:700;font-size:calc(12px * var(--fs,1));line-height:1.2;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;cursor:pointer;padding:10px;text-align:center;}
.nfx-big:hover{background:#178a4b;}
.nfx-big .mi-r{font-size:calc(30px * var(--fs,1));}
.nfx-file{border:.5px solid var(--line);border-radius:8px;padding:9px 12px;background:var(--win);min-height:38px;display:flex;align-items:center;font-size:calc(13px * var(--fs,1));}
.nfx-ph{color:var(--muted);}
.nfx-aviso{color:#e53935;font-size:calc(12px * var(--fs,1));font-weight:600;}
.nfx-tablezone{flex:1;display:flex;flex-direction:column;min-height:0;overflow:hidden;}
.nfx-vacio{color:var(--muted);text-align:center;padding:40px 12px;font-size:calc(13.5px * var(--fs,1));}
.nfx-resumen{display:flex;align-items:center;gap:8px;padding-bottom:10px;border-bottom:.5px solid var(--line);margin-bottom:6px;}
.nfx-grow{flex:1;}
.nfx-badge{font-size:calc(12px * var(--fs,1));font-weight:700;padding:3px 10px;border-radius:999px;}
.nfx-badge.ok{background:#dff5e3;color:#1a8a3b;}
.nfx-badge.bad{background:#fde2e1;color:#c62828;}
.nfx-scroll{flex:1;overflow:auto;min-height:0;}
.nfx-scroll th{position:sticky;top:0;background:var(--win);z-index:1;}
.nfx-rowerr td{background:color-mix(in srgb,#e53935 6%,transparent);}
.nfx-err{color:#c62828;font-weight:600;}

/* ---- Compartir (realtime) ---- */
.modal.cmp-modal{width:420px;max-width:92vw;}
.cmp-modal .modal-h{display:flex;align-items:center;gap:8px;}
.cmp-sub{color:var(--muted);font-size:calc(12.5px * var(--fs,1));margin-bottom:10px;}
.cmp-lista{display:flex;flex-direction:column;gap:2px;max-height:340px;overflow:auto;}
.cmp-it{display:flex;align-items:center;gap:11px;padding:8px 10px;border-radius:9px;cursor:pointer;}
.cmp-it:hover{background:color-mix(in srgb,var(--accent) 9%,transparent);}
.cmp-nm{flex:1;font-size:calc(13.5px * var(--fs,1));font-weight:600;}
.cmp-on{width:9px;height:9px;border-radius:50%;background:var(--ok);flex:none;}
.cmp-vacio{color:var(--muted);text-align:center;padding:24px 8px;font-size:calc(13px * var(--fs,1));}

/* ---- Estados masivos ---- */
.estmas-bar{display:flex;align-items:center;gap:12px;padding:10px 4px;border-bottom:.5px solid var(--line);margin-bottom:2px;}
.estmas-sel{max-width:320px;}
.estmas-cnt{font-size:calc(12.5px * var(--fs,1));font-weight:700;color:var(--accent);}
.estmas-tabla .em-ck{width:16px;height:16px;cursor:pointer;}
.em-est{display:inline-flex;align-items:center;font-size:calc(12.5px * var(--fs,1));font-weight:600;}
.estmasc{display:flex;flex-direction:column;height:100%;padding:0;}
.estmasc-head{padding:14px 18px;font-size:calc(14px * var(--fs,1));line-height:1.8;border-bottom:.5px solid var(--line);}
.estmasc-head .em-est{padding:2px 10px;border-radius:999px;background:color-mix(in srgb,var(--c) 16%,transparent);}
.estmasc .tablezone{flex:1;overflow:auto;padding:0 6px;}
.estmasc .tabla th{position:sticky;top:0;background:var(--win);z-index:1;}

/* ---- Devoluciones ---- */
.dev-foot{display:flex;align-items:center;gap:10px;padding:10px 4px;border-top:.5px solid var(--line);}
.dev-grow{flex:1;}
.dev-tabla .dv-ck{width:16px;height:16px;cursor:pointer;}
.dev-tabla .dv-ver{cursor:pointer;color:var(--accent);}
.dev-no{color:var(--bad);font-weight:700;}
.dev-si{color:var(--ok);font-weight:700;}
#bProcesar.on{box-shadow:0 0 0 2px color-mix(in srgb,var(--ok) 55%,transparent);}
.devp{display:flex;flex-direction:column;height:100%;}
.devp .tablezone{flex:1;overflow:auto;}
.devp .tabla th{position:sticky;top:0;background:var(--win);z-index:1;}
.devp-foot{display:flex;align-items:flex-end;gap:14px;padding:12px 14px;border-top:.5px solid var(--line);background:var(--win);}
.devp-buscar,.devp-obs{margin:0;}
.devp-buscar{max-width:220px;}
.devp-obs{flex:1;max-width:420px;}
.devp-grow{flex:1;}

/* ---- ADM Paquetes · Editar paquetes ---- */
.ed-h{display:flex;align-items:center;gap:7px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);padding-bottom:8px;}
.ed-tabla tr[data-did]{cursor:pointer;}
.ed-tabla tr[data-did]:hover td{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.edf{display:flex;flex-direction:column;height:100%;}
.edf-tabs{display:flex;gap:4px;border-bottom:.5px solid var(--line);}
.edf-tab{background:transparent;border:none;border-bottom:2px solid transparent;color:var(--muted);font-weight:700;font-size:calc(13px * var(--fs,1));padding:9px 14px;cursor:pointer;}
.edf-tab.on{color:var(--accent);border-bottom-color:var(--accent);}
.edf-body{flex:1;overflow:auto;padding:14px 2px;}
.edf-pane{display:flex;flex-direction:column;gap:12px;}
.edf-maphint{display:flex;align-items:center;gap:6px;font-size:calc(12.5px * var(--fs,1));color:var(--muted);}
.edf-maphint .mi-r{font-size:calc(16px * var(--fs,1));color:var(--accent);}
.edf-map{height:360px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);}

/* ---- Liquidaciones · Liquidación cobr. ---- */
.liq2{display:flex;flex-direction:column;height:100%;gap:12px;}
.liq2-head{display:flex;align-items:center;gap:10px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);}
.liq2-fecha{max-width:180px;margin-left:8px;}
.liq2-cols{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:14px;min-height:0;}
.liq2-panel{margin:0;display:flex;flex-direction:column;min-height:0;overflow:auto;padding-top:6px;}
.liq2-pt{text-align:center;font-weight:700;color:var(--muted);padding-bottom:8px;}
.liq2-tabla th,.liq2-tabla td{white-space:nowrap;text-align:center;}
.liq2-tabla td:first-child,.liq2-tabla th:first-child{text-align:left;}
.liq2-tabla thead th{position:sticky;top:0;background:var(--win);z-index:1;}
.liq2-liq,.liq2-desc{background:#1bb8d4;color:#fff;border:none;font-weight:700;padding:5px 18px;}
.liq2-liq:hover,.liq2-desc:hover{background:#149bb3;}
.modal.liq2-modal{width:920px;max-width:96vw;display:flex;flex-direction:column;max-height:84vh;}
.liq2-modal .tablezone{flex:1;overflow:auto;min-height:120px;}
.liq2-modal .tabla th{position:sticky;top:0;background:var(--win);z-index:1;}
.liq2-foot{display:flex;justify-content:flex-end;gap:10px;padding:12px 4px 2px;border-top:.5px solid var(--line);}

/* ---- Liquidaciones · chofer/clientes ---- */
.lcc-filtro{display:flex;align-items:flex-end;gap:14px;justify-content:center;padding:4px 0 6px;}
.lcc-filtro .field{margin:0;max-width:200px;}
.modal.lcc-modal{width:1320px;max-width:97vw;display:flex;flex-direction:column;max-height:88vh;}
.lcc-mh{font-size:calc(26px * var(--fs,1));font-weight:800;color:var(--accent);padding:6px 4px 12px;}
.lcc-modal .tablezone{flex:1;overflow:auto;min-height:140px;}
.lcc-modal .tabla th{position:sticky;top:0;background:var(--win);z-index:1;font-size:calc(11px * var(--fs,1));}
.lcc-modal .tabla td{font-size:calc(12px * var(--fs,1));}
.lcc-foot{display:flex;align-items:flex-end;gap:12px;padding:12px 4px 2px;border-top:.5px solid var(--line);flex-wrap:wrap;}
.lcc-total{font-size:calc(14px * var(--fs,1));font-weight:700;color:var(--accent);margin-right:auto;}
.lcc-desc{margin:0;max-width:160px;}

/* ---- Liquidaciones · Cancelar ---- */
.lcan-panel{margin-bottom:16px;}
.lcan-tabla th,.lcan-tabla td{white-space:nowrap;text-align:center;}
.lcan-tabla td:first-child,.lcan-tabla th:first-child{text-align:left;}
.lcan-undo{padding:4px 14px;}

/* ---- Informes · Liquidación de cobranzas ---- */
.liqc{display:flex;flex-direction:column;height:100%;gap:12px;}
.liqc-bar{display:flex;align-items:flex-end;gap:16px;margin:0;}
.liqc-ti{display:flex;align-items:center;gap:7px;font-size:calc(15px * var(--fs,1));font-weight:800;color:var(--accent);margin-bottom:4px;}
.liqc-fecha{margin:0;max-width:200px;}
.liqc-cols{flex:1;display:grid;grid-template-columns:1fr 1fr;gap:12px;min-height:0;}
.liqc-panel{margin:0;display:flex;flex-direction:column;min-height:0;overflow:auto;}
.liqc-tabla th,.liqc-tabla td{white-space:nowrap;}
.liqc-h{display:flex;align-items:center;gap:6px;color:var(--accent);}
.liqc-tabla thead th{position:sticky;top:0;background:var(--win);z-index:1;}
.liqc-tabla tfoot td{position:sticky;bottom:0;background:var(--bg);font-weight:700;border-top:1.5px solid var(--line);}
.liqc-ver{padding:3px 14px;}
.modal.liqc-modal{width:760px;max-width:94vw;}
.liqc-modal .modal-b{max-height:60vh;overflow:auto;padding:0;}

/* ---- Informes · Dashboard ---- */
.dash{display:flex;flex-direction:column;gap:14px;}
.dash-filtro{display:flex;align-items:center;gap:12px;margin:0;}
.dash-ti{display:flex;align-items:center;gap:7px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);}
.dash-sep{width:1px;height:22px;background:var(--line);}
.dash-cal{color:var(--accent);}
.dash-fecha{max-width:190px;}
.dash-kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.dash-kpi{position:relative;background:var(--win);border:.5px solid var(--line);border-bottom:3px solid var(--c);border-radius:12px;padding:14px 16px;box-shadow:0 1px 3px rgba(0,0,0,.05);}
.dash-kico{position:absolute;top:14px;left:16px;width:34px;height:34px;border-radius:9px;background:var(--c);color:#fff;display:grid;place-items:center;}
.dash-kval{margin-left:44px;font-size:calc(24px * var(--fs,1));font-weight:800;color:var(--c);line-height:1;}
.dash-klb{margin-left:44px;margin-top:4px;font-size:calc(12px * var(--fs,1));color:var(--c);}
.dash-row3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;}
.dash-row2{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.dash-big,.dash-ch{margin:0;padding:0;overflow:hidden;display:flex;flex-direction:column;min-height:260px;}
.dash-bh{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:12px 16px;color:#fff;font-weight:800;font-size:calc(14px * var(--fs,1));}
.dash-bh small{flex-basis:100%;font-weight:500;font-size:calc(11px * var(--fs,1));opacity:.9;}
.dash-bh.pri{background:#6a5cff;} .dash-bh.ok{background:#1f9d57;} .dash-bh.warn{background:#e08e1a;} .dash-bh.bad{background:#e6394a;}
.dash-donut{flex:1;display:flex;align-items:center;gap:14px;padding:14px;}
.dash-canvaswrap{position:relative;width:150px;height:150px;flex:none;}
.dash-center{position:absolute;inset:0;display:grid;place-items:center;font-size:calc(22px * var(--fs,1));font-weight:800;color:var(--muted);pointer-events:none;}
.dash-leg{display:flex;flex-direction:column;gap:8px;font-size:calc(12.5px * var(--fs,1));}
.dash-li{display:flex;align-items:center;gap:7px;} .dash-li b{margin-left:auto;}
.dash-dt{width:11px;height:11px;border-radius:50%;}
.dash-num2{flex:1;display:flex;align-items:center;justify-content:space-around;padding:14px;}
.dash-num2 b{display:block;font-size:calc(34px * var(--fs,1));font-weight:800;color:var(--accent);text-align:center;}
.dash-num2 span{font-size:calc(12px * var(--fs,1));color:var(--muted);}
.dash-tot{display:flex;align-items:center;gap:6px;color:var(--muted);font-size:calc(12.5px * var(--fs,1));}
.dash-tot b{font-size:calc(16px * var(--fs,1));display:inline;}
.dash-dot{width:12px;height:12px;border-radius:50%;background:color-mix(in srgb,var(--accent) 30%,#fff);}
.dash-chlist{flex:1;overflow:auto;padding:10px;display:flex;flex-direction:column;gap:8px;max-height:340px;}
.dash-chit{display:flex;align-items:center;gap:10px;border:.5px solid var(--line);border-radius:10px;padding:9px;}
.dash-chico{width:38px;height:38px;flex:none;border-radius:8px;display:grid;place-items:center;color:#fff;}
.dash-chit.ok .dash-chico{background:var(--ok);} .dash-chit.bad .dash-chico{background:var(--bad);}
.dash-chinfo{flex:1;min-width:0;}
.dash-chnm{font-size:calc(12.5px * var(--fs,1));font-weight:700;}
.dash-chnm b{color:var(--bad);} .dash-chit.ok .dash-chnm b{color:var(--ok);}
.dash-chsub{font-size:calc(11px * var(--fs,1));color:var(--muted);margin:2px 0 5px;}
.dash-bar{height:8px;border-radius:5px;background:var(--bg);overflow:hidden;}
.dash-bar span{display:block;height:100%;}
.dash-chn{display:flex;align-items:center;gap:4px;font-size:calc(12px * var(--fs,1));font-weight:700;color:var(--bad);flex:none;}
.dash-chit.ok .dash-chn{color:var(--ok);}
.dash-vacio{color:var(--muted);text-align:center;padding:40px;}
.dash-vh{padding:12px 16px;border-bottom:.5px solid var(--line);}
.dash-ti2{display:flex;align-items:center;gap:7px;font-weight:800;color:var(--accent);}
.dash-ventas,.dash-mapacard{margin:0;padding:0;}
.dash-ventaswrap{height:300px;padding:14px;}
.dash-mapa{display:flex;gap:0;height:380px;}
.dash-map{flex:1;}
.dash-mlist{width:320px;flex:none;border-left:.5px solid var(--line);overflow:auto;padding:10px;display:flex;flex-direction:column;gap:6px;}
.dash-mit{display:flex;align-items:center;gap:9px;border:.5px solid var(--line);border-radius:9px;padding:9px;}
.dash-mbag{color:var(--accent);}
.dash-mnm{font-size:calc(12.5px * var(--fs,1));font-weight:600;flex:1;}
.dash-mcant{font-size:calc(11px * var(--fs,1));color:var(--muted);display:inline-flex;align-items:center;gap:3px;white-space:nowrap;}
.dash-pin{width:24px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#6a5cff;border:2px solid #fff;display:grid;place-items:center;box-shadow:0 2px 5px rgba(0,0,0,.4);}
.dash-pin .mi-r{transform:rotate(45deg);color:#fff;font-size:calc(14px * var(--fs,1));}
.dash-pinn{position:absolute;top:-6px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:9px;background:#1f9d57;color:#fff;font-size:calc(10px * var(--fs,1));font-weight:800;display:grid;place-items:center;border:1.5px solid #fff;}
.dash-cluster-wrap{background:none;border:none;}
.dash-cluster{border-radius:50%;background:#1f9d57;color:#fff;font-weight:800;display:grid;place-items:center;border:3px solid #fff;box-shadow:0 2px 8px rgba(0,0,0,.35);font-size:calc(13px * var(--fs,1));}

/* ---- Informes agrupados (En mano clientes / Por zonas) ---- */
.emc{display:flex;flex-direction:column;height:100%;gap:12px;}
.emc-bar{display:flex;align-items:center;gap:12px;}
.emc-ti{display:flex;align-items:center;gap:7px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);}
.emc-sep{width:1px;height:22px;background:var(--line);}
.emc-cal{color:var(--accent);}
.emc-fecha{max-width:200px;}
.emc-card{flex:1;display:flex;flex-direction:column;min-height:0;margin:0;}
.emc-tabla th,.emc-tabla td{text-align:center;white-space:nowrap;}
.emc-tabla .emc-cli{text-align:left;}
.emc-tabla thead th{position:sticky;top:0;background:var(--win);z-index:2;}
.emc-tabla tfoot td{position:sticky;bottom:0;background:var(--bg);font-weight:700;border-top:1.5px solid var(--line);}
.emc-tabla tfoot .emc-cli{color:var(--accent);}
/* tiempo real: indicador "en vivo" + destello de celda (cambio) / línea (zona nueva) */
.emc-live{margin-left:10px;font-size:calc(11px * var(--fs,1));font-weight:700;color:var(--ok);animation:emcLivePulse 1.6s ease-in-out infinite;}
@keyframes emcLivePulse{0%,100%{opacity:1;}50%{opacity:.4;}}
.emc-tabla td.emc-flash{animation:emcFlash 1.1s ease;}
@keyframes emcFlash{0%{background:rgba(52,199,89,.55);}100%{background:transparent;}}
.emc-tabla tr.emc-flash-row td{animation:emcFlashRow 1.5s ease;}
@keyframes emcFlashRow{0%{background:rgba(52,199,89,.40);}100%{background:transparent;}}

/* ---- Informes · No entregados ---- */
.noent{display:flex;flex-direction:column;height:100%;gap:12px;}
.noent-bar{display:flex;align-items:center;gap:12px;}
.noent-ti{display:flex;align-items:center;gap:7px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);}
.noent-sep{width:1px;height:22px;background:var(--line);}
.noent-cal{color:var(--accent);}
.noent-fecha{max-width:200px;}
.noent-card{flex:1;display:flex;flex-direction:column;min-height:0;margin:0;}
.noent-tabla th{text-align:center;}
.noent-tabla td{text-align:center;}
.noent-tabla td:first-child,.noent-tabla td:nth-child(5){text-align:left;}
.noent-filtros th{padding:4px 8px;}
.noent-filtros .inp{padding:6px 8px;width:100%;}
.noent-tabla thead tr:first-child th{position:sticky;top:0;background:var(--win);z-index:2;}
.noent-tabla thead tr.noent-filtros th{position:sticky;top:34px;background:var(--win);z-index:2;}
.noent-tabla .em-est{justify-content:center;}
.noent-foot{display:flex;align-items:center;justify-content:flex-end;gap:14px;padding-top:10px;border-top:.5px solid var(--line);}
.noent-cnt{color:var(--muted);font-size:calc(12.5px * var(--fs,1));margin-right:auto;}

/* ---- Asignación ---- */
.asg{display:flex;flex-direction:column;height:100%;}
.asg-tabs{display:flex;align-items:center;gap:8px;padding-bottom:10px;border-bottom:.5px solid var(--line);margin-bottom:10px;}
.asg-tt{font-size:calc(15px * var(--fs,1));font-weight:800;color:var(--accent);margin-right:8px;}
.asg-tab{border:1px solid var(--line);background:transparent;border-radius:8px;padding:7px 16px;font-weight:700;font-size:calc(12.5px * var(--fs,1));cursor:pointer;color:var(--muted);}
.asg-tab.on{border-color:var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent);}
.asg-pane{flex:1;display:flex;flex-direction:column;min-height:0;}
.asg-pane[hidden]{display:none;}
.asg-bar{display:flex;align-items:center;gap:12px;padding:8px 0;}
.asg-dest{max-width:320px;}
.asg-cnt{font-size:calc(12.5px * var(--fs,1));font-weight:700;color:var(--accent);}
.asg-tabla .asg-obs{padding:5px 8px;max-width:220px;}
.asg-tabla .asg-ck{width:16px;height:16px;cursor:pointer;}
.asg-ok{color:var(--ok);font-size:calc(19px * var(--fs,1));cursor:pointer;}
.asg-pager{display:flex;align-items:center;justify-content:space-between;gap:16px;}
.asg-tot{font-size:calc(12px * var(--fs,1));color:var(--muted);line-height:1.5;}
.asg-tot b{color:var(--accent);}
.asg-sub{font-size:calc(12.5px * var(--fs,1));color:var(--muted);padding:4px 0;}
.asg-map{flex:1;min-height:0;border-radius:10px;overflow:hidden;border:.5px solid var(--line);}
.asg-foot{display:flex;align-items:center;gap:12px;padding:10px 0 2px;flex-wrap:wrap;}
.asg-leg{display:flex;gap:14px;flex-wrap:wrap;font-size:calc(11.5px * var(--fs,1));color:var(--muted);flex:1;}
.asg-leg span{display:inline-flex;align-items:center;gap:5px;}
.asg-leg i{width:11px;height:11px;border-radius:50%;display:inline-block;}
.asg-leg .mi-r{font-size:calc(15px * var(--fs,1));}
.asg-pin{width:18px;height:18px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--c);border:2px solid #fff;box-shadow:0 2px 4px rgba(0,0,0,.4);position:relative;}
.asg-star{position:absolute;transform:rotate(45deg);font-size:calc(11px * var(--fs,1));color:#e0a800;left:2px;top:1px;}
.asgp{display:flex;flex-direction:column;height:100%;}
.asgp-head{display:flex;align-items:center;gap:8px;font-size:calc(15px * var(--fs,1));font-weight:700;color:var(--accent);padding:6px 4px 12px;border-bottom:.5px solid var(--line);}
.asgp .tablezone{flex:1;overflow:auto;}
.asgp .tabla th{position:sticky;top:0;background:var(--win);z-index:1;}

/* ---- Panel de administración ---- */
.adm{display:flex;flex-direction:column;height:100%;gap:12px;}
.adm-top{display:flex;align-items:flex-end;gap:14px;flex-wrap:wrap;margin:0;}
.adm-top .field{margin:0;}
.adm-info{font-size:calc(12.5px * var(--fs,1));color:var(--muted);padding-bottom:8px;}
.adm-info b{color:var(--accent);}
.adm-cols{flex:1;display:grid;grid-template-columns:1.3fr 1fr;gap:12px;min-height:0;}
.adm-menus,.adm-add{margin:0;display:flex;flex-direction:column;min-height:0;}
.adm-h{display:flex;align-items:center;gap:7px;font-weight:800;color:var(--accent);padding-bottom:10px;border-bottom:.5px solid var(--line);margin-bottom:8px;}
.adm-mlist{flex:1;overflow:auto;display:flex;flex-direction:column;gap:10px;}
.adm-grp{border:.5px solid var(--line);border-radius:10px;padding:8px 10px;}
.adm-gname{display:flex;align-items:center;gap:6px;font-weight:700;font-size:calc(12.5px * var(--fs,1));margin-bottom:6px;color:var(--text);}
.adm-it{display:flex;align-items:center;gap:10px;padding:5px 4px;font-size:calc(12.5px * var(--fs,1));border-top:.5px solid var(--line);}
.adm-it.off{opacity:.5;}
.adm-ck{display:flex;align-items:center;gap:6px;flex:1;cursor:pointer;}
.adm-clave{color:var(--muted);font-family:ui-monospace,monospace;font-size:calc(11px * var(--fs,1));}
.adm-ov{display:flex;align-items:center;gap:4px;font-size:calc(11px * var(--fs,1));color:var(--muted);cursor:pointer;}
.adm-badge{background:#6a5cff;color:#fff;font-size:calc(9px * var(--fs,1));font-weight:800;padding:2px 6px;border-radius:6px;}
.adm-add .field{margin-bottom:10px;}
.adm-hint{font-size:calc(11.5px * var(--fs,1));color:var(--muted);margin:8px 0;}
.adm-foot{display:flex;gap:10px;margin-top:auto;padding-top:10px;border-top:.5px solid var(--line);}

/* ---- Snap de ventanas tipo Windows (preview) ---- */
.snap-preview{position:absolute;z-index:9;display:none;border-radius:12px;pointer-events:none;
  background:color-mix(in srgb,var(--accent) 18%,transparent);border:2px solid var(--accent);
  box-shadow:0 0 0 100vmax rgba(0,0,0,.04) inset;transition:left .12s,width .12s,height .12s;}

/* ---- Ruteate ---- */
.rut{display:flex;flex-direction:column;height:100%;}
.rut-top{display:flex;align-items:flex-end;gap:16px;}
.rut-chofer{flex:1;max-width:520px;margin:0;}
.rut-chofer label{display:flex;align-items:center;gap:5px;}
.rut-crear{height:42px;padding:0 26px;font-weight:700;}
.rut-tablezone{flex:1;overflow:auto;min-height:0;}
.rut-tabla .rut-orden{max-width:64px;padding:4px 6px;}
.rut-si{color:var(--ok);font-weight:700;}
.rut-ver{padding:4px 16px;}
.rut-vacio{color:var(--muted);text-align:center;padding:36px 12px;font-size:calc(13.5px * var(--fs,1));}
.rut-foot{display:flex;justify-content:center;gap:12px;padding:12px;border-top:.5px solid var(--line);}
.modal.rut-geomodal{width:680px;max-width:94vw;}
.rut-geomap{height:420px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);margin-top:8px;}
/* crear ruta */
.rut2{display:flex;height:100%;}
.rut2-side{width:340px;flex:none;border-right:.5px solid var(--line);padding:14px;display:flex;flex-direction:column;gap:12px;overflow:auto;}
.rut2-head{display:flex;align-items:center;gap:6px;font-size:calc(13.5px * var(--fs,1));padding-bottom:8px;border-bottom:.5px solid var(--line);}
.rut2-cnt{color:var(--muted);display:inline-flex;align-items:center;gap:3px;margin-left:auto;}
.rut2-cnt .mi-r{font-size:calc(16px * var(--fs,1));}
.rut2-grid2{display:grid;grid-template-columns:1fr 1fr;gap:10px;}
.rut2-config{display:flex;flex-direction:column;gap:11px;}
.rut2-chk{display:flex;align-items:center;gap:7px;font-size:calc(13px * var(--fs,1));color:var(--muted);}
.rut2-rutear{justify-content:center;padding:11px;font-weight:700;}
.rut2-result{display:flex;flex-direction:column;gap:8px;flex:1;}
.rut2-stop{display:flex;align-items:center;gap:9px;padding:9px;border:.5px solid var(--line);border-radius:10px;background:var(--win);cursor:grab;}
.rut2-stop.drag{opacity:.5;}
.rut2-stop.over{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 35%,transparent);}
.rut2-drag{color:var(--muted);font-size:calc(18px * var(--fs,1));cursor:grab;}
.rut2-badge{width:24px;height:24px;flex:none;border-radius:50%;background:var(--accent);color:#fff;font-weight:800;font-size:calc(12px * var(--fs,1));display:grid;place-items:center;}
.rut2-info{min-width:0;}
.rut2-nm{font-size:calc(12.5px * var(--fs,1));font-weight:600;line-height:1.3;}
.rut2-eta{font-size:calc(11.5px * var(--fs,1));color:var(--muted);margin-top:2px;}
.rut2-acc{display:flex;gap:8px;margin-top:auto;}
.rut2-acc .btn{flex:1;justify-content:center;}
.rut2-main{flex:1;position:relative;display:flex;flex-direction:column;min-width:0;}
.rut2-map{flex:1;min-height:0;}
.rut2-stats{position:absolute;bottom:14px;left:50%;transform:translateX(-50%);display:flex;gap:12px;z-index:500;}
.rut2-stat{display:flex;align-items:center;gap:9px;background:var(--win);border:.5px solid var(--line);border-radius:12px;padding:10px 18px;box-shadow:0 3px 12px rgba(0,0,0,.18);}
.rut2-stat .mi-r{font-size:calc(22px * var(--fs,1));color:var(--accent);}
.rut2-stat small{display:block;font-size:calc(11px * var(--fs,1));color:var(--muted);}
.rut2-stat b{font-size:calc(17px * var(--fs,1));color:var(--accent);}
.rut-mk-wrap{background:none;border:none;}
.rut-dep{width:32px;height:32px;border-radius:8px;background:#2747d6;color:#fff;display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.4);border:2px solid #fff;}
.rut-num{width:26px;height:26px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#e6394a;color:#fff;font-weight:800;font-size:calc(12px * var(--fs,1));display:grid;place-items:center;box-shadow:0 2px 5px rgba(0,0,0,.4);border:2px solid #fff;}
.rut-num span{transform:rotate(45deg);}
.rut-dot{width:14px;height:14px;border-radius:50%;background:#2747d6;border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.4);}
.rut-dot-multi{width:24px;height:24px;color:#fff;font-weight:800;font-size:calc(12px * var(--fs,1));display:grid;place-items:center;}

/* ---- En mano (tabla seguimiento) ---- */
.enm{display:flex;flex-direction:column;height:100%;}
.enm-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding-bottom:10px;}
.enm-ti{display:flex;align-items:center;gap:7px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);}
.enm-fecha{max-width:180px;}
.enm-bar .btn{font-weight:700;}
.enm-upd.off{opacity:.5;pointer-events:none;}
.enm-info{display:flex;gap:18px;font-size:calc(12px * var(--fs,1));color:var(--muted);padding-bottom:8px;border-bottom:.5px solid var(--line);margin-bottom:6px;flex-wrap:wrap;}
.enm-info .mi-r{font-size:calc(14px * var(--fs,1));vertical-align:middle;}
.enm-warn{color:#c77700;}
.enm-tabla th{cursor:pointer;white-space:nowrap;}
.enm-ord{color:var(--muted);font-size:calc(11px * var(--fs,1));}
.enm-row{cursor:pointer;}
.enm-row:hover td{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.enm-sa td,.enm-tabla tfoot td{background:var(--bg);font-weight:700;}
.enm-tabla tfoot td{border-top:1.5px solid var(--line);}
.enm-ruta{font-weight:700;font-size:calc(11.5px * var(--fs,1));padding:4px 12px;border-radius:6px;display:inline-block;}
.enm-ruta.no{background:#e6394a;color:#fff;}
.enm-ruta.ok{background:#dff5e3;color:#1a8a3b;}
.enm-gps{display:inline-block;width:12px;height:12px;border-radius:50%;background:#bbb;}
.enm-gps.on{background:var(--ok);}
/* flash de las celdas que cambiaron en el auto-refresh (fallback cada 300s) */
@keyframes enmFlash{0%{background:color-mix(in srgb,var(--accent) 55%,transparent);}100%{background:transparent;}}
.enm-tabla td.enm-diff{animation:enmFlash 2.6s ease-out;font-weight:700;}
/* chip "En vivo" / upsell (gating por feature enmano.vivo) */
.enm-vivo{display:inline-flex;align-items:center;gap:4px;padding:2px 9px;border-radius:20px;font-size:calc(12px*var(--fs,1));font-weight:600;white-space:nowrap;}
.enm-vivo.on{background:color-mix(in srgb,var(--ok) 20%,transparent);color:var(--ok);}
.enm-vivo.off{background:color-mix(in srgb,#f0a020 20%,transparent);color:#b3780a;cursor:help;}
.modal.enm-modal{width:920px;max-width:96vw;}
.enm-mbtns{display:flex;align-items:center;gap:8px;margin-bottom:12px;flex-wrap:wrap;}
.enm-mcnt{color:var(--accent);font-weight:800;margin-left:4px;}
.enm-chips{display:flex;flex-wrap:wrap;gap:7px;max-height:50vh;overflow:auto;}
.enm-chip{display:inline-flex;align-items:center;gap:3px;font-size:calc(12px * var(--fs,1));font-weight:600;padding:5px 10px;border-radius:999px;cursor:pointer;background:color-mix(in srgb,var(--c) 16%,transparent);border:1px solid color-mix(in srgb,var(--c) 40%,transparent);}
.enm-chip .mi-r{font-size:calc(14px * var(--fs,1));}
.enm-chip.off{background:var(--bg);border-color:var(--line);color:var(--muted);opacity:.7;}

/* ---- En mano · detalle de chofer ---- */
.enmc{display:flex;flex-direction:column;height:100%;}
.enmc-head{display:flex;justify-content:space-between;align-items:flex-start;padding:6px 4px 12px;border-bottom:.5px solid var(--line);}
.enmc-tit{display:flex;align-items:center;gap:9px;font-size:calc(20px * var(--fs,1));font-weight:800;color:var(--accent);}
.enmc-tot{font-size:calc(12px * var(--fs,1));color:var(--muted);text-align:right;line-height:1.7;}
.enmc-grupos{flex:1;overflow:auto;padding:12px 2px;display:flex;flex-direction:column;gap:10px;}
.enmc-grupo{border:.5px solid var(--line);border-radius:12px;background:var(--win);}
.enmc-gh{display:flex;align-items:center;gap:8px;padding:13px 16px;cursor:pointer;font-weight:700;}
.enmc-dot{width:13px;height:13px;border-radius:50%;}
.enmc-cnt{color:var(--muted);font-weight:600;}
.enmc-chev{margin-left:auto;transition:transform .15s;color:var(--muted);}
.enmc-grupo.open .enmc-chev{transform:rotate(180deg);}
.enmc-gb{display:none;border-top:.5px solid var(--line);}
.enmc-grupo.open .enmc-gb{display:block;}
.enmc-env{cursor:pointer;}
.enmc-env:hover td{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.enmc-qr{overflow:visible;}
.enmc-qr .env-qr{cursor:zoom-in;transform-origin:left top;}
.enmc-acc .mi-r{cursor:pointer;color:var(--accent);margin:0 3px;vertical-align:middle;}
.enmc-foot{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:12px 4px 2px;border-top:.5px solid var(--line);flex-wrap:wrap;}
.enmc-leg{display:flex;gap:16px;flex-wrap:wrap;font-size:calc(11px * var(--fs,1));color:var(--muted);}
.enmc-leg span{display:inline-flex;align-items:center;gap:5px;max-width:230px;}
.enmc-li{width:11px;height:11px;border-radius:50%;background:var(--c);flex:none;}
.enmc-vacio{color:var(--muted);text-align:center;padding:40px;}

/* ---- En mano · ver todas las rutas ---- */
.enmr{display:flex;height:100%;}
.enmr-side{width:320px;flex:none;border-right:.5px solid var(--line);padding:12px;display:flex;flex-direction:column;gap:8px;min-height:0;}
.enmr-h{display:flex;align-items:center;gap:6px;font-weight:800;color:var(--accent);}
.enmr-cnt{margin-left:auto;font-size:calc(12px * var(--fs,1));color:var(--muted);}
.enmr-list{flex:1;overflow:auto;display:flex;flex-direction:column;gap:6px;}
.enmr-it{display:flex;align-items:center;gap:10px;padding:9px;border:.5px solid var(--line);border-radius:10px;cursor:pointer;}
.enmr-it:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.enmr-it.sel{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent);}
.enmr-it.sin{opacity:.6;cursor:default;}
.enmr-color{width:10px;height:32px;border-radius:6px;flex:none;}
.enmr-nm{font-size:calc(12.5px * var(--fs,1));font-weight:700;}
.enmr-sub{font-size:calc(11px * var(--fs,1));color:var(--muted);margin-top:2px;}
.enmr-go{color:var(--accent);}
.enmr-vacio{color:var(--muted);text-align:center;padding:24px;}
.enmr-main{flex:1;min-width:0;}
.enmr-map{height:100%;}

/* ---- GeoChoferes (Informes) ---- */
.geoch{display:flex;height:100%;gap:0;}
.geoch-side{width:340px;flex:none;display:flex;flex-direction:column;border-right:.5px solid var(--line);padding:12px;gap:10px;min-height:0;}
.geoch-head .geoch-ti{display:flex;align-items:center;gap:7px;font-size:calc(16px * var(--fs,1));font-weight:800;color:var(--accent);}
.geoch-head .geoch-sub{font-size:calc(12px * var(--fs,1));color:var(--muted);margin-top:2px;}
.geoch-buscar{width:100%;}
.geoch-filtros{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;}
.geoch-filtros .inp{font-size:calc(12px * var(--fs,1));padding:6px 8px;}
.geoch-stats{display:flex;gap:8px;flex-wrap:wrap;}
.gc-st{display:inline-flex;align-items:center;gap:4px;font-size:calc(11.5px * var(--fs,1));font-weight:700;color:var(--muted);background:var(--bg);padding:3px 9px;border-radius:999px;}
.gc-st .mi-r{font-size:calc(14px * var(--fs,1));}
.gc-st.bad{color:var(--bad);}
.geoch-lista{flex:1;overflow:auto;min-height:0;display:flex;flex-direction:column;gap:4px;}
.gc-it{display:flex;align-items:center;gap:9px;padding:7px 9px;border-radius:9px;cursor:pointer;border:.5px solid transparent;}
.gc-it:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.gc-it.sel{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 10%,transparent);}
.gc-it.coord{background:#fbf7d6;}
.gc-it.off{opacity:.45;}
.gc-ico{width:30px;height:30px;flex:none;border-radius:8px;display:grid;place-items:center;background:var(--c);color:#fff;}
.gc-ico .mi-r{font-size:calc(18px * var(--fs,1));}
.gc-info{flex:1;min-width:0;}
.gc-nm{font-size:calc(12.5px * var(--fs,1));font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.gc-bat{display:flex;align-items:center;gap:3px;font-size:calc(11px * var(--fs,1));font-weight:600;}
.gc-bat .mi-r{font-size:calc(13px * var(--fs,1));}
.gc-seg,.gc-x{border:none;background:transparent;cursor:pointer;color:var(--muted);padding:3px;border-radius:6px;}
.gc-seg:hover,.gc-x:hover{background:rgba(0,0,0,.08);color:var(--text);}
.gc-seg.on{color:var(--accent);}
.geoch-foot{display:flex;align-items:center;justify-content:space-between;border-top:.5px solid var(--line);padding-top:8px;gap:8px;}
.geoch-vivo{flex:1;display:flex;align-items:center;justify-content:center;gap:7px;font-size:calc(12px * var(--fs,1));font-weight:800;letter-spacing:.5px;
  border:none;border-radius:8px;padding:9px;cursor:pointer;background:var(--bg);color:var(--muted);}
.geoch-vivo.on{background:var(--accent);color:#fff;}
.geoch-vivo .geoch-dot{background:currentColor;}
.geoch-dot{width:9px;height:9px;border-radius:50%;background:var(--ok);box-shadow:0 0 0 0 var(--ok);}
.geoch-vivo.on .geoch-dot{animation:gcpulse 1.6s infinite;}
@keyframes gcpulse{0%{box-shadow:0 0 0 0 color-mix(in srgb,var(--ok) 70%,transparent);}70%{box-shadow:0 0 0 7px transparent;}100%{box-shadow:0 0 0 0 transparent;}}
.geoch-hist{justify-content:center;}
.geoch-vacio{color:var(--muted);text-align:center;padding:24px 8px;font-size:calc(13px * var(--fs,1));}
.geoch-main{flex:1;display:flex;flex-direction:column;min-width:0;}
.geoch-mhead{padding:9px 14px;font-size:calc(12.5px * var(--fs,1));color:var(--text);border-bottom:.5px solid var(--line);white-space:nowrap;overflow:hidden;}
.geoch-mov{color:var(--muted);}
.geoch-map{flex:1;min-height:0;}
.gc-mk-wrap{background:none;border:none;}
.gc-mk{width:30px;height:30px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:var(--c);display:grid;place-items:center;box-shadow:0 2px 6px rgba(0,0,0,.4);border:2px solid #fff;}
.gc-mk .mi-r{transform:rotate(45deg);color:#fff;font-size:calc(17px * var(--fs,1));}
.gc-mk.foll{outline:3px solid color-mix(in srgb,var(--c) 50%,#fff);outline-offset:1px;}
.gc-pop{font-size:calc(12.5px * var(--fs,1));line-height:1.5;}
/* select2 de choferes (arriba del mapa) */
.geoch-mhead{display:flex;align-items:center;gap:10px;}
.geoch-mlbl{display:inline-flex;align-items:center;gap:5px;font-weight:700;color:var(--muted);white-space:nowrap;}
.geoch-mlbl .mi-r{font-size:calc(16px * var(--fs,1));}
.geoch-chooser{flex:1;min-width:0;}
.geoch-chooser .ms-control{border:none;background:transparent;}
.geoch-verruta{display:inline-flex;align-items:center;gap:4px;font-size:calc(12px * var(--fs,1));font-weight:600;color:var(--text);cursor:pointer;white-space:nowrap;user-select:none;}
.geoch-verruta input{margin:0;cursor:pointer;}
.geoch-verruta .mi-r{font-size:calc(16px * var(--fs,1));color:var(--muted);}
/* modo historial */
.geoch-barhist{display:flex;align-items:center;gap:10px;padding:10px 14px;border-top:.5px solid var(--line);background:var(--win);flex-wrap:wrap;}
.geoch-barhist .inp{max-width:220px;}
.geoch-barhist #hbProcesar{margin-left:auto;}
.geoch.hist .geoch-buscar,.geoch.hist .geoch-filtros,.geoch.hist #gcStats,.geoch.hist #gcFit{display:none;}

/* ---- Reimprimir NoFlex ---- */
.reimp{position:relative;}
.reimp-tabla .rp-ck{width:16px;height:16px;cursor:pointer;}
.reimp-foot{border-top:.5px solid var(--line);padding:12px 4px 6px;display:flex;flex-direction:column;gap:10px;}
.reimp-foot .field{margin:0;max-width:240px;}
.reimp-btns{display:flex;gap:10px;flex-wrap:wrap;}
.reimp-btns .btn{flex:1;min-width:180px;justify-content:center;font-weight:700;}
.reimp-nota{color:var(--muted);font-size:calc(11.5px * var(--fs,1));}
.reimp-badge{position:absolute;right:14px;bottom:12px;background:var(--accent);color:#fff;font-size:calc(12px * var(--fs,1));font-weight:700;
  padding:7px 14px;border-radius:8px;box-shadow:0 2px 8px rgba(0,0,0,.25);pointer-events:none;}

/* ---- GeoEnvíos Masivos (ADM Paquetes) — tabla semáforo ---- */
.geo-head{padding:12px 16px;font-size:calc(13.5px * var(--fs,1));color:var(--text);line-height:1.6;}
.geo-tabla td{vertical-align:middle;}
.geo-tabla .geo-ing,.geo-tabla .geo-proc{font-size:calc(13px * var(--fs,1));padding:12px 14px;}
.geo-tabla .geo-proc{color:#666;}
.geo-conf{text-align:center;}
.geo-tabla tr{cursor:pointer;}
.geo-ok{color:#fff;font-size:calc(20px * var(--fs,1));}
.geo-chk{display:inline-block;width:15px;height:15px;border:2px solid #fff;border-radius:3px;background:rgba(255,255,255,.25);}
.modal.geo-modal{width:560px;max-width:92vw;}
.geo-dirs{font-size:calc(13px * var(--fs,1));line-height:1.6;margin-bottom:10px;}
.geo-dirs b{color:var(--accent);}
.geo-coords{color:var(--muted);font-size:calc(12px * var(--fs,1));margin-top:4px;}
.geo-map{height:320px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);}
.geo-hint{font-size:calc(12px * var(--fs,1));color:var(--muted);text-align:center;margin-top:8px;}

/* ---- Geolocalización de envíos (geoenvios) — master/detail ---- */
.geo2{display:flex;gap:14px;height:100%;padding:14px;box-sizing:border-box;}
.geo2-left{width:380px;flex:none;display:flex;flex-direction:column;min-height:0;}
.geo2-info{font-size:calc(12.5px * var(--fs,1));color:var(--muted);margin:4px 0 8px;}
.geo2-list{flex:1;overflow:auto;border:.5px solid var(--line);border-radius:10px;}
.geo2-item{display:grid;grid-template-columns:24px 1fr auto;gap:8px;align-items:start;padding:10px 12px;border-bottom:.5px solid var(--line);cursor:pointer;font-size:calc(12.5px * var(--fs,1));}
.geo2-item:hover{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.geo2-item.sel{background:color-mix(in srgb,var(--accent) 13%,transparent);outline:1.5px solid var(--accent);outline-offset:-2px;}
.geo2-edit{color:var(--accent);font-size:calc(18px * var(--fs,1));}
.geo2-itx b{color:var(--accent);font-weight:600;}
.geo2-ok{color:var(--ok);font-size:calc(15px * var(--fs,1));vertical-align:middle;}
.geo2-obs{grid-column:2/4;color:var(--muted);font-size:calc(11.5px * var(--fs,1));margin-top:2px;}
.geo2-right{flex:1;min-width:0;display:flex;flex-direction:column;}
.geo2-search{display:flex;gap:10px;align-items:flex-end;margin-bottom:10px;}
.geo2-map{flex:1;min-height:320px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);}
.geo2-foot{display:flex;justify-content:center;padding-top:10px;}
.geo2-foot .btn{min-width:160px;justify-content:center;}
.um-lang.on{color:var(--accent);font-weight:600;}
.um-lang.on::after{content:"check";font-family:'Material Icons Round';margin-left:auto;font-size:calc(16px * var(--fs,1));}
.lock{position:fixed;inset:0;z-index:99999;display:grid;place-items:center;background:rgba(20,22,40,.45);
  backdrop-filter:blur(16px) saturate(140%);}
.lock-card{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:280px;padding:30px 34px;
  background:var(--win);border-radius:18px;border:.5px solid rgba(255,255,255,.5);box-shadow:0 40px 90px -24px rgba(0,0,0,.6);}
.lock-name{font-size:calc(18px * var(--fs,1));font-weight:700;margin-top:4px;}
.lock-sub{font-size:calc(12.5px * var(--fs,1));color:var(--muted);margin-bottom:8px;}
.lock-pass{width:100%;}
.lock-btn{width:100%;justify-content:center;margin-top:4px;}

/* ---- multi-select propio (UI.multiSelect) ---- */
.ms{position:relative;}
.ms-control{display:flex;flex-wrap:wrap;align-items:center;gap:5px;min-height:38px;padding:4px 8px;
  border:1px solid #d6d6da;border-radius:8px;background:#fff;cursor:text;}
.ms.open .ms-control{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);}
.ms-chips{display:contents;}
.ms-chip{display:inline-flex;align-items:center;gap:5px;font-size:calc(12.5px * var(--fs,1));font-weight:600;padding:3px 6px 3px 8px;
  border-radius:20px;color:#333;background:color-mix(in srgb,var(--c,#888) 16%,white);
  border:1px solid color-mix(in srgb,var(--c,#888) 35%,white);}
.ms-dot{width:8px;height:8px;border-radius:50%;background:var(--c,#888);flex:none;}
.ms-x{font-size:calc(14px * var(--fs,1));cursor:pointer;opacity:.55;}.ms-x:hover{opacity:1;color:var(--bad);}
.ms-input{flex:1;min-width:90px;border:none;outline:none;font-size:calc(13.5px * var(--fs,1));background:transparent;padding:3px 0;}
/* modo resumen: texto compacto "N seleccionados / Todos" (el detalle se muestra aparte) */
.ms.resumen .ms-control{flex-wrap:nowrap;}
.ms-resumen{font-size:calc(13px * var(--fs,1));font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.ms-drop{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:50;max-height:240px;overflow:auto;display:none;
  background:#fff;border:.5px solid rgba(0,0,0,.1);border-radius:9px;box-shadow:0 14px 34px -10px rgba(0,0,0,.35);padding:5px;}
.ms.open .ms-drop{display:block;}
.ms-opt{display:flex;align-items:center;gap:8px;padding:7px 9px;border-radius:6px;font-size:calc(13px * var(--fs,1));cursor:pointer;}
.ms-opt:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.ms-empty{padding:9px;color:var(--muted);font-size:calc(12.5px * var(--fs,1));text-align:center;}

/* window chrome */
.window{position:absolute;background:var(--win);backdrop-filter:blur(30px) saturate(180%);border-radius:var(--radius);
  box-shadow:0 40px 80px -22px rgba(0,0,0,.5),0 12px 24px -12px rgba(0,0,0,.3);border:.5px solid rgba(255,255,255,.4);
  display:flex;flex-direction:column;overflow:hidden;opacity:0;transform:scale(.97);transition:opacity .15s,transform .15s cubic-bezier(.2,.9,.3,1.2);min-width:420px;min-height:260px;}
.window.show{opacity:1;transform:scale(1);}
.tbar{height:42px;flex:none;display:flex;align-items:center;gap:8px;padding:0 13px;border-bottom:.5px solid var(--line);
  background:rgba(255,255,255,.35);position:relative;}
.lights{display:flex;gap:8px;z-index:2;}
.lt{width:12px;height:12px;border-radius:50%;display:grid;place-items:center;font-size:calc(8px * var(--fs,1));color:rgba(0,0,0,.4);}
.lt.r{background:#ff5f57;}.lt.y{background:#febc2e;}.lt.g{background:#28c840;}.lt span{opacity:0;font-weight:700;}
.lights:hover .lt span{opacity:1;}
.tbar .ti{position:absolute;left:0;right:0;text-align:center;font-size:calc(13px * var(--fs,1));font-weight:600;color:#3a3a3c;pointer-events:none;}
.tbar .ti-txt{pointer-events:auto;cursor:text;}   /* el texto del título SÍ recibe clicks (renombrar); el resto del .ti pasa al header */
.tbar .tools{margin-left:auto;display:flex;gap:7px;align-items:center;z-index:2;}
.wbody{flex:1;overflow:auto;min-height:0;}

/* ---- UI kit (propio) ---- */
.btn{font-size:calc(13px * var(--fs,1));padding:6px 13px;border-radius:8px;font-weight:600;display:inline-flex;align-items:center;gap:5px;
  background:#fff;color:#2a2a2c;border:.5px solid var(--line);box-shadow:0 1px 1px rgba(0,0,0,.03);}
.btn:hover{background:#f1f1f4;}
.btn.pri{background:var(--accent);color:#fff;border-color:transparent;}.btn.pri:hover{background:var(--accent2);}
.btn.ghost{background:transparent;border-color:transparent;box-shadow:none;color:var(--accent);}.btn.ghost:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.btn.danger{background:#e53935;color:#fff;border-color:transparent;}.btn.danger:hover{filter:brightness(1.06);background:#e53935;}
.btn .mi-r{font-size:calc(16px * var(--fs,1));}
.btn.ico{padding:6px;border-radius:7px;}
.field{margin-bottom:14px;}
.field label{display:block;font-size:calc(12px * var(--fs,1));color:var(--muted);font-weight:600;margin-bottom:5px;}
.field label .req{color:var(--bad);}
.inp{width:100%;font-size:calc(13.5px * var(--fs,1));padding:8px 11px;border:1px solid #d6d6da;border-radius:8px;background:#fff;outline:none;color:var(--text);}
.inp:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 22%,transparent);}
select.inp{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%23888'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;padding-right:30px;}
.toggle{width:40px;height:24px;border-radius:20px;background:var(--ok);position:relative;flex:none;transition:.2s;display:inline-block;vertical-align:middle;}
.toggle.off{background:#c7c7cc;}
.toggle::after{content:"";position:absolute;width:20px;height:20px;border-radius:50%;background:#fff;top:2px;left:2px;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.25);}
.toggle.off::after{left:18px;}
.chk{display:inline-flex;align-items:center;gap:7px;font-size:calc(13.5px * var(--fs,1));cursor:default;}
.chk .box{width:18px;height:18px;border-radius:5px;border:1.5px solid #c2c2c7;display:grid;place-items:center;color:#fff;font-size:calc(13px * var(--fs,1));}
.chk.on .box{background:var(--accent);border-color:var(--accent);}
.chip{display:inline-block;font-size:calc(11px * var(--fs,1));font-weight:600;padding:2px 9px;border-radius:20px;}
.av{border-radius:50%;display:inline-grid;place-items:center;font-weight:700;color:#fff;flex:none;position:relative;overflow:visible;}
.av .st{position:absolute;right:-1px;bottom:-1px;border-radius:50%;border:2px solid #fff;}
table.tabla{width:100%;border-collapse:collapse;font-size:calc(13px * var(--fs,1));}
.tabla th{text-align:left;font-size:calc(11px * var(--fs,1));text-transform:uppercase;letter-spacing:.3px;color:var(--muted);font-weight:700;
  padding:7px 12px;border-bottom:.5px solid var(--line);position:sticky;top:0;background:rgba(248,248,250,.95);backdrop-filter:blur(6px);}
.tabla td{padding:7px 12px;border-bottom:.5px solid var(--line);}
.tabla tr:hover td{background:color-mix(in srgb,var(--accent) 7%,transparent);}
.tabla .center{text-align:center;}
.acts{display:flex;gap:2px;justify-content:flex-end;}
.acts .ico{padding:5px;border-radius:6px;color:var(--muted);}
.acts .ico:hover{background:rgba(0,0,0,.06);}
.acts .ver:hover{color:var(--accent);}.acts .edi:hover{color:var(--warn);}.acts .eli:hover{color:var(--bad);}

/* listado layout */
.filtros{display:grid;grid-template-columns:repeat(4,1fr) auto;gap:12px;align-items:end;padding:16px 18px;
  border-bottom:.5px solid var(--line);background:rgba(255,255,255,.4);}
.filtros .acc{display:flex;gap:8px;}
.tablezone{padding:0;}
.lst{display:flex;flex-direction:column;height:100%;}
.lst .filtros,.lst .pager{flex:none;}
.lst .tablezone{flex:1;overflow:auto;min-height:0;}
.pager{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;border-top:.5px solid var(--line);font-size:calc(13px * var(--fs,1));color:var(--muted);background:rgba(255,255,255,.4);}
.pager .pages{display:flex;gap:4px;}
.pager .pg{min-width:28px;height:28px;border-radius:7px;display:grid;place-items:center;font-weight:600;color:#444;}
.pager .pg:hover{background:rgba(0,0,0,.06);}.pager .pg.on{background:var(--accent);color:#fff;}
.pager .pg.dis{opacity:.35;}

/* wizard */
.stepper{display:flex;align-items:center;padding:18px 26px;gap:0;border-bottom:.5px solid var(--line);}
.step{display:flex;align-items:center;gap:9px;font-size:calc(13.5px * var(--fs,1));color:var(--muted);font-weight:500;}
.step .num{width:24px;height:24px;border-radius:50%;background:#d2d2d7;color:#fff;display:grid;place-items:center;font-size:calc(12px * var(--fs,1));font-weight:700;}
.step.on .num{background:var(--accent);}.step.on{color:var(--text);font-weight:600;}
.step.done .num{background:var(--ok);}
.step .ln{flex:1;height:1.5px;background:var(--line);margin:0 14px;min-width:30px;}
.wzbody{padding:24px 26px;}
.wzgrid{display:grid;grid-template-columns:1fr 1fr;gap:0 22px;}
.alta-mapa{height:300px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);margin-bottom:14px;z-index:0;}
.wzfoot{display:flex;justify-content:flex-end;gap:9px;padding:14px 22px;border-top:.5px solid var(--line);background:rgba(255,255,255,.4);}
.subt{font-size:calc(15px * var(--fs,1));font-weight:600;margin-bottom:4px;}
.hint{font-size:calc(12.5px * var(--fs,1));color:var(--muted);margin:2px 0 16px;}
.lbl-sec{font-size:calc(12px * var(--fs,1));font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.3px;margin:6px 0 10px;}
.nota{background:color-mix(in srgb,var(--accent) 10%,white);border-left:3px solid var(--accent);border-radius:6px;padding:9px 12px;font-size:calc(12.5px * var(--fs,1));color:#3a4a63;margin-bottom:16px;}
.mapph{height:170px;border-radius:10px;border:.5px solid var(--line);position:relative;overflow:hidden;margin-bottom:14px;
  background:linear-gradient(rgba(255,255,255,.5),rgba(255,255,255,.5)),repeating-linear-gradient(0deg,#dde6ec 0 1px,transparent 1px 34px),repeating-linear-gradient(90deg,#dde6ec 0 1px,transparent 1px 34px),#eef3f6;}
.mapph .road{position:absolute;background:#cdd7de;}
.mapph .lbl{position:absolute;left:10px;bottom:10px;background:#fff;border-radius:8px;padding:7px 10px;font-size:calc(11.5px * var(--fs,1));color:#555;box-shadow:0 3px 8px rgba(0,0,0,.12);}

/* ficha */
.fhero{padding:28px;text-align:center;border-bottom:.5px solid var(--line);background:linear-gradient(180deg,rgba(255,255,255,.5),transparent);}
.fhero h2{font-size:calc(21px * var(--fs,1));font-weight:700;}.fhero .role{font-size:calc(13px * var(--fs,1));color:var(--muted);margin-top:3px;}
.fhero .badges{margin-top:12px;display:flex;gap:7px;justify-content:center;flex-wrap:wrap;}
.badge{font-size:calc(11.5px * var(--fs,1));font-weight:600;padding:3px 10px;border-radius:20px;}
.bg-ok{background:#ddf5e3;color:#1a8a3b;}.bg-off{background:#ffe1e1;color:#c52a2a;}.bg-app{background:#e3f0ff;color:#0a6cff;}.bg-no{background:#eee;color:#888;}
.fsec{padding:14px 26px;}.fsec h3{font-size:calc(11px * var(--fs,1));text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;margin-bottom:6px;}
.frow{display:flex;justify-content:space-between;padding:9px 0;border-bottom:.5px solid var(--line);font-size:calc(13.5px * var(--fs,1));}
.frow:last-child{border:none;}.frow .k{color:var(--muted);}.frow .v{font-weight:500;text-align:right;}

/* toasts */
.toasts{position:fixed;bottom:80px;right:18px;z-index:9999;display:flex;flex-direction:column;gap:9px;align-items:flex-end;}
.toast{background:rgba(40,40,44,.95);color:#fff;font-size:calc(13px * var(--fs,1));padding:11px 15px;border-radius:11px;box-shadow:0 10px 30px rgba(0,0,0,.35);
  display:flex;align-items:center;gap:9px;backdrop-filter:blur(10px);animation:tin .25s ease;max-width:320px;}
.toast .mi-r{font-size:calc(18px * var(--fs,1));}.toast.ok .mi-r{color:#5be37e;}.toast.info .mi-r{color:#67b7ff;}.toast.bad .mi-r{color:#ff7b72;}
@keyframes tin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
/* toast prominente (arriba, centrado, más grande) — ej. envío cancelado */
.toasts-top{position:fixed;top:52px;left:50%;transform:translateX(-50%);z-index:10000;display:flex;flex-direction:column;gap:9px;align-items:center;}
.toast.grande{font-size:calc(15.5px * var(--fs,1));font-weight:600;padding:15px 24px;max-width:560px;border-left:4px solid var(--bad);animation:tinTop .25s ease;}
.toast.grande .mi-r{font-size:calc(24px * var(--fs,1));}
@keyframes tinTop{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:none}}

/* resize handle (desktop) */
.resize{position:absolute;right:0;bottom:0;width:18px;height:18px;cursor:nwse-resize;z-index:5;}
.resize::after{content:"";position:absolute;right:3px;bottom:3px;width:9px;height:9px;
  border-right:2px solid rgba(0,0,0,.22);border-bottom:2px solid rgba(0,0,0,.22);border-bottom-right-radius:3px;}

/* login */
.login-body{display:grid;place-items:center;height:100%;overflow:hidden;}
.login-card{width:340px;max-width:90vw;background:var(--win);backdrop-filter:blur(30px) saturate(180%);
  border:.5px solid rgba(255,255,255,.5);border-radius:18px;padding:32px 28px;text-align:center;
  box-shadow:0 40px 90px -24px rgba(0,0,0,.55);}
.login-mark{width:88px;height:88px;border-radius:20px;margin:0 auto 16px;display:grid;place-items:center;
  font-size:calc(40px * var(--fs,1));font-weight:800;color:#fff;background:linear-gradient(160deg,var(--accent),var(--accent2));
  box-shadow:0 8px 20px -6px var(--accent);overflow:hidden;}
.login-mark img{width:100%;height:100%;object-fit:contain;border-radius:inherit;}
.login-title{font-size:calc(20px * var(--fs,1));font-weight:700;}
.login-sub{font-size:calc(12.5px * var(--fs,1));color:var(--muted);margin:3px 0 20px;}
.login-card .field{text-align:left;}
.login-btn{width:100%;justify-content:center;padding:10px;margin-top:6px;font-size:calc(14px * var(--fs,1));}
.login-error{background:color-mix(in srgb,var(--bad) 12%,white);color:var(--bad);font-size:calc(12.5px * var(--fs,1));
  border-radius:8px;padding:8px 10px;margin-bottom:14px;}

/* ---- escritorio: íconos de acceso directo (plantillas .osld) ---- */
.dsk-iconos{position:absolute;inset:0;z-index:1;padding:14px;display:flex;flex-direction:column;flex-wrap:wrap;align-content:flex-start;gap:6px;pointer-events:none;}
.dsk-icon{pointer-events:auto;width:96px;padding:8px 6px;border-radius:10px;display:flex;flex-direction:column;align-items:center;gap:6px;position:relative;text-align:center;}
.dsk-icon:hover{background:rgba(255,255,255,.18);}
.dsk-icon.dsk-sel{background:rgba(80,140,255,.30);outline:1.5px solid rgba(120,170,255,.85);}
.dsk-ic{width:48px;height:48px;border-radius:13px;display:grid;place-items:center;font-size:calc(26px * var(--fs,1));background:linear-gradient(160deg,#fff,#e7ebf0);box-shadow:inset 0 1px 1px rgba(255,255,255,.7),0 2px 6px rgba(0,0,0,.25);}
.dsk-nom{font-size:calc(11.5px * var(--fs,1));color:#fff;font-weight:600;text-shadow:0 1px 3px rgba(0,0,0,.55);line-height:1.15;max-width:92px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;}
.dsk-x{position:absolute;top:0;right:8px;font-size:calc(15px * var(--fs,1));color:#fff;opacity:0;background:rgba(0,0,0,.4);border-radius:50%;cursor:pointer;}
.dsk-icon:hover .dsk-x{opacity:1;}
#desktop.drag{outline:3px dashed rgba(255,255,255,.7);outline-offset:-10px;}
#desktop.drag::after{content:"⤓ .osld";position:absolute;inset:0;display:grid;place-items:center;font-size:calc(32px * var(--fs,1));font-weight:700;color:#fff;text-shadow:0 2px 8px rgba(0,0,0,.5);pointer-events:none;z-index:50;}
/* carpetas del escritorio */
.dsk-ic-folder{background:linear-gradient(160deg,#7fc4ff,#3b86d6);color:#fff;position:relative;}
.dsk-ic-folder .mi-r{font-size:calc(30px * var(--fs,1));color:#fff;}
.dsk-badge{position:absolute;top:-5px;right:-5px;min-width:18px;height:18px;padding:0 4px;border-radius:9px;display:grid;place-items:center;font-size:calc(11px * var(--fs,1));font-weight:700;color:#fff;background:#ff3b30;border:2px solid rgba(255,255,255,.85);}
.dsk-icon.drop{background:rgba(255,255,255,.32);outline:2px dashed rgba(255,255,255,.9);}
/* ventana de contenido de carpeta */
.folder-win{position:absolute;z-index:8000;width:440px;max-width:86%;min-height:200px;max-height:70%;display:flex;flex-direction:column;
  background:var(--win);backdrop-filter:blur(30px) saturate(180%);border:.5px solid rgba(0,0,0,.1);border-radius:14px;
  box-shadow:0 28px 60px -16px rgba(0,0,0,.55);overflow:hidden;}
.folder-win.drop{outline:2px dashed var(--accent);outline-offset:-6px;}
.fw-bar{display:flex;align-items:center;justify-content:space-between;padding:9px 12px;border-bottom:.5px solid var(--line);cursor:grab;background:color-mix(in srgb,var(--accent) 7%,transparent);}
.fw-ti{font-weight:700;font-size:calc(14px * var(--fs,1));display:flex;align-items:center;gap:7px;}
.fw-ti::before{content:"folder";font-family:'Material Icons Round';font-size:calc(19px * var(--fs,1));color:var(--accent);}
.fw-x{display:grid;place-items:center;width:26px;height:26px;border-radius:7px;color:#3a3a3c;}
.fw-x:hover{background:rgba(0,0,0,.08);}
.fw-grid{flex:1;overflow:auto;padding:14px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:8px;}
.fw-grid .dsk-nom{color:var(--text);text-shadow:none;}
.fw-grid .dsk-icon:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);}
.fw-grid .dsk-x{color:#fff;background:var(--accent);}
.fw-empty{margin:auto;color:var(--muted);font-size:calc(13px * var(--fs,1));text-align:center;padding:24px;}

/* botón de plantilla en la barra de ventana */
.wtpl .mi-r{font-size:calc(17px * var(--fs,1));}
.wtpl:hover{color:var(--accent);}
.whelp .mi-r{font-size:calc(17px * var(--fs,1));}
.whelp:hover{color:var(--accent);}
.help-pop{position:fixed;z-index:9800;width:270px;background:var(--win);backdrop-filter:blur(30px) saturate(180%);
  border:.5px solid rgba(0,0,0,.08);border-radius:10px;box-shadow:0 18px 44px -12px rgba(0,0,0,.45);padding:6px;}
.help-pop-h{padding:9px 10px 8px;border-bottom:.5px solid var(--line);margin-bottom:4px;}
.help-pop-ti{font-size:calc(14px * var(--fs,1));font-weight:700;}
.help-pop-tx{font-size:calc(12.5px * var(--fs,1));color:var(--muted);line-height:1.35;margin-top:3px;}
.help-pop-it{width:100%;display:flex;align-items:center;gap:9px;text-align:left;padding:8px 10px;border-radius:7px;font-size:calc(13px * var(--fs,1));color:var(--text);}
.help-pop-it:hover{background:color-mix(in srgb,var(--accent) 12%,transparent);}
.help-pop-it:disabled{opacity:.45;pointer-events:none;}
.help-pop-it .mi-r{font-size:calc(18px * var(--fs,1));color:var(--muted);}
.help-modal ul{margin-left:18px;display:grid;gap:7px;}
.help-sec{font-size:calc(12px * var(--fs,1));font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.3px;margin:0 0 8px;}
.help-sec+ul{margin-bottom:16px;}
.tour-ov{position:fixed;inset:0;z-index:99980;pointer-events:auto;}
.tour-dim{position:absolute;inset:0;background:rgba(12,14,24,.48);backdrop-filter:blur(1px);}
.tour-ring{position:absolute;border:2px solid #fff;border-radius:10px;box-shadow:0 0 0 9999px rgba(12,14,24,.48),0 0 0 4px color-mix(in srgb,var(--accent) 70%,transparent);
  transition:all .18s ease;pointer-events:none;}
.tour-card{position:absolute;width:320px;max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);display:flex;flex-direction:column;background:var(--win);border:.5px solid rgba(255,255,255,.6);
  border-radius:12px;box-shadow:0 24px 56px -14px rgba(0,0,0,.55);padding:14px;transition:top .18s ease,left .18s ease;}
.tour-k{font-size:calc(11px * var(--fs,1));font-weight:700;color:var(--accent);text-transform:uppercase;letter-spacing:.3px;margin-bottom:5px;flex-shrink:0;}
.tour-ti{font-size:calc(15px * var(--fs,1));font-weight:700;margin-bottom:5px;flex-shrink:0;}
.tour-tx{font-size:calc(13px * var(--fs,1));color:#555;line-height:1.42;overflow-y:auto;min-height:0;}
.tour-f{display:flex;justify-content:flex-end;gap:7px;margin-top:13px;flex-wrap:wrap;flex-shrink:0;}

/* modal genérico */
.modal-ov{position:fixed;inset:0;z-index:99990;display:grid;place-items:center;background:rgba(20,22,40,.4);backdrop-filter:blur(6px);}
.modal{width:380px;max-width:92vw;background:var(--win);border:.5px solid rgba(255,255,255,.5);border-radius:16px;box-shadow:0 40px 90px -24px rgba(0,0,0,.6);overflow:hidden;}
.modal-h{padding:14px 18px;font-size:calc(15px * var(--fs,1));font-weight:700;border-bottom:.5px solid var(--line);}
.modal-b{padding:18px;}
.modal-b .chk{cursor:pointer;}
.modal-f{display:flex;justify-content:flex-end;gap:9px;padding:13px 18px;border-top:.5px solid var(--line);background:rgba(255,255,255,.4);}

/* ---- módulo Zonas de entrega (modo polígono) ---- */
.zmini{width:160px;height:72px;border-radius:8px;overflow:hidden;border:.5px solid var(--line);background:#eef3f6;}
.zmap-wrap{display:flex;height:100%;position:relative;overflow:hidden;}
.zmap{flex:1;height:100%;min-width:0;}
.zmap-panel{width:0;overflow:hidden;background:var(--win);border-left:.5px solid var(--line);
  transition:width .25s cubic-bezier(.2,.9,.3,1);display:flex;flex-direction:column;}
.zmap-wrap.panel-open .zmap-panel{width:340px;}
.zpanel-h{padding:14px 16px;font-weight:700;font-size:calc(15px * var(--fs,1));border-bottom:.5px solid var(--line);white-space:nowrap;}
.zpanel-b{padding:16px;overflow:auto;flex:1;min-width:320px;}
.zpanel-f{display:flex;justify-content:flex-end;gap:9px;padding:12px 16px;border-top:.5px solid var(--line);background:rgba(255,255,255,.4);}

/* ---- módulo Mensajería APP ---- */
.msj{display:flex;align-items:flex-start;}
.msj-main{flex:1;padding:16px 20px;border-right:.5px solid var(--line);}
.msj-row{display:grid;grid-template-columns:220px 1fr;gap:16px;align-items:start;padding:14px 0;border-bottom:.5px solid var(--line);}
.msj-row.msj-head{font-weight:700;color:var(--muted);font-size:calc(11px * var(--fs,1));text-transform:uppercase;letter-spacing:.3px;padding-bottom:8px;border-bottom:1px solid var(--line);}
.msj-inst{font-weight:600;color:var(--text);font-size:calc(13.5px * var(--fs,1));padding-top:6px;}
.msj-ta{width:100%;resize:vertical;font-size:calc(13px * var(--fs,1));line-height:1.5;font-family:var(--font);}
.msj-dic{width:360px;flex:none;padding:16px 18px;}
.msj-dic-h{font-weight:700;text-align:center;font-size:calc(14px * var(--fs,1));}
.msj-clave{background:color-mix(in srgb,var(--accent) 12%,white);color:var(--accent);padding:2px 6px;border-radius:6px;font-size:calc(12px * var(--fs,1));cursor:pointer;white-space:nowrap;}
.msj-clave:hover{background:color-mix(in srgb,var(--accent) 22%,white);}

/* ---- módulo Estado de órdenes / preenvíos ---- */
.pe-filtros{display:grid;grid-template-columns:repeat(5,1fr) auto;gap:12px;align-items:end;padding:16px 18px;border-bottom:.5px solid var(--line);background:rgba(255,255,255,.4);flex:none;}
.pe-acc{display:flex;gap:8px;align-items:end;}
.pe-mas{display:grid;grid-template-columns:repeat(5,1fr);gap:12px;padding:14px 18px;border-bottom:.5px solid var(--line);background:rgba(255,255,255,.25);flex:none;}
.pe-mas[hidden]{display:none;}
.pe-leyenda{display:flex;flex-wrap:wrap;gap:14px;padding:10px 18px;border-bottom:.5px solid var(--line);font-size:calc(12px * var(--fs,1));color:var(--muted);flex:none;}
.pe-leg{display:inline-flex;align-items:center;gap:6px;}
.pe-dot{width:11px;height:11px;border-radius:50%;display:inline-block;flex:none;vertical-align:middle;}
.pe-tabla th,.pe-tabla td{white-space:nowrap;}
.pe-tabla th.pe-th{cursor:pointer;user-select:none;}
.pe-tabla th.pe-th:hover{color:var(--accent);}
.pe-foot{display:flex;justify-content:center;padding:12px;border-top:.5px solid var(--line);flex:none;}

/* editor de columnas */
.col-panel{position:fixed;z-index:9700;width:280px;max-height:70vh;overflow:auto;padding:6px;
  background:var(--win);backdrop-filter:blur(30px) saturate(180%);border:.5px solid rgba(0,0,0,.08);
  border-radius:10px;box-shadow:0 18px 44px -12px rgba(0,0,0,.45);}
.col-h{font-weight:700;font-size:calc(13px * var(--fs,1));padding:8px 10px;border-bottom:.5px solid var(--line);margin-bottom:4px;}
.col-it{display:flex;align-items:center;gap:8px;padding:6px 8px;border-radius:7px;}
.col-it:hover{background:color-mix(in srgb,var(--accent) 8%,transparent);}
.col-lbl{flex:1;font-size:calc(13px * var(--fs,1));}
.col-mv{font-size:calc(18px * var(--fs,1));color:var(--muted);cursor:pointer;border-radius:5px;}
.col-mv:hover{color:var(--accent);background:rgba(0,0,0,.06);}

/* ---- módulo Health (estado de microservicios) ---- */
.health{padding:20px 24px;}
.hl-resumen{font-size:calc(13px * var(--fs,1));color:var(--muted);margin-bottom:14px;font-weight:600;}
.hl-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:14px;}
.hl-card{display:flex;align-items:center;gap:12px;padding:14px 16px;border-radius:12px;border:.5px solid var(--line);background:rgba(255,255,255,.5);}
.hl-dot{width:12px;height:12px;border-radius:50%;flex:none;}
.hl-card.on .hl-dot{background:var(--ok);box-shadow:0 0 0 4px color-mix(in srgb,var(--ok) 22%,transparent);}
.hl-card.off .hl-dot{background:var(--bad);box-shadow:0 0 0 4px color-mix(in srgb,var(--bad) 22%,transparent);}
.hl-nom{font-weight:600;font-size:calc(14px * var(--fs,1));}
.hl-est{font-size:calc(12px * var(--fs,1));color:var(--muted);margin-top:2px;}
.hl-card.off .hl-est{color:var(--bad);font-weight:600;}
.hl-up{font-size:calc(11px * var(--fs,1));color:var(--muted);}

/* ============ RESPONSIVE / MOBILE (≤768px) — al FINAL para ganar la cascada ============ */
@media (max-width: 768px){
  :root{ --bar:48px; --dock:64px; }

  .mb-burger{ display:flex; }
  #mbEmpresa{ display:none; }
  .menubar{ gap:8px; padding:0 10px; }

  /* menú superior → drawer lateral */
  /* la menubar tiene backdrop-filter → es el bloque contenedor del .menu fixed.
     por eso usamos height por viewport (no bottom:0, que colapsaría a la altura de la barra). */
  .menu{ position:fixed; top:var(--bar); left:0; height:calc(100vh - var(--bar)); width:82%; max-width:320px;
    flex-direction:column; align-items:stretch; overflow:auto; z-index:9100; padding:8px;
    background:#fff; border-right:.5px solid var(--line);
    transform:translateX(-100%); transition:transform .22s; box-shadow:6px 0 24px rgba(0,0,0,.18); }
  .menu.abierto{ transform:none; }
  .mgrp{ flex-direction:column; align-items:stretch; }
  .mbtn{ width:100%; justify-content:flex-start; height:auto; padding:12px; font-size:calc(14px * var(--fs,1)); }
  .mbtn .car{ margin-left:auto; }
  .mdrop{ position:static; display:none; max-height:none; padding:2px 0 6px 22px;
    background:transparent; border:none; box-shadow:none; }
  .mgrp.open .mdrop{ display:block; }
  .mitem{ padding:10px; }
  .menu-bg.show{ display:block; position:fixed; inset:var(--bar) 0 0 0; background:rgba(0,0,0,.32); z-index:8999; }

  /* ventanas: pantalla completa, sin redondeo/resize */
  .window{ border-radius:0 !important; min-width:0; }
  .resize{ display:none; }
  .lights .lt.g{ display:none; }

  /* grids → 1 columna */
  .filtros,.wzgrid,.pf-grid,.pf-grid-3,.cfg-attr,.cfg-top{ grid-template-columns:1fr !important; }
  .cfg-top{ gap:14px; }
  .stepper{ overflow-x:auto; padding:14px 16px; }

  /* tablas: scroll horizontal */
  .tabla{ min-width:620px; }

  /* paneles/menús flotantes casi full-width */
  .notif-panel,.user-menu,.dock-pop{ left:8px !important; right:8px !important; width:auto !important; transform:none !important; }

  /* dock de abiertos: barra inferior con scroll */
  .dock{ left:8px; right:8px; transform:none; justify-content:flex-start; overflow-x:auto; border-radius:14px; }
  .dock .it{ width:46px; height:46px; }

  .login-card{ width:100%; max-width:380px; }

  /* chat flotante: panel casi full-screen y FAB despejado del dock */
  .chat-fab{ right:14px; bottom:84px; }
  .chat-panel{ left:8px; right:8px; bottom:84px; top:auto; width:auto; height:min(76vh,560px); }
}

/* ===== Densidad adaptativa por ALTO de viewport — que entre más info en pantallas chicas ===== */
/* Laptops / poca altura (1366×768, 1536×864…): filas, filtros y pager más compactos. */
@media (max-height: 880px){
  .tabla th, .tabla td{ padding:5px 10px; }
  .pager{ padding:7px 16px; }
  .filtros{ padding:10px 16px; gap:10px; }
  .env-filtros{ padding:8px 12px 4px; }
  .env-grid, .env-adv{ gap:6px 12px; }
  .env-acc{ margin-top:7px; }
  .env-filtros .ms-control{ max-height:58px; }
}
/* Muy bajas (≈720, o 768 con barra del navegador): densidad máxima. */
@media (max-height: 700px){
  .tabla th, .tabla td{ padding:4px 9px; }
  .tabla td{ font-size:calc(12.5px * var(--fs,1)); }
  .pager{ padding:5px 14px; }
  .filtros{ padding:8px 14px; gap:8px; }
  .env-filtros{ padding:6px 12px 2px; }
  .env-acc{ margin-top:5px; }
}

/* ===== Loader logístico (UI.loader) — camión en ruta hacia el destino, tematizado al tenant ===== */
.ld-load{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:34px 20px;}
.ld-load .ld-scene{position:relative;width:200px;height:58px;overflow:hidden;}
/* ruta con guiones que se desplazan → sensación de avance */
.ld-road{position:absolute;left:0;right:0;bottom:8px;height:3px;border-radius:99px;opacity:.45;
  background:repeating-linear-gradient(90deg,var(--accent) 0 12px,transparent 12px 26px);background-size:26px 3px;animation:ld-road .45s linear infinite;}
/* pin de destino, latiendo */
.ld-pin{position:absolute;right:8px;bottom:13px;color:var(--accent);opacity:.85;}
.ld-pin .mi-r{font-size:calc(26px * var(--fs,1));animation:ld-pin 1.2s ease-in-out infinite;}
/* camión que cruza la escena de izq → der (y vuelve a entrar) con suspensión */
.ld-truck{position:absolute;bottom:11px;left:0;will-change:transform;animation:ld-drive 2.4s linear infinite;}
.ld-truck .mi-r{display:block;font-size:calc(42px * var(--fs,1));line-height:1;color:var(--accent);
  filter:drop-shadow(0 5px 7px color-mix(in srgb,var(--accent) 35%,transparent));animation:ld-jiggle .42s ease-in-out infinite;}
.ld-load .ld-txt{font-size:calc(13.5px * var(--fs,1));font-weight:600;letter-spacing:.2px;color:var(--muted);}
@keyframes ld-drive{0%{transform:translateX(-48px);}100%{transform:translateX(208px);}}
@keyframes ld-jiggle{0%,100%{transform:translateY(0) rotate(-.6deg);}50%{transform:translateY(-2px) rotate(.6deg);}}
@keyframes ld-road{to{background-position:-26px 0;}}
@keyframes ld-pin{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}
/* overlay para cubrir un contenedor (position:relative) mientras carga */
.ld-overlay.win-load{top:42px;border-radius:0 0 12px 12px;}   /* loader a nivel ventana: cubre el wbody, deja la barra de título usable */
.ld-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;z-index:40;
  background:color-mix(in srgb,var(--win,#fff) 72%,transparent);backdrop-filter:blur(2px);animation:ld-fade .2s ease;}
@keyframes ld-fade{from{opacity:0;}to{opacity:1;}}
/* boot: pantalla completa mientras arranca el OS, se desvanece al terminar */
.ld-boot{position:fixed;inset:0;z-index:99999;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(125% 120% at 50% 0%, color-mix(in srgb,var(--accent) 9%,#fff) 0%, #fff 62%);transition:opacity .4s ease;}
.ld-boot.hide{opacity:0;pointer-events:none;}

/* ===== Procesando global (net.inicio/fin) — chip flotante + bloqueo del botón disparador ===== */
.op-procesando{position:fixed;left:50%;bottom:18px;transform:translateX(-50%) translateY(14px);z-index:100000;
  display:flex;align-items:center;gap:9px;padding:9px 16px;border-radius:24px;pointer-events:none;
  background:color-mix(in srgb,var(--accent) 92%,#000 8%);color:#fff;font-size:calc(13px * var(--fs,1));font-weight:600;
  box-shadow:0 8px 24px rgba(0,0,0,.22);opacity:0;visibility:hidden;transition:opacity .18s ease,transform .18s ease;}
.op-procesando.show{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0);}
.op-spin{width:15px;height:15px;border-radius:50%;border:2.5px solid rgba(255,255,255,.35);border-top-color:#fff;animation:op-spin .7s linear infinite;}
@keyframes op-spin{to{transform:rotate(360deg);}}
/* control bloqueado mientras su request está en vuelo: no clickeable + apagado + cursor de espera */
.op-busy{pointer-events:none !important;opacity:.55 !important;cursor:progress !important;filter:grayscale(.25);}

/* QR del listado de envíos: popover flotante al pasar el mouse (encodea ml_qr_seguridad) */
.env-qr{cursor:pointer;}
.env-qr-pop{position:fixed;z-index:100001;background:#fff;padding:12px;border-radius:12px;box-shadow:0 10px 32px rgba(0,0,0,.30);pointer-events:none;animation:ld-fade .12s ease;}
.env-qr-pop img,.env-qr-pop canvas{display:block;}

/* configurador de columnas visibles del listado de envíos */
.env-cols-pop{position:fixed;z-index:100000;background:var(--win,#fff);border-radius:10px;box-shadow:0 10px 30px rgba(0,0,0,.25);padding:8px;min-width:210px;max-height:62vh;overflow:auto;animation:ld-fade .12s ease;}
.env-cols-pop .ecp-h{font-weight:700;font-size:calc(11.5px * var(--fs,1));color:var(--muted);text-transform:uppercase;letter-spacing:.4px;padding:4px 8px 7px;}
.env-cols-pop .ecp-it{display:flex;align-items:center;gap:9px;padding:6px 8px;border-radius:7px;cursor:pointer;font-size:calc(13px * var(--fs,1));}
.env-cols-pop .ecp-it:hover{background:color-mix(in srgb,var(--accent) 10%,transparent);}
.env-cols-pop .ecp-it input{accent-color:var(--accent);cursor:pointer;}

/* ===== Lista de precios (sistema/listas) ===== */
.chip-tipo{display:inline-block;font-size:calc(11px * var(--fs,1));font-weight:600;padding:2px 9px;border-radius:20px;background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent);}
.btn.sm{padding:4px 10px;font-size:calc(12.5px * var(--fs,1));border-radius:7px;}
.inp.sm{padding:5px 8px;font-size:calc(12.5px * var(--fs,1));height:auto;}
.btn.dis{opacity:.5;cursor:not-allowed;}
.lst-zonas-head{display:flex;align-items:center;justify-content:space-between;margin:14px 0 8px;}
.lst-ztab td,.lst-ztab th{padding:6px 8px;vertical-align:middle;}
.lst-ztab .ico{padding:5px;border-radius:6px;color:var(--muted);cursor:pointer;display:inline-flex;}
.lst-ztab .ico:hover{background:rgba(0,0,0,.06);}
.lst-ztab .ojito:hover{color:var(--accent);}.lst-ztab .eli:hover{color:var(--bad);}
.lst-ptab td,.lst-ptab th{padding:7px 8px;vertical-align:middle;}
.inp-money{display:flex;align-items:center;gap:4px;}
.inp-money>span{color:var(--muted);font-weight:600;}
.btn-adic{position:relative;display:inline-flex;align-items:center;gap:3px;}
.lst-cnt{display:inline-flex;align-items:center;justify-content:center;min-width:16px;height:16px;padding:0 4px;border-radius:9px;
  background:var(--accent);color:#fff;font-size:calc(10.5px * var(--fs,1));font-weight:700;}
.lst-tabs{display:flex;gap:4px;border-bottom:1px solid var(--line);margin-bottom:12px;}
.lst-tab{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border:none;background:none;cursor:pointer;
  font-size:calc(13px * var(--fs,1));font-weight:600;color:var(--muted);border-bottom:2px solid transparent;margin-bottom:-1px;}
.lst-tab:hover{color:var(--ink,#222);}
.lst-tab.on{color:var(--accent);border-bottom-color:var(--accent);}
.lst-atab td,.lst-atab th{padding:6px 8px;vertical-align:middle;}
.lst-atab .ico{padding:4px;border-radius:6px;color:var(--muted);cursor:pointer;display:inline-flex;}
.lst-atab .ico:hover{background:rgba(0,0,0,.06);}.lst-atab .eli:hover{color:var(--bad);}
.lst-poli{display:flex;flex-direction:column;gap:10px;}
.lst-pmap{height:300px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);z-index:0;}
.lst-pmap>div{height:100%;}
.lst-ztab tr[data-row]{cursor:pointer;}
.lst-sw{display:inline-block;width:11px;height:11px;border-radius:3px;margin-right:7px;vertical-align:middle;}
/* calculador de precios (envios/listaprecios) */
.calc{display:grid;grid-template-columns:1fr 1fr;gap:18px;padding:20px 24px;height:100%;align-content:start;}
.calc-map{height:230px;border-radius:10px;overflow:hidden;border:.5px solid var(--line);z-index:0;}
.calc-adic{display:grid;grid-template-columns:1fr 1fr;gap:0 14px;}
.calc-res{display:flex;align-items:flex-start;}
.calc-card{width:100%;background:rgba(255,255,255,.6);border:.5px solid var(--line);border-radius:12px;padding:16px 18px;}
.calc-card.bad{display:flex;gap:10px;align-items:center;color:var(--bad);}
.calc-zona{font-size:calc(15px * var(--fs,1));margin-bottom:12px;padding-bottom:10px;border-bottom:.5px solid var(--line);}
.calc-line{display:flex;justify-content:space-between;padding:6px 0;font-size:calc(14px * var(--fs,1));}
.calc-line.sub{color:var(--muted);font-size:calc(13px * var(--fs,1));padding-left:8px;}
.calc-line.total{border-top:.5px solid var(--line);margin-top:8px;padding-top:12px;font-weight:700;font-size:calc(18px * var(--fs,1));color:var(--accent);}

/* ===== Informe ML21 (cumplimiento entrega Flex 21hs) ===== */
.ml21 { padding: 14px; display: flex; flex-direction: column; gap: 12px; }
.ml21-filtro { display: flex; gap: 16px; align-items: flex-end; flex-wrap: wrap; }
.ml21-f { display: flex; flex-direction: column; gap: 4px; }
.ml21-f > span { font-size:calc(12px * var(--fs,1)); color: var(--muted, #888); }
.ml21-filtro .inp { min-width: 140px; }
.ml21-resumen { flex: 1; min-width: 260px; }
.ml21-pct-txt { font-size:calc(13px * var(--fs,1)); margin-bottom: 5px; }
.ml21-bar { height: 22px; background: #FF2D9B; border-radius: 7px; overflow: hidden; box-shadow: inset 0 0 0 1px rgba(0,0,0,.06); }
.ml21-bar-ok { height: 100%; background: #7C4DFF; transition: width .4s; }
.ml21-grp { padding: 0; overflow: hidden; }
.ml21-gh { display: flex; justify-content: space-between; align-items: center; padding: 12px 18px; cursor: pointer; user-select: none; }
.ml21-gh h5 { margin: 0; font-size:calc(16px * var(--fs,1)); }
.ml21-gb { padding: 0 10px 12px; }
.ml21-vacio { padding: 18px; text-align: center; color: var(--muted, #888); }
.ml21-tabla th, .ml21-tabla td { text-align: center; }
.ml21-tabla .ml21-nom { text-align: left; font-weight: 500; }
.ml21-ver { color: var(--accent, #228CEE); }
.ml21-graf-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; flex-wrap: wrap; gap: 8px; font-weight: 600; }
.ml21-tabs { display: flex; gap: 6px; }
.ml21-tab { border: 1px solid var(--linea, #ddd); background: transparent; border-radius: 6px; padding: 5px 12px; cursor: pointer; font-size:calc(13px * var(--fs,1)); }
.ml21-tab.on { background: var(--accent, #228CEE); color: #fff; border-color: var(--accent, #228CEE); }
.ml21-canvaswrap { position: relative; height: 340px; }
.ml21-modal-bg { position: fixed; inset: 0; background: rgba(0,0,0,.42); display: flex; align-items: center; justify-content: center; z-index: 99999; }
.ml21-modal { max-width: 920px; width: 92%; max-height: 82vh; overflow: auto; padding: 16px 18px; }
.ml21-modal-h { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.ml21-modal-h h4 { margin: 0; }
.ml21-tag { font-size:calc(11px * var(--fs,1)); padding: 2px 8px; border-radius: 10px; color: #fff; }
.ml21-tag.warn { background: #FF9800; }
.ml21-tag.bad { background: #FF0000; }
.ml21-noent td { background: rgba(255,0,0,.04); }

/* ===== GeoEnvíos Masivos (tabla semáforo) ===== */
.geom-head { padding: 8px 12px; font-size:calc(13px * var(--fs,1)); line-height: 1.5; }
.geom-bar { display: flex; align-items: center; gap: 16px; padding: 6px 12px; flex-wrap: wrap; }
.geom-all { display: flex; align-items: center; gap: 6px; font-size:calc(13px * var(--fs,1)); cursor: pointer; }
.geom-leg { font-size:calc(12px * var(--fs,1)); color: var(--muted,#888); display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.geom-bar .btn.pri { margin-left: auto; }
.geom-sem { display: inline-block; width: 14px; height: 14px; border-radius: 50%; vertical-align: middle; margin: 0 2px; }
.geom-tabla td { vertical-align: middle; }
.geom-geo { color: var(--muted,#666); font-size:calc(12px * var(--fs,1)); }

/* ===== Versión del OS + Changelog ===== */
.mitem.mver { opacity: .6; font-size:calc(12px * var(--fs,1)); border-top: 1px solid var(--linea,#eee); margin-top: 4px; }
.mitem.mver:hover { opacity: 1; }
.cl-ov { position: fixed; inset: 0; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; z-index: 100000; }
.cl-modal { background: var(--card,#fff); color: var(--txt,#222); border-radius: 12px; max-width: 580px; width: 92%; max-height: 82vh; display: flex; flex-direction: column; box-shadow: 0 10px 40px rgba(0,0,0,.3); }
.cl-h { display: flex; align-items: center; gap: 8px; padding: 14px 18px; border-bottom: 1px solid var(--linea,#eee); font-weight: 600; }
.cl-h b { color: var(--accent,#228CEE); }
.cl-h .cl-x { margin-left: auto; background: none; border: none; cursor: pointer; color: var(--muted,#888); }
.cl-body { padding: 12px 18px; overflow: auto; }
.cl-ver { margin-bottom: 14px; }
.cl-vh { display: flex; align-items: baseline; gap: 10px; margin-bottom: 6px; }
.cl-vh b { font-size:calc(15px * var(--fs,1)); } .cl-vh span { font-size:calc(12px * var(--fs,1)); color: var(--muted,#888); }
.cl-ver ul { margin: 0; padding-left: 20px; } .cl-ver li { font-size:calc(13px * var(--fs,1)); line-height: 1.6; }

/* ===== Ruteate semimanual: extremos (1ª/última parada) ===== */
.rut-dot.p { background: #1f9d57 !important; box-shadow: 0 0 0 3px rgba(31,157,87,.35); }
.rut-dot.u { background: #e53935 !important; box-shadow: 0 0 0 3px rgba(229,57,53,.35); }
.rut-pp b { font-size:calc(13px * var(--fs,1)); }
.rut-pp-cli { font-size:calc(12px * var(--fs,1)); color: var(--muted,#666); margin: 2px 0 8px; }
.rut-pp-btns { display: flex; gap: 6px; }
.rut-pp-btns .btn { padding: 5px 9px; font-size:calc(12px * var(--fs,1)); }

/* ===== Ruteate: reubicar (modal con mapa) + export ===== */
.rut-pp-reub { width: 100%; margin-top: 6px; justify-content: center; }
.modal.rut-reub { width: min(620px, 94vw); }
.rut-reub-map { height: 420px; border-radius: 8px; overflow: hidden; }
.rut-reub-hint { font-size:calc(12px * var(--fs,1)); color: var(--muted,#888); margin-top: 8px; text-align: center; }
.rut2-acc .btn.ico { padding: 6px 9px; }

/* ===== Ruteate: ventana horaria (experimental) ===== */
.rut2-chk.rut2-exp { color: #7C4DFF; font-weight: 500; }
.rut-pp-vh { display: flex; align-items: center; gap: 6px; margin: 4px 0 8px; }
.rut-pp-vh label { font-size:calc(12px * var(--fs,1)); color: var(--muted,#666); white-space: nowrap; }
.rut-pp-vh input { padding: 3px 6px; font-size:calc(12px * var(--fs,1)); width: auto; }

/* ===== Ruteate listado: ventana horaria (columna hora límite) ===== */
.rut-chk { display: inline-flex; align-items: center; gap: 6px; font-size:calc(13px * var(--fs,1)); cursor: pointer; margin-left: 14px; }
.rut-hora { width: 112px; padding: 3px 6px; }

/* ===== Ruteate: no-asignadas + paradas tardías ===== */
.rut2-warn { background: #fde7e7; color: #b71c1c; border-radius: 8px; padding: 8px 10px; margin-bottom: 8px; font-size:calc(12px * var(--fs,1)); display: flex; align-items: center; gap: 6px; }
.rut2-stop.tarde { border-left: 3px solid #e53935; }
.rut2-tarde { color: #e53935; font-weight: 600; }
.rut2-okh { color: #1f9d57; }

/* ===== Colecta → Asignación ===== */
.colasg .col-filtros-acc { display: flex; align-items: flex-end; flex: 0 0 auto; }
.casg-warn { color: #e53935; font-size: calc(18px * var(--fs,1)); vertical-align: middle; cursor: help; }
.casg-chip { display: inline-block; background: color-mix(in srgb, var(--accent) 12%, transparent); color: var(--accent); border-radius: 10px; padding: 1px 9px; font-size: calc(11.5px * var(--fs,1)); font-weight: 700; }
.casg-rsel { background: color-mix(in srgb, var(--accent) 6%, transparent); }
.casg-ck-on { color: var(--accent); cursor: pointer; font-size: calc(20px * var(--fs,1)); }
.casg-foot { display: flex; align-items: flex-end; gap: 12px; margin-top: 10px; padding: 12px; }
.casg-foot .field { flex: 0 0 240px; }
.casg-tabla td .mi-r { font-size: calc(18px * var(--fs,1)); }

/* ===== Informes → Analizador de rutas ===== */
.anr-filtros { display:flex; align-items:flex-end; gap:12px; padding:12px; }
.anr-filtros .field { flex:0 0 230px; }
.anr-tabla td { padding:11px 14px; }
.anr-mapa { display:flex; flex-direction:column; gap:10px; height:100%; }
.anr-mapa-h { font-size:calc(16px * var(--fs,1)); font-weight:700; }
.anr-mapa-h .anr-chofer { color:var(--accent); }
.anr-mapa-row { display:flex; gap:10px; flex:1; min-height:0; }
.anr-stops { flex:0 0 300px; overflow-y:auto; max-height:600px; display:flex; flex-direction:column; gap:8px; padding-right:4px; }
.anr-map-wrap { flex:1; position:relative; }
.anr-map { height:600px; border-radius:10px; }
.anr-hora { position:absolute; top:10px; right:12px; z-index:520; background:rgba(255,255,255,.88); border-radius:8px; padding:3px 12px; font-size:calc(17px * var(--fs,1)); box-shadow:0 1px 4px rgba(0,0,0,.25); }
.anr-stop { position:relative; display:flex; align-items:center; gap:8px; background:#fff; border:.5px solid var(--line); border-radius:10px; padding:10px 12px 10px 14px; cursor:pointer; }
.anr-stop:hover { background:rgba(0,0,0,.03); }
.anr-stop-n { position:absolute; top:2px; left:5px; font-weight:800; color:var(--accent); font-size:calc(10.5px * var(--fs,1)); }
.anr-stop-b { flex:1; display:flex; flex-direction:column; gap:3px; }
.anr-stop-tr { font-weight:700; font-size:calc(12px * var(--fs,1)); }
.anr-stop-hr { color:var(--accent); font-size:calc(11.5px * var(--fs,1)); }
.anr-stop-tr .mi-r, .anr-stop-hr .mi-r { font-size:calc(15px * var(--fs,1)); vertical-align:middle; }
.anr-stop-ojo { color:var(--accent); cursor:pointer; }
.anr-vacio { color:var(--muted); text-align:center; padding:20px; }
.anr-ctrls { display:flex; align-items:center; justify-content:space-between; gap:10px; padding-top:4px; }
.anr-ctrls-r { display:flex; gap:8px; }
.anr-pin { width:26px; height:26px; border-radius:50%; background:var(--c,#35B7AF); color:#fff; font-weight:800; font-size:calc(12px * var(--fs,1)); display:grid; place-items:center; border:2px solid #fff; box-shadow:0 2px 4px rgba(0,0,0,.4); }
.anr-truck { width:34px; height:34px; border-radius:50%; background:#7117EB; color:#fff; display:grid; place-items:center; border:3px solid #fff; box-shadow:0 2px 6px rgba(0,0,0,.5); }
.anr-truck .mi-r { font-size:calc(20px * var(--fs,1)); }

/* ===== Colecta → Ruteo (listado de choferes) ===== */
.colrut-tabla td { padding: 12px 14px; }
.colrut-si { color: #1f9d57; font-weight: 700; }
.colrut-no { color: var(--muted); font-weight: 700; }

/* ===== Colecta → Listado ===== */
.col-filtros { padding: 12px; }
.col-fila { display: flex; gap: 10px; flex-wrap: wrap; }
.col-fila .field { flex: 1 1 150px; }
.col-btns { display: flex; gap: 10px; margin-top: 10px; flex-wrap: wrap; }
.col-resumen-card { padding: 10px 14px; }
.col-resumen-h { display: flex; align-items: center; justify-content: space-between; cursor: pointer; }
.col-resumen-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(180px, 1fr)); gap: 4px 16px; margin-top: 8px; }
.col-res-item { font-size:calc(13px * var(--fs,1)); } .col-res-item b { color: #1f9d57; }
.col-vacio { font-size:calc(13px * var(--fs,1)); color: #888; padding: 6px 0; }
.col-mapa-modal { width: min(900px, 94vw); } .col-mapa-modal .modal-h .col-mapa-x { margin-left: auto; }
.col-mapa { height: 520px; border-radius: 8px; overflow: hidden; }

/* ===== Circuito (ayuda: flujo animado de "cómo funciona" el módulo) ===== */
.circ-modal{max-width:940px;width:92vw;}
.circ-body{display:flex;flex-direction:column;gap:24px;max-height:72vh;overflow:auto;padding:6px 2px;}
.circ-flujo-ti{display:flex;align-items:center;gap:8px;font-weight:700;margin-bottom:12px;color:var(--accent);font-size:calc(15px * var(--fs,1));}
.circ-pasos{display:flex;flex-wrap:wrap;align-items:stretch;gap:10px;}
.circ-paso{flex:1 1 175px;min-width:165px;max-width:250px;background:#fff;border:1px solid #e6e8ee;border-radius:12px;padding:14px;box-shadow:0 6px 16px -10px rgba(0,0,0,.3);opacity:0;}
.circ-ico{width:38px;height:38px;border-radius:10px;display:grid;place-items:center;background:linear-gradient(160deg,var(--accent),var(--accent2));color:#fff;margin-bottom:8px;}
.circ-ico .mi-r{font-size:calc(20px * var(--fs,1));}
.circ-ti{font-weight:700;margin-bottom:4px;font-size:calc(13.5px * var(--fs,1));}
.circ-tx{font-size:calc(12.5px * var(--fs,1));color:#5b5f6b;line-height:1.45;}
.circ-arrow{display:grid;place-items:center;color:var(--accent);flex:0 0 auto;align-self:center;opacity:0;}
.circ-arrow .mi-r{font-size:calc(26px * var(--fs,1));}
.circ-play .circ-paso{animation:circIn .5s cubic-bezier(.2,.8,.2,1) var(--d,0s) both;}
.circ-play .circ-arrow{animation:circArrow .4s ease var(--d,0s) both;}
@keyframes circIn{from{opacity:0;transform:translateY(16px) scale(.92);}to{opacity:1;transform:none;}}
@keyframes circArrow{from{opacity:0;transform:translateX(-10px);}to{opacity:1;transform:none;}}
@media (max-width:640px){.circ-pasos{flex-direction:column;}.circ-arrow{transform:rotate(90deg);}}

/* ============================================================================
   REDISEÑO LISTADO DE ENVÍOS (ref. Figma) — acento VIOLETA fijo #6900fe.
   Todo va scopeado a .lst.env → el violeta y el look NO se filtran al resto del OS.
   La funcionalidad (filtros/multiselect/configurador/estado inline) no cambia: solo el markup/orden y el CSS.
   ============================================================================ */
.lst.env{
  --accent:#6900fe;          /* pisa el tema SOLO acá: btn.pri / inp:focus / ms / pg.on heredan violeta */
  --accent2:#5800d6;
  --eg-ink:#1E2229; --eg-muted:#64748B; --eg-line:#e9eef5; --eg-soft:#F1F5F9; --eg-head:#F8FAFC; --eg-bd:#cfd6e4;
  --eg-mono:'JetBrains Mono',ui-monospace,Menlo,Consolas,monospace;
  font-family:'Inter',var(--font);
  display:flex;flex-direction:column;height:100%;background:#fff;color:var(--eg-ink);
}

/* ---- barra de filtros (card redondeada) ---- */
.lst.env .env-filtros{padding:14px 16px;margin:12px 12px 0;background:#fff;border:1px solid var(--eg-line);
  border-radius:16px;box-shadow:0 2px 20px rgba(0,0,0,.03);}
.lst.env .envf-row1{display:flex;flex-wrap:wrap;align-items:flex-start;gap:10px 12px;justify-content:space-between;}
.lst.env .envf-left{display:flex;flex-wrap:wrap;align-items:center;gap:10px;flex:1;min-width:0;}

/* rango de fecha unificado (tipo + desde/hasta en una sola píldora) */
.lst.env .envf-date{display:flex;align-items:center;height:40px;padding:0 10px;border:1px solid var(--eg-bd);border-radius:10px;background:#fff;}
.lst.env .envf-date:focus-within{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);}
.lst.env .envf-datetipo{border:none;background:transparent;font-weight:600;color:var(--eg-ink);font-size:calc(13px*var(--fs,1));cursor:pointer;outline:none;}
.lst.env .envf-sep{width:1px;height:18px;background:#e2e8f0;margin:0 8px;flex:none;}
.lst.env .envf-cal{color:var(--eg-muted);font-size:calc(18px*var(--fs,1));margin-right:6px;cursor:pointer;}
.env-mlturbo{color:#e11d1d;font-weight:800;letter-spacing:.02em;white-space:nowrap;}   /* origen de un envío turbo (envios.turbo=1) */
.env-turbolim{color:#e11d1d;font-weight:700;font-size:calc(11px*var(--fs,1));white-space:nowrap;}   /* límite de entrega turbo bajo Fecha venta */
.lst.env .envf-din{border:none;background:transparent;font-family:var(--eg-mono);font-size:calc(12.5px*var(--fs,1));color:var(--eg-ink);outline:none;width:104px;cursor:pointer;}
.lst.env .envf-din::-webkit-calendar-picker-indicator{display:none;}   /* un solo icono (el envf-cal); el picker abre al clickear */
.lst.env .envf-dash{color:#cbd5e1;margin:0 2px;}
/* fecha dd/mm/aaaa: input de texto + date nativo oculto (solo para el calendario) */
.lst.env .envf-dwrap{position:relative;display:inline-flex;align-items:center;}
.lst.env .envf-dtext{width:88px;text-align:center;}
.lst.env .envf-dpick{position:absolute;inset:0;width:100%;opacity:0;border:0;padding:0;margin:0;pointer-events:none;}

/* origen / depósito sin borde */
.lst.env .envf-pick{display:flex;align-items:center;gap:6px;height:40px;padding:0 10px;border-radius:10px;}
.lst.env .envf-pick:hover{background:var(--eg-soft);}
.lst.env .envf-pick>span{font-size:calc(13px*var(--fs,1));font-weight:500;color:var(--eg-muted);white-space:nowrap;}
.lst.env .envf-pick select{border:none;background:transparent;font-weight:600;color:var(--eg-ink);font-size:calc(13px*var(--fs,1));cursor:pointer;outline:none;}

/* estados (multiselect) compacto */
.lst.env .envf-estados{min-width:200px;max-width:240px;position:relative;}
.lst.env .envf-estados .ms-control{min-height:40px;border-radius:10px;border-color:var(--eg-bd);max-height:none;}
/* grupo derecho de la barra de filtros: búsqueda + botones (Columnas/Limpiar/Eliminados/Descargar/Filtrar) */
.lst.env .envf-right{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.lst.env .envf-right .btn{height:40px;border-radius:10px;}

/* botón "más filtros" */
.lst.env .envf-more{height:40px;padding:0 14px;border:1px solid var(--eg-bd);border-radius:10px;background:#fff;display:flex;align-items:center;gap:6px;
  font-size:calc(13px*var(--fs,1));font-weight:600;color:#475569;}
.lst.env .envf-more:hover{background:var(--eg-soft);}
.lst.env .envf-more.on{background:var(--eg-soft);border-color:#cbd5e1;color:var(--eg-ink);}

/* búsqueda global (a la derecha, pill) */
.lst.env .envf-search{position:relative;width:220px;max-width:100%;}
.lst.env .envf-search .mi-r{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--accent);font-size:calc(18px*var(--fs,1));}
.lst.env .envf-search input{width:100%;height:40px;padding:0 16px 0 40px;border:1px solid var(--eg-bd);border-radius:999px;font-size:calc(13px*var(--fs,1));outline:none;background:#fff;color:var(--eg-ink);}
.lst.env .envf-search input:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 18%,transparent);}

/* cápsulas de estados seleccionados — POPOVER al pasar el mouse por "N estados filtrados" */
.lst.env .envf-caps{display:none;position:absolute;top:calc(100% + 6px);left:0;z-index:60;min-width:260px;max-width:520px;
  flex-wrap:wrap;gap:8px;padding:10px;background:var(--win,#fff);border:1px solid var(--eg-bd);border-radius:12px;box-shadow:0 10px 30px rgba(0,0,0,.18);}
.lst.env .envf-estados:hover .envf-caps:not(:empty){display:flex;}
.lst.env .envf-cap{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:calc(11px*var(--fs,1));font-weight:600;
  border:1px solid color-mix(in srgb,var(--c) 35%,#fff);background:color-mix(in srgb,var(--c) 10%,#fff);color:color-mix(in srgb,var(--c) 70%,#000);}
.lst.env .envf-cap .dot{width:6px;height:6px;border-radius:50%;background:var(--c);}
.lst.env .envf-cap .x{cursor:pointer;opacity:.6;font-size:calc(15px*var(--fs,1));line-height:1;margin-left:2px;}
.lst.env .envf-cap .x:hover{opacity:1;}

/* drawer de filtros avanzados */
.lst.env .env-adv{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--eg-line);}
.lst.env .env-adv[hidden]{display:none;}
.lst.env .env-adv .field{margin:0;}
.lst.env .env-adv .field label{font-size:calc(10px*var(--fs,1));font-weight:600;color:var(--eg-muted);}
.lst.env .env-adv .inp{height:40px;border-radius:8px;border-color:var(--eg-bd);}

/* fila de acciones */
.lst.env .envf-actions{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px;padding-top:14px;border-top:1px solid var(--eg-line);flex-wrap:wrap;}
.lst.env .envf-live{font-size:calc(13px*var(--fs,1));color:var(--eg-muted);font-weight:500;}
.lst.env .envf-btns{display:flex;flex-wrap:wrap;gap:10px;}
.lst.env .envf-btns .btn{height:40px;border-radius:10px;}
.lst.env .btn.out{background:#fff;border:1px solid var(--accent);color:var(--accent);}
.lst.env .btn.out:hover{background:color-mix(in srgb,var(--accent) 6%,transparent);}
.lst.env .btn.pri{box-shadow:0 4px 15px color-mix(in srgb,var(--accent) 30%,transparent);font-weight:700;}
.lst.env .btn.neutral{background:var(--eg-soft);color:#475569;}
.lst.env .btn.neutral:hover{background:#e2e8f0;}
.lst.env .envf-elimcount{font-family:var(--eg-mono);background:rgba(255,255,255,.25);padding:1px 6px;border-radius:6px;font-size:calc(11px*var(--fs,1));}

/* toolbar de la grilla (Columnas) */
.lst.env .env-gridtools{display:flex;justify-content:flex-end;padding:14px 16px 6px;}
.lst.env .btn.ghost{height:36px;border:1px solid #e2e8f0;background:#fff;border-radius:10px;color:#475569;font-weight:600;}
.lst.env .btn.ghost:hover{background:var(--eg-soft);color:var(--accent);}

/* ---- grilla: filas como TARJETAS con barra de estado a la izquierda ---- */
.lst.env .tablezone{flex:1;overflow:auto;padding:0 16px 14px;}
.lst.env .env-tabla{min-width:1040px;border-collapse:separate;border-spacing:0 6px;}
.lst.env .env-tabla thead th{position:sticky;top:0;z-index:2;background:var(--eg-head);color:var(--eg-muted);text-transform:uppercase;
  font-size:calc(11px*var(--fs,1));font-weight:600;letter-spacing:.2px;padding:11px 12px;border:none;}
.lst.env .env-tabla thead th:first-child{border-radius:8px 0 0 8px;}
.lst.env .env-tabla thead th:last-child{border-radius:0 8px 8px 0;}
.lst.env .env-tabla tbody tr{background:#fff;box-shadow:0 2px 8px rgba(0,0,0,.02);transition:transform .14s,box-shadow .14s;cursor:pointer;}
.lst.env .env-tabla tbody tr:hover{background:var(--eg-soft);box-shadow:0 4px 14px rgba(0,0,0,.05);}
.lst.env .env-tabla tbody td{padding:12px;border:none;background:transparent;font-size:calc(13px*var(--fs,1));color:#475569;vertical-align:middle;}
.lst.env .env-tabla tbody tr:hover td{background:transparent;}
.lst.env .env-tabla tbody td:first-child{border-left:4px solid var(--c,transparent);border-radius:8px 0 0 8px;}
.lst.env .env-tabla tbody td:last-child{border-radius:0 8px 8px 0;}
.lst.env .env-th{cursor:pointer;white-space:nowrap;user-select:none;}
.lst.env .env-mono{font-family:var(--eg-mono);font-size:calc(12px*var(--fs,1));color:var(--eg-muted);}
.lst.env .env-cli{cursor:pointer;color:var(--eg-ink);font-weight:600;}
.lst.env .env-cli:hover{color:var(--accent);text-decoration:none;}
.lst.env td.env-nf{font-weight:600;color:var(--eg-ink);}

/* QR */
.lst.env .env-qr{display:inline-block;color:#94a3b8;cursor:zoom-in;transition:color .12s;}
.lst.env .env-qr .mi-r{font-size:calc(22px*var(--fs,1));}
.lst.env .env-qr:hover{color:var(--accent);}

/* estado como PILL (mantiene el <select> nativo adentro) */
.lst.env .env-estpill{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;
  border:1px solid color-mix(in srgb,var(--c) 35%,#fff);background:color-mix(in srgb,var(--c) 12%,#fff);max-width:210px;}
.lst.env .env-estdot{width:6px;height:6px;border-radius:50%;background:var(--c);flex:none;}
.lst.env .env-estado{border:none;background:transparent;color:color-mix(in srgb,var(--c) 72%,#000);font-weight:600;
  font-size:calc(11.5px*var(--fs,1));max-width:170px;cursor:pointer;outline:none;appearance:none;-webkit-appearance:none;text-overflow:ellipsis;}
.lst.env .env-estado:disabled{cursor:default;}
.lst.env .env-estcaret{color:color-mix(in srgb,var(--c) 60%,#000);font-size:calc(15px*var(--fs,1));opacity:.6;pointer-events:none;flex:none;}

/* paginación */
.lst.env .pager{border-top:1px solid var(--eg-line);background:transparent;margin:0 16px;padding:14px 4px;color:var(--eg-muted);}
.lst.env .pager .pg{min-width:34px;height:34px;border-radius:10px;border:1px solid #e2e8f0;color:#475569;}
.lst.env .pager .pg:hover{background:var(--eg-soft);border-color:#cbd5e1;color:var(--accent);}
.lst.env .pager .pg.on{background:var(--accent);color:#fff;border-color:var(--accent);box-shadow:0 2px 8px color-mix(in srgb,var(--accent) 25%,transparent);}
.lst.env .pager .pg.dis{opacity:.4;}

/* ============================================================================
   PANTALLAS · wizard del ABM (paso 1 widgets canvas GridStack · 2 filtros · 3 generales)
   ============================================================================ */
.pnlw{display:flex;flex-direction:column;height:100%;}
.pnlw-steps{display:flex;gap:6px;padding:10px 14px 0;border-bottom:1px solid var(--line);}
.pnlw-step{display:flex;align-items:center;gap:7px;padding:9px 14px;border-radius:10px 10px 0 0;font-size:calc(13px*var(--fs,1));font-weight:600;color:var(--muted);border-bottom:2px solid transparent;}
.pnlw-step .n{width:18px;height:18px;border-radius:50%;display:grid;place-items:center;font-size:calc(11px*var(--fs,1));font-weight:800;background:color-mix(in srgb,var(--muted) 20%,#fff);color:var(--muted);}
.pnlw-step.on{color:var(--accent);border-bottom-color:var(--accent);}
.pnlw-step.on .n{background:var(--accent);color:#fff;}
.pnlw-body{flex:1;overflow:auto;}
.pnlw-pane{height:100%;}
.pnlw-pane[hidden]{display:none;}

/* paso 1: paleta | canvas | inspector */
.pnlw-w{display:grid;grid-template-columns:230px 1fr 280px;height:100%;}
.pnlw-pal{border-right:1px solid var(--line);padding:12px;overflow:auto;}
.pnlw-pal-grp{font-size:calc(10.5px*var(--fs,1));font-weight:800;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);margin:12px 2px 6px;}
.pnlw-pal-item{display:flex;align-items:center;gap:10px;padding:9px 10px;border:1px solid var(--line);border-radius:10px;margin-bottom:7px;cursor:grab;background:var(--win);transition:border-color .12s,transform .06s;}
.pnlw-pal-item:hover{border-color:var(--accent);}
.pnlw-pal-item:active{transform:scale(.98);}
.pnlw-pal-item .ic{width:30px;height:30px;border-radius:8px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 12%,#fff);color:var(--accent);flex:none;font-size:calc(18px*var(--fs,1));}
.pnlw-pal-item b{display:block;font-size:calc(12.5px*var(--fs,1));}
.pnlw-pal-item span{font-size:calc(10.5px*var(--fs,1));color:var(--muted);}
.pnlw-canvas{display:flex;flex-direction:column;min-width:0;position:relative;background:#f4f6fb;}
.pnlw-canvas-bar{display:flex;align-items:center;gap:8px;padding:10px 14px;border-bottom:1px solid var(--line);font-size:calc(12.5px*var(--fs,1));color:var(--muted);background:var(--win);}
.pnlw-canvas-bar .btn{height:32px;}
.pnlw-canvas .grid-stack{flex:1;overflow:auto;padding:8px;margin:0;}
.pnlw-canvas .grid-stack.pnlw-drop{outline:2px dashed var(--accent);outline-offset:-6px;background:color-mix(in srgb,var(--accent) 6%,#f4f6fb);}
.pnlw-empty{position:absolute;inset:50px 0 0 0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;color:var(--muted);pointer-events:none;text-align:center;padding:20px;}
.pnlw-empty .mi-r{font-size:calc(38px*var(--fs,1));opacity:.5;}
/* item del grid */
.pnlw-canvas .grid-stack-item-content{background:var(--win);border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 2px 8px rgba(0,0,0,.04);}
.pnlw-canvas .grid-stack-item.gsi-on .grid-stack-item-content{border-color:var(--accent);box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 30%,transparent);}
.gsi{height:100%;display:flex;flex-direction:column;}
.gsi-head{display:flex;align-items:center;gap:6px;padding:6px 9px;background:color-mix(in srgb,var(--accent) 7%,#fff);border-bottom:1px solid var(--line);cursor:move;font-size:calc(12px*var(--fs,1));font-weight:600;}
.gsi-head .mi-r{font-size:calc(15px*var(--fs,1));color:var(--accent);}
.gsi-tit{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.gsi-del{cursor:pointer;opacity:.45;color:var(--text)!important;}
.gsi-del:hover{opacity:1;color:var(--bad)!important;}
.gsi-body{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--muted);font-size:calc(12px*var(--fs,1));}
.gsi-body .mi-r{font-size:calc(26px*var(--fs,1));opacity:.5;}
/* inspector */
.pnlw-insp{border-left:1px solid var(--line);overflow:auto;background:var(--win);}
.pnlw-insp-h{padding:12px 14px;border-bottom:1px solid var(--line);font-weight:800;font-size:calc(14px*var(--fs,1));}
.pnlw-cols{display:flex;gap:6px;}
.pnlw-cols button{flex:1;height:34px;border:1px solid var(--line);border-radius:8px;font-weight:700;font-size:calc(12.5px*var(--fs,1));color:var(--text);background:var(--win);}
.pnlw-cols button.on{background:var(--accent);color:#fff;border-color:var(--accent);}

/* paso 2: filtros */
.pnlw-filtros{display:grid;grid-template-columns:1fr 1fr;gap:14px;padding:16px;}
.pnlw-fcard{border:1px solid var(--line);border-radius:14px;padding:14px;background:var(--win);}
.pnlw-fcard .lbl-sec{display:flex;align-items:center;gap:7px;margin-top:0;}
@media (max-width:760px){.pnlw-w{grid-template-columns:1fr;}.pnlw-pal,.pnlw-insp{display:none;}.pnlw-filtros{grid-template-columns:1fr;}}
