:root{
  --bg:#F4F2EC; --surface:#FFFFFF; --ink:#191B22; --ink-2:#22242E;
  --text:#23262E; --muted:#7A8090; --border:#E9E6DD;
  --accent:#FF5A3C; --accent-dark:#E8421F; --accent-soft:#FFE7E0;
  --green:#15924D; --green-soft:#DBF3E4;
  --amber:#C77A06; --amber-soft:#FBEFCF;
  --red:#D8362B;   --red-soft:#FBE0DD;
  --blue:#2563EB;  --blue-soft:#E3ECFE;
  --shadow:0 1px 2px rgba(20,22,30,.04), 0 8px 24px rgba(20,22,30,.06);
  --radius:16px;
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:'Hanken Grotesk',system-ui,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}
.hidden{display:none !important}

.brand-mark{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:28px;letter-spacing:-.02em;color:var(--ink)}
.brand-mark span{color:var(--accent)}
.brand-mark.small{font-size:22px;color:#fff;margin-bottom:24px}
.brand-mark.small span{color:var(--accent)}

/* LOGIN */
.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;
  background:radial-gradient(1200px 600px at 80% -10%, var(--accent-soft), transparent 60%),
  radial-gradient(900px 500px at -10% 110%, #E6EEFE, transparent 55%), var(--bg);padding:24px}
.login-card{width:380px;background:var(--surface);border:1px solid var(--border);border-radius:22px;padding:38px 34px;box-shadow:var(--shadow)}
.login-sub{color:var(--muted);margin:6px 0 26px;font-size:14px}
.field{margin-bottom:16px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-2);margin-bottom:6px}
.field input{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:12px;font-size:15px;font-family:inherit;background:#FBFAF7;transition:.15s}
.field input:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-soft)}
.login-error{color:var(--red);font-size:13px;margin-top:12px;min-height:18px;font-weight:600}

.btn-primary{width:100%;padding:13px;border:none;border-radius:12px;cursor:pointer;background:var(--accent);color:#fff;font-weight:700;font-size:15px;font-family:inherit;transition:.15s;box-shadow:0 6px 16px rgba(255,90,60,.28)}
.btn-primary:hover{background:var(--accent-dark);transform:translateY(-1px)}
.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted);padding:9px 12px;border-radius:10px;cursor:pointer;font-family:inherit;font-size:13px;font-weight:600;width:100%;transition:.15s}
.btn-ghost:hover{color:var(--ink);border-color:var(--muted)}

/* SHELL */
.app{display:flex;min-height:100vh}
.sidebar{width:264px;flex-shrink:0;background:var(--ink);color:#C9CCD6;padding:26px 18px;display:flex;flex-direction:column;gap:22px;position:sticky;top:0;height:100vh;overflow-y:auto}
.nav{display:flex;flex-direction:column;gap:4px}
.nav-item{display:flex;align-items:center;gap:11px;width:100%;text-align:left;background:transparent;border:none;color:#B7BBC6;font-family:inherit;font-size:14.5px;font-weight:600;padding:11px 13px;border-radius:11px;cursor:pointer;transition:.15s}
.nav-item .ni{font-size:16px;width:20px;text-align:center}
.nav-item:hover{background:#23262F;color:#fff}
.nav-item.active{background:var(--accent);color:#fff;box-shadow:0 6px 14px rgba(255,90,60,.25)}
/* v199.8: modo "acomodar los módulos". Mientras está prendido, cada botón
   muestra las flechas para subir/bajar y se puede arrastrar con el mouse. */
.nav.ordenando .nav-item{cursor:grab;background:#23262F;border:1px dashed #4a4e5c;padding:9px 11px}
.nav.ordenando .nav-item.active{background:var(--accent);border-style:solid}
.nav.ordenando .nav-item.arrastrando{opacity:.45;cursor:grabbing}
.nav-mov{margin-left:auto;display:flex;gap:2px;flex:none}
.nav-mov button{background:#2F323C;color:#D6D9E1;border:none;border-radius:6px;
  width:22px;height:22px;line-height:1;font-size:11px;cursor:pointer;padding:0}
.nav-mov button:hover{background:var(--accent);color:#fff}
#nav-orden-btn{font-weight:700}
.side-block{display:flex;flex-direction:column;gap:9px}
.side-title{font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:#6E7384;margin-bottom:2px}
.chk{display:flex;align-items:center;gap:9px;font-size:14px;color:#D6D9E1;cursor:pointer}
.chk input{accent-color:var(--accent);width:16px;height:16px;cursor:pointer}
.side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px}
.side-foot .btn-ghost{border-color:#33363F;color:#9CA1AE}
.side-foot .btn-ghost:hover{color:#fff}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{padding:6px 13px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;background:#262932;color:#9CA1AE;border:1px solid #2F323C;transition:.15s}
.chip.active{background:var(--accent);color:#fff;border-color:var(--accent)}

/* MAIN */
.main{flex:1;padding:30px 38px 60px;max-width:1140px}
.topbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}
.topbar h1{font-family:'Bricolage Grotesque',sans-serif;font-size:30px;font-weight:700;letter-spacing:-.02em;color:var(--ink)}
.topbar .sub{color:var(--muted);font-size:14px;margin-top:2px}
.top-right{display:flex;align-items:center;gap:12px}
.search{padding:10px 14px;border:1px solid var(--border);border-radius:11px;font-family:inherit;font-size:14px;background:#fff;width:230px;transition:.15s}
.search:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.badge-source{font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;background:var(--blue-soft);color:var(--blue);white-space:nowrap}
.badge-source.mock{background:var(--amber-soft);color:var(--amber)}

.kpis{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:18px}
.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow);position:relative;overflow:hidden}
.kpi::after{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--accent)}
.kpi.k-green::after{background:var(--green)} .kpi.k-red::after{background:var(--red)} .kpi.k-blue::after{background:var(--blue)}
.kpi .v{font-family:'Bricolage Grotesque',sans-serif;font-size:27px;font-weight:800;color:var(--ink);line-height:1}
.kpi .l{font-size:12.5px;color:var(--muted);margin-top:6px;font-weight:600}

/* TIPS / cartelitos */
.tips{display:flex;flex-direction:column;gap:9px;margin-bottom:22px}
.tip{display:flex;align-items:flex-start;gap:10px;padding:12px 15px;border-radius:13px;font-size:14px;font-weight:500;line-height:1.4}
.tip .ti{font-size:16px;line-height:1.3}
.tip.t-red{background:var(--red-soft);color:#7e1a13}
.tip.t-amber{background:var(--amber-soft);color:#6e4503}
.tip.t-blue{background:var(--blue-soft);color:#14306e}
.tip.t-green{background:var(--green-soft);color:#0c4f29}
.tip b{font-weight:700}

/* SECTIONS */
.content{display:flex;flex-direction:column;gap:20px}
.section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);overflow:hidden}
.section-head{display:flex;align-items:center;gap:10px;padding:17px 22px;border-bottom:1px solid var(--border)}
.section-head h2{font-family:'Bricolage Grotesque',sans-serif;font-size:19px;font-weight:700;color:var(--ink);letter-spacing:-.01em}
.section-head .count{font-size:12px;font-weight:700;background:var(--accent-soft);color:var(--accent-dark);padding:3px 10px;border-radius:999px}
.section-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--accent-soft);color:var(--accent-dark);font-size:16px}
.section-body{padding:6px 22px 16px}
.empty{padding:26px;color:var(--muted);font-size:14px;text-align:center}

.row{display:flex;align-items:center;gap:14px;padding:14px 4px;border-bottom:1px solid #F1EFE9}
.row:last-child{border-bottom:none}
.row .grow{flex:1;min-width:0}
.name{font-weight:700;color:var(--ink);font-size:15px}
.meta{color:var(--muted);font-size:13px;margin-top:2px}
.amount{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;color:var(--ink);font-size:15px;white-space:nowrap}
.prod{font-size:12.5px;color:#55596a;margin-top:5px}
.prod b{color:var(--ink);font-weight:600}

.tag{font-size:11.5px;font-weight:700;padding:4px 10px;border-radius:999px;white-space:nowrap}
.tag.green{background:var(--green-soft);color:var(--green)}
.tag.amber{background:var(--amber-soft);color:var(--amber)}
.tag.red{background:var(--red-soft);color:var(--red)}
.tag.gray{background:#EEECE6;color:var(--muted)}
.tag.blue{background:var(--blue-soft);color:var(--blue)}
.tag.imp{background:#EAE4FB;color:#5B3FB0} .tag.nac{background:var(--green-soft);color:var(--green)} .tag.otro{background:#EEECE6;color:var(--muted)}
.tag.blanco{background:#EEF1F5;color:#3a4356;border:1px solid #DfE3EA}
.tag.negro{background:#2A2D36;color:#fff}

.days-pill{font-size:12px;font-weight:700;color:var(--muted);white-space:nowrap}
.days-pill.hot{color:var(--red)}
.cont-badge{background:var(--ink);color:#fff;padding:2px 10px;border-radius:7px;font-size:12px;font-weight:700}

.obs-btn{background:none;border:1px solid var(--border);border-radius:9px;padding:6px 10px;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer;font-family:inherit;white-space:nowrap}
.obs-btn:hover{border-color:var(--accent);color:var(--accent)}
.obs-btn.has{background:var(--accent-soft);border-color:var(--accent-soft);color:var(--accent-dark)}
.obs-note{font-size:12.5px;color:var(--accent-dark);background:var(--accent-soft);padding:5px 10px;border-radius:8px;margin-top:6px;display:inline-block}

/* debt client card */
.client-debt{padding:14px 4px;border-bottom:1px solid #F1EFE9}
.client-debt:last-child{border-bottom:none}
.cd-head{display:flex;align-items:center;gap:12px}
.cd-totals{display:flex;gap:14px;margin:7px 0 4px;flex-wrap:wrap}
.cd-totals span{font-size:12.5px;color:var(--muted)}
.cd-totals b{font-family:'Bricolage Grotesque',sans-serif;color:var(--ink)}
.cd-docs{margin-top:8px;padding-left:4px;display:flex;flex-direction:column;gap:7px}
.cd-doc{display:flex;align-items:center;gap:10px;font-size:13px}
.cd-doc .di{flex:1;min-width:0}
.cd-doc .dn{font-weight:600;color:var(--ink-2)}
.cd-doc .dm{color:var(--muted);font-size:12px}

.cont-group{margin-bottom:6px}
.cont-group h3{font-size:14px;font-weight:700;color:var(--ink);margin:14px 0 6px;display:flex;align-items:center;gap:8px}

/* modal */
.modal-wrap{position:fixed;inset:0;background:rgba(20,22,30,.45);display:grid;place-items:center;z-index:50}
.modal{background:#fff;border-radius:18px;padding:26px;width:440px;max-width:92vw;box-shadow:var(--shadow)}
.modal h3{font-family:'Bricolage Grotesque',sans-serif;font-size:20px;color:var(--ink)}
.modal-client{color:var(--accent-dark);font-weight:700;margin:4px 0 14px}
.modal textarea{width:100%;border:1px solid var(--border);border-radius:12px;padding:12px;font-family:inherit;font-size:14px;resize:vertical;background:#FBFAF7}
.modal textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.modal-hint{font-size:12px;color:var(--muted);margin:8px 0 16px}
.modal-actions{display:flex;gap:10px;justify-content:flex-end}
.modal-actions .btn-primary,.modal-actions .btn-ghost{width:auto;padding:10px 18px}

@media(max-width:880px){.kpis{grid-template-columns:repeat(2,1fr)}.app{flex-direction:column}.sidebar{width:100%;height:auto;position:relative}.search{width:160px}}

/* v3: tipos, articulos colapsables, anomalia, resumen deuda */
.tag.nac{background:var(--green-soft);color:var(--green)}
.tag.imp{background:#EAE4FB;color:#5B3FB0}
.tag.mix{background:var(--amber-soft);color:var(--amber)}
.tag.otro{background:#EEECE6;color:var(--muted)}
.tag.warn{background:#FFE2C2;color:#B4540A}

.expand{cursor:pointer;display:flex;align-items:center;gap:7px}
.chev{font-size:11px;color:var(--muted);transition:transform .15s;flex-shrink:0}
.expand.open .chev{transform:rotate(90deg)}
.prod-wrap{display:none;margin-top:8px;padding:10px 12px;background:#FAF8F3;border:1px solid var(--border);border-radius:10px}
.prod-wrap.open{display:block}
.pl{display:flex;align-items:center;gap:9px;font-size:13px;padding:3px 0;color:#3a4356}
.pl b{color:var(--ink);font-weight:700;margin-left:auto}
.pcode{font-family:'Bricolage Grotesque',sans-serif;font-size:11px;font-weight:700;padding:1px 7px;border-radius:6px}
.pcode.imp{background:#EAE4FB;color:#5B3FB0} .pcode.nac{background:var(--green-soft);color:var(--green)}
.inv-tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:4px}

.modal-wide{width:560px}
.debt-sheet{background:#fff;border-radius:14px;padding:22px;border:1px solid var(--border)}
.ds-head{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid var(--ink);padding-bottom:12px;margin-bottom:14px}
.ds-head .dsb{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:18px;color:var(--ink)}
.ds-head .dst{font-size:18px;font-weight:800;color:var(--ink)}
.ds-client{font-size:16px;font-weight:700;color:var(--ink);margin-bottom:2px}
.ds-date{font-size:12px;color:var(--muted)}
.ds-tot{display:flex;gap:16px;margin:12px 0;flex-wrap:wrap}
.ds-tot div{font-size:13px;color:var(--muted)}
.ds-tot b{display:block;font-family:'Bricolage Grotesque',sans-serif;font-size:17px;color:var(--ink)}
.ds-tot .big b{color:var(--red);font-size:22px}
.ds-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:8px}
.ds-table th{text-align:left;color:var(--muted);font-weight:600;padding:6px 8px;border-bottom:1px solid var(--border)}
.ds-table td{padding:6px 8px;border-bottom:1px solid #F1EFE9}
.ds-table td.r,.ds-table th.r{text-align:right}
.ds-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px}
.ds-dot.red{background:var(--red)} .ds-dot.yellow{background:var(--amber)} .ds-dot.green{background:var(--green)} .ds-dot.gray{background:var(--muted)}

/* v4: historico anual + prioridad + pagos */
.histo{font-size:12.5px;color:#2563EB;margin-top:5px;font-weight:600}
.star{margin-right:3px}

/* v5: ventanita rotativa de pagos */
.rotator{background:linear-gradient(135deg,#191B22,#2A2D38);border-radius:14px;padding:18px 20px;margin:6px 0 16px;color:#fff;box-shadow:var(--shadow)}
.rot-inner{display:flex;align-items:center;gap:16px;min-height:46px}
.rot-method{font-size:11px;font-weight:700;padding:4px 10px;border-radius:999px}
.rot-method.blue{background:var(--blue-soft);color:var(--blue)} .rot-method.nac{background:var(--green-soft);color:var(--green)}
.rot-main{flex:1;min-width:0}
.rot-client{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:17px}
.rot-sub{font-size:12.5px;color:#A9ADB8;margin-top:2px}
.rot-amt{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:20px;text-align:right;white-space:nowrap}
.rot-saldo{font-size:11.5px;color:#9CA1AE;font-weight:600}
.rot-dots{display:flex;gap:6px;justify-content:center;margin-top:12px}
.rot-dots .dot{width:7px;height:7px;border-radius:50%;background:#44485422}
.rot-dots .dot{background:#4B4F5B} .rot-dots .dot.on{background:var(--accent)}

/* v6: badge sin conexion */
.badge-source.err{background:var(--red-soft);color:var(--red)}

/* v7: recorridos (acordeon) */
.deliv-day{border:1px solid var(--border);border-radius:13px;margin-bottom:12px;overflow:hidden}
.deliv-head{display:flex;align-items:center;gap:11px;padding:13px 16px;cursor:pointer;background:#FAF8F3}
.deliv-head:hover{background:#F3F0E8}
.deliv-head .chev{font-size:11px;color:var(--muted);transition:transform .15s}
.deliv-day:not(.closed) .deliv-head .chev{transform:rotate(90deg)}
.deliv-day.closed .deliv-body{display:none}
.dh-main{flex:1;min-width:0}
.dh-main b{font-family:'Bricolage Grotesque',sans-serif;font-size:15px;color:var(--ink);text-transform:capitalize}
.dh-sub{font-size:12.5px;color:var(--muted);margin-left:8px}
.cobrar-txt{color:var(--red);font-weight:700}
.dh-xls{width:auto !important;padding:6px 11px !important;font-size:12px}
.deliv-body{padding:4px 16px 10px}
.deliv-transp{margin:12px 0 4px}

/* v9: proximo a salir */
.up-wrap{background:#FBFAF7;border:1px solid var(--border);border-radius:13px;padding:14px 16px;margin-bottom:16px}
.up-title{font-weight:700;color:var(--ink);font-size:14px;margin-bottom:10px}
.up-route{margin-bottom:10px}
.up-head{display:flex;align-items:center;gap:10px;margin-bottom:6px}
.up-stop{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--ink-2);padding:3px 0 3px 4px}
.up-stop.done{color:var(--muted)}
.up-dot{font-weight:700;color:var(--amber)}
.up-stop.done .up-dot{color:var(--green)}

/* v10: cliente con pedidos anidados en Recorridos */
.ord-list{padding-left:4px}
.ord-item{border-left:2px solid var(--border);margin:6px 0 6px 6px;padding-left:10px}
.ord-exp{display:flex;align-items:center;gap:8px;cursor:pointer;padding:3px 0}
.ord-line{font-size:13.5px;color:var(--ink-2);display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ord-amt{color:var(--muted);font-weight:600}
.ord-item .prod-wrap{margin-left:2px}

/* v12: histórico anual por año */
.histo-sub{font-size:12px;color:var(--muted);margin-top:2px}

/* v13: quién hizo el recorrido */
.doer{font-size:12.5px;font-weight:600;margin:2px 0 6px;padding:4px 8px;border-radius:8px;display:inline-block}
.doer-alert{background:#FDECEC;color:var(--red)}
.doer-ok{background:#EAF6EE;color:var(--green)}

/* v14: resumen deuda - vencido grande */
.ds-vto{background:#FDECEC;border-radius:12px;padding:14px 16px;margin:10px 0}
.ds-vto-lbl{font-size:12.5px;color:var(--red);font-weight:600}
.ds-vto-big{font-size:30px;font-weight:800;color:var(--red);line-height:1.1;margin-top:2px}
.cd-totals .vto b{color:var(--red)}

/* v15: chip de contenedor */
.tag.cont{background:#EEE9FF;color:#5B3FC4;font-weight:700}

/* v20: barra de tickers (siempre visible, compacta) */
.ticker-bar{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 16px}
.tk{background:var(--card,#fff);border:1px solid var(--border,#e7e7ee);border-radius:12px;padding:8px 12px;min-width:0;overflow:hidden}
.tk-h{display:block;font-size:11px;font-weight:700;letter-spacing:.02em;color:var(--muted,#8a8a99);margin-bottom:2px}
.tk-pay .tk-h{color:#1B9E5A}.tk-inv .tk-h{color:#2F6FED}.tk-del .tk-h{color:#7A57D1}
.tk-win{position:relative;height:34px}
.tk-item{position:absolute;inset:0;display:flex;align-items:center;gap:8px;opacity:0;transform:translateY(6px);transition:opacity .4s,transform .4s;pointer-events:none}
.tk-item.on{opacity:1;transform:none}
.tk-cli{flex:1;min-width:0;font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tk-amt{font-size:13px;font-weight:800}
.tk-dt{font-size:11px;color:var(--muted,#8a8a99)}
@media(max-width:720px){.ticker-bar{grid-template-columns:1fr}.tk-win{height:30px}}

/* chips recorridos */
.tag.exp{background:#E9F2FF;color:#2F6FED;font-weight:700}
.route-badge{display:inline-block;background:#1d1f27;color:#fff;font-size:12px;font-weight:700;padding:3px 10px;border-radius:8px}
.deliv-transp{margin:12px 0 6px}

/* ===== Página armar recorrido (rol router / David) ===== */
.router-mode .nav, .router-mode #filter-block, .router-mode #seller-block,
.router-mode .kpis, .router-mode .tips, .router-mode .ticker-bar,
.router-mode #content, .router-mode .top-right { display:none !important; }
.route-builder{max-width:1100px}
.rb-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:14px}
.rb-head h2{margin:0 0 6px;font-family:'Bricolage Grotesque',sans-serif}
.rb-meta{display:flex;gap:14px;flex-wrap:wrap}
.rb-meta label{font-size:12px;color:var(--muted,#8a8a99);display:flex;flex-direction:column;gap:3px}
.rb-meta input{padding:7px 9px;border:1px solid var(--border,#e7e7ee);border-radius:8px;font-size:14px}
.rb-actions{display:flex;gap:8px}
.rb-search{position:relative;margin-bottom:14px}
.rb-search>input{width:100%;padding:13px 15px;border:2px solid var(--accent,#2F6FED);border-radius:12px;font-size:15px}
.rb-suggest{position:absolute;z-index:20;left:0;right:0;top:100%;margin-top:4px;background:#fff;border:1px solid var(--border,#e7e7ee);border-radius:12px;box-shadow:0 12px 30px rgba(0,0,0,.12);overflow:hidden;max-height:320px;overflow-y:auto}
.rb-sug-item{display:flex;gap:10px;align-items:center;padding:10px 14px;cursor:pointer}
.rb-sug-item:hover,.rb-sug-item:first-child{background:#F3F6FF}
.rb-sug-num{font-weight:700;color:var(--muted,#8a8a99);font-size:13px;min-width:54px}
.rb-sug-name{font-weight:600}.rb-sug-fant{color:var(--muted,#8a8a99);font-weight:400}
.rb-sug-empty{padding:12px 14px;color:var(--muted,#8a8a99)}
.rb-summary{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.rb-sum-card{background:var(--card,#fff);border:1px solid var(--border,#e7e7ee);border-radius:12px;padding:8px 14px;display:flex;flex-direction:column;min-width:110px}
.rb-sum-card span{font-size:11px;color:var(--muted,#8a8a99);font-weight:600}
.rb-sum-card b{font-size:18px;font-weight:800}
.rb-sum-card.vto b{color:var(--red,#E0344B)}
/* v209.138 — la deuda de MAS DE 30 DIAS tiene tarjeta propia: es la que decide si el
   cliente sale o no, asi que no puede quedar escondida adentro de «Deuda vencida». */
.rb-sum-card.vto30{border-color:#B3261E;background:rgba(179,38,30,.06)}
.rb-sum-card.vto30 b{color:#B3261E}
.rb-sum-card.vto30-ok b{color:var(--muted,#8a8a99)}
.rb-sum-n{font-size:10.5px;font-style:normal;color:var(--muted,#8a8a99);font-weight:600}
.rb-f.rb-f-30 input{border-color:#B3261E}
body.dark .rb-sum-card.vto30 b{color:#ff7b7b}
body.dark .rb-sum-card.vto30{border-color:#ff7b7b;background:rgba(255,123,123,.10)}
.rb-list{display:flex;flex-direction:column;gap:12px}
.rb-card{background:var(--card,#fff);border:1px solid var(--border,#e7e7ee);border-radius:14px;padding:14px}
.rb-card-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.rb-pos{width:26px;height:26px;border-radius:50%;background:#1d1f27;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:13px}
.rb-name{flex:1;min-width:180px;font-size:15px;font-weight:700;border:none;border-bottom:1px dashed transparent;padding:4px 2px}
.rb-name:focus{outline:none;border-bottom-color:var(--accent,#2F6FED)}
.rb-del{margin-left:auto;background:none;border:none;color:var(--muted,#8a8a99);font-size:16px;cursor:pointer;padding:4px 8px}
.rb-del:hover{color:var(--red,#E0344B)}
.rb-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.rb-f{display:flex;flex-direction:column;gap:3px;font-size:11px;color:var(--muted,#8a8a99);font-weight:600}
.rb-f.rb-wide{grid-column:span 3}
.rb-f input,.rb-f select{padding:8px 10px;border:1px solid var(--border,#e7e7ee);border-radius:8px;font-size:14px;color:var(--text,#1d1f27);font-weight:500}
.rb-conts{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border,#e7e7ee);font-size:12px}
.rb-conts-h{color:var(--muted,#8a8a99);font-weight:600;margin-right:6px}
.rb-cont{display:inline-flex;align-items:center;gap:5px;margin-right:12px;cursor:pointer}
.rb-cont-amt{color:var(--muted,#8a8a99)}
.exporting .rb-del,.exporting .rb-actions{visibility:hidden}
@media(max-width:760px){.rb-grid{grid-template-columns:1fr}.rb-f.rb-wide{grid-column:span 1}}

/* ===== Mapa de clientes (route builder) ===== */
.rb-map-overlay{position:fixed;inset:0;z-index:200;background:#fff;display:flex;flex-direction:column}
.rb-map-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 18px;border-bottom:1px solid var(--border,#e7e7ee)}
.rb-map-info{color:var(--muted,#8a8a99);font-size:13px;font-weight:500}
.rb-map-count{color:var(--muted,#8a8a99);font-size:13px;margin-right:10px}
.rb-map{flex:1;min-height:0}
.rb-map-preview{max-height:170px;overflow-y:auto;border-top:1px solid var(--border,#e7e7ee);padding:10px 18px;background:#fafafb}
.rb-prev-empty{color:var(--muted,#8a8a99);font-size:13px}
.rb-prev-h{font-weight:700;font-size:13px;margin-bottom:6px}
.rb-prev-item{display:flex;justify-content:space-between;align-items:center;font-size:13px;padding:3px 0}
.rb-prev-item button{background:none;border:none;color:var(--muted,#8a8a99);cursor:pointer}
.rb-prev-item button:hover{color:var(--red,#E0344B)}
.rb-pin{background:#2F6FED;color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:11px;font-weight:800;border:2px solid #fff;box-shadow:0 2px 6px rgba(0,0,0,.3)}
.rb-pin.on{background:#1B9E5A}
.rb-pop{min-width:180px}.rb-pop-a{color:#666;font-size:12px;margin:2px 0}
.rb-pop-amt{font-weight:700;font-size:12px;margin:4px 0}
.rb-pop-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.rb-pop-odoo{flex:none;font-size:12px;font-weight:700;color:#714B67;border:1px solid #714B67;border-radius:7px;padding:2px 8px;text-decoration:none;white-space:nowrap}
.rb-pop-odoo:hover{background:#714B67;color:#fff}
.rb-pop-btn{width:100%;padding:7px;border:none;border-radius:8px;background:#2F6FED;color:#fff;font-weight:700;cursor:pointer}

/* letra vendedor en route builder */
.rb-vletter{width:22px;height:22px;border-radius:6px;background:#1d1f27;color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:800;font-size:12px}
/* Cobranzas */
.rb-cob{margin-top:22px;border-top:2px solid var(--border,#e7e7ee);padding-top:14px}
.rb-cob.cob-off{opacity:.45}
.rb-cob-head{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:10px}
.rb-cob-head h3{margin:0;font-family:'Bricolage Grotesque',sans-serif}
.rb-cob-grid{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}
.rb-cob-box{background:var(--card,#fff);border:1px solid var(--border,#e7e7ee);border-radius:12px;padding:10px 14px;display:flex;flex-direction:column;min-width:160px}
.rb-cob-box span{font-size:11px;color:var(--muted,#8a8a99);font-weight:600}
.rb-cob-box b{font-size:19px;font-weight:800}
.rb-cob-box.hi{background:#F3F6FF;border-color:#cdddff}
.rb-cob-box.hi.vto{background:#FDECEC;border-color:#f6c9cf}.rb-cob-box.hi.vto b{color:var(--red,#E0344B)}
.rb-cob-table{width:100%;border-collapse:collapse;font-size:13px;max-width:520px}
.rb-cob-table th,.rb-cob-table td{padding:6px 10px;border-bottom:1px solid var(--border,#eee);text-align:left}
.rb-cob-table .r{text-align:right}

/* ===== Impresión A4 horizontal para el chofer ===== */
.rb-print{display:none}
@media print{
  @page{size:A4 landscape;margin:8mm}
  /* Mostrar SOLO la hoja del recorrido. Usamos display:none (no visibility) para que el
     resto NO ocupe alto y no salgan hojas en blanco de más. */
  body.printing .sidebar{display:none !important}
  body.printing .main{padding:0 !important;max-width:none !important}
  body.printing .main > *:not(#rb-hoja){display:none !important}
  body.printing #rb-hoja{display:block;position:static;left:auto;top:auto;width:100%}
  body.printing{background:#fff}
  .rbp-table{width:100%;border-collapse:collapse;font-size:10.5px;font-family:sans-serif}
  .rbp-table th,.rbp-table td{border:1px solid #999;padding:3px 5px;text-align:left}
  .rbp-table th{background:#222;color:#fff}
  .rbp-table .r{text-align:right}.rbp-table .c{text-align:center}
  .rbp-table tfoot td{background:#eee}
  .rbp-cob{margin-top:10px;font-size:11px;font-family:sans-serif}
}

/* PNG del recorrido: misma tabla compacta que la impresión, renderizada fuera de pantalla */
.rb-print.png-render{display:block;position:fixed;left:-12000px;top:0;width:1400px;background:#fff;padding:22px}
.rb-print.png-render h2{font-family:sans-serif;margin:0 0 10px}
.rb-print.png-render .rbp-table{width:100%;border-collapse:collapse;font-size:12px;font-family:sans-serif}
.rb-print.png-render .rbp-table th,.rb-print.png-render .rbp-table td{border:1px solid #999;padding:4px 7px;text-align:left}
.rb-print.png-render .rbp-table th{background:#222;color:#fff}
.rb-print.png-render .rbp-table .r{text-align:right}.rb-print.png-render .rbp-table .c{text-align:center}
.rb-print.png-render .rbp-table tfoot td{background:#eee}
.rb-print.png-render .rbp-cob{margin-top:12px;font-size:12px;font-family:sans-serif}

/* ============ Exportación del recorrido (PNG / impresión) — estilos lindos ============ */
.rb-print{display:none}
.rb-print.png-render{display:block;position:fixed;left:-13000px;top:0;width:1300px}
.rbx-sheet{width:1300px;background:#fff;color:#15171e;padding:18px 20px;font-family:'Inter',system-ui,sans-serif;box-sizing:border-box}
.rbx-head{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;border-bottom:3px solid #15171e;padding-bottom:9px;margin-bottom:11px}
.rbx-title{display:flex;flex-direction:column;gap:2px}
.rbx-route{font-size:30px;font-weight:800;letter-spacing:-.02em}
.rbx-date{font-size:15px;color:#6b7280;font-weight:600}
.rbx-kpis{display:flex;gap:10px}
.rbx-kpi{background:#f3f4f6;border-radius:12px;padding:8px 14px;display:flex;flex-direction:column;min-width:92px}
.rbx-kpi span{font-size:11px;color:#6b7280;font-weight:700;text-transform:uppercase;letter-spacing:.03em}
.rbx-kpi b{font-size:18px;font-weight:800}
.rbx-kpi.red{background:#fdeaec}.rbx-kpi.red b{color:#d92c43}
.vchip{display:inline-flex;width:20px;height:20px;border-radius:5px;background:#15171e;color:#fff;align-items:center;justify-content:center;font-weight:800;font-size:11px;vertical-align:middle}
.abadge{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12px;font-weight:700;white-space:nowrap}
.abadge.ent{background:#e7f0ff;color:#2563eb}.abadge.cob{background:#fde9c8;color:#b45309}.abadge.exp{background:#ede9fe;color:#6d28d9}
.d30{background:#d92c43;color:#fff;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:800}
.rbx-sheet .red{color:#d92c43}
.rbx-cob{margin-top:18px;background:#f9fafb;border:1px solid #e5e7eb;border-radius:12px;padding:12px 16px;font-size:14px}

/* Tabla pro (compacta: entran más clientes por hoja, con línea entre cliente y cliente) */
.rbx-table{width:100%;border-collapse:collapse;font-size:12px}
.rbx-table th{background:#15171e;color:#fff;padding:6px 9px;text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.02em;border:1px solid #15171e}
.rbx-table td{padding:5px 9px;border-bottom:1.5px solid #b9bec6;border-top:0;vertical-align:top;line-height:1.25}
.rbx-table tbody tr:nth-child(even){background:#fafbfc}
.rbx-table tr.warn{background:#fdeaec !important}
.rbx-table .sub{font-size:11px;color:#6b7280;margin-top:1px}
.rbx-table .c{text-align:center}.rbx-table .r{text-align:right;font-variant-numeric:tabular-nums}
.rbx-table .chk{width:24px}.rbx-table td.chk:before{content:"☐";font-size:16px;color:#9ca3af}
.rbx-table tfoot td{background:#15171e;color:#fff;font-weight:800;padding:6px 9px}

/* Tarjetas */
.rbx-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.rbx-card{border:1px solid #e5e7eb;border-left:6px solid #2563eb;border-radius:12px;padding:12px 14px}
.rbx-card.cob{border-left-color:#b45309}.rbx-card.exp{border-left-color:#6d28d9}
.rbx-card.warn{background:#fdeaec;border-color:#f5c2c9}
.rbx-cardtop{display:flex;align-items:center;gap:9px}
.rbx-pos{width:26px;height:26px;border-radius:50%;background:#15171e;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:13px;flex:0 0 auto}
.rbx-cname{font-size:16px;font-weight:800;flex:1}
.rbx-cardsub{font-size:12.5px;color:#6b7280;margin:5px 0 8px}
.rbx-cardrow{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.rbx-tag{background:#f3f4f6;border-radius:20px;padding:2px 9px;font-size:12px;font-weight:600;color:#374151}
.rbx-cardamts{display:flex;gap:14px;font-size:13.5px;border-top:1px dashed #e5e7eb;padding-top:8px}
.rbx-cardamts b{font-weight:800}

/* Checklist chofer: hoja angosta tipo A4 VERTICAL, checks apilados a la derecha del cliente */
.rbx-sheet.rbx-checklist{width:820px;margin:0 auto}
.rbx-check{display:flex;flex-direction:column;gap:0}
.rbx-crow{display:flex;gap:10px;align-items:flex-start;padding:9px 4px;border-bottom:1.5px solid #b9bec6}
.rbx-crow.warn{background:#fdeaec}
.rbx-cnum{width:28px;height:28px;border-radius:8px;background:#15171e;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto}
.rbx-cmain{flex:1;min-width:0}
.rbx-cline{font-size:14.5px}.rbx-cid{color:#6b7280;font-weight:600}
.rbx-hora{background:#eef2ff;color:#4338ca;border-radius:6px;padding:1px 7px;font-size:12px;font-weight:700}
.rbx-camt{font-size:13px;margin-top:2px;color:#374151}
/* checks VERTICALES (uno debajo del otro) a la derecha, con casilla grande para tildar */
.rbx-cboxes{display:flex;flex-direction:column;gap:4px;flex:0 0 auto;font-size:13px;color:#15171e;font-weight:700;white-space:nowrap;text-align:left}
.rbx-cboxes span{padding:1px 0}
/* impresión del checklist: usa todo el ancho del A4 vertical y oculta los KPIs del header */
@media print{
  body.printing-portrait .rbx-sheet.rbx-checklist{width:100% !important;margin:0}
  body.printing-portrait .rbx-checklist .rbx-kpis{display:none}
  body.printing-portrait .rbx-crow{page-break-inside:avoid}
}
.rb-style-sel{padding:8px 10px;border:1px solid var(--border,#e7e7ee);border-radius:8px;font-size:13px;background:#fff}

@media print{
  .rbx-sheet{width:100%;padding:0}
  .rbx-route{font-size:18px}
  .rbx-head{margin-bottom:8px;padding-bottom:7px}
  .rbx-kpi{padding:5px 9px;min-width:0}
  .rbx-kpi b{font-size:14px}
  .rbx-table{font-size:10px}
  .rbx-table th{padding:4px 6px}
  .rbx-table td{padding:3px 6px}
  .rbx-table tr{page-break-inside:avoid}      /* no cortar un cliente entre dos hojas */
  .rbx-cards{grid-template-columns:repeat(3,1fr)}
  .rbx-card,.rbx-crow{page-break-inside:avoid}
}
.rb-ver{font-size:12px;font-weight:700;color:#fff;background:#1B9E5A;border-radius:6px;padding:2px 8px;vertical-align:middle;margin-left:8px}
/* línea de transporte + dirección */
.rb-transp-note{margin-top:8px;font-size:13px;color:#374151;background:#f6f4ff;border:1px solid #e6e0ff;border-radius:8px;padding:6px 10px}
.rb-transp-miss{color:#9ca3af;font-style:italic}
.rbx-transp{margin:2px 0 8px;font-size:12.5px;color:#4b5563;background:#f6f4ff;border-radius:8px;padding:5px 9px}
/* reordenar paradas */
.rb-move{display:inline-flex;flex-direction:column;gap:2px;margin-right:4px}
.rb-move button{width:22px;height:16px;line-height:1;padding:0;border:1px solid var(--border,#e7e7ee);background:#fff;border-radius:5px;cursor:pointer;font-size:9px;color:#444}
.rb-move button:hover:not(:disabled){background:#f0f0f5}
.rb-move button:disabled{opacity:.3;cursor:default}
.rb-f-tag{background:#ede9fe;color:#6d28d9;border-radius:6px;padding:1px 6px;font-size:11px;font-weight:700;margin-left:4px}
/* direcciones en export */
.rbx-addr-ent{font-size:12.5px;color:#15171e;margin-top:2px}
.rbx-addr-fis{font-size:11.5px;color:#9ca3af;margin-top:1px}
.rbx-cardsub{margin-bottom:2px}

/* pines del mapa por tipo */
.rb-pin--entrega{background:#2F6FED}
.rb-pin--entrega_deuda{background:#E8820C}
.rb-pin--cobranza{background:#E0344B}
.rb-pin--transporte{background:#6d28d9}
.rb-pin.on{background:#1B9E5A !important}
/* leyenda */
.rb-legend{display:inline-flex;align-items:center;gap:6px;margin-left:12px;font-size:11px;color:#555;flex-wrap:wrap}
.rb-legend .lg{width:11px;height:11px;border-radius:3px;display:inline-block;margin-left:8px;border:1px solid #fff;box-shadow:0 0 0 1px #ccc}
.lg-entrega{background:#2F6FED}.lg-entrega_deuda{background:#E8820C}.lg-cobranza{background:#E0344B}.lg-transporte{background:#6d28d9}
/* popup */
.rb-pop-venc{color:#E0344B;font-weight:700;margin-top:3px}
/* v209.134: el renglón de la deuda de MÁS DE 30 DÍAS, que es otro número que el
   vencido. En rojo fuerte cuando hay algo; gris cuando no hay nada (que también es
   un dato: se veía el total vencido y se suponía que todo era viejo). */
.rb-pop-venc30{font-size:11.5px;font-weight:700;color:#B3261E;margin-top:1px}
.rb-pop-venc30.ok{color:#6b7280;font-weight:600}
.rb-pop-solo{color:#E8820C;font-weight:700;margin-top:3px}
.rb-pop-transp{color:#6d28d9;font-size:11px;margin-top:2px}
/* horario 2 rangos */
.rb-horas{display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.rb-horas input[type=time]{width:auto;min-width:0;flex:0 1 95px}
.rb-h-sep{color:#9ca3af;font-size:12px}
/* pedidos en tarjeta */
.rb-pedidos{margin-top:8px;font-size:12.5px;color:#374151;background:#fef9ec;border:1px solid #f5e6bf;border-radius:8px;padding:6px 10px}
.rb-ped-d{color:#6b7280;font-size:11.5px}
.rb-ped-mod{margin-top:5px;padding-top:5px;border-top:1px dashed #e3d6ad;font-size:11.5px;color:#8a6d3b}
body.dark .rb-ped-mod{color:#c9b070;border-top-color:#5a4a25}

/* ===== CIE — vista "Hoy" (mobile-first) ===== */
.cie-brief{background:linear-gradient(135deg,#fff,#fdf2f8);border:1px solid #f3d3e6;border-radius:14px;padding:14px 16px;margin-bottom:14px}
body.dark .cie-brief{background:linear-gradient(135deg,#1a1d26,#241a22);border-color:#3a2733}
.cie-brief-hi{font-size:17px;font-weight:800;color:#1a1a1a}
body.dark .cie-brief-hi{color:#f0f2f6}
.cie-brief-money{font-size:14px;margin-top:3px;color:#374151}
body.dark .cie-brief-money{color:#c9cedb}
.cie-brief-money b{color:#e6007e;font-size:16px}
.cie-est{font-size:11px;color:#9ca3af;font-weight:500}
.cie-brief-chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.cie-brief-reco{margin-top:12px;border-top:1px solid #f0d8e6;padding-top:9px}
body.dark .cie-brief-reco{border-top-color:#3a2733}
.cie-brief-reco-h{font-size:12.5px;font-weight:700;color:#6b7280;margin-bottom:4px}
.cie-brief-reco ol{margin:0;padding-left:6px;list-style:none}
.cie-brief-reco li{font-size:13.5px;padding:3px 0;color:#1a1a1a}
body.dark .cie-brief-reco li{color:#e4e7ee}
.cie-chip{display:inline-flex;align-items:center;font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:999px;background:#eef0f4;color:#374151;white-space:nowrap}
.cie-chip.sm{font-size:10.5px;padding:1px 7px}
.cie-chip.red{background:#fde7ea;color:#c01933}.cie-chip.amber{background:#fef3cd;color:#8a6d18}
.cie-chip.blue{background:#e3eefe;color:#1d5bbf}.cie-chip.violet{background:#efe6fb;color:#6a35b8}
.cie-chip.green{background:#e2f6e9;color:#1f8a4c}.cie-chip.gray{background:#eef0f4;color:#5b6373}
.cie-chip.teal{background:#dff4f2;color:#0f766e}.cie-sigi.teal{background:#dff4f2}
body.dark .cie-chip.red{background:#3a1f25;color:#f3a6b2}body.dark .cie-chip.amber{background:#352c12;color:#e6cd7a}
body.dark .cie-chip.blue{background:#16263e;color:#94bbf0}body.dark .cie-chip.violet{background:#281a3b;color:#c2a3ee}
body.dark .cie-chip.green{background:#14301f;color:#8fd9aa}body.dark .cie-chip.gray{background:#23262e;color:#aab1bf}
body.dark .cie-chip.teal{background:#12302d;color:#7ad4c9}body.dark .cie-sigi.teal{background:#12302d}
/* P8: bloque "se vencen estos días" del briefing */
.cie-brief-prox{margin-top:10px;padding:9px 11px;border:1px dashed #7ad4c9;border-radius:10px;font-size:12.5px}
.cie-brief-prox-h{font-weight:800;color:#0f766e;margin-bottom:4px}
.cie-brief-prox ul{margin:0;padding-left:16px}
.cie-brief-prox li{margin:2px 0;cursor:pointer}
.cie-brief-prox li:hover{text-decoration:underline}
body.dark .cie-brief-prox{border-color:#2a5a54}
body.dark .cie-brief-prox-h{color:#7ad4c9}
.cie-list{display:flex;flex-direction:column;gap:9px}
.cie-row{border:1px solid #e9ebf0;border-radius:12px;background:#fff;overflow:hidden}
body.dark .cie-row{background:#1a1d24;border-color:#2a2e38}
.cie-row.exp{border-color:#e6007e;box-shadow:0 2px 10px rgba(230,0,126,.08)}
.cie-row-main{padding:12px 14px;cursor:pointer;-webkit-tap-highlight-color:transparent}
.cie-row-top{display:flex;align-items:center;gap:8px}
.cie-name{font-weight:700;font-size:14.5px;color:#1a1a1a;flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.dark .cie-name{color:#eef0f5}
.cie-exp{color:#b9c0cc;font-size:16px;transition:transform .15s}
.cie-row.exp .cie-exp{transform:rotate(180deg)}
.cie-row-why{font-size:13px;color:#4b5563;margin-top:5px;line-height:1.3}
body.dark .cie-row-why{color:#aeb6c4}
.cie-row-foot{display:flex;align-items:center;justify-content:space-between;margin-top:8px;gap:8px}
.cie-opp{font-size:12.5px;color:#374151}.cie-opp b{color:#1f8a4c}
body.dark .cie-opp{color:#c2c8d4}body.dark .cie-opp b{color:#7fd3a0}
.cie-score{font-size:12px;font-weight:800;color:#fff;background:#e6007e;border-radius:8px;padding:2px 9px;min-width:30px;text-align:center}
.cie-row-det{max-height:0;overflow:hidden;transition:max-height .2s}
.cie-row-det.open{max-height:600px;border-top:1px solid #eef0f4}
body.dark .cie-row-det.open{border-top-color:#2a2e38}
.cie-det-in{padding:11px 14px 14px;background:#fbfbfd}
body.dark .cie-det-in{background:#15181f}
.cie-det-prod{font-size:13px;color:#1a1a1a;margin-bottom:8px}
body.dark .cie-det-prod{color:#e4e7ee}
.cie-det-h{font-size:11.5px;font-weight:700;color:#6b7280;text-transform:uppercase;letter-spacing:.3px;margin-bottom:5px}
.cie-sigs{margin:0;padding-left:16px}
.cie-sigs li{font-size:12.5px;color:#374151;padding:2px 0;line-height:1.35}
body.dark .cie-sigs li{color:#aeb6c4}
.cie-sig-t{font-weight:700;color:#e6007e}
.cie-det-meta{margin-top:9px;font-size:11.5px;color:#9ca3af}
/* v109: score con etiqueta, oportunidad con fundamento, mini-resumen, acciones rápidas */
.cie-scorebox{margin-left:auto;font-size:13px;font-weight:800;color:#fff;border-radius:9px;padding:3px 9px;min-width:34px;text-align:center}
.cie-scorebox.sc-hi{background:#1f8a4c}.cie-scorebox.sc-mid{background:#1d5bbf}.cie-scorebox.sc-lo{background:#c08a18}.cie-scorebox.sc-min{background:#8b93a3}
.cie-label{font-size:12px;font-weight:700;margin-top:3px}
.cie-label.sc-hi-t{color:#1f8a4c}.cie-label.sc-mid-t{color:#1d5bbf}.cie-label.sc-lo-t{color:#b07d12}.cie-label.sc-min-t{color:#8b93a3}
.cie-opp-line{margin-top:9px;background:#f3fbf6;border:1px solid #d5efe0;border-radius:9px;padding:7px 10px;font-size:12.5px;color:#1a1a1a}
body.dark .cie-opp-line{background:#14241c;border-color:#1f4030}
.cie-opp-t{color:#1f8a4c;font-weight:700}.cie-opp-line b{color:#1f8a4c;font-size:14px}
.cie-opp-basis{display:block;color:#6b7280;font-size:11.5px;margin-top:2px}
body.dark .cie-opp-basis{color:#9aa3b5}
.cie-mini{display:flex;flex-wrap:wrap;gap:4px 10px;margin-top:8px;font-size:11.5px;color:#6b7280}
body.dark .cie-mini{color:#9aa3b5}
.cie-mini-debt{color:#c01933;font-weight:700}
.cie-actions{display:flex;gap:6px;padding:0 14px 12px;flex-wrap:wrap}
.cie-act{flex:1 1 auto;min-width:86px;font-size:12px;font-weight:600;padding:8px 6px;border-radius:9px;border:1px solid #e3e6ec;background:#fff;color:#374151;cursor:pointer}
.cie-act:hover{background:#f6f7f9}
.cie-act.wsp{border-color:#cdeede;color:#1f8a4c}
.cie-act:disabled{opacity:.4;cursor:not-allowed}
body.dark .cie-act{background:#21252e;border-color:#333845;color:#c9cedb}
body.dark .cie-act:hover{background:#272c37}
.cie-sigs{margin:0;padding:0;list-style:none}
.cie-sigs li{display:flex;gap:8px;align-items:flex-start;font-size:12.5px;color:#374151;padding:4px 0;line-height:1.35}
body.dark .cie-sigs li{color:#aeb6c4}
.cie-sigi{flex:0 0 auto;width:22px;height:22px;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;font-size:12px;background:#eef0f4}
.cie-sigi.red{background:#fde7ea}.cie-sigi.amber{background:#fef3cd}.cie-sigi.blue{background:#e3eefe}.cie-sigi.violet{background:#efe6fb}.cie-sigi.green{background:#e2f6e9}.cie-sigi.gray{background:#eef0f4}
body.dark .cie-sigi{background:#23262e}
.cie-sig-b b{color:#1a1a1a}
body.dark .cie-sig-b b{color:#e7eaf0}
.cie-prods{margin:0;padding:0;list-style:none}
.cie-prods li{font-size:12.5px;color:#374151;padding:3px 0}
body.dark .cie-prods li{color:#aeb6c4}
.cie-row.gate{opacity:.72}
/* v111: contexto del CIE en Vender Más */
.vm-cie{background:#fbfbfd;border:1px solid #eceef3;border-radius:10px;padding:9px 11px;margin:8px 0 12px}
body.dark .vm-cie{background:#181b22;border-color:#2a2e38}
.vm-cie-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.vm-cie-opp{font-size:12px;color:#1f8a4c;font-weight:700;margin-left:auto}
.vm-cie-why{font-size:12.5px;color:#4b5563;margin-top:6px}
body.dark .vm-cie-why{color:#aeb6c4}
/* v113: Commercial Assistant (pestaña Recomendaciones) */
.reco-searchbar{position:relative;margin-bottom:10px}
.reco-search{width:100%;padding:11px 14px;border:1px solid #e3e6ec;border-radius:10px;font-size:14px}
body.dark .reco-search{background:#1a1d24;border-color:#2a2e38;color:#e7eaf0}
.reco-empty,.reco-loading{padding:22px 12px;text-align:center;color:#9ca3af;font-size:13.5px}
.reco-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}
.reco-cli{font-size:16px;font-weight:800;color:#1a1a1a}
body.dark .reco-cli{color:#eef0f5}
.reco-resumen{display:flex;gap:11px;align-items:flex-start;background:linear-gradient(135deg,#fff,#fdf2f8);border:1px solid #f3d3e6;border-radius:12px;padding:12px 14px;margin-bottom:12px}
body.dark .reco-resumen{background:linear-gradient(135deg,#1a1d26,#241a22);border-color:#3a2733}
.reco-resumen .cie-scorebox{font-size:18px;padding:6px 12px;min-width:44px}
.reco-res-nba{margin-top:4px;font-size:13px;color:#374151}
body.dark .reco-res-nba{color:#c9cedb}
.reco-res-nba b{color:#1f8a4c}
.reco-res-why{font-size:12.5px;color:#6b7280;margin-top:5px}
body.dark .reco-res-why{color:#9aa3b5}
.reco-cart{background:#f3fbf6;border:1px solid #cfe9da;border-radius:12px;padding:11px 13px;margin-bottom:14px}
body.dark .reco-cart{background:#13241b;border-color:#1f4030}
.reco-cart-h{font-weight:800;font-size:13.5px;color:#1a1a1a;margin-bottom:7px}
body.dark .reco-cart-h{color:#e7eaf0}
.reco-cart-n{font-weight:500;font-size:12px;color:#6b7280}
.reco-cart-empty{font-size:12.5px;color:#6b7280}
.reco-cart-row{display:flex;align-items:center;gap:8px;padding:5px 0;border-top:1px solid #e0efe6}
body.dark .reco-cart-row{border-top-color:#234234}
.reco-cart-name{flex:1;font-size:12.5px;color:#1a1a1a;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.dark .reco-cart-name{color:#dfe3ea}
.reco-cart-qty{width:54px;padding:4px 6px;border:1px solid #cfe9da;border-radius:7px;font-size:12.5px;text-align:center}
body.dark .reco-cart-qty{background:#16251d;border-color:#2a4a39;color:#e7eaf0}
.reco-cart-val{font-size:12.5px;font-weight:700;color:#1f8a4c;min-width:66px;text-align:right}
.reco-cart-x{border:none;background:none;color:#b9c0cc;cursor:pointer;font-size:13px;padding:2px 5px}
.reco-cart-foot{display:flex;align-items:center;gap:8px;margin-top:8px;padding-top:8px;border-top:1px solid #cfe9da;font-size:13px;color:#374151}
body.dark .reco-cart-foot{border-top-color:#234234;color:#c9cedb}
.reco-cart-foot b{color:#1f8a4c;font-size:16px;margin-left:auto}
.reco-cart-foot .cie-est{margin-left:0}
.reco-sec{margin-bottom:14px}
.reco-sec-h{font-size:14px;font-weight:800;color:#1a1a1a;margin-bottom:7px}
body.dark .reco-sec-h{color:#eef0f5}
.reco-sec-sub{font-weight:400;font-size:12px;color:#9ca3af}
.reco-tier{margin-bottom:8px}
.reco-tier-h{font-size:12px;font-weight:700;color:#6a35b8;margin:6px 0 4px}
body.dark .reco-tier-h{color:#c2a3ee}
.reco-prod{display:flex;align-items:center;gap:10px;padding:9px 11px;border:1px solid #ebedf2;border-radius:10px;margin-bottom:7px;background:#fff}
body.dark .reco-prod{background:#1a1d24;border-color:#2a2e38}
.reco-prod-l{flex:1;min-width:0}
.reco-prod-name{font-size:13.5px;font-weight:700;color:#1a1a1a}
body.dark .reco-prod-name{color:#e7eaf0}
.reco-cod{font-size:11px;color:#9ca3af;font-weight:600}
.reco-prod-meta{font-size:11.5px;color:#6b7280;margin-top:2px}
body.dark .reco-prod-meta{color:#9aa3b5}
.reco-prod-meta b{color:#1d5bbf}
.reco-prod-why{font-size:11.5px;color:#7a8194;margin-top:3px;line-height:1.3}
.reco-pri{font-size:10px;font-weight:700;padding:1px 6px;border-radius:6px;margin-left:6px;background:#eef0f4;color:#5b6373}
.reco-pri.alta{background:#fde7ea;color:#c01933}.reco-pri.media{background:#fef3cd;color:#8a6d18}.reco-pri.baja{background:#eef0f4;color:#5b6373}
.reco-add{flex:0 0 auto;font-size:12px;font-weight:700;padding:7px 11px;border-radius:9px;border:1px solid #cdeede;background:#fff;color:#1f8a4c;cursor:pointer;white-space:nowrap}
.reco-add.in{background:#1f8a4c;color:#fff;border-color:#1f8a4c}
body.dark .reco-add{background:#15251c;border-color:#2a4a39;color:#7fd3a0}
body.dark .reco-add.in{background:#1f8a4c;color:#fff}
.reco-more-note{font-size:11.5px;color:#9ca3af;padding:3px 2px}
/* v117: foto de producto + disponibilidad ENIN/preventa (v118: thumbs más grandes y anchos) */
.reco-prod-img{flex:0 0 auto;width:72px;height:56px;border-radius:8px;object-fit:contain;background:#f4f5f8;border:1px solid #ebedf2;padding:2px}
body.dark .reco-prod-img{background:#11141a;border-color:#2a2e38}
@media (max-width:600px){.reco-prod-img{width:60px;height:48px}}
.reco-disp{font-size:11px;font-weight:700;white-space:nowrap}
.reco-disp.inmediata{color:#1f8a4c}
.reco-disp.preventa{color:#a9791b}
body.dark .reco-disp.inmediata{color:#5fc98a}
body.dark .reco-disp.preventa{color:#e0b75a}
.reco-add.preventa{border-color:#f0dcae;color:#a9791b;background:#fffaf0}
body.dark .reco-add.preventa{background:#241d10;border-color:#4a3d1f;color:#e0b75a}
.reco-pv-chip{font-size:9.5px;font-weight:700;padding:1px 5px;border-radius:5px;background:#fef3cd;color:#8a6d18;margin-left:5px}
body.dark .reco-pv-chip{background:#332a12;color:#e0b75a}
/* v115: 🎯 perfil + ⭐ estratégico (dos rankings separados) */
.reco-sec-hi{background:#fbf7ff;border:1px solid #ece0fb;border-radius:12px;padding:11px 12px}
body.dark .reco-sec-hi{background:#1a1526;border-color:#352a4a}
.reco-tag{font-size:10px;font-weight:700;padding:1px 6px;border-radius:6px;white-space:nowrap}
.reco-tag.star{background:#fef3cd;color:#8a6d18}.reco-tag.fit{background:#efe6fb;color:#6a35b8}
body.dark .reco-tag.star{background:#352c12;color:#e6cd7a}body.dark .reco-tag.fit{background:#281a3b;color:#c2a3ee}
.reco-vermas{margin-top:6px;width:100%;padding:8px;border:1px dashed #d8c8f0;background:none;color:#6a35b8;font-weight:600;font-size:12.5px;border-radius:9px;cursor:pointer}
body.dark .reco-vermas{border-color:#3d2a59;color:#c2a3ee}
/* AI Commercial Coach */
.reco-coach-btn{width:100%;padding:11px;border-radius:11px;border:1px solid #d8c8f0;background:#f3eefc;color:#5b2a9e;font-weight:800;font-size:13.5px;cursor:pointer;margin-bottom:12px}
.reco-coach-btn.on{background:#5b2a9e;color:#fff;border-color:#5b2a9e}
body.dark .reco-coach-btn{background:#231a33;border-color:#3d2a59;color:#c2a3ee}
body.dark .reco-coach-btn.on{background:#5b2a9e;color:#fff}
.reco-plan{background:#faf8fe;border:1px solid #e6dcf7;border-radius:12px;padding:13px 14px;margin-bottom:14px}
body.dark .reco-plan{background:#1b1626;border-color:#352a4a}
.cp-top{font-weight:800;font-size:14px;color:#5b2a9e;margin-bottom:8px}
body.dark .cp-top{color:#c2a3ee}
.cp-src{font-weight:500;font-size:11px;color:#9ca3af;margin-left:6px}
.cp-sec{margin:9px 0;padding-top:9px;border-top:1px solid #ece4f8}
body.dark .cp-sec{border-top-color:#2e2440}
.cp-h{font-size:12.5px;font-weight:800;color:#1a1a1a;margin-bottom:4px}
body.dark .cp-h{color:#e7eaf0}
.cp-obj{font-size:14px;font-weight:700;color:#5b2a9e}
body.dark .cp-obj{color:#c2a3ee}
.cp-txt{font-size:12.5px;color:#374151;line-height:1.45}
body.dark .cp-txt{color:#bcc3d0}
.cp-ol,.cp-ul{margin:0;padding-left:18px}
.cp-ol li,.cp-ul li{font-size:12.5px;color:#374151;line-height:1.4;padding:2px 0}
body.dark .cp-ol li,body.dark .cp-ul li{color:#bcc3d0}
.cp-objc{font-size:12.5px;margin:5px 0;color:#374151}
.cp-objc b{color:#1a1a1a}
body.dark .cp-objc{color:#bcc3d0}body.dark .cp-objc b{color:#e7eaf0}
.cp-guion{font-size:12.5px;color:#1a1a1a;background:#fff;border:1px solid #e6dcf7;border-radius:9px;padding:9px 11px;line-height:1.45;font-style:italic}
body.dark .cp-guion{background:#15111e;border-color:#352a4a;color:#dfe3ea}
.cp-copy{font-style:normal;font-size:11px;font-weight:700;color:#5b2a9e;background:none;border:none;cursor:pointer;margin-left:4px}
.cp-ped{width:100%;border-collapse:collapse;font-size:12.5px}
.cp-ped td{padding:4px 0;border-bottom:1px solid #ece4f8;color:#374151}
body.dark .cp-ped td{border-bottom-color:#2e2440;color:#bcc3d0}
.cp-ped td:nth-child(2){text-align:center;color:#6b7280;width:60px}
.cp-ped td:nth-child(3){text-align:right;font-weight:700;color:#1f8a4c;width:90px}
.cp-ped-tot td{font-weight:800;border-bottom:none}
.cp-conf{margin-top:10px;font-size:12px;padding:7px 10px;border-radius:8px}
.cp-conf-hi{background:#e2f6e9;color:#1f7a44}.cp-conf-mid{background:#fef3cd;color:#8a6d18}.cp-conf-lo{background:#f1eff0;color:#6b6b6b}
body.dark .cp-conf-hi{background:#14301f;color:#8fd9aa}body.dark .cp-conf-mid{background:#352c12;color:#e6cd7a}body.dark .cp-conf-lo{background:#23262e;color:#aab1bf}
/* popup pedidos */
.rb-pop-ped{font-size:12px;color:#374151;margin-top:3px}
/* panel contenedores que llegaron */
.rb-cont-panel{margin-top:10px;background:#fff;border:1px solid var(--border,#e7e7ee);border-radius:12px;padding:12px 14px;max-width:640px}
.rb-cont-head{font-weight:800;font-size:14px;display:flex;flex-direction:column;gap:2px;margin-bottom:8px}
.rb-cont-sub{font-weight:500;font-size:11.5px;color:#8a8a99}
.rb-cont-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.rb-cont-item{display:inline-flex;align-items:center;gap:6px;background:#f3f4f6;border:1px solid #e5e7eb;border-radius:9px;padding:6px 10px;font-weight:700;cursor:pointer}
.rb-cont-item:has(input:checked){background:#E7F6EC;border-color:#9fdfb5}
.rb-cont-state{font-size:11px;font-weight:600;color:#8a8a99}
.rb-cont-item:has(input:checked) .rb-cont-state{color:#1B9E5A}
.rb-cont-add{display:flex;gap:8px}
.rb-cont-add input{flex:0 1 200px;padding:7px 10px;border:1px solid var(--border,#e7e7ee);border-radius:8px}
.rb-cont-empty{color:#8a8a99;font-size:12.5px;margin-bottom:8px}
/* control masivo "hasta qué contenedor llegó" */
.rb-cont-massive{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:8px;background:#FFF7F1;border:1px solid var(--accent-soft,#FFE7E0);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.rb-cont-massive b{font-size:13px}
.rb-cont-massive select{padding:7px 10px;border:1px solid var(--border,#e7e7ee);border-radius:8px;font-family:inherit;font-size:13px;background:#fff}
.rb-cont-hint{flex-basis:100%;font-size:11.5px;color:#6b7280;margin-top:2px}
.rb-cont-fine{flex-basis:100%;display:flex;flex-wrap:wrap;gap:8px}
.rb-cont-state.ok{color:#1B9E5A}
/* panel administración */
.admin-panel{padding:4px 2px}
.admin-panel h2{font-family:'Bricolage Grotesque',sans-serif;margin:0 0 16px}
.adm-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}
.adm-card{background:var(--card,#fff);border:1px solid var(--border,#e7e7ee);border-radius:14px;padding:16px}
.adm-card h3{margin:0 0 8px;font-size:15px}
.adm-muted{color:#8a8a99;font-size:12.5px;margin:0 0 10px}
.adm-card.adm-danger{border-color:#f6c9cf;background:#fef6f7}
.adm-switch{display:flex;align-items:center;gap:8px;font-weight:600;cursor:pointer}
.adm-update{background:#FFF3CD;border:1px solid #f5e6bf;border-radius:10px;padding:10px;font-weight:600;display:flex;flex-direction:column;gap:8px}
.adm-ok{color:#1B9E5A;font-weight:700}
.adm-msg{margin-top:14px;font-weight:600;color:#374151}
/* Historial de recorridos */
.rb-hist{margin-top:16px;border-top:2px solid var(--border,#e7e7ee);padding-top:12px}
.rb-hist-head{font-weight:800;margin-bottom:8px;display:flex;align-items:center;gap:10px}
.rb-hist-list{display:flex;flex-direction:column;gap:6px}
.rb-hist-item{display:flex;align-items:center;gap:8px;background:var(--card,#fff);border:1px solid var(--border,#eee);border-radius:10px;padding:8px 12px}
.rb-hist-lbl{flex:1;font-size:13px;font-weight:600}
.rb-hist-empty{color:#9ca3af;font-size:13px}
.btn-xs{padding:4px 8px;font-size:12px}
.rb-hist-compare{margin-top:10px;background:var(--card,#fff);border:1px solid var(--border,#eee);border-radius:12px;padding:12px}
.rb-hist-compare-head{font-weight:800;margin-bottom:8px}
.rb-hcrow{padding:4px 0;font-size:13px;border-bottom:1px solid #f0f0f5}
.rb-hc-ok{color:#1B9E5A;font-size:12px}.rb-hc-pend{color:#E8820C;font-size:12px}
/* tipo en resumen de deuda */
.ds-tipo{font-size:10px;font-weight:800;padding:1px 6px;border-radius:6px;background:#eef;color:#3b3b6b}
.ds-tipo.nac{background:#E7F6EC;color:#1B7A43}.ds-tipo.imp{background:#FDEFE3;color:#B5630C}
.ds-tipo.mix{background:#EEF1FE;color:#3A50C0}.ds-tipo.cont{background:#F0E9FB;color:#6B3FA0}
.rb-fail-link{color:#C0392B;font-weight:700;text-decoration:underline;cursor:pointer}
.pay-more{text-align:center;padding:14px 0 4px}
.pay-more .btn-ghost{font-weight:700}
.pay-allshown{color:#9ca3af;font-size:12.5px}
/* panel de direcciones sin ubicar */
.rb-fail-panel{position:absolute;left:12px;right:12px;bottom:140px;max-height:42vh;overflow:auto;background:#fff;border:1px solid #f0c9cf;border-radius:14px;box-shadow:0 8px 30px rgba(0,0,0,.18);z-index:1200;padding:12px 14px}
.rb-fail-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:10px;position:sticky;top:0;background:#fff}
.rb-fail-head b{color:#C0392B}
.rb-fail-search{flex:1;min-width:140px;padding:6px 10px;border:1px solid var(--border,#e7e7ee);border-radius:8px}
.rb-fail-list{display:flex;flex-direction:column;gap:6px}
.rb-fail-item{border:1px solid #eee;border-radius:9px;padding:8px 10px}
.rb-fail-cli{font-size:13px}
.rb-fail-addr{font-size:12px;color:#8a8a99;margin-top:2px}
.rb-fail-tag{font-size:10px;font-weight:700;background:#F0E9FB;color:#6B3FA0;padding:1px 6px;border-radius:6px}
.rb-fail-pager{text-align:center;padding-top:10px}
.rb-fail-total{color:#9ca3af;font-size:12.5px}
.rb-fail-empty{color:#9ca3af;font-size:13px;padding:8px}
.tag.red{background:#FDE7E7;color:#C0392B}
.row.pay-pending{background:#FFF8F0;border-left:3px solid #E8820C}
.meta-abona{color:#8a8a99;font-size:11.5px}
/* buscador y filtros del mapa */
.rb-map-bar{flex-wrap:wrap;gap:10px}
.rb-map-bar-l{flex:0 0 auto}
.rb-map-search-wrap{position:relative;flex:1;min-width:200px;max-width:340px}
.rb-map-search{width:100%;padding:7px 12px;border:1px solid var(--border,#e7e7ee);border-radius:9px}
.rb-map-results{position:absolute;top:110%;left:0;right:0;background:#fff;border:1px solid var(--border,#e7e7ee);border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.15);z-index:1300;max-height:260px;overflow:auto}
.rb-mr-item{padding:8px 12px;cursor:pointer;display:flex;justify-content:space-between;gap:8px;font-size:13px;border-bottom:1px solid #f2f2f5}
.rb-mr-item:hover{background:#F2F6FF}
.rb-mr-on{font-size:10px;font-weight:700;background:#E7F6EC;color:#1B7A43;padding:1px 6px;border-radius:6px}
.rb-mr-no{font-size:11px;color:#C0392B}
.rb-mr-empty{padding:10px 12px;color:#9ca3af;font-size:13px}
.rb-map-filters{display:flex;gap:6px}
.rb-mf{padding:6px 12px;border:1px solid var(--border,#e7e7ee);border-radius:9px;background:#fff;font-weight:700;font-size:12.5px;cursor:pointer}
.rb-mf.active{background:#2F6FED;color:#fff;border-color:#2F6FED}
/* pago en tarjeta de recorrido */
.rb-pago{margin-top:8px;background:#E7F6EC;border:1px solid #b6e3c6;border-radius:9px;padding:7px 11px;font-weight:800;color:#1B7A43;font-size:13px}
.rb-pago-hint{font-weight:500;color:#5a9b74;font-size:11px}
/* ventas empleados */
.empleados-panel{padding:4px 2px}
.emp-head{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.emp-head h2{margin:0;font-family:'Bricolage Grotesque',sans-serif}
.emp-search{flex:1;min-width:180px;max-width:300px;padding:8px 12px;border:1px solid var(--border,#e7e7ee);border-radius:9px}
.emp-total{font-weight:800;color:#374151}
.emp-list{display:flex;flex-direction:column;gap:14px}
.emp-card{background:var(--card,#fff);border:1px solid var(--border,#e7e7ee);border-radius:14px;padding:14px 16px}
.emp-card-head{display:flex;justify-content:space-between;align-items:center;border-bottom:2px solid #f0f0f5;padding-bottom:8px;margin-bottom:10px;font-size:16px}
.emp-card-total{color:#1B7A43;font-weight:800}
.emp-mes{margin-bottom:12px}
.emp-mes-h{display:flex;justify-content:space-between;font-weight:800;color:#2F6FED;font-size:13px;margin-bottom:4px}
.emp-compra{display:flex;justify-content:space-between;font-size:12.5px;color:#555;padding:2px 0 2px 10px}
.emp-mes-tot{font-weight:800;font-size:12.5px;margin-top:4px;padding-top:4px;border-top:1px dashed #ddd}
.emp-empty{color:#9ca3af;padding:12px}
.rb-pago-ch{font-weight:600;color:#5a9b74;font-size:11px;background:#d8efe0;padding:1px 6px;border-radius:6px}
.tag.pay{background:#E7F6EC;color:#1B7A43}
/* ventas empleados (por mes) */
.emp-emp{margin-bottom:14px;padding-left:6px;border-left:3px solid #e3e3ee}
.emp-emp-name{font-weight:800;font-size:14px;margin-bottom:3px}
.emp-emp-tot{font-weight:800;font-size:12.5px;margin-top:4px;padding-top:4px;border-top:1px dashed #ddd;color:#1B7A43}
/* resumen de cuenta */
.ds-sub{margin:16px 0 6px;font-size:14px}
.ds-empty{color:#9ca3af;text-align:center;padding:8px}
/* ===== Resumen de cuenta (compacto, profesional, imprimible) ===== */
.cuenta-modal{max-width:640px;width:94vw;max-height:88vh;display:flex;flex-direction:column}
.cuenta-sheet{overflow:auto;padding:22px 24px;background:#fff;font-size:13px;color:#1f2430}
.cta-top{display:flex;justify-content:space-between;align-items:flex-start;border-bottom:2px solid #1f2430;padding-bottom:10px;margin-bottom:12px}
.cta-brand{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:20px;letter-spacing:.5px}
.cta-sub{color:#6b7280;font-size:12px;margin-top:2px}
.cta-meta{color:#6b7280;font-size:12px}
.cta-cli{font-size:14px;margin-bottom:12px}
.cta-resumen{display:flex;gap:10px;margin-bottom:16px}
.cta-r{flex:1;background:#f6f7f9;border:1px solid #edeef1;border-radius:10px;padding:10px 12px;display:flex;flex-direction:column;gap:3px}
.cta-r span{font-size:11px;color:#6b7280;text-transform:uppercase;letter-spacing:.4px}
.cta-r b{font-size:16px}
.cta-saldo{background:#1f2430;color:#fff;border-color:#1f2430}
.cta-saldo span{color:#c3c8d2}
.cta-table{width:100%;border-collapse:collapse;font-size:12.5px}
.cta-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.3px;color:#8a909c;border-bottom:1px solid #e6e8ec;padding:6px 8px}
.cta-table td{padding:7px 8px;border-bottom:1px solid #f2f3f5;vertical-align:top}
.cta-table .r{text-align:right}
.cta-fch{white-space:nowrap;color:#4b5563}
.cta-doc{font-weight:600}
.cta-imp{text-align:right;white-space:nowrap}
.cta-pago{font-size:11.5px;color:#4b5563;white-space:nowrap}
.cta-ok{color:#1B9E5A;font-size:11.5px}
.cta-debe{color:#9ca3af}
.cta-badge{font-size:10.5px;font-weight:700;padding:2px 8px;border-radius:20px;white-space:nowrap}
.cta-badge.ok{background:#E7F6EC;color:#1B7A43}
.cta-badge.debe{background:#FDE7E7;color:#C0392B}
.cta-empty{text-align:center;color:#9ca3af;padding:14px}
.cta-foot{margin-top:14px;text-align:center;color:#9ca3af;font-size:11px;border-top:1px solid #eee;padding-top:8px}
@media print{
  body.printing-cuenta *{visibility:hidden!important}
  body.printing-cuenta #cuenta-sheet, body.printing-cuenta #cuenta-sheet *{visibility:visible!important}
  body.printing-cuenta #cuenta-sheet{position:fixed;inset:0;margin:0;width:100%;max-height:none;overflow:visible;box-shadow:none}
  body.printing-cuenta .modal-actions{display:none!important}
}
.brand-logo{height:34px;width:auto;display:block}
.brand-mark.small .brand-logo{height:26px}
.cta-logo{height:30px;width:auto;display:block;margin-bottom:2px}
.cta-tipo{font-size:10px;color:#8a909c;font-weight:600;margin-top:1px}
.brand-mark.small .brand-logo{height:40px}
.brand-mark .brand-logo{height:46px}
.ds-logo{height:30px;width:auto;display:inline-block}
/* v199.22 — el chiste de Vero: a ella «Skynet» le sale tachado y encima dice
   SKYPE. Solo para su usuario; a los demás no les cambia nada. */
.brand-skynet.es-skype{position:relative;display:inline-block;padding:2px 0 10px}
.brand-skynet.es-skype .sk-tachado{opacity:.45}
/* la tachadura, como hecha a mano de una pasada */
.brand-skynet.es-skype .sk-tachado::after{content:"";position:absolute;left:-4%;right:-4%;
  top:52%;height:3px;background:#e53935;border-radius:3px;transform:rotate(-7deg);
  box-shadow:0 0 0 .5px rgba(229,57,53,.35)}
.brand-skynet.es-skype .sk-skype{position:absolute;left:50%;bottom:-9px;
  transform:translateX(-50%) rotate(-5deg);color:#00AFF0;font-size:.62em;
  font-weight:900;letter-spacing:.06em;white-space:nowrap;
  text-shadow:0 1px 0 rgba(0,0,0,.35)}
/* Vender más: grupos de acción */
.resell-group{display:flex;align-items:center;gap:8px;font-weight:800;font-size:13px;margin:16px 0 6px;color:#374151;border-bottom:1px solid #eee;padding-bottom:5px}
.resell-group:first-child{margin-top:4px}
.rg-count{background:#eef0f4;color:#6b7280;font-size:11px;font-weight:700;padding:1px 8px;border-radius:20px}
.resell-more{color:#9ca3af;font-size:12px;text-align:center;padding:12px 0 4px}
.meta .late{color:#C0392B}
/* histórico QuickSoft en Vender más */
.hist-prod{font-size:12px;color:#374151;margin:4px 0 0;line-height:1.5}
.hist-drop{font-size:12px;color:#9a4a00;background:#FFF6E9;border:1px solid #f3dcb8;border-radius:8px;padding:5px 8px;margin:5px 0 0;line-height:1.5}
.hp-x{color:#9ca3af;font-size:11px}
/* panel de contenedores reutilizable */
.cont-manager{background:#F7F8FA;border:1px solid #e7e9ee;border-radius:14px;padding:14px 16px;margin-bottom:16px}
.cont-mgr-loading,.cm-empty{color:#9ca3af;font-size:13px}
.cm-head{font-weight:800;font-size:14px;margin-bottom:10px}
.cm-hint{display:block;font-weight:500;font-size:12px;color:#8a909c;margin-top:2px}
.cm-list{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.cm-item{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1px solid #e3e3ee;border-radius:10px;padding:7px 12px;font-size:13px;cursor:pointer}
.cm-item.on{background:#E7F6EC;border-color:#b6e3c6}
.cm-item b{font-weight:800}
.cm-state{font-size:11.5px;color:#6b7280}
.cm-item.on .cm-state{color:#1B7A43}
.cm-add{display:flex;gap:8px;align-items:center}
.cm-add input{flex:0 0 90px;padding:8px 10px;border:1px solid #e3e3ee;border-radius:9px}
/* oportunidades por contenedor */
.op-prod{border-top:1px solid #f0f0f5;padding:8px 0}
.op-prod-head{display:flex;justify-content:space-between;align-items:center;font-size:13.5px;margin-bottom:6px}
.op-stock{font-size:11.5px;color:#2F6FED;background:#eaf1ff;padding:2px 8px;border-radius:20px;white-space:nowrap}
.op-cli{display:flex;justify-content:space-between;align-items:center;padding:5px 0 5px 10px;border-bottom:1px dashed #eee;flex-wrap:wrap;gap:4px}
.op-cli-main{font-size:13px}
.op-phone{color:#2F6FED;font-size:12px;margin-left:6px}
.op-cli-meta{font-size:11.5px;color:#6b7280}
.op-cli-meta .late{color:#C0392B}
.op-cont{margin-bottom:18px}
.op-cont-head{font-weight:800;font-size:14px;color:#374151;border-bottom:1px solid #eee;padding-bottom:6px;margin-bottom:6px}
/* coordenadas manuales en panel de fallidos */
.rb-fail-coord{display:flex;gap:8px;margin-top:6px}
.rb-ovr-input{flex:1;padding:7px 10px;border:1px solid #e3e3ee;border-radius:8px;font-size:13px}
.rb-ovr-btn{white-space:nowrap}
.rb-ovr-help{font-size:11px;color:#8a909c;margin-top:4px}
.rb-pop-manual{color:#1B7A43;font-size:12px;font-weight:700;margin:2px 0}
/* Hoja de Caja */
.caja-search-wrap{max-width:480px}
.caja-suggest{background:#fff;border:1px solid #e3e3ee;border-radius:10px;box-shadow:0 8px 24px rgba(0,0,0,.1);z-index:20;max-height:300px;overflow:auto;margin-top:4px}
.caja-sg{padding:9px 12px;cursor:pointer;font-size:14px}
.caja-sg:hover{background:#f5f6fa}
.caja-sg-empty{padding:9px 12px;color:#9ca3af}
.caja-detail{margin-top:16px}
.caja-card{background:#fff;border:1px solid #e7e9ee;border-radius:14px;padding:18px;max-width:640px}
.caja-cli-name{font-weight:800;font-size:17px;margin-bottom:14px}
.caja-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:6px}
.caja-grid.hidden{display:none}
.caja-card label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;color:#6b7280;font-weight:600}
.caja-card label input{padding:8px 10px;border:1px solid #e3e3ee;border-radius:8px;font-size:14px;color:#1a1a1a;font-weight:400}
.caja-sec-title{font-weight:800;font-size:14px;margin:14px 0 8px;display:flex;align-items:center;gap:10px}
.caja-mini{font-weight:400;font-size:11.5px;color:#9ca3af}
.caja-switch{font-size:12px;font-weight:600;color:#374151;display:inline-flex;align-items:center;gap:5px}
.caja-gen{width:100%}
.caja-btns{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.caja-btns>button{flex:1 1 200px}
.caja-pdf{white-space:nowrap}
.caja-pdf-hint{margin-top:8px;font-size:12.5px;color:#7a8194;line-height:1.35}
body.dark .caja-pdf-hint{color:#9aa3b5}
.caja-card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:14px;gap:12px}
.caja-reset{white-space:nowrap}
.caja-transp-info{background:#f7f8fb;border:1px solid #ebedf2;border-radius:9px;padding:10px 12px;font-size:13.5px;margin-bottom:8px}
.caja-transp-info.retira{background:#f3edfb;border-color:#e0d0f5;color:#5b2a9e;font-weight:600}
.caja-transp-info.directa{color:#6b7280}
.caja-transp-info div{font-size:12.5px;color:#6b7280;margin-top:2px}
.caja-check{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600;color:#374151;margin-top:6px;cursor:pointer}
/* Cobranza */
.cob-cfg{background:#fff;border:1px solid #e7e9ee;border-radius:12px;padding:14px 16px;margin-bottom:14px}
.cob-cfg-row{display:flex;flex-wrap:wrap;gap:14px;align-items:center;margin-top:8px}
.cob-cfg-row label{font-size:13px;color:#374151}
.cob-cfg-row input{padding:5px 8px;border:1px solid #e3e3ee;border-radius:7px}
.cob-cfg-hint{font-size:12px;color:#8a909c;margin-top:8px}
.cob-summary{background:#eaf1ff;color:#2451b8;border-radius:9px;padding:9px 13px;font-size:13.5px;margin-bottom:12px}
.cob-row{display:flex;justify-content:space-between;gap:14px;background:#fff;border:1px solid #e7e9ee;border-radius:12px;padding:13px 15px;margin-bottom:10px;flex-wrap:wrap}
.cob-row.is-due{border-color:#f5b8c8;background:#fff7fa}
.cob-cli{font-size:14.5px;margin-bottom:3px}
.cob-meta{font-size:12px;color:#6b7280}
.cob-meta .late{color:#C0392B}
.cob-rules{margin-top:3px}
.cob-rules a{color:#2F6FED;margin-left:6px}
.cob-badge{font-size:11px;padding:2px 8px;border-radius:20px;margin-left:6px;font-weight:700}
.cob-badge.due{background:#fde8ef;color:#C0392B}
.cob-badge.wait{background:#eef0f3;color:#6b7280}
.cob-badge.pause{background:#f3edfb;color:#7a3cc0}
.cob-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}
/* Reactivar */
.rx-block{margin-bottom:22px}
.rx-head{font-weight:800;font-size:15px;color:#1f2937;border-bottom:2px solid #f0f0f5;padding-bottom:7px;margin-bottom:10px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.rx-count{font-size:12px;font-weight:700;background:#eaf1ff;color:#2451b8;padding:2px 9px;border-radius:20px}
.rx-sub,.rx-head .rx-sub{font-size:12px;font-weight:400;color:#9ca3af}
.rx-cli{display:flex;justify-content:space-between;gap:14px;align-items:center;background:#fff;border:1px solid #e7e9ee;border-radius:12px;padding:12px 15px;margin-bottom:9px;flex-wrap:wrap}
.rx-cli.done{opacity:.6;background:#f7fbf8;border-color:#cde9d6}
.rx-cli-name{font-size:14.5px;margin-bottom:3px}
.rx-ok{color:#1B7A43;font-size:12px;font-weight:700;margin-left:6px}
.rx-msg{font-size:13px;color:#374151}
.rx-msg .late{color:#C0392B}
.rx-extra{font-size:12px;color:#6b7280;margin-top:3px}
.rx-btn{white-space:nowrap}
.rx-prods{display:grid;grid-template-columns:1fr 1fr;gap:6px 18px}
.rx-prod{display:flex;align-items:center;gap:9px;font-size:13px;padding:5px 0;border-bottom:1px dashed #eee}
.rx-rank{font-weight:800;color:#9ca3af;width:22px;text-align:right}
.rx-pname{flex:1}
.rx-imp{font-size:10px;background:#eef2ff;color:#4f46e5;padding:1px 5px;border-radius:4px;vertical-align:middle}
.rx-pcli{font-size:11.5px;color:#9ca3af;white-space:nowrap}
.rx-tr{font-size:11.5px;font-weight:700;white-space:nowrap;width:54px;text-align:right}
.rx-tr.up{color:#1B7A43}
.rx-tr.down{color:#C0392B}
.rx-tr.flat{color:#cbd5e1}
@media(max-width:700px){.rx-prods{grid-template-columns:1fr}}
.brand-skynet{font-weight:900;font-size:26px;letter-spacing:4px;color:#e6007e;text-align:center;margin-top:1px;text-transform:uppercase;line-height:1}
.brand-mark.small .brand-skynet{font-size:20px;letter-spacing:3px}
.vm-rebuild{margin:-6px 0 12px}
.vm-rebuild span{font-size:12px;color:#6b7280}
/* Vender más - recomendaciones por cliente */
.vm-search-wrap{max-width:480px;margin-bottom:14px}
.vm-loading{padding:20px;color:#6b7280}
.vm-cli-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.vm-cli-name{font-weight:800;font-size:17px}
.vm-cli-vend{font-size:12px;color:#9ca3af;margin-left:6px}
.vm-filters{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;align-items:center}
.vm-chip{border:1px solid #e3e3ee;background:#fff;border-radius:20px;padding:5px 12px;font-size:12.5px;cursor:pointer;color:#374151}
.vm-chip.on{background:#1a1a1a;color:#fff;border-color:#1a1a1a}
.vm-sep{width:1px;height:20px;background:#e3e3ee;margin:0 4px}
.vm-item{background:#fff;border:1px solid #e7e9ee;border-radius:12px;padding:12px 15px;margin-bottom:9px;border-left:4px solid #e7e9ee;display:flex;align-items:center;gap:12px}
.vm-item .reco-prod-img{align-self:flex-start;margin-top:2px}
.vm-item-l{flex:1;min-width:0}
.vm-item.pri-alta{border-left-color:#C0392B}
.vm-item.pri-media{border-left-color:#E8A317}
.vm-item.pri-baja{border-left-color:#cbd5e1}
.vm-item-top{display:flex;align-items:center;gap:8px;margin-bottom:4px;flex-wrap:wrap}
.vm-cat{font-size:11.5px;font-weight:700;padding:2px 9px;border-radius:20px}
.vm-dejo{background:#fde8ef;color:#C0392B}
.vm-reponer{background:#fff4e0;color:#b46f00}
.vm-cross{background:#e8f5ee;color:#1B7A43}
.vm-estrella{background:#eef2ff;color:#4f46e5}
.vm-pri{font-size:10.5px;text-transform:uppercase;font-weight:700;letter-spacing:.5px;margin-left:auto}
.vm-pri.alta{color:#C0392B}.vm-pri.media{color:#b46f00}.vm-pri.baja{color:#9ca3af}
.vm-pname{font-weight:700;font-size:14.5px;margin-bottom:2px}
.vm-motivo{font-size:13px;color:#374151}
.vm-meta{font-size:11.5px;color:#9ca3af;margin-top:3px}
.vm-expand{width:100%;padding:10px;background:#f5f6fa;border:1px solid #e7e9ee;border-radius:10px;cursor:pointer;font-size:13px;color:#374151;margin-top:4px}
/* Vender más - código y landing */
.vm-cod{font-weight:800;color:#4f46e5;font-size:12.5px;background:#eef2ff;padding:1px 6px;border-radius:5px;margin-right:4px}
.vm-land-intro{font-size:13.5px;color:#374151;margin-bottom:14px}
.vm-land-cols{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.vm-land-h{font-weight:800;font-size:13.5px;margin-bottom:8px;color:#1f2937}
.vm-land-item{display:flex;align-items:center;gap:8px;padding:7px 8px;border-bottom:1px dashed #eee;cursor:pointer;border-radius:6px}
.vm-land-item:hover{background:#f7f7fb}
.vm-land-cod{font-weight:800;color:#4f46e5;font-size:12px;background:#eef2ff;padding:1px 6px;border-radius:5px;min-width:48px;text-align:center}
.vm-land-name{flex:1;font-size:13px}
/* Reactivar - seguimiento y código */
.rx-code{font-weight:800;color:#6b7280;font-size:12px;background:#f0f0f5;padding:1px 6px;border-radius:5px}
.rx-followup{background:#fff8e8;border:1px solid #f0d9a0;border-radius:12px;padding:13px 15px;margin-bottom:18px}
.rx-fu-head{font-weight:800;font-size:14px;color:#92670a;margin-bottom:8px}
.rx-fu-line{font-size:13px;color:#5b4a1e;margin-bottom:8px}
.rx-fu-clis{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px}
.rx-fu-cli{display:inline-flex;align-items:center;gap:5px;background:#fff;border:1px solid #ecdca8;border-radius:16px;padding:3px 6px 3px 10px;font-size:12px}
.rx-fu-ok{border:none;background:#e8f5ee;color:#1B7A43;border-radius:12px;padding:2px 8px;font-size:11px;cursor:pointer;font-weight:700}
@media(max-width:700px){.vm-land-cols{grid-template-columns:1fr}}
/* Reactivar v89: estados, expand, monto caído */
.rx-resumen{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;font-weight:700;margin-bottom:12px;padding:8px 12px;background:#fafafa;border-radius:10px}
.rx-resumen .st-cont{color:#b46f00}.rx-resumen .st-ped{color:#1B7A43}.rx-resumen .st-no{color:#C0392B}.rx-resumen .st-pend{color:#9ca3af}
.rx-cli{background:#fff;border:1px solid #e7e9ee;border-radius:12px;margin-bottom:10px;border-left:4px solid #e7e9ee;overflow:hidden}
.rx-cli.st-card-contactado{border-left-color:#E8A317}
.rx-cli.st-card-pedido{border-left-color:#1B7A43;background:#f7fbf8}
.rx-cli.st-card-no_interesado{border-left-color:#C0392B;opacity:.72}
.rx-cli-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;padding:12px 15px;cursor:pointer}
.rx-cli-head:hover{background:#fafbfc}
.rx-cli-name{font-size:14.5px;margin-bottom:3px;display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.rx-badge{font-size:11px;font-weight:700;padding:1px 8px;border-radius:20px}
.rx-badge.st-pend{background:#f0f0f5;color:#9ca3af}
.rx-badge.st-cont{background:#fff4e0;color:#b46f00}
.rx-badge.st-ped{background:#e8f5ee;color:#1B7A43}
.rx-badge.st-no{background:#fde8ef;color:#C0392B}
.rx-msg{font-size:13px;color:#374151}
.rx-msg .late{color:#C0392B}
.rx-caido{font-size:12.5px;color:#92670a;font-weight:700;margin-top:4px}
.rx-extra{font-size:12px;color:#6b7280;margin-top:3px}
.rx-chevron{color:#bbb;font-size:12px;padding-top:3px}
.rx-detail{padding:4px 15px 14px;border-top:1px dashed #eee;background:#fcfcfd}
.rx-detail-h{font-weight:700;font-size:12.5px;color:#555;margin:10px 0 6px}
.rx-drop-row{display:flex;align-items:center;gap:9px;padding:5px 0;border-bottom:1px dashed #f0f0f0;font-size:12.5px}
.rx-drop-cod{font-weight:800;color:#4f46e5;font-size:11.5px;background:#eef2ff;padding:1px 6px;border-radius:5px;min-width:46px;text-align:center}
.rx-drop-name{flex:1}
.rx-drop-meta{color:#9ca3af;font-size:11.5px;white-space:nowrap}
.rx-drop-meta b{color:#C0392B}
.rx-vermas{margin-top:10px;width:100%;padding:9px;background:#eef2ff;border:1px solid #dfe4ff;border-radius:9px;color:#4f46e5;font-weight:700;font-size:12.5px;cursor:pointer}
.rx-actions{display:flex;flex-wrap:wrap;gap:6px;padding:10px 15px;border-top:1px solid #f3f3f7;background:#fff}
.rx-st-btn{border:1px solid #e3e3ee;background:#fff;border-radius:8px;padding:6px 11px;font-size:12px;cursor:pointer;font-weight:600;color:#555}
.rx-st-btn.st-cont.on{background:#fff4e0;color:#b46f00;border-color:#f0d9a0}
.rx-st-btn.st-ped.on{background:#e8f5ee;color:#1B7A43;border-color:#bfe3cd}
.rx-st-btn.st-no.on{background:#fde8ef;color:#C0392B;border-color:#f3c2d4}
.rx-st-btn.st-clear{margin-left:auto;color:#9ca3af}

/* ============================================================================
 *  MÓDULO WHATSAPP (v91) — estética Skynet (coral acción · verde estado WA)
 * ========================================================================== */
.wa-panel{display:flex;flex-direction:column;gap:16px}
.wa-header{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap}
.wa-head-l h2{font-family:'Bricolage Grotesque',sans-serif;font-size:26px;font-weight:800;color:var(--ink);display:flex;align-items:center;gap:8px}
.wa-sub{color:var(--muted);font-size:14px;margin-top:2px}
.wa-head-r{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.wa-chip{font-size:12.5px;font-weight:700;padding:7px 13px;border-radius:999px;white-space:nowrap}
.wa-chip.sim{background:var(--green-soft);color:var(--green)}
.wa-chip.warn{background:var(--amber-soft);color:var(--amber)}
.wa-chip.ok{background:#D6F0E0;color:#0c7a3e}
.wa-sender-lbl{font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted);display:flex;flex-direction:column;gap:4px}
.wa-sender-sel{padding:9px 12px;border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:14px;background:#fff;font-weight:600;color:var(--ink)}
.wa-kpis{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
.wa-tabs{display:flex;gap:6px;flex-wrap:wrap;border-bottom:1px solid var(--border);padding-bottom:2px}
.wa-tab{background:transparent;border:none;border-bottom:3px solid transparent;color:var(--muted);font-family:inherit;font-size:14px;font-weight:700;padding:9px 13px;cursor:pointer;border-radius:8px 8px 0 0;transition:.15s}
.wa-tab:hover{color:var(--ink);background:#fff}
.wa-tab.on{color:var(--accent-dark);border-bottom-color:var(--accent);background:#fff}
.wa-body{min-height:200px}

.wa-hint{background:#fff;border:1px solid var(--border);border-left:4px solid var(--green);border-radius:12px;padding:11px 15px;font-size:13.5px;color:#3a4356;margin-bottom:14px}
.wa-empty{padding:28px;text-align:center;color:var(--muted);font-size:14px}
.wa-loading{padding:22px;color:var(--muted)}
.wa-muted{color:var(--muted);font-size:12.5px}
.wa-mini-warn{font-size:12px;color:#6e4503;background:var(--amber-soft);border-radius:8px;padding:7px 10px;margin-top:8px}
.wa-late{color:var(--red)} .wa-ok{color:var(--green)}
.wa-warn-txt{color:var(--amber);font-weight:600}

/* botones inline dentro del módulo (anulan el width:100% global) */
.wa-panel .btn-xs,.modal .btn-xs{width:auto;padding:7px 12px;font-size:12.5px;border-radius:9px}

/* cards accionables */
.wa-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px}
.wa-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:15px 17px;display:flex;flex-direction:column;gap:8px}
.wa-card.wa-due{border-color:#f5b8b2;background:#fff7f6}
.wa-card.wa-pri-critica{border-left:4px solid var(--red)}
.wa-card.wa-pri-alta{border-left:4px solid var(--amber)}
.wa-card.wa-pri-media{border-left:4px solid var(--blue)}
.wa-card.wa-pri-baja{border-left:4px solid var(--border)}
.wa-card-top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.wa-card-name{font-size:15px;color:var(--ink)}
.wa-code{font-family:'Bricolage Grotesque',sans-serif;font-size:11px;font-weight:700;background:#EEF2FF;color:#4f46e5;padding:1px 7px;border-radius:6px}
.wa-card-owner{font-size:12px;color:var(--muted);white-space:nowrap}
.wa-card-meta{font-size:12.5px;color:#5a6072}
.wa-motivo{font-size:13.5px;color:#3a4356;line-height:1.45}
.wa-caido{font-size:13px;color:#92670a;font-weight:700}
.wa-pills{display:flex;flex-wrap:wrap;gap:5px}
.wa-pill{font-size:11.5px;background:#F4F2EC;border:1px solid var(--border);color:#5a6072;border-radius:999px;padding:2px 9px}
.wa-card-actions{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
.wa-timer{font-size:11.5px;font-weight:700;color:var(--amber);white-space:nowrap}
.wa-quote{font-size:13px;color:#3a4356;font-style:italic;background:#FAF8F3;border-radius:8px;padding:8px 11px}
.wa-sugg{font-size:12.5px;color:#0c4f29;background:var(--green-soft);border-radius:8px;padding:7px 10px}

/* badges + semáforo */
.wa-badge{font-size:11px;font-weight:700;padding:2px 9px;border-radius:999px;white-space:nowrap}
.wa-badge.verde{background:var(--green-soft);color:var(--green)}
.wa-badge.rojo{background:var(--red-soft);color:#8a1a12}
.wa-badge.amber{background:var(--amber-soft);color:#6e4503}
.wa-badge.blue{background:var(--blue-soft);color:#14306e}
.wa-badge.gris{background:#EEECE6;color:var(--muted)}
.wa-sem{display:inline-block;width:10px;height:10px;border-radius:50%;vertical-align:middle}
.wa-sem.verde{background:var(--green)} .wa-sem.amarillo{background:var(--amber)}
.wa-sem.rojo{background:var(--red)} .wa-sem.gris{background:#c9ccd6}
.wa-sim{font-size:10px;font-weight:700;background:#EAE4FB;color:#5B3FB0;padding:1px 6px;border-radius:5px}

/* bandeja */
.wa-inbox{display:grid;grid-template-columns:300px 1fr;gap:14px;align-items:start}
.wa-conv-list{display:flex;flex-direction:column;gap:8px;max-height:70vh;overflow-y:auto}
.wa-conv-row{background:#fff;border:1px solid var(--border);border-radius:12px;padding:11px 13px;cursor:pointer;transition:.12s}
.wa-conv-row:hover{border-color:var(--muted)}
.wa-conv-row.on{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}
.wa-conv-row.wait{border-left:4px solid var(--red)}
.wa-conv-row-top{display:flex;justify-content:space-between;gap:8px;font-size:14px}
.wa-conv-row-sub{font-size:12px;color:var(--muted);margin:3px 0}
.wa-tag{font-size:10.5px;background:#EEF2FF;color:#4f46e5;border-radius:5px;padding:1px 6px;margin-right:4px}
.wa-conv-detail{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;display:flex;flex-direction:column;gap:11px;min-height:300px}
.wa-conv-head{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--border);padding-bottom:10px}
.wa-back{display:none}
.wa-conv-tags{display:flex;flex-wrap:wrap;gap:5px}
.wa-tag-chip{font-size:11.5px;border:1px solid var(--border);border-radius:999px;padding:3px 10px;cursor:pointer;color:var(--muted);background:#fff}
.wa-tag-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.wa-actions-bar{display:flex;flex-wrap:wrap;gap:6px}
.wa-thread{display:flex;flex-direction:column;gap:8px;max-height:46vh;overflow-y:auto;padding:6px 2px;background:#FAF8F3;border-radius:12px;padding:12px}
.wa-bubble{max-width:78%;padding:9px 12px;border-radius:14px;font-size:13.5px;line-height:1.4}
.wa-bubble.in{align-self:flex-start;background:#fff;border:1px solid var(--border);border-bottom-left-radius:4px}
.wa-bubble.out{align-self:flex-end;background:#DCF8C6;border-bottom-right-radius:4px}
.wa-bubble-meta{font-size:10.5px;color:#7a8a6a;margin-top:3px;text-align:right}
.wa-note{display:flex;gap:8px}
.wa-note input{flex:1;padding:8px 11px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:13px}
.wa-composer{display:flex;flex-direction:column;gap:7px}
.wa-composer-actions{display:flex;gap:7px;justify-content:flex-end}
.wa-textarea{width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-family:inherit;font-size:14px;background:#FBFAF7;resize:vertical}
.wa-textarea:focus{outline:none;border-color:var(--accent);background:#fff;box-shadow:0 0 0 3px var(--accent-soft)}
.wa-debt-img{max-width:100%;border:1px solid var(--border);border-radius:10px;margin-top:10px}

/* campañas */
.wa-camp-new{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:14px}
.wa-camp-new input,.wa-camp-new select{padding:9px 11px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:13px;background:#fff}
.wa-camp-new input{flex:1;min-width:180px}
.wa-camp-list{display:flex;flex-direction:column;gap:8px}
.wa-camp-item{background:#fff;border:1px solid var(--border);border-radius:12px;padding:12px 15px;cursor:pointer}
.wa-camp-item:hover{border-color:var(--muted)}
.wa-camp-detail{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-top:14px;display:flex;flex-direction:column;gap:12px}
.wa-metrics{display:flex;flex-wrap:wrap;gap:14px;font-size:12.5px;color:var(--muted)}
.wa-metrics b{color:var(--ink);font-size:15px;margin-left:4px}
.wa-camp-actions{display:flex;flex-wrap:wrap;gap:6px}
.wa-rcpt-table{width:100%;border-collapse:collapse;font-size:13px}
.wa-rcpt-table th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);padding:7px 8px;border-bottom:2px solid var(--border)}
.wa-rcpt-table td{padding:7px 8px;border-bottom:1px solid var(--border)}
.wa-rcpt-table tr.excl{opacity:.55}
.wa-prev-h{font-size:12.5px;font-weight:700;color:var(--ink);margin:8px 0}
.wa-prev-msg{background:#FAF8F3;border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:13px;margin-bottom:7px}

/* mi agente */
.wa-agent-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:start}
.wa-form{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:8px 0}
.wa-form label,.wa-form-full{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:var(--ink-2)}
.wa-form-full{margin-top:10px}
.wa-form input,.wa-form select,.wa-form-full input{padding:9px 11px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:13.5px;background:#fff;font-weight:500}
.wa-chk{flex-direction:row !important;align-items:center;gap:8px}
.wa-chk input{width:16px;height:16px;accent-color:var(--accent)}
.wa-ctrl-log{display:flex;flex-direction:column;gap:7px;max-height:220px;overflow-y:auto;background:#FAF8F3;border-radius:12px;padding:12px;margin:8px 0;min-height:80px}
.wa-ctrl-you{align-self:flex-end;background:var(--accent);color:#fff;border-radius:12px;border-bottom-right-radius:4px;padding:8px 12px;font-size:13px;max-width:85%}
.wa-ctrl-bot{align-self:flex-start;background:#fff;border:1px solid var(--border);border-radius:12px;border-bottom-left-radius:4px;padding:8px 12px;font-size:13px;max-width:90%}
.wa-ctrl-in{display:flex;gap:8px}
.wa-ctrl-in input{flex:1;padding:9px 12px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:13.5px}
.wa-rules-h{font-size:13px;font-weight:800;color:var(--ink);margin:12px 0 6px}
.wa-rules{list-style:none;display:flex;flex-direction:column;gap:6px}
.wa-rules li{display:flex;justify-content:space-between;gap:8px;align-items:center;font-size:13px;background:#FAF8F3;border-radius:8px;padding:7px 10px}
.wa-rules li.off{opacity:.5;text-decoration:line-through}
.wa-rules label{display:flex;gap:8px;align-items:center;cursor:pointer}
.wa-sysrules{margin-top:12px;font-size:12px}
.wa-sysrules summary{cursor:pointer;color:var(--muted);font-weight:600}
.wa-sysrules pre{white-space:pre-wrap;background:#FAF8F3;border-radius:8px;padding:10px;margin-top:6px;font-size:11.5px;color:#5a6072;font-family:inherit}
.wa-test-card{background:#FAF8F3;border-radius:12px;padding:12px;margin-top:10px}
.wa-ficha-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:10px}
.wa-ficha-h{font-size:12px;font-weight:800;color:var(--ink);margin:10px 0 5px;text-transform:uppercase;letter-spacing:.03em}
.wa-ficha-grid ul{margin-left:16px;font-size:13px;color:#3a4356}
.wa-draft-meta{font-size:12px;color:var(--muted);margin:8px 0}

/* config */
.wa-cfg-grid{display:grid;grid-template-columns:1fr 2fr;gap:14px;align-items:start;margin-bottom:14px}
.wa-cfg-wide{grid-column:auto}
.wa-card h3{font-family:'Bricolage Grotesque',sans-serif;font-size:16px;font-weight:700;color:var(--ink);margin-bottom:8px}
.wa-card h4{font-size:13px}
.wa-kv{display:flex;justify-content:space-between;gap:10px;font-size:13px;padding:6px 0;border-bottom:1px dashed var(--border)}
.wa-kv span{color:var(--muted)}

@media(max-width:880px){
  .wa-kpis{grid-template-columns:repeat(2,1fr)}
  .wa-agent-grid,.wa-cfg-grid,.wa-ficha-grid,.wa-form{grid-template-columns:1fr}
  .wa-inbox{grid-template-columns:1fr}
  .wa-inbox .wa-conv-detail{display:none}
  .wa-inbox.show-detail .wa-conv-list{display:none}
  .wa-inbox.show-detail .wa-conv-detail{display:flex}
  .wa-back{display:inline-block}
  .wa-cards{grid-template-columns:1fr}
}
.wa-greet{font-size:12.5px;color:#3a4356}
.wa-greet a{color:var(--blue);margin:0 6px;text-decoration:none;font-weight:600}
.wa-greet a:hover{text-decoration:underline}

/* ---- WhatsApp v93: refinamientos UX ---- */
.wa-section-h{font-family:'Bricolage Grotesque',sans-serif;font-size:15px;font-weight:700;color:var(--ink);margin:18px 0 10px}
.nav-badge{margin-left:auto;background:var(--red);color:#fff;font-size:11px;font-weight:800;min-width:20px;height:20px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}

/* v200: el resumen que Skynet le manda al vendedor (pestaña Hoy) */
.wa-resumen{background:#fff;border:1px solid var(--border,#e3e3ea);border-left:5px solid #E2006C;
  border-radius:var(--radius);box-shadow:var(--shadow);padding:12px 14px;margin:14px 0 4px}
.wa-resumen>b{font-size:14px}
.wa-resumen-fila{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:8px}
.wa-resumen-listo{margin-top:10px;padding-top:10px;border-top:1px dashed var(--border,#e3e3ea)}
.wa-resumen-msg{background:#f6f6f9;border:1px solid var(--border,#e3e3ea);border-radius:8px;
  padding:8px 10px;margin:8px 0;font-size:12.5px;white-space:pre-wrap;word-break:break-word}
.wa-hist-row{border:1px solid var(--border,#e3e3ea);border-radius:10px;padding:10px 12px;margin-bottom:10px}
.wa-hist-cuenta{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.wa-hist-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.wa-hist-chips .cm-chip{font-size:11px}
body.dark .wa-resumen,body.dark .wa-hist-row{background:#1a1d24;border-color:#2a2e3a}
body.dark .wa-resumen-msg{background:#12151b;border-color:#2a2e3a}

/* v201: los clientes a los que se les manda el catálogo */
.wa-dif-lista{margin-top:8px;max-height:340px;overflow:auto}
.wa-dif-row{display:flex;align-items:center;gap:10px;padding:6px 8px;border-bottom:1px solid var(--border,#eee);font-size:12.5px}
.wa-dif-row>span:first-child{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wa-dif-row.no{opacity:.65}
.wa-dif-row.mandado{background:#e9f7ec}
.wa-dif-x{color:var(--red,#c0392b);text-decoration:none;font-weight:700;padding:0 4px}
.wa-dif-picks{max-height:52vh;overflow:auto;border:1px solid var(--border,#e3e3ea);border-radius:8px}
.wa-dif-pick{display:flex;align-items:center;gap:10px;padding:6px 10px;border-bottom:1px solid var(--border,#eee);font-size:12.5px;cursor:pointer}
.wa-dif-pick>span:first-of-type{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wa-dif-pick.sin{opacity:.55;cursor:not-allowed}
.wa-dif-pick:hover{background:#faf7f9}
body.dark .wa-dif-row.mandado{background:#14301c}
body.dark .wa-dif-pick:hover{background:#1f2430}

/* Hero "próxima mejor acción" */
.wa-hero{background:linear-gradient(135deg,#fff,#FFF3EF);border:1px solid var(--accent-soft);border-left:5px solid var(--accent);border-radius:var(--radius);box-shadow:var(--shadow);padding:18px 20px;margin-bottom:8px}
.wa-hero-tag{font-size:11px;font-weight:800;letter-spacing:.08em;color:var(--accent-dark)}
.wa-hero-name{font-family:'Bricolage Grotesque',sans-serif;font-size:21px;font-weight:800;color:var(--ink);margin:4px 0}
.wa-hero-why{font-size:14px;color:#3a4356}
.wa-hero-monto{font-size:14px;color:#92670a;margin-top:4px}
.wa-hero-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.wa-hero-actions .btn-xs{padding:9px 15px;font-size:13.5px}

/* pills + ver todos */
.wa-pill.ghost{background:#fff;border-style:dashed;color:var(--blue);cursor:pointer}

/* menú "Más acciones" */
.wa-more{position:relative;display:inline-block}
.wa-more-menu{position:absolute;right:0;top:calc(100% + 4px);background:#fff;border:1px solid var(--border);border-radius:10px;box-shadow:var(--shadow);z-index:20;min-width:210px;overflow:hidden}
.wa-more-menu button{display:block;width:100%;text-align:left;background:#fff;border:none;padding:10px 13px;font-family:inherit;font-size:13px;cursor:pointer;color:var(--ink)}
.wa-more-menu button:hover{background:#FAF8F3}

/* banda de prioridad (esperando) */
.wa-pri-band{font-size:12px;font-weight:800;padding:6px 12px;border-radius:10px;margin-bottom:8px}
.wa-pri-band.rojo{background:var(--red-soft);color:#8a1a12}
.wa-pri-band.amber{background:var(--amber-soft);color:#6e4503}
.wa-pri-band.blue{background:var(--blue-soft);color:#14306e}
.wa-pri-band.gris{background:#EEECE6;color:var(--muted)}

/* bandeja: próxima acción + clasificar + quick replies */
.wa-nextaction{background:#FFF7F1;border:1px solid var(--accent-soft);border-radius:12px;padding:11px 13px}
.wa-na-txt{font-size:13.5px;color:#3a4356;margin-bottom:8px}
.wa-na-btns{display:flex;flex-wrap:wrap;gap:6px}
.wa-conv-classify{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.wa-quickrow{display:flex;flex-wrap:wrap;gap:6px}
.wa-quick{background:#EAF7EE;border:1px solid #cdeed8;color:#0c7a3e;border-radius:999px;padding:6px 12px;font-size:12.5px;font-family:inherit;cursor:pointer}
.wa-quick:hover{background:#d8f0e0}
.wa-note-inline{flex:1;min-width:120px;padding:8px 11px;border:1px solid var(--border);border-radius:9px;font-family:inherit;font-size:12.5px}
.wa-testnote{font-size:11px;color:#5B3FB0;background:#F1ECFB;border-radius:6px;padding:4px 9px;align-self:flex-start}
.wa-conv-detail.sim{border-color:#cdbdf2;box-shadow:0 0 0 2px #efe9fb}
.wa-conv-row.sim{border-left:3px solid #cdbdf2}

/* wizard de campañas */
.wa-wiz{background:#fff;border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px;margin-bottom:14px}
.wa-wiz-step{font-size:14px;color:var(--ink);margin:14px 0 8px}
.wa-wiz-step b{color:var(--accent-dark)}
.wa-what{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:10px;margin-top:8px}
.wa-what-card{background:#FAF8F3;border:1px solid var(--border);border-radius:12px;padding:16px;cursor:pointer;font-family:inherit;font-size:13.5px;font-weight:600;color:var(--ink);text-align:center;transition:.15s}
.wa-what-card:hover{border-color:var(--accent);background:#fff;transform:translateY(-1px)}
.wa-what-ico{font-size:26px;margin-bottom:6px}
.wa-aud{display:flex;flex-wrap:wrap;gap:12px;font-size:13.5px;margin:6px 0}
.wa-aud-ok{color:var(--green);font-weight:700}
.wa-aud-warn{color:var(--amber);font-weight:700}
.wa-aud-bad{color:var(--red);font-weight:700}

/* mi asistente: estilo con radios */
.wa-style{display:flex;flex-direction:column;gap:6px;margin:6px 0 12px}
.wa-style-lbl{font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:6px}
.wa-radio-row{display:flex;flex-wrap:wrap;gap:8px}
.wa-radio{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--border);border-radius:999px;padding:7px 14px;font-size:13px;cursor:pointer;background:#fff;color:#3a4356}
.wa-radio input{display:none}
.wa-radio.on{background:var(--accent);color:#fff;border-color:var(--accent)}
.wa-ex-chips{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}
.wa-ex{background:#EEF2FF;border:1px solid #dfe4ff;color:#4f46e5;border-radius:999px;padding:6px 12px;font-size:12.5px;font-family:inherit;cursor:pointer}
.wa-ex:hover{background:#e3e9ff}

/* cobranza por grupos */
.wa-cob-group{margin-bottom:20px}
.wa-cob-gh{font-family:'Bricolage Grotesque',sans-serif;font-size:14px;font-weight:800;color:var(--ink);margin-bottom:9px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.wa-cob-n{background:var(--ink);color:#fff;font-size:11px;font-weight:800;border-radius:999px;padding:1px 9px}
.wa-cob-next{font-size:12.5px;color:#3a4356}

.wa-rel-optin{border-top:1px solid var(--border);margin-top:12px;padding-top:10px;display:flex;flex-direction:column;gap:7px}

/* WhatsApp v96: actividad/oportunidad, código de artículo, disponibilidad */
.wa-activity{font-size:12.5px;color:#3a4356}
.wa-oppline{font-size:12.5px;color:#3a4356;margin-top:2px}
.wa-pill.nac{border-left:3px solid var(--green)}
.wa-pill.imp{border-left:3px solid var(--amber)}
.wa-pill b{color:#4f46e5;font-weight:800}
.wa-prodcode{font-family:'Bricolage Grotesque',sans-serif;font-weight:800;font-size:11.5px;background:#EEF2FF;color:#4f46e5;padding:1px 6px;border-radius:5px;margin-right:4px}
.wa-prodlist{list-style:none;display:flex;flex-direction:column;gap:5px;font-size:13px}
.wa-prodlist li{padding:5px 0;border-bottom:1px dashed #eceef1;line-height:1.4}
.wa-pchip{font-size:9.5px;font-weight:800;padding:1px 6px;border-radius:5px;letter-spacing:.03em;margin-left:3px;vertical-align:middle}
.wa-pchip.rep{background:var(--amber-soft);color:#6e4503}
.wa-pchip.cross{background:var(--green-soft);color:var(--green)}
.wa-pchip.estrella{background:#EEF2FF;color:#4f46e5}
.wa-pchip.nuevo{background:#E3ECFE;color:#14306e}
.wa-disp{font-size:11px;color:var(--muted)}
.wa-disp.nac{color:var(--green)}
.wa-disp.imp{color:var(--amber)}
.wa-opp-cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:6px}
.wa-note-ok{background:var(--green-soft);color:#0c4f29;border-radius:8px;padding:8px 11px;font-size:13px;margin:4px 0}
@media(max-width:880px){.wa-opp-cols{grid-template-columns:1fr}}

/* ===== WhatsApp v98: Central de Cobranzas ===== */
.wa-cob-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:4px}
.wa-cob-title{font-family:'Bricolage Grotesque',sans-serif;font-size:24px;font-weight:800;color:var(--ink)}
.wa-cob-badges{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.wa-cob-op{font-size:13.5px;color:#3a4356;background:var(--surface);border:1px solid var(--border);border-left:4px solid var(--accent);border-radius:10px;padding:9px 13px;margin:8px 0 12px}
.wa-cob-kpis{grid-template-columns:repeat(7,1fr)}
.wa-kpi-click{cursor:pointer;transition:.12s}
.wa-kpi-click:hover{transform:translateY(-1px);box-shadow:0 6px 16px rgba(20,22,30,.1)}
.wa-kpi-click.on{outline:2px solid var(--accent);outline-offset:1px}
.wa-cob-filterbar{font-size:13px;color:var(--muted);margin:6px 0 10px}
.wa-cob-filterbar a{color:var(--blue);margin-left:8px;text-decoration:none;font-weight:600}
.wa-tab-n{background:var(--muted);color:#fff;font-size:10.5px;font-weight:800;border-radius:999px;padding:0 6px;margin-left:3px}
.wa-tab-n.urg{background:var(--red)}
@media(max-width:1100px){.wa-cob-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:700px){.wa-cob-kpis{grid-template-columns:repeat(2,1fr)}}

/* ===== Modo oscuro (variables + superficies hardcodeadas más visibles) ===== */
body.dark{
  --bg:#16181d;--surface:#23262d;--ink:#eef0f4;--ink-2:#e2e4e9;--text:#dcdfe6;--muted:#9aa0ad;--border:#343843;
  --accent:#FF6A4D;--accent-dark:#E8421F;--accent-soft:#3a2620;
  --green:#3FBF77;--green-soft:#173026;--amber:#E0A93B;--amber-soft:#332a16;
  --red:#F2655B;--red-soft:#34201e;--blue:#5B8DEF;--blue-soft:#1d2840;
  --shadow:0 1px 2px rgba(0,0,0,.35),0 8px 24px rgba(0,0,0,.4);
}
body.dark{background:var(--bg);color:var(--text)}
body.dark .topbar h1,body.dark .wa-head-l h2,body.dark .wa-card-name,body.dark .wa-cob-title{color:var(--ink)}
body.dark .wa-card,body.dark .kpi,body.dark .section,body.dark .wa-conv-row,body.dark .wa-conv-detail,
body.dark .wa-camp-item,body.dark .wa-camp-detail,body.dark .wa-wiz,body.dark .wa-hero,body.dark .wa-cob-op,
body.dark .modal,body.dark .empleados-panel,body.dark .admin-panel,body.dark .adm-card,body.dark .cob-cfg,
body.dark .rb-cont-panel,body.dark .wa-what-card{background:var(--surface);color:var(--text)}
body.dark .wa-thread,body.dark .wa-ctrl-log,body.dark .wa-quote,body.dark .wa-prev-msg,body.dark .wa-hint,
body.dark .wa-test-card,body.dark .wa-nextaction,body.dark .pill,body.dark .wa-more-menu,
body.dark .rbx-sheet{background:#2b2f37;color:var(--text)}
body.dark .wa-bubble.in{background:#2b2f37;color:var(--text)}
body.dark .wa-bubble.out{background:#1f4d33;color:#eafff1}
body.dark input,body.dark select,body.dark textarea,body.dark .search,body.dark .wa-textarea,
body.dark .wa-sender-sel{background:#2b2f37;color:var(--text);border-color:var(--border)}
body.dark .wa-tab{color:var(--muted)} body.dark .wa-tab:hover,body.dark .wa-tab.on{background:var(--surface)}
body.dark .wa-pill{background:#2b2f37;color:var(--text)}
body.dark .wa-more-menu button{background:transparent;color:var(--text)}
body.dark .wa-more-menu button:hover{background:#33373f}
body.dark .badge-source{background:var(--blue-soft);color:var(--blue)}
body.dark .ds-table th,body.dark .debt-sheet,body.dark .cuenta-sheet{background:var(--surface);color:var(--text)}

/* ===== v99: barra izquierda siempre oscura en modo oscuro + scroll resumen de deuda ===== */
/* La sidebar usa var(--ink) como fondo; en oscuro --ink es texto claro, así que la fijamos oscura. */
body.dark .sidebar{background:#0e1116}
body.dark .cont-badge,body.dark .wa-cob-n{background:#0e1116;color:#fff}
body.dark .side-foot .btn-ghost{border-color:#2a2e36;color:#aeb4c0}
body.dark .side-foot .btn-ghost:hover{color:#fff;border-color:#3a3f49}
/* Resumen de deuda largo (muchos comprobantes): el modal scrollea y los botones quedan visibles. */
#debt-modal .modal{max-height:92vh;width:660px;display:flex;flex-direction:column}
#debt-modal .debt-sheet{overflow-y:auto;flex:1 1 auto;min-height:0}
#debt-modal .modal-actions{flex-shrink:0;padding-top:12px;border-top:1px solid var(--border)}
/* Mismo trato para el modal de WhatsApp (Ver oportunidad / Revisar y enviar pueden ser largos). */
#wa-modal .modal{max-height:92vh;display:flex;flex-direction:column}
#wa-modal #wa-modal-body{overflow-y:auto;flex:1 1 auto;min-height:0}
#wa-modal #wa-modal-actions{flex-shrink:0;padding-top:12px;border-top:1px solid var(--border)}

/* ===== v100: métricas de Demian + línea de tiempo del cliente ===== */
.wa-cob-metrics{display:flex;flex-wrap:wrap;gap:8px 16px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:10px;font-size:12.5px;color:var(--muted)}
.wa-cob-metrics b{color:var(--ink);font-weight:800;margin-left:3px}
/* ===== v139: Mails para clientes ===== */
.cm-top{display:flex;gap:12px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.cm-cols{display:grid;grid-template-columns:1fr 1fr;gap:20px}
@media (max-width:900px){.cm-cols{grid-template-columns:1fr}}
.cm-col h3{margin:10px 0 8px;font-size:14.5px}
.cm-route{display:flex;gap:12px;align-items:center;justify-content:space-between;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:8px;cursor:pointer}
.cm-route:hover{border-color:var(--accent)}
.cm-chip{display:inline-block;font-size:11px;font-weight:800;border-radius:999px;padding:2px 9px;background:#eef0f4;color:#5b6373;white-space:nowrap}
.cm-chip.verde{background:#e2f6e9;color:#1f8a4c}.cm-chip.rojo{background:#fde7ea;color:#c01933}
.cm-chip.amarillo{background:#fef3cd;color:#8a6d18}.cm-chip.azul{background:#e3eefe;color:#1d5bbf}
.cm-chip.gris{background:#eef0f4;color:#5b6373}
body.dark .cm-chip.verde{background:#14301f;color:#8fd9aa}body.dark .cm-chip.rojo{background:#3a1f25;color:#f3a6b2}
body.dark .cm-chip.amarillo{background:#352c12;color:#e6cd7a}body.dark .cm-chip.azul{background:#16263e;color:#94bbf0}
body.dark .cm-chip.gris{background:#23262e;color:#aab1bf}
.cm-resumen{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:10px;font-size:13px}
.cm-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:12px 0}
.cm-actions .cm-on{outline:2px solid var(--accent)}
.cm-table{width:100%;border-collapse:collapse;font-size:12.5px;background:var(--surface);border-radius:10px;overflow:hidden}
.cm-table th{background:var(--ink);color:#fff;text-align:left;padding:7px 10px;font-size:11.5px}
.cm-table td{padding:7px 10px;border-bottom:1px solid var(--border);vertical-align:top}
.cm-table .r{text-align:right}
.cm-table tr.cm-dim{opacity:.62}
.cm-adv{font-size:11px;color:#8a6d18;max-width:260px}
.cm-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px 14px;margin:8px 0}
@media (max-width:900px){.cm-grid{grid-template-columns:1fr}}
.cm-grid label{display:flex;flex-direction:column;font-size:11.5px;color:var(--muted);gap:3px}
.cm-grid input,.cm-grid textarea{font-size:13px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:var(--bg);color:var(--ink)}
.cm-grid .cm-wide{grid-column:1/-1}
.cm-totales{font-size:13.5px;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:8px 14px;margin:8px 0}
.cm-preview{background:#ffffff;color:#1d1f27;border:1px solid var(--border);border-radius:10px;padding:18px 22px;max-width:760px;overflow-x:auto}
.cm-preview:focus{outline:2px solid var(--accent)}
.cm-adjunto{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:var(--surface);border:1px solid var(--border);border-radius:8px;padding:7px 12px;margin-bottom:6px;font-size:12.5px}
#cm-search-res .cm-route{padding:7px 12px}

/* ===== v137: cargar recorrido desde foto ===== */
.rbf-up{background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 14px;margin-bottom:12px;font-size:13px}
.rbf-up-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:8px}
.rbf-hint{font-size:11.5px;margin-top:6px}
.rbf-hint code{font-size:11px;background:var(--bg);padding:1px 5px;border-radius:4px}
.rbf-warn{font-size:12px;background:#fff3cd;border-radius:8px;padding:6px 10px;margin-top:8px;color:#6b5518}
body.dark .rbf-warn{background:#352c12;color:#e6cd7a}
.rbf-cola{font-size:12px;margin-top:8px;color:var(--muted)}
.rbf-dets{font-size:13px}
.rbf-item{display:flex;gap:10px;align-items:center;padding:8px 4px;border-bottom:1px dashed var(--border)}
.rbf-route{font-weight:800;min-width:90px}
.rbf-date{color:var(--muted)}
.rbf-item .btn-primary{margin-left:auto}

/* ===== v136: notas de crédito en Ventas empleados ===== */
.emp-compra.nc span:last-child{color:#c01933;font-weight:700}
body.dark .emp-compra.nc span:last-child{color:#f3a6b2}
.emp-nc-tag{display:inline-block;font-size:10px;font-weight:800;background:#fde7ea;color:#c01933;border-radius:5px;padding:0 5px;margin-left:4px;vertical-align:1px}
body.dark .emp-nc-tag{background:#3a1f25;color:#f3a6b2}

/* ===== v133: FALTANTES por entregar en el armado de recorrido ===== */
.rb-faltantes{font-size:12.5px;background:#fff3cd;border:1px solid #e6cd7a;border-radius:8px;padding:6px 10px;margin-top:8px;color:#6b5518}
body.dark .rb-faltantes{background:#352c12;border-color:#5c4a1a;color:#e6cd7a}
.rb-falt-ref{font-weight:700}
.rb-faltantes .rb-ped-hint{color:inherit;opacity:.75;font-size:11px}
.rbx-falt{font-size:10.5px;font-weight:700;background:#fff3cd;border-radius:5px;padding:1px 6px;margin-top:2px;display:inline-block;color:#6b5518}
.rb-pop-falt{color:#8a6d18}

/* ===== P9 (v131): tablero "plata recuperada" ===== */
.wa-rec-card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:12px 16px;margin-bottom:10px}
.wa-rec-h{font-weight:800;font-size:14.5px;color:var(--ink);margin-bottom:8px}
.wa-rec-kpis{display:flex;gap:22px;flex-wrap:wrap;margin-bottom:8px}
.wa-rec-kpi .v{font-weight:800;font-size:18px;color:var(--ink)}
.wa-rec-kpi .v.ok{color:#1f8a4c}
body.dark .wa-rec-kpi .v.ok{color:#8fd9aa}
.wa-rec-kpi .l{font-size:11.5px;color:var(--muted)}
.wa-rec-bars{display:flex;gap:7px;align-items:flex-end;margin:4px 0 2px}
.rec-bar{display:flex;flex-direction:column;align-items:center;gap:2px}
.rec-bar-cols{display:flex;flex-direction:column;justify-content:flex-end;height:48px;width:17px;gap:1px}
.rec-a{background:#22a55e;border-radius:3px;width:100%}
.rec-e{background:#cbd5e1;border-radius:3px;width:100%}
body.dark .rec-e{background:#3a4152}
.rec-bar-l{font-size:9.5px;color:var(--muted)}
.wa-rec-leg{font-size:11px;color:var(--muted);display:flex;align-items:center;gap:6px;margin-bottom:8px}
.rec-dot{display:inline-block;width:9px;height:9px;border-radius:3px}
.rec-dot.a{background:#22a55e}.rec-dot.e{background:#cbd5e1}
body.dark .rec-dot.e{background:#3a4152}
.wa-rec-top-h{font-size:12.5px;font-weight:700;color:var(--ink);margin-bottom:4px}
.wa-rec-top{margin:0 0 8px 20px;padding:0;font-size:12.5px;color:var(--ink)}
.wa-rec-top li{margin-bottom:3px}
.wa-rec-empty{font-size:12.5px;color:var(--muted);margin:4px 0 8px}
.wa-rec-nota{font-size:10.5px;color:var(--muted);border-top:1px dashed var(--border);padding-top:6px}
.wa-timeline{display:flex;flex-direction:column;gap:0;max-height:60vh;overflow-y:auto;padding-left:4px}
.wa-tl-item{display:flex;gap:12px;align-items:flex-start;padding:9px 2px;position:relative}
.wa-tl-item:not(:last-child)::before{content:"";position:absolute;left:6px;top:20px;bottom:-9px;width:2px;background:var(--border)}
.wa-tl-dot{width:14px;height:14px;border-radius:50%;flex:0 0 auto;margin-top:2px;border:2px solid var(--surface);box-shadow:0 0 0 1px var(--border);z-index:1}
.wa-tl-dot.odoo{background:#2563eb}.wa-tl-dot.skynet{background:var(--accent)}.wa-tl-dot.demian{background:#7a3cc0}
.wa-tl-dot.ia{background:#0c7a3e}.wa-tl-dot.wa{background:#15924D}.wa-tl-dot.meta{background:#1877f2}.wa-tl-dot.sim{background:#9ca3af}
.wa-tl-body{font-size:13px;color:var(--text)}
body.dark .wa-tl-dot{border-color:var(--surface)}

/* ===== v101: pulido de MODO OSCURO ===== */
/* Documentos que SIEMPRE deben verse como papel blanco (resumen de deuda, estado de cuenta,
   hoja de impresión del recorrido): re-declaramos las variables a los valores del modo claro,
   así todo lo de adentro queda idéntico al modo claro (sin "mitad negro mitad blanco"). */
body.dark .debt-sheet,body.dark .cuenta-sheet,body.dark .rbx-sheet{
  --bg:#F4F2EC;--surface:#fff;--ink:#191B22;--ink-2:#22242E;--text:#23262E;--muted:#7A8090;--border:#E9E6DD;
  --red:#D8362B;--green:#15924D;--amber:#C77A06;--blue:#2563EB;
  background:#fff;color:#23262E;box-shadow:0 0 0 1px #d6d6d6}
/* tickers (Pagos recibidos / Facturado / Entregado) */
body.dark .tk{background:#23262d;border-color:var(--border)}
body.dark .tk-cli,body.dark .tk-amt{color:var(--text)}
/* cartelitos / tips: texto legible en oscuro (el fondo ya es oscuro vía --*-soft) */
body.dark .tip.t-red{color:#f5a39a}
body.dark .tip.t-amber{color:#f0cd7e}
body.dark .tip.t-blue{color:#a9c4f7}
body.dark .tip.t-green{color:#8fdcab}
body.dark .wa-mini-warn{color:#f0cd7e}
body.dark .wa-note-ok{color:#9fe0b8}
body.dark .wa-quote,body.dark .wa-sugg{color:var(--text)}
/* Armar recorrido + overlay del MAPA (estaban en blanco) */
body.dark .rb-map-overlay{background:var(--bg)}
body.dark .rb-map-bar,body.dark .rb-map-preview,body.dark .rb-fail-panel,body.dark .rb-map-results,
body.dark .rb-suggest,body.dark .rb-cont-panel,body.dark .rb-cob-box,body.dark .deliv-head,
body.dark .deliv-day{background:#23262d;color:var(--text);border-color:var(--border)}
body.dark .deliv-head:hover{background:#2b2f37}
body.dark .rb-cont-item{background:#2b2f37;border-color:var(--border);color:var(--text)}
body.dark .rb-cont-item:has(input:checked){background:#1e3a2a;border-color:#2f6a4a}
body.dark .rb-mf,body.dark .rb-map-search,body.dark .rb-search>input,body.dark .rb-meta input,
body.dark .rb-f input,body.dark .rb-f select,body.dark .rb-cont-add input{background:#2b2f37;color:var(--text);border-color:var(--border)}
body.dark .rb-cob-box.hi{background:#1d2840;border-color:#2b3f63}
body.dark .rb-cob-box.hi.vto{background:#34201e;border-color:#5a3330}
/* líneas divisorias suaves en listas (deudas/pagos/recorrido) */
body.dark .row,body.dark .client-debt,body.dark .ds-table td,body.dark .rb-cob-table td,
body.dark .rb-cob-table th{border-color:#34373f}

/* "Demian ahora" — vista curada de lo urgente */
.wa-cob-ahora-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:10px}
.wa-ahora-btn{background:var(--red);color:#fff;border:none;border-radius:999px;padding:8px 16px;font-family:inherit;font-size:13.5px;font-weight:800;cursor:pointer;box-shadow:0 6px 14px rgba(216,54,43,.28)}
.wa-ahora-btn:hover{filter:brightness(1.05)}
.wa-ahora-btn.on{outline:2px solid var(--ink);outline-offset:2px}

/* ===== v104: dark mode legible en TODOS los módulos ===== */
/* tarjetas / listas / paneles que estaban hardcodeados en blanco */
body.dark .caja-card,body.dark .caja-suggest,body.dark .emp-card,body.dark .rb-card,
body.dark .rb-sum-card,body.dark .rb-hist-item,body.dark .rb-hist-compare,body.dark .rb-fail-head,
body.dark .rx-cli,body.dark .vm-item,body.dark .cob-row,body.dark .cob-cfg,body.dark .cm-item,
body.dark .adm-card,body.dark .rb-mf,body.dark .rb-style-sel,body.dark .rb-suggest,
body.dark .rb-map-results{background:var(--surface);border-color:var(--border);color:var(--text)}
/* inputs / selects / chips */
body.dark .caja-card label input,body.dark .emp-search,body.dark .op-search,
body.dark .caja-search-wrap input,body.dark .vm-chip,body.dark .rx-st-btn{background:#2b2f37;border-color:var(--border);color:var(--text)}
/* títulos y nombres fuertes */
body.dark .caja-cli-name,body.dark .caja-sec-title,body.dark .emp-emp-name,
body.dark .vm-pname,body.dark .rx-cli-name,body.dark .emp-card-head{color:var(--ink)}
/* textos atenuados (labels, metas) */
body.dark .caja-card label,body.dark .caja-mini,body.dark .caja-transp-info.directa,
body.dark .op-cli-meta,body.dark .op-cont-head,body.dark .emp-compra,body.dark .adm-muted,
body.dark .adm-msg,body.dark .caja-sg-empty,body.dark .emp-empty,body.dark .vm-meta,
body.dark .rx-extra,body.dark .caja-sg-empty{color:var(--muted)}
/* texto normal */
body.dark .caja-check,body.dark .emp-total,body.dark .op-cli-main,body.dark .adm-switch,
body.dark .vm-motivo,body.dark .caja-sg{color:var(--text)}
body.dark .caja-sg:hover{background:#2b2f37}
/* info de transporte */
body.dark .caja-transp-info{background:#2b2f37;border-color:var(--border);color:var(--text)}
body.dark .caja-transp-info div{color:var(--muted)}
body.dark .caja-transp-info.retira{background:#2a1f3a;border-color:#3f2f5a;color:#cbb8ee}
/* cartelitos coloreados de fondo claro */
body.dark .adm-card.adm-danger,body.dark .rx-followup,body.dark .adm-update{background:#332a16;border-color:#4a3f20;color:var(--text)}
body.dark .rx-followup{background:#34201e;border-color:#5a3330}
body.dark .rx-fu-cli{background:#2b2f37;border-color:var(--border);color:var(--text)}
body.dark .op-stock{background:#1d2840;color:#9bbcff}
body.dark .vm-cod,body.dark .rx-code,body.dark .rx-drop-cod{background:#1d2840;color:#9bbcff}
/* divisores de listas */
body.dark .op-prod,body.dark .op-cli,body.dark .rx-drop-row,body.dark .vm-land-item,
body.dark .emp-mes-tot,body.dark .emp-emp-tot{border-color:#34373f}

/* ===== v122: Estrategia de contacto (modal/bottom-sheet) + chips 🤖/👤/⏳ ===== */
.cs-wrap{position:fixed;inset:0;z-index:300}
.cs-wrap.hidden{display:none}
.cs-back{position:absolute;inset:0;background:rgba(10,12,18,.55)}
.cs-panel{position:absolute;left:0;right:0;bottom:0;max-height:88vh;overflow-y:auto;background:#fff;border-radius:18px 18px 0 0;padding:16px 16px 20px;box-shadow:0 -8px 30px rgba(0,0,0,.25)}
@media (min-width:700px){.cs-panel{left:50%;right:auto;top:50%;bottom:auto;transform:translate(-50%,-50%);width:560px;max-height:86vh;border-radius:16px}}
body.dark .cs-panel{background:#171a21;color:#dfe3ea}
.cs-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:6px}
.cs-title{font-size:15.5px;font-weight:800}
.cs-x{border:none;background:transparent;font-size:16px;cursor:pointer;color:#8a90a0}
.cs-status{font-size:11.5px;color:#6b7280;margin-bottom:10px;display:flex;flex-wrap:wrap;gap:6px}
body.dark .cs-status{color:#9aa3b5}
.cs-bad{color:#c01933;font-weight:700}
.cs-mode{background:#eef0f4;border-radius:6px;padding:0 6px}
body.dark .cs-mode{background:#242a36}
.cs-lbl{display:block;font-size:12px;font-weight:700;margin:10px 0 4px}
.cs-hint{font-weight:400;color:#8a90a0;font-size:11px}
.cs-input{width:100%;box-sizing:border-box;border:1px solid #d9dde5;border-radius:10px;padding:9px 11px;font-size:13px;background:#fff;color:#1a1a1a}
body.dark .cs-input{background:#11141a;border-color:#2a2e38;color:#dfe3ea}
.cs-ta{min-height:64px;resize:vertical;font-family:inherit}
.cs-msg{min-height:96px}
.cs-opts{display:flex;flex-direction:column;gap:8px;margin-top:12px}
.cs-opt{display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;border:1px solid #e3e6ec;border-radius:12px;padding:11px 13px;background:#fafbfc;cursor:pointer}
.cs-opt:hover{border-color:#e6007e;background:#fff5fa}
body.dark .cs-opt{background:#1c2029;border-color:#2a2e38}
body.dark .cs-opt:hover{border-color:#e6007e;background:#251722}
.cs-opt-t{font-size:14px;font-weight:800}
.cs-opt-d{font-size:12px;color:#6b7280}
body.dark .cs-opt-d{color:#9aa3b5}
.cs-plan{border:1px solid #ece0fb;background:#fbf7ff;border-radius:12px;padding:12px;margin-top:12px}
body.dark .cs-plan{background:#1a1526;border-color:#352a4a}
.cs-plan-h{font-weight:800;font-size:13px;margin-bottom:6px}
.cs-plan-row{font-size:12.5px;margin:4px 0}
.cs-ul{margin:4px 0 0 18px;padding:0;font-size:12.5px}
.cs-note{font-size:11.5px;color:#6b7280;margin-top:8px}
body.dark .cs-note{color:#9aa3b5}
.cs-pre{white-space:pre-wrap;font-family:inherit;font-size:12.5px;background:#f4f5f8;border-radius:10px;padding:10px;margin:8px 0}
body.dark .cs-pre{background:#11141a}
.cs-confirm{width:100%;margin-top:10px}
.cs-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px}
.cs-link{font-size:12px;color:#7a3cc0;text-decoration:none}
.cs-loading{padding:26px 8px;text-align:center;color:#6b7280}
.cs-done{font-size:13.5px;margin:8px 0}
.cs-chip{font-size:10px;font-weight:800;border-radius:7px;padding:1.5px 7px;margin-left:6px;white-space:nowrap;vertical-align:middle}
.cs-chip.auto{background:#e8f6ee;color:#1f8a4c}
.cs-chip.man{background:#e9f0fe;color:#2456c4}
.cs-chip.pend{background:#fef3cd;color:#8a6d18}
.cs-chip.ok{background:#e8f6ee;color:#1f8a4c}
.cs-chip.off{background:#fdeaea;color:#b13333}
body.dark .cs-chip.auto{background:#15251c;color:#5fc98a}
body.dark .cs-chip.man{background:#161e30;color:#8fb2f5}
body.dark .cs-chip.pend{background:#332a12;color:#e0b75a}
body.dark .cs-chip.ok{background:#15251c;color:#5fc98a}
body.dark .cs-chip.off{background:#301818;color:#e08a8a}
/* v126: Asistencia / Fichadas */
.as-diag{font-size:12.5px;color:#4b5563;display:flex;flex-direction:column;gap:3px;margin:4px 0 6px}
body.dark .as-diag{color:#aeb6c4}
.as-warn{color:#b45309;font-weight:600}
.as-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;
  border:1px solid #e9ebf0;border-radius:11px;background:#fff;margin-bottom:8px;cursor:pointer;
  flex-wrap:wrap}
body.dark .as-row{background:#1a1d24;border-color:#2a2e38}
.as-row-n{display:flex;gap:10px;font-size:12.5px;white-space:nowrap;flex-wrap:wrap}
.as-bad{color:#c01933;font-weight:700}
.as-warnn{color:#b45309;font-weight:700}
.as-ejemplos{margin-top:10px;font-size:12.5px}
.as-ej{padding:4px 0;border-bottom:1px dashed #e3e6ec}
body.dark .as-ej{border-bottom-color:#2a2e38}
.as-ej code,.as-raw{background:#f4f5f8;border-radius:6px;padding:1px 6px;font-size:11.5px}
body.dark .as-ej code,body.dark .as-raw{background:#11141a}
.as-days{max-height:60vh;overflow-y:auto}
.as-day{display:flex;align-items:center;gap:9px;padding:6px 4px;border-bottom:1px dashed #eef0f4;
  font-size:12.5px;flex-wrap:wrap}
body.dark .as-day{border-bottom-color:#2a2e38}
.as-day.finde{background:#fafbfd}
body.dark .as-day.finde{background:#161920}
.as-day-head{font-weight:800;border-bottom:1.5px solid #d7dbe3}
.as-d-f{width:56px}.as-d-h{width:86px}.as-d-es{width:120px}
.as-det{width:100%;padding-left:56px}
.as-filtros{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin-bottom:10px;font-size:12.5px}
.as-filtros select{padding:4px 8px;border-radius:8px;border:1px solid #d7dbe3}
body.dark .as-filtros select{background:#1a1d24;color:#d6dbe4;border-color:#2a2e38}
.as-periodo{padding:7px 10px;border-radius:10px;border:1.5px solid #e6007e;color:#e6007e;
  font-weight:800;font-size:13px;background:transparent;align-self:center}
body.dark .as-periodo{border-color:#ff4fa3;color:#ff4fa3;background:#1a1d24}
.as-texto{white-space:pre-wrap;font-family:inherit;font-size:13px;background:#f4f5f8;
  border-radius:10px;padding:12px 14px;max-height:60vh;overflow:auto;line-height:1.45}
body.dark .as-texto{background:#11141a}
.as-chk{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;color:#5b6472;
  white-space:nowrap;align-self:center}
body.dark .as-chk{color:#9aa3b2}
.as-search{margin-left:auto;padding:7px 12px;border-radius:10px;border:1.5px solid #d7dbe3;
  font-size:13px;min-width:210px}
body.dark .as-search{background:#1a1d24;color:#d6dbe4;border-color:#2a2e38}
.as-errdet{white-space:pre-wrap;font-size:11px;background:#f4f5f8;border-radius:9px;
  padding:8px 10px;max-height:220px;overflow:auto}
body.dark .as-errdet{background:#11141a}
/* v173: cargar el archivo del reloj + plantel editable */
.as-drop{border:2px dashed #c7cdd8;border-radius:14px;padding:22px 16px;text-align:center;
  cursor:pointer;margin:12px 0;background:#fafbfc;transition:.15s}
.as-drop:hover,.as-drop.on{border-color:#2F6FED;background:#eef4ff}
body.dark .as-drop{background:#1a1d24;border-color:#39404e}
body.dark .as-drop:hover,body.dark .as-drop.on{border-color:#ff4fa3;background:#241a22}
.as-form{display:flex;flex-direction:column;gap:10px;margin-top:12px}
.as-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:600;color:#5b6472}
body.dark .as-form label{color:#9aa3b2}
.as-form label.as-chk{flex-direction:row;font-weight:500}
.as-form input,.as-form select{padding:8px 11px;border-radius:10px;border:1.5px solid #d7dbe3;
  font-size:13.5px;font-weight:500;color:#141821;background:#fff}
body.dark .as-form input,body.dark .as-form select{background:#1a1d24;color:#d6dbe4;border-color:#2a2e38}
.as-form input[readonly]{background:#f4f5f8;color:#5b6472}
body.dark .as-form input[readonly]{background:#11141a;color:#9aa3b2}
.as-form-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:560px){.as-form-2{grid-template-columns:1fr}}
/* v124: Control Comercial y Riesgo de Cobranza */
.cs-chip.warn{background:#fef3cd;color:#8a6d18}
.cs-chip.risk{background:#ffe8d6;color:#b45309}
.cs-chip.danger{background:#fde7ea;color:#c01933}
body.dark .cs-chip.warn{background:#352c12;color:#e6cd7a}
body.dark .cs-chip.risk{background:#3a2413;color:#f0a868}
body.dark .cs-chip.danger{background:#3a1f25;color:#f3a6b2}
.risk-card{border-radius:12px;padding:12px 14px;margin:0 0 12px;border:1.5px solid;font-size:13px}
.risk-card.rc-ok{border-color:#bfe8cd;background:#f2fbf5}
.risk-card.rc-warn{border-color:#ecd9a0;background:#fdf8e9}
.risk-card.rc-risk{border-color:#f0c39a;background:#fdf3e9}
.risk-card.rc-danger{border-color:#f0aab6;background:#fdeef1}
body.dark .risk-card.rc-ok{border-color:#2a4a39;background:#15251c}
body.dark .risk-card.rc-warn{border-color:#5a4a1e;background:#2a2410}
body.dark .risk-card.rc-risk{border-color:#5f3d1c;background:#2a1d10}
body.dark .risk-card.rc-danger{border-color:#5f2531;background:#2a151b}
.rc-head{font-size:14.5px}
.rc-text{margin-top:3px;font-weight:600}
.rc-rz{margin:6px 0 0;padding-left:18px}
.rc-rz li{margin:2px 0}
.rc-bits{margin-top:6px;color:#4b5563;font-size:12.5px}
body.dark .rc-bits{color:#aeb6c4}
.rc-estado{margin-top:8px;padding-top:8px;border-top:1px dashed rgba(0,0,0,.12)}
body.dark .rc-estado{border-top-color:rgba(255,255,255,.12)}
.rc-ready{margin-top:8px;padding:8px 10px;border-radius:9px;background:#e2f6e9;color:#1f8a4c;font-weight:600}
body.dark .rc-ready{background:#14301f;color:#8fd9aa}
.rc-bad{color:#c01933}
.rc-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}
.rc-cond{margin:8px 0 2px;padding:8px 10px;border-radius:9px;background:#fdf3e9;color:#b45309;
  border:1px dashed #f0c39a;font-size:12.5px;font-weight:600}
body.dark .rc-cond{background:#2a1d10;color:#f0a868;border-color:#5f3d1c}
.risk-badge-btn{display:inline-flex;align-items:center;gap:6px;margin:10px 0 2px;padding:8px 14px;
  border:1.5px solid #f0aab6;border-radius:11px;background:#fdeef1;color:#c01933;font-size:13px;
  font-weight:700;cursor:pointer}
.risk-badge-btn.has-ready{border-color:#7ad4c9}
body.dark .risk-badge-btn{background:#2a151b;border-color:#5f2531;color:#f3a6b2}
.rc-opts{display:flex;flex-direction:column;gap:7px;margin:12px 0}
.rc-radio{display:flex;align-items:center;gap:8px;padding:9px 11px;border:1.5px solid #e3e6ec;
  border-radius:10px;cursor:pointer;font-size:13.5px}
.rc-radio.on{border-color:#e6007e}
body.dark .rc-radio{border-color:#2a2e38}
body.dark .rc-radio.on{border-color:#ff4fa3}
.rc-sec-h{font-weight:800;font-size:13px;margin:12px 0 6px;color:#2b3442}
body.dark .rc-sec-h{color:#d6dbe4}
.rc-row{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:10px 0;
  border-bottom:1px dashed #e3e6ec;font-size:13px}
body.dark .rc-row{border-bottom-color:#2a2e38}
.rc-row-btns{display:flex;flex-direction:column;gap:6px;flex-shrink:0}
/* P12: feedback de 1 toque — "No aplica" + motivo de No interesado */
.reco-veto{border:none;background:transparent;font-size:14px;cursor:pointer;opacity:.45;
  padding:2px 4px;align-self:center;line-height:1}
.reco-veto:hover{opacity:1}
.wa-veto-row{display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:7px 0;border-bottom:1px dashed #e3e6ec;font-size:13px}
body.dark .wa-veto-row{border-bottom-color:#2a2e38}
.rx-why{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.rx-why-btn{text-align:left;padding:10px 12px;font-size:13.5px}
/* P6: mini-estación de venta en la tarjeta de Hoy */
.cie-add{margin-left:8px;font-size:11px;font-weight:800;border:1.5px solid #e6007e;color:#e6007e;
  background:transparent;border-radius:9px;padding:2px 9px;cursor:pointer;white-space:nowrap}
.cie-add.in{background:#e6007e;color:#fff}
body.dark .cie-add{border-color:#ff4fa3;color:#ff4fa3}
body.dark .cie-add.in{background:#ff4fa3;color:#1a1d24}
.cie-cart-foot{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;
  margin:10px 0 4px;padding:9px 10px;border:1px dashed #c9cdd6;border-radius:10px;font-size:12.5px;color:#4b5563}
.cie-cart-foot-btns{display:flex;gap:8px}
body.dark .cie-cart-foot{border-color:#3a4050;color:#aeb6c4}
/* P5: acciones del carrito sugerido */
.reco-cart-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px dashed #e3e6ec}
body.dark .reco-cart-actions{border-top-color:#2a2e38}
/* P3: grupo colapsado "Gestionados / en pausa / al día" en Hoy */
.cie-group-toggle{display:flex;align-items:center;gap:8px;width:100%;margin:16px 0 8px;padding:10px 14px;
  border:1px dashed #c9cdd6;border-radius:12px;background:transparent;color:#5b6472;font-size:13px;
  font-weight:700;cursor:pointer;text-align:left}
.cie-group-toggle b{color:#2b3442}
body.dark .cie-group-toggle{border-color:#3a4050;color:#9aa3b2}
body.dark .cie-group-toggle b{color:#d6dbe4}
.rx-st-btn.st-wa{border-color:#cdeede;color:#1f8a4c}
body.dark .rx-st-btn.st-wa{border-color:#2a4a39;color:#7fd3a0}
.reco-topbar-btns{display:flex;gap:8px}

/* v145: loader con progreso (perrito 🐕) + X de cierre en modales + barra de fotos */
.modal{position:relative}
.modal-x{position:absolute;top:10px;right:12px;background:none;border:none;font-size:17px;
  line-height:1;cursor:pointer;color:#8a919e;padding:6px;border-radius:8px}
.modal-x:hover{background:#f0f1f5;color:#1d1f27}
body.dark .modal-x:hover{background:#232733;color:#e8ebf1}
#sk-loader{position:fixed;inset:0;background:rgba(20,22,30,.55);display:grid;
  place-items:center;z-index:80}
#sk-loader.hidden{display:none}
.skl-card{background:#fff;border-radius:16px;padding:22px 26px;width:380px;max-width:90vw;
  box-shadow:0 18px 50px rgba(0,0,0,.25);text-align:center}
body.dark .skl-card{background:#1a1d24;color:#d6dbe4}
.skl-title{font-weight:800;font-size:16px;margin-bottom:10px}
.skl-track{position:relative;height:44px;overflow:hidden;margin:2px 0 6px}
.skl-dog{position:absolute;top:2px;left:-70px;font-size:26px;white-space:nowrap;
  animation:skl-walk 2.6s linear infinite}
@keyframes skl-walk{0%{left:-70px}100%{left:105%}}
.skl-bar{height:12px;border-radius:99px;background:#e8eaf0;overflow:hidden}
body.dark .skl-bar{background:#232733}
.skl-fill{height:100%;width:0%;border-radius:99px;background:linear-gradient(90deg,#e91e8c,#ff7a3d);
  transition:width .35s ease}
.skl-fill.indet{width:40%;animation:skl-indet 1.3s ease-in-out infinite}
@keyframes skl-indet{0%{margin-left:-40%}100%{margin-left:100%}}
.skl-pct{font-size:12.5px;font-weight:700;margin-top:6px;min-height:16px}
.skl-msg{font-size:12.5px;color:#5b6472;margin-top:2px;min-height:17px}
body.dark .skl-msg{color:#9aa3b2}
.rbf-prog{margin:8px 0}
.rbf-prog .skl-bar{height:10px}
.rbf-prog-label{font-size:12px;color:#5b6472;margin-bottom:3px}
body.dark .rbf-prog-label{color:#9aa3b2}
/* v146: Administracion -> Diagnostico Meta */
.adm-meta-diag{background:var(--surface,#fff);border:1px solid #d8dbe2;border-radius:14px;
  padding:16px 18px;margin:14px 0}
.adm-meta-diag h3{margin:0 0 8px}
.adm-meta-diag h4{margin:14px 0 6px;font-size:13.5px}
.adm-meta-diag code{font-size:11.5px;word-break:break-all}
body.dark .adm-meta-diag{background:#1a1d24;border-color:#2a2e38}

/* v156: Pedidos MIX (nacional vs importado) */
.mix-bar{display:flex;height:10px;border-radius:99px;overflow:hidden;background:#e8eaf0;min-width:90px}
body.dark .mix-bar{background:#232733}
.mix-bar span{display:block;height:100%}
.mix-nac{background:#16a34a}
.mix-imp{background:#f97316}
.mix-otro{background:#9ca3af}
.mix-nac-txt{color:#15803d}
.mix-imp-txt{color:#c2410c}
body.dark .mix-nac-txt{color:#4ade80}
body.dark .mix-imp-txt{color:#fb923c}
.mix-chip{display:inline-block;font-size:10.5px;font-weight:800;padding:1px 7px;border-radius:99px;
  background:#e91e8c;color:#fff;vertical-align:middle}
.mix-chip.nacional{background:#dcfce7;color:#15803d}
.mix-chip.importado{background:#ffedd5;color:#c2410c}
.mix-chip.otro{background:#e8eaf0;color:#5b6472}
.mix-row{cursor:pointer}
.mix-row:hover{background:#faf7fb}
body.dark .mix-row:hover{background:#20242e}
.mix-sub > td{background:#faf9fb;padding:4px 8px !important}
body.dark .mix-sub > td{background:#191c24}
.mix-lineas th,.mix-lineas td{font-size:11.5px;padding:3px 6px}
.mix-caret{display:inline-block;width:10px;color:#8a919e;font-size:10px}

/* v158: Clientes Estrella */
.rb-prio{background:none;border:none;cursor:pointer;font-size:15px;line-height:1;padding:2px 4px;
  border-radius:6px;color:#c3c8d2}
.rb-prio:hover{background:#f0f1f5}
body.dark .rb-prio:hover{background:#232733}
.rbprio-res{max-height:210px;overflow:auto;margin:8px 0}
.rbprio-listas{margin-top:10px;border-top:1px solid var(--border);padding-top:8px;
  max-height:260px;overflow:auto}
.rbprio-listas h4{margin:10px 0 4px;font-size:13.5px}
.rbprio-row{display:flex;align-items:center;gap:8px;padding:4px 6px;border-radius:8px;font-size:13px}
.rbprio-row:hover{background:#faf7fb}
body.dark .rbprio-row:hover{background:#20242e}
.rbprio-nom{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* v159: casita de la base en el mapa del recorrido */
.rb-home-pin{font-size:28px;line-height:34px;text-align:center;background:none;border:none;
  filter:drop-shadow(0 2px 3px rgba(0,0,0,.5))}

/* v161: cartel de "Actualizar datos" — la bruja se rie (foto o emoji) con glitch.
   v161.1: la foto 3-4x mas grande (260px; se ve la resolucion que tenga el archivo). */
.skl-card:has(.skl-track-bruja){width:460px}
/* v209.266 el depósito: solo el logo de Pets Plast, latiendo despacio */
.skl-track-logo{display:flex;justify-content:center;align-items:center;height:64px;margin:4px 0 10px}
.skl-logo{height:40px;width:auto;animation:sklLogo 1.6s ease-in-out infinite}
@keyframes sklLogo{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.06);opacity:.8}}
@media (prefers-reduced-motion:reduce){.skl-logo{animation:none}}
.skl-track-bruja{display:flex;justify-content:center;align-items:flex-end;height:286px;overflow:visible;margin-top:8px}
.skl-bruja-wrap{position:relative;display:inline-block;width:260px;height:260px}
.skl-bruja{width:260px;height:260px;border-radius:50%;object-fit:cover;display:block;
  animation:sklCackle .42s ease-in-out infinite}
.skl-bruja-g{position:absolute;inset:0;opacity:0;pointer-events:none;
  animation:sklCackle .42s ease-in-out infinite,sklGlitch 1.7s steps(1) infinite}
.skl-bruja-emoji{font-size:190px;line-height:260px;display:block;text-align:center;
  animation:sklCackle .42s ease-in-out infinite,sklGlitchE 1.7s steps(1) infinite}
@keyframes sklCackle{
  0%,100%{transform:rotate(-5deg) translateY(0)}
  25%{transform:rotate(3deg) translateY(-5px) scale(1.05)}
  50%{transform:rotate(-2deg) translateY(1px) scale(.97)}
  75%{transform:rotate(5deg) translateY(-6px) scale(1.04)}}
@keyframes sklGlitch{
  0%,86%{opacity:0}
  88%{opacity:.9;clip-path:inset(8% 0 62% 0);transform:translate(-5px,2px) rotate(-4deg);filter:hue-rotate(120deg) saturate(4)}
  91%{opacity:.85;clip-path:inset(55% 0 10% 0);transform:translate(6px,-3px) rotate(4deg);filter:invert(1)}
  94%{opacity:.9;clip-path:inset(28% 0 34% 0);transform:translate(-7px,0) rotate(-2deg);filter:hue-rotate(-140deg) contrast(2)}
  97%,100%{opacity:0}}
@keyframes sklGlitchE{
  0%,86%,97%,100%{filter:none}
  88%{filter:hue-rotate(120deg);transform:translate(-4px,2px) skewX(8deg)}
  91%{filter:invert(1);transform:translate(5px,-2px)}
  94%{filter:hue-rotate(-140deg) contrast(2);transform:translate(-5px,0) skewX(-8deg)}}
.skl-ja{position:absolute;font-weight:900;font-size:34px;color:#7c3aed;opacity:0;
  text-shadow:0 2px 6px rgba(0,0,0,.25);animation:sklJa 1.35s ease-out infinite}
.skl-ja.j1{left:-52px;top:70px;animation-delay:0s}
.skl-ja.j2{right:-56px;top:34px;animation-delay:.45s;color:#16a34a}
.skl-ja.j3{left:-30px;top:-18px;animation-delay:.9s;color:#db2777;font-size:26px}
@keyframes sklJa{
  0%{opacity:0;transform:translateY(18px) scale(.6) rotate(-10deg)}
  25%{opacity:1}
  100%{opacity:0;transform:translateY(-72px) scale(1.25) rotate(10deg)}}
.adm-loader-btns{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
.adm-loader-modo{display:block;margin:6px 0;font-size:13px}
.adm-loader-modo select{margin-left:6px}

/* v162: pagos informativos de Pedidos MIX */
.mix-restan{font-size:12px;margin-top:3px;white-space:nowrap}
.mix-pagado{color:#16a34a;font-weight:800;font-size:12.5px;margin-top:3px}
body.dark .mix-pagado{color:#4ade80}

/* v164: "Llevar tambien con el pedido" */
.rb-llevar{margin:4px 0 2px;padding:5px 10px;border-radius:8px;font-size:12.5px;cursor:pointer;
  background:#fff3cd;border:1px solid #e7c66a;color:#7a5200}
.rb-llevar:hover{filter:brightness(.97)}
body.dark .rb-llevar{background:#3a3117;border-color:#6b5a1f;color:#f5d67a}
.rb-pop-llevar{margin:4px 0;padding:4px 8px;border-radius:7px;font-size:12px;
  background:#fff3cd;border:1px solid #e7c66a;color:#7a5200}
.rb-pin.llevar span{box-shadow:0 0 0 2px #f59e0b}
/* v209.135 — el pin del que tiene deuda de MÁS DE 30 DÍAS. Se ve de lejos y lleva el
   monto: con eso se decide si se le entrega sin abrir cliente por cliente. */
.rb-pin.venc30{flex-direction:column;gap:1px;padding:2px 3px;
  border-color:#B3261E;box-shadow:0 0 0 2px rgba(179,38,30,.45),0 2px 6px rgba(0,0,0,.35)}
.rb-pin-30{display:block;font-size:10px;font-weight:900;line-height:1;
  background:#B3261E;color:#fff;border-radius:6px;padding:2px 5px;white-space:nowrap}
.rb-legend .rb-leg30{color:#B3261E}

/* v165: modulo Catalogos */
.cat-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.tab-btn{padding:8px 14px;border:1px solid var(--border,#d8dbe2);background:transparent;border-radius:999px;
  font-weight:700;font-size:13px;cursor:pointer;color:inherit}
.tab-btn.on{background:#c2185b;border-color:#c2185b;color:#fff}
.cat-list{display:flex;flex-direction:column;gap:6px}
.cat-fila{display:flex;gap:12px;align-items:center;padding:8px;border:1px solid var(--border,#e3e3ea);
  border-radius:10px;background:var(--card,#fff)}
body.dark .cat-fila{background:#1a1d24;border-color:#2a2e3a}
.cat-fila img{width:74px;height:74px;object-fit:contain;background:#fff;border-radius:8px;flex:none}
.cat-sinfoto{width:74px;height:74px;display:flex;align-items:center;justify-content:center;flex:none;
  color:#aaa;font-size:10.5px;background:#f2f2f5;border-radius:8px}
body.dark .cat-sinfoto{background:#232733}
.cat-info{flex:1;min-width:0}
.cat-acciones{flex:none}
.cm-chip.verde{background:#e5f7e9;color:#127a36}
.cm-chip.rojo{background:#fdecea;color:#b3261e}
body.dark .cm-chip.rojo{background:#3d1f1c;color:#f5a49c}

/* v167: vistas del modulo Catalogos (compacta / cuadros / mini) + historial */
.cat-modos{display:flex;gap:4px}
.cat-modo-on{background:#c2185b!important;border-color:#c2185b!important;color:#fff!important}
.cat-fila.compacta{padding:3px 8px;gap:8px}
.cat-fila.compacta img,.cat-fila.compacta .cat-sinfoto{width:34px;height:34px}
.cat-fila.compacta .cat-c-desc{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;
  white-space:nowrap;font-size:12.5px}
.cat-fila.compacta .cat-c-precio{font-size:12px;white-space:nowrap}
.cat-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:8px}
.cat-grid.mini{grid-template-columns:repeat(auto-fill,minmax(122px,1fr))}
.cat-cuadro{display:flex;flex-direction:column;align-items:center;gap:3px;text-align:center;
  padding:8px;border:1px solid var(--border,#e3e3ea);border-radius:10px;background:var(--card,#fff)}
body.dark .cat-cuadro{background:#1a1d24;border-color:#2a2e3a}
.cat-cuadro img,.cat-cuadro .cat-sinfoto{width:120px;height:120px;object-fit:contain}
.cat-cuadro.mini img,.cat-cuadro.mini .cat-sinfoto{width:78px;height:78px}
.cat-cuadro .cat-q-desc{font-size:11.5px;line-height:1.25;max-height:29px;overflow:hidden}
.cat-cuadro .cat-q-precio{font-size:12px;font-weight:700}
.cat-cuadro.mini .cat-q-precio{font-size:11px}
.cat-cuadro .cat-q-est{font-size:10.5px}

/* v167.1: botonera de exports + contenedor en mini + panel por contenedor */
.cat-export-bar{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:6px 0 10px;
  padding:7px 10px;border:1px dashed var(--border,#d8dbe2);border-radius:10px;font-size:12.5px}
/* v199.19: dos cajas separadas — arriba lo de SACAR el catálogo (bajar, link,
   vendedores, nombre) y abajo cómo sale (orden, precios, fotos, listas). La de
   configuración va más apagada: se toca de vez en cuando, no todos los días. */
.cat-config{opacity:.9}
.cat-caja-tit{flex-basis:100%;font-size:12px;letter-spacing:.03em;opacity:.75;
  margin-bottom:2px}
/* las pestañas y el buscador quedan pegados a la lista, no arriba de todo */
.cat-tabs{margin-top:14px}
.cat-barra-lista{position:sticky;top:0;z-index:5;background:var(--bg,#fff);
  padding-top:4px;padding-bottom:4px}
.cat-exp{padding:4px 9px;border:1px solid #c2185b;background:transparent;color:#c2185b;
  border-radius:999px;font-size:11.5px;font-weight:700;cursor:pointer}
.cat-exp:hover{background:#c2185b;color:#fff}
.cat-exp.full{background:#c2185b;color:#fff}
.cat-q-cont{font-size:11px;font-weight:800;color:#0d6efd}
.cat-q-cont.rojo{color:#b3261e}
.cat-cont-card{border:1px solid var(--border,#e3e3ea);border-radius:10px;padding:8px 10px;margin:6px 0;
  background:var(--card,#fff)}
body.dark .cat-cont-card{background:#1a1d24;border-color:#2a2e3a}
.cat-cont-head{display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-size:13.5px}
.cat-cont-edit{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-top:6px;font-size:12.5px}

/* v169: aviso de version nueva */
#sk-update{position:fixed;top:0;left:0;right:0;z-index:9999;display:flex;gap:12px;align-items:center;
  flex-wrap:wrap;justify-content:center;padding:9px 14px;font-size:13.5px;
  background:linear-gradient(90deg,#c2185b,#7b1fa2);color:#fff;
  box-shadow:0 3px 12px rgba(0,0,0,.28);animation:skUpIn .35s ease-out}
@keyframes skUpIn{from{transform:translateY(-100%)}to{transform:translateY(0)}}
#sk-update .sk-up-btn{padding:6px 14px;border:none;border-radius:999px;font-weight:800;font-size:13px;
  cursor:pointer;background:#fff;color:#c2185b}
#sk-update .sk-up-btn:hover{background:#ffe9f2}
#sk-update .sk-up-alt{opacity:.9;font-size:12.5px}
body.con-update .app,body.con-update .login-wrap{padding-top:40px}
@media print{#sk-update{display:none!important}}

/* ==========================================================================
   v169.1 — MODO OSCURO: correcciones de contraste (auditoria completa).
   Se detectaron con un medidor de contraste real recorriendo todas las vistas:
   textos oscuros sobre fondo oscuro, fondos casi blancos que tapaban el texto
   claro, e inputs que al hacer foco se ponian blancos con letra clara.
   NO se toca nada de impresion (.rbp-, .rbx-, .rb-print, .cm-preview) ni los
   popups del mapa: esos van sobre papel/fondo blanco a proposito.
   ========================================================================== */

/* --- 1. CAMPOS: el bug del login (al hacer foco quedaba blanco con letra clara) --- */
body.dark .field input,
body.dark .field input:focus,
body.dark .modal textarea,
body.dark .rb-cont-massive select,
body.dark .wa-camp-new input, body.dark .wa-camp-new select,
body.dark .wa-form input, body.dark .wa-form select, body.dark .wa-form-full input,
body.dark .wa-radio, body.dark .wa-tag-chip, body.dark .wa-ctrl-bot{
  background:#2b2f37;color:var(--text);border-color:var(--border)}
body.dark .field input:focus{background:#31363f;box-shadow:0 0 0 3px rgba(255,106,77,.25)}
body.dark .field input::placeholder,body.dark input::placeholder,
body.dark textarea::placeholder{color:#7d8494}

/* --- 2. CONTENEDORES con fondo casi blanco que tapaban el texto --- */
body.dark .cont-manager,
body.dark .prod-wrap, body.dark .up-wrap, body.dark .cta-r,
body.dark .rx-resumen, body.dark .rx-detail, body.dark .rx-actions,
body.dark .rb-cont-massive, body.dark .row.pay-pending,
body.dark .wa-rules li, body.dark .wa-sysrules pre, body.dark .wa-quick,
body.dark .wa-testnote, body.dark .rb-move button{
  background:#22262e;border-color:#343843;color:var(--text)}
body.dark .row.pay-pending{border-left-color:#E8820C}
body.dark .rb-move button{color:#c9cedb}
body.dark .rb-move button:hover:not(:disabled){background:#2e3440}
body.dark .rb-sug-item:hover,body.dark .rb-sug-item:first-child,
body.dark .rb-mr-item:hover,body.dark .rx-cli-head:hover,
body.dark .cie-act:hover,body.dark .deliv-head:hover{background:#2a2f38}

/* --- 3. TEXTOS oscuros sueltos (quedaban invisibles sobre el fondo oscuro) --- */
body.dark .cm-head,body.dark .rx-head,body.dark .vm-land-h{color:var(--ink)}
body.dark .vm-land-intro,body.dark .rx-msg,body.dark .resell-group,
body.dark .hist-prod,body.dark .caja-switch,body.dark .cob-cfg-row label,
body.dark .rx-detail-h,body.dark .cta-fch,body.dark .cta-pago,body.dark .prod,
body.dark .wa-motivo,body.dark .wa-ficha-grid ul,body.dark .wa-greet,
body.dark .wa-hero-why,body.dark .wa-na-txt,body.dark .wa-cob-next,
body.dark .wa-oppline,body.dark .rb-legend{color:#c3c9d6}
/* rojos/azules oscuros -> versiones que se leen en oscuro */
body.dark .late,body.dark .meta .late,body.dark .cob-meta .late,
body.dark .rx-msg .late,body.dark .rx-drop-meta b,body.dark .cie-mini-debt,
body.dark .cs-bad,body.dark .as-bad,body.dark .rc-bad,body.dark .rx-tr.down,
body.dark .cta-badge.debe,body.dark .vm-dejo,body.dark .rb-fail-link,
body.dark .rb-mr-no,body.dark .rx-resumen .st-no{color:#f2857c}
body.dark .cie-label.sc-mid-t,body.dark .cob-summary,body.dark .rx-count{color:#7fa9f5}
body.dark .cie-label.sc-hi-t{color:#5cc98a}
body.dark .cie-label.sc-lo-t{color:#e0b455}
body.dark .rx-fu-line{color:#d9c489}
body.dark .hist-drop{background:#3a2f16;color:#e3b877;border-color:#5a4a25}

/* --- 4. CHIPS y etiquetas (fondo claro + texto oscuro -> par oscuro coherente) --- */
body.dark .tag.gray,body.dark .tag.otro,body.dark .wa-badge.gris,
body.dark .wa-pri-band.gris,body.dark .rg-count,body.dark .rx-badge.st-pend,
body.dark .reco-pri,body.dark .reco-pri.baja{background:#2f333c;color:#b6bcc9}
body.dark .tag.blanco{background:#2b3240;color:#b9c6dc}
body.dark .tag.imp,body.dark .pcode.imp,body.dark .tag.cont,body.dark .rb-f-tag,
body.dark .abadge.exp,body.dark .ds-tipo.cont,body.dark .rb-fail-tag,
body.dark .cp-copy,body.dark .wa-sim{background:#2a2140;color:#c4a9f0}
body.dark .tag.exp,body.dark .abadge.ent,body.dark .ds-tipo.mix,body.dark .rx-imp,
body.dark .wa-code,body.dark .wa-tag,body.dark .wa-ex,body.dark .wa-prodcode,
body.dark .vm-estrella,body.dark .vm-land-cod,body.dark .rx-vermas,
body.dark .wa-pchip.estrella,body.dark .wa-pchip.nuevo{background:#1b2b47;color:#8fb6f5}
body.dark .tag.red,body.dark .cta-badge.debe,body.dark .cob-badge.due,
body.dark .rx-badge.st-no,body.dark .vm-dejo,body.dark .reco-pri.alta,
body.dark .doer-alert,body.dark .ds-vto{background:#3a2020;color:#f3a6a0}
body.dark .tag.pay,body.dark .rb-pago,body.dark .cta-badge.ok,body.dark .ds-tipo.nac,
body.dark .rx-badge.st-ped,body.dark .rx-fu-ok,body.dark .vm-cross,
body.dark .doer-ok,body.dark .rb-mr-on,body.dark .mix-chip.nacional{background:#14301f;color:#8fd9aa}
body.dark .ds-tipo.imp,body.dark .rx-badge.st-cont,body.dark .vm-reponer,
body.dark .abadge.cob,body.dark .mix-chip.importado,body.dark .reco-pri.media{background:#3a2c14;color:#e6bd77}
body.dark .cob-badge.pause,body.dark .cs-link{background:#2a2140;color:#c4a9f0}
body.dark .cob-badge.wait,body.dark .ds-tipo{background:#2f333c;color:#b6bcc9}
body.dark .wa-tab-n{background:#4a5160;color:#eef0f4}
body.dark .rb-transp-note,body.dark .rbx-transp{background:#241f38;color:#c4a9f0;border-color:#3b3355}
body.dark .rb-pedidos{background:#33291a;color:#e8d5a8;border-color:#5a4a25}
body.dark .vm-expand{background:#2a2f38;color:#c3c9d6}
body.dark .cie-sig-t{color:#ff5fb0}
/* v169.1 (2da pasada): los que quedaron con fondo claro o poco contraste */
body.dark .cob-summary,body.dark .rx-count{background:#1b2b47;color:#8fb6f5}
body.dark .tab-btn.on .wa-muted{color:#ffd9e8}
body.dark .cat-exp{border-color:#ff5c9e;color:#ff8fbb}
body.dark .cat-exp:hover,body.dark .cat-exp.full{background:#ff5c9e;color:#fff}
/* v169.1 (3ra pasada): fondos que usan var(--ink) + texto blanco. En modo oscuro
   --ink se vuelve CLARO, asi que el texto blanco desaparecia (contraste 1.1). */
body.dark .cm-table th,body.dark .cont-badge,body.dark .wa-cob-n{background:#3a4150;color:#fff}
body.dark .sidebar{background:#101318;color:#C9CCD6}

/* v170: matriz de modulos por usuario (Administracion) */
.adm-modulos{margin-top:14px}
.admod-wrap{overflow-x:auto;max-width:100%}
.admod-table{min-width:520px}
.admod-table th{white-space:nowrap;text-align:center}
.admod-table th:first-child{text-align:left}
.admod-table td{text-align:center;padding:3px 6px}
.admod-mod{text-align:left!important;white-space:nowrap;font-size:12px}
.admod-grupo td{background:#f0f1f5;font-weight:800;font-size:11.5px;text-align:left!important;
  padding:4px 10px!important;letter-spacing:.02em}
body.dark .admod-grupo td{background:#2a2f38;color:#c9cedb}
.admod-c{width:30px;height:26px;border-radius:7px;border:1px solid var(--border,#d8dbe2);
  background:transparent;cursor:pointer;font-weight:800;font-size:12.5px;color:#9aa0ad}
.admod-c:hover:not(:disabled){filter:brightness(.94);transform:scale(1.08)}
.admod-c.on{background:#e5f7e9;color:#127a36;border-color:#9ad8b0}
.admod-c.off{background:#fdecea;color:#b3261e;border-color:#e8a49e}
.admod-c.def-on{color:#7a8090}
.admod-c.def-off{color:#c9ccd6;background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(0,0,0,.04) 3px,rgba(0,0,0,.04) 6px)}
.admod-c.blind{background:#eef0f4;color:#7a8090;cursor:not-allowed}
body.dark .admod-c.on{background:#14301f;color:#8fd9aa;border-color:#2c6b45}
body.dark .admod-c.off{background:#3a2020;color:#f3a6a0;border-color:#7a3b35}
body.dark .admod-c.blind{background:#2f333c;color:#9aa0ad}
body.dark .admod-c.def-off{background:repeating-linear-gradient(45deg,transparent,transparent 3px,rgba(255,255,255,.05) 3px,rgba(255,255,255,.05) 6px)}
.admod-t.on{color:#127a36}.admod-t.off{color:#b3261e}
body.dark .admod-t.on{color:#8fd9aa}body.dark .admod-t.off{color:#f3a6a0}

/* v171: salida por Excel de importados + aviso de los que volvieron */
.cat-exp-fila2{flex-basis:100%;margin-top:4px}
/* v209.133: la fila del catálogo SIN PRECIOS. Va separada por una línea para que
   no se confunda con los botones de arriba: lo que se aprieta es lo que sale. */
.cat-sinprecio{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-top:8px;
  margin-top:8px;border-top:1px dashed var(--border,#d8dbe2)}
.cat-sinprecio>button{flex:0 0 auto;width:auto}
/* v188: el nombre que lleva el catálogo cuando no es de un vendedor */
.cat-nombre{display:flex;gap:8px;align-items:center;flex-wrap:wrap;padding-top:6px;
  border-top:1px dashed var(--border,#d8dbe2)}
.cat-nombre input,.cat-nombre select{padding:4px 8px;border:1px solid var(--border,#d8dbe2);
  border-radius:7px;font-size:12.5px;background:var(--card,#fff);color:inherit}
/* que los botones no se estiren a todo el ancho de la fila */
.cat-nombre>button{flex:0 0 auto;width:auto}
/* v192.1: el tilde de la escala — el titulo entero en una linea y la
   explicacion abajo, que si no el titulo queda espachurrado en una columnita */
.cat-escala-lbl{flex-basis:100%;display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.cat-escala-lbl>b{white-space:nowrap}
.cat-escala-lbl>.wa-muted{flex-basis:100%;margin-left:22px;font-weight:400;line-height:1.45}
/* v195: el aviso GRANDE de Catálogos (los del Resto que ya tienen stock, y el de
   los que quedaron sin stock). Tiene que saltar a la vista: es plata parada. */
.cat-alerta{border:2px solid #1e8e4a;background:linear-gradient(#eaf9f0,#f6fffa);
  border-radius:14px;padding:14px 16px;margin:10px 0 14px;
  box-shadow:0 3px 12px rgba(30,142,74,.16)}
body.dark .cat-alerta{background:linear-gradient(#12281c,#0e1f16);border-color:#3fbf77}
.cat-alerta-tit{font-size:17px;font-weight:800;color:#146c39;margin-bottom:4px}
body.dark .cat-alerta-tit{color:#5cc98a}
.cat-alerta-tit .wa-muted{font-size:13px;font-weight:400}
.cat-alerta-sub{display:flex;gap:6px;flex-wrap:wrap;margin:6px 0 8px}
.cat-alerta-lista{display:flex;flex-wrap:wrap;gap:6px;max-height:186px;overflow:auto;
  background:rgba(255,255,255,.6);border-radius:9px;padding:8px}
body.dark .cat-alerta-lista{background:rgba(0,0,0,.22)}
.cat-alerta-i{display:flex;align-items:center;gap:5px;font-size:12px;
  background:#fff;border:1px solid #cfe8da;border-radius:8px;padding:3px 8px;cursor:pointer}
body.dark .cat-alerta-i{background:#16202a;border-color:#2c4a3a}
.cat-alerta-btns{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px}
.cat-alerta-btns>button{flex:0 0 auto;width:auto}
/* el aviso de los que quedaron SIN stock, ahora del mismo tamaño (era chiquito) */
.cat-alerta.roja{border-color:#d8362b;background:linear-gradient(#fdeceb,#fff7f6);
  box-shadow:0 3px 12px rgba(216,54,43,.16)}
body.dark .cat-alerta.roja{background:linear-gradient(#2a1412,#1f0f0e);border-color:#f2857c}
.cat-alerta.roja .cat-alerta-tit{color:#a5271e}
body.dark .cat-alerta.roja .cat-alerta-tit{color:#f2857c}
/* v194: los dos campos de cada vendedor (WhatsApp y cómo lo ve el cliente) */
.adm-vend{align-items:flex-start}
.adm-vend-campos{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.adm-vend-campos label{display:flex;flex-direction:column;gap:2px;font-size:11px;color:#777}
body.dark .adm-vend-campos label{color:#aaa}
/* v193.1: cargar el PROMO desde un Excel */
.cat-promo-carga{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.cat-promo-carga>button{flex:0 0 auto;width:auto}
/* v196: el link del catálogo para WhatsApp */
.cat-link-box{display:flex;gap:8px;align-items:center;margin-top:10px}
.cat-link-box input{flex:1;padding:9px 11px;border:2px solid var(--magenta,#C2185B);
  border-radius:9px;font-size:14px;font-family:monospace;background:var(--card,#fff);color:inherit}
.cat-link-box>button{flex:0 0 auto;width:auto}
/* v206: la tabla de stock del depósito. El rojo es «ya se vendió y todavía está
   en el depósito 2»: es lo que hay que ir a buscar. */
table.stk-table{width:100%;border-collapse:collapse;font-size:12.5px;margin-top:10px}
table.stk-table th{position:sticky;top:0;background:var(--magenta,#C2185B);color:#fff;
  text-align:left;padding:6px 8px;font-size:11.5px;text-transform:uppercase;letter-spacing:.3px}
table.stk-table th.r,table.stk-table td.r{text-align:right}
table.stk-table td{padding:5px 8px;border-bottom:1px solid var(--border,#eee)}
tr.stk-rojo{background:#fdecea}
tr.stk-rojo td b{color:#b3261e}
tr.stk-amarillo{background:#fff8e1}
body.dark tr.stk-rojo{background:#3a1a18}
body.dark tr.stk-amarillo{background:#332c12}

/* v209.1: el desglose de cada parada del recorrido. Cerrado por default: son
   muchos clientes y cada uno trae su lista larga. */
details.rec-cli{border:1px solid var(--border,#e3e3ea);border-radius:9px;
  margin:7px 0;background:var(--card,#fff)}
details.rec-cli>summary{cursor:pointer;padding:8px 12px;font-size:13px;
  list-style:none;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
details.rec-cli>summary::-webkit-details-marker{display:none}
details.rec-cli>summary::before{content:"▸";color:var(--muted,#7a7a85);font-size:12px}
details.rec-cli[open]>summary::before{content:"▾"}
details.rec-cli[open]>summary{border-bottom:1px solid var(--border,#e3e3ea)}
details.rec-cli table.stk-table{margin:0}
details.rec-cli table.stk-table th{position:static}
b.rec-traer{color:#b3261e}
/* el botón de arriba: es el que más se usa (el que sale a buscar al depo 2) */
button.rec-urgente{border-color:#b3261e;color:#b3261e;font-weight:700}
body.dark button.rec-urgente{border-color:#ff6f60;color:#ff8a7d}

/* v204: qué se está por mandar (lista de precios, escala, vendedor) arriba del
   link, para verlo ANTES de copiarlo */
.cat-link-conf{border:1px solid var(--border,#e3e3ea);border-left:4px solid var(--magenta,#C2185B);
  border-radius:9px;padding:9px 12px;margin:10px 0;font-size:12.5px;line-height:1.9;
  background:var(--card,#fff)}
.cat-link-conf-t{font-weight:700;margin-bottom:2px}
.cat-link-k{display:inline-block;min-width:132px;color:var(--muted,#7a7a85)}
.cat-link-conf b.ojo{color:#b8860b}
.cat-link-uno{border-top:1px dashed var(--border,#e3e3ea);padding-top:6px;margin-top:10px}
.cat-link-uno:first-of-type{border-top:0}
.cat-link-quien{font-weight:700;font-size:12.5px;margin-top:4px}
body.dark .cat-link-conf{background:#1a1d24;border-color:#2a2e3a}
body.dark .cat-link-conf b.ojo{color:#e0b64a}
/* v193.1: los artículos con el precio pisado a mano */
.cat-pis-wrap{max-height:56vh;overflow:auto;border:1px solid var(--border,#d8dbe2);border-radius:9px}
table.cat-pis{width:100%;border-collapse:collapse;font-size:12.5px}
table.cat-pis th{position:sticky;top:0;background:var(--magenta,#C2185B);color:#fff;
  text-align:left;padding:6px 8px;font-size:11.5px;text-transform:uppercase;letter-spacing:.3px}
table.cat-pis td{padding:5px 8px;border-bottom:1px solid #eee;vertical-align:top}
table.cat-pis tr:nth-child(even) td{background:rgba(0,0,0,.02)}
table.cat-pis .der{text-align:right;white-space:nowrap}
/* v190: cómo salió la comprobación de precios contra Odoo */
.cat-chk-ok{color:#15924D;font-weight:700;font-size:12px}
.cat-chk-medio{color:#b26a00;font-weight:700;font-size:12px}
.cat-chk-mal{color:#b3261e;font-weight:800;font-size:12px}
body.dark .cat-chk-ok{color:#5cc98a}
body.dark .cat-chk-mal{color:#f2857c}
.cat-exp.xls{border-color:#127a36;color:#127a36}
.cat-exp.xls:hover{background:#127a36;color:#fff}
body.dark .cat-exp.xls{border-color:#3fbf77;color:#5cc98a}
body.dark .cat-exp.xls:hover{background:#2c6b45;color:#fff}
.cat-volv{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.cat-volv-i{font-size:11.5px;background:rgba(0,0,0,.05);border-radius:7px;padding:2px 8px}
body.dark .cat-volv-i{background:rgba(255,255,255,.08)}

/* v172/v175: pedidos de clientes (cola del vendedor) — UNA fila por pedido para
   ver 10 o 20 de una. Recuadro rojo = sin atender · amarillo = aceptado ·
   verde = plantillas subidas a Odoo · gris = cancelado. */
.ped-lista{display:flex;flex-direction:column;gap:4px}
.ped-row{border:2px solid #e6e6ee;border-radius:9px;background:var(--card,#fff);overflow:hidden}
body.dark .ped-row{background:#1a1d24;border-color:#2a2e3a}
.ped-row.rojo{border-color:#d8362b;background:rgba(216,54,43,.045)}
/* v209.9: el pedido que todavía nadie confirmó que haya llegado. NO se esconde
   —podría ser de verdad— pero tiene que verse distinto de un pedido sano. */
.ped-row.ped-fantasma{border-style:dashed;opacity:.92}
.ped-fant{background:#f3f0ff;color:#5b3fa8;border:1px solid #d9d0f5;border-radius:999px;
  padding:1px 8px;font-size:11px;font-weight:700;white-space:nowrap;cursor:help}
body.dark .ped-fant{background:#2c2545;color:#c7b6f7;border-color:#43386b}
.ped-row.amarillo{border-color:#e0a800;background:rgba(224,168,0,.06)}
.ped-row.verde{border-color:#15924D;background:rgba(21,146,77,.045)}
.ped-row.gris{border-color:#c9ccd6;opacity:.7}
/* v177: cancelado con su propio color (violeta) y el nombre tachado */
.ped-row.cancel{border-color:#7c4dff;background:rgba(124,77,255,.05);opacity:.85}
body.dark .ped-row.cancel{background:rgba(124,77,255,.12)}
.ped-row.cancel .ped-r-cli b{text-decoration:line-through;opacity:.75}
.ped-b.del{border-color:#d8362b;color:#d8362b}
.ped-b.del:hover{background:rgba(216,54,43,.12)}
body.dark .ped-row.rojo{background:rgba(216,54,43,.10)}
body.dark .ped-row.amarillo{background:rgba(224,168,0,.10)}
body.dark .ped-row.verde{background:rgba(21,146,77,.10)}
.ped-r-h{display:flex;gap:8px;align-items:center;padding:4px 8px;cursor:pointer;
  font-size:12.5px;min-height:32px;flex-wrap:wrap}
.ped-r-h:hover{background:rgba(0,0,0,.03)}
body.dark .ped-r-h:hover{background:rgba(255,255,255,.04)}
.ped-est{font-size:11px;line-height:1}
.ped-r-cli{flex:1 1 150px;min-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ped-r-cli b{font-size:13.5px}
/* v203.1: el nombre del archivo se edita desde la fila misma */
.ped-r-nom{cursor:text;border-bottom:1px dashed transparent}
.ped-r-nom:hover{border-bottom-color:var(--magenta,#C2185B)}
/* v199.15: el número de pedido (H-250). Va adelante del cliente y en negrita:
   es por donde el vendedor lo nombra por teléfono, y con la letra se sabe de
   quién es de un vistazo cuando se miran los de todos mezclados. */
.ped-num{display:inline-block;background:var(--accent);color:#fff;font-weight:800;
  font-size:11.5px;letter-spacing:.02em;padding:2px 7px;border-radius:7px;
  margin-right:2px;vertical-align:1px}
.ped-r-meta{color:#6b7280;white-space:nowrap;font-size:11.5px}
body.dark .ped-r-meta{color:#9aa3b2}
.ped-r-cliente{flex:0 1 195px;min-width:104px}
.ped-sel{width:100%;max-width:195px;padding:2px 4px;border-radius:7px;font-size:11.5px;
  border:1.5px solid #d7dbe3;background:#fff;color:#141821}
body.dark .ped-sel{background:#1a1d24;color:#d6dbe4;border-color:#2a2e38}
.ped-sel.falta{border-color:#d8362b;color:#b3261e;font-weight:800}
body.dark .ped-sel.falta{color:#f2857c}
.ped-sel.ok{border-color:#15924D}
.ped-acc{display:flex;gap:3px;flex-wrap:nowrap;margin-left:auto}
/* pantalla chica: se cae primero el dato menos importante, nunca los botones */
@media(max-width:1150px){.ped-r-meta{font-size:11px}.ped-r-cliente{flex-basis:170px}}
@media(max-width:820px){.ped-r-meta{order:9}.ped-r-cliente{flex-basis:100%;order:10}}
.ped-b{border:1px solid var(--border,#d7dbe3);background:transparent;border-radius:7px;
  cursor:pointer;font-size:11.5px;line-height:1;padding:4px 5px;color:inherit}
.ped-b:hover{background:rgba(0,0,0,.06)}
body.dark .ped-b:hover{background:rgba(255,255,255,.08)}
.ped-b.prim{border-color:#2F6FED;color:#2F6FED;font-weight:700}
.ped-items{padding:6px 10px 10px;border-top:1px dashed var(--border,#d8dbe2)}
/* ============================================================================
   v187: LOS MUÑEQUITOS. Franja de abajo, chiquitos y sin tapar nada. No se
   pueden tocar (pointer-events:none) y quedan por debajo de todo lo que importa.
   ========================================================================== */
/* v189: más alta que en v187 — ahora entran las barritas de vida y los gritos */
#munecos{position:fixed;left:0;right:0;bottom:0;height:120px;overflow:hidden;
  pointer-events:none;z-index:5}
.mun{position:absolute;bottom:4px;left:0;width:30px;display:flex;
  flex-direction:column;align-items:center;will-change:transform}
.mun-cab{display:block;line-height:0}
.mun-cab img{width:26px;height:26px;border-radius:50%;object-fit:cover;
  border:2px solid #fff;box-shadow:0 1px 3px rgba(0,0,0,.35);background:#fff}
.mun-cuerpo{position:relative;display:block;width:13px;height:15px;margin-top:-1px;
  border-radius:4px 4px 2px 2px;background:linear-gradient(#e0457b,#c2185b)}
.mun-cuerpo i{position:absolute;bottom:-8px;width:3px;height:9px;border-radius:2px;
  background:#8E1345;transform-origin:top center}
.mun-cuerpo i:first-child{left:2px}
.mun-cuerpo i:last-child{right:2px}
.mun.anda .mun-cuerpo i{animation:munPata .26s linear infinite alternate}
.mun.anda .mun-cuerpo i:last-child{animation-delay:.13s}
.mun.rapido .mun-cuerpo i{animation-duration:.16s}
@keyframes munPata{from{transform:rotate(22deg)}to{transform:rotate(-22deg)}}
/* mirando para el otro lado (la vuelta la hace el contenido, no el movimiento) */
.mun.alreves .mun-cab,.mun.alreves .mun-cuerpo{transform:scaleX(-1)}
/* saltando */
@keyframes munSalto{from{transform:translateY(0)}to{transform:translateY(-9px)}}
@keyframes munSaltoR{from{transform:scaleX(-1) translateY(0)}
                     to{transform:scaleX(-1) translateY(-9px)}}
.mun.salta .mun-cab,.mun.salta .mun-cuerpo{animation:munSalto .5s ease-in-out infinite alternate}
.mun.salta.alreves .mun-cab,.mun.salta.alreves .mun-cuerpo{animation-name:munSaltoR}
/* la cabeza que se le cayó, esperando en el piso */
.mun-cab.suelta{position:absolute;bottom:4px;line-height:0}
/* la bomba */
.mun-bomba{position:absolute;bottom:6px;font-size:17px;line-height:1}
.mun-bomba.boom{font-size:34px;bottom:0;animation:munBoom .5s ease-out}
@keyframes munBoom{from{transform:scale(.3);opacity:1}to{transform:scale(1.5);opacity:.15}}
/* el que anda en auto */
.mun.mun-auto{width:74px}
.mun.mun-auto .mun-cab{margin-bottom:-6px;z-index:2}
.mun.mun-auto .auto-cuerpo{position:relative;display:block;width:66px;height:22px;
  border-radius:12px 14px 5px 5px;background:linear-gradient(#e0457b,#a5154f);
  box-shadow:0 2px 4px rgba(0,0,0,.3)}
.mun.mun-auto .auto-cuerpo i{position:absolute;bottom:-5px;width:12px;height:12px;
  border-radius:50%;background:#33363f;border:2px solid #777;animation:munRueda .35s linear infinite}
.mun.mun-auto .auto-cuerpo i:first-child{left:7px}
.mun.mun-auto .auto-cuerpo i:last-child{right:7px}
@keyframes munRueda{to{transform:rotate(360deg)}}
.mun.mun-auto.frenado .auto-cuerpo i{animation-play-state:paused}
.mun.mun-auto.frenado{animation:munFrena .12s linear 6}
@keyframes munFrena{0%,100%{margin-left:0}50%{margin-left:2px}}
/* v204: Germán manejando — el auto tiembla mientras suena el equipo, y el
   globito de chat que le sale al costado */
.mun.mun-auto.cumbia{animation:munCumbia .22s ease-in-out infinite}
@keyframes munCumbia{0%,100%{margin-bottom:0}50%{margin-bottom:2px}}
.mun-chat{bottom:54px;font-size:11px;font-weight:700;color:#12351f;
  background:#dcf8c6;border:1px solid #b7e39a;padding:4px 9px;border-radius:10px;
  box-shadow:0 2px 6px rgba(0,0,0,.25);max-width:220px;white-space:normal}
.mun-chat::after{content:"";position:absolute;left:10px;bottom:-6px;width:0;height:0;
  border:6px solid transparent;border-top-color:#dcf8c6;border-bottom:0}
.mun-nota{font-size:15px;color:#e0457b;text-shadow:0 1px 2px rgba(0,0,0,.25)}
body.dark .mun-chat{background:#005c4b;border-color:#0a7a63;color:#eafff6}
body.dark .mun-chat::after{border-top-color:#005c4b}
/* ==========================================================================
   v189: LA PELEA y las macanas sueltas. Todo sigue adentro de la misma franja
   (más alta para que entren las barritas de vida y los gritos) y sigue sin
   robar clicks ni salir en las impresiones.
   ========================================================================== */
.mun-suelto{position:absolute;bottom:6px;line-height:1;font-size:16px;
  white-space:nowrap;will-change:transform}
/* el grito arriba de la cabeza */
/* arriba de la barrita de vida (34) y de la chapa de la racha (46) */
.mun-grito{bottom:62px;font-size:11px;font-weight:800;color:#fff;
  background:linear-gradient(#e0457b,#c2185b);padding:2px 7px;border-radius:9px;
  box-shadow:0 2px 5px rgba(0,0,0,.3);letter-spacing:.3px}
.mun-grito.grande{font-size:14px;padding:3px 9px}
.mun-grito.ko{font-size:22px;padding:4px 12px;letter-spacing:2px;
  background:linear-gradient(#ffb300,#e65100);color:#fff;
  text-shadow:0 1px 2px rgba(0,0,0,.45)}
/* la barrita de vida arriba de cada peleador */
.mun-vida{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);
  width:34px;height:5px;border-radius:3px;background:rgba(0,0,0,.35);
  border:1px solid rgba(255,255,255,.6);overflow:hidden}
.mun-vida i{display:block;height:100%;width:100%;background:#2e9e4f;
  transition:width .25s ease-out}
.mun-vida i.medio{background:#f0a500}
.mun-vida i.poco{background:#d8362b}
/* v189: el título del que viene ganando peleas al hilo */
.mun-chapa{position:absolute;bottom:46px;left:50%;transform:translateX(-50%);
  font-size:9px;font-weight:800;white-space:nowrap;letter-spacing:.3px;
  background:linear-gradient(#ffd54f,#f57c00);color:#4a2200;
  padding:1px 6px;border-radius:8px;box-shadow:0 1px 3px rgba(0,0,0,.35)}
.mun-chapa.nueva{animation:munChapaPop .6s ease-out}
@keyframes munChapaPop{from{transform:translateX(-50%) scale(.2) rotate(-18deg)}
                       to{transform:translateX(-50%) scale(1) rotate(0)}}
.mun-grito.racha{background:linear-gradient(#ffd54f,#f57c00);color:#4a2200;
  font-size:13px;padding:3px 10px}
/* el rayo del Hadouken / Kamehameha */
.mun-rayo{bottom:16px;width:46px;height:11px;border-radius:6px;transform-origin:left center;
  background:linear-gradient(90deg,#7fd7ff,#1b8fe0);box-shadow:0 0 9px #4fc3f7}
.mun-rayo.kame{height:15px;width:60px;
  background:linear-gradient(90deg,#fff,#7fd7ff 40%,#1b6fe0);box-shadow:0 0 16px #4fc3f7}
.mun-arma{bottom:14px;font-size:15px}
.mun-impacto{bottom:10px;font-size:24px;animation:munBoom .45s ease-out forwards}
.mun-ovni{font-size:22px}
/* poses */
.mun.golpeado .mun-cab img{border-color:#ff5252}
.mun.golpeado{filter:brightness(1.45) saturate(.4)}
.mun.cargando .mun-cuerpo{animation:munCargar .22s linear infinite alternate;
  box-shadow:0 0 10px 3px #4fc3f7}
@keyframes munCargar{from{transform:scale(1)}to{transform:scale(1.18)}}
.mun.caido{transform-origin:bottom center}
.mun.sentado .mun-cuerpo{height:9px;margin-top:2px}
.mun.sentado .mun-cuerpo i{height:5px;bottom:-4px}
.mun.durmiendo .mun-cab{transform:rotate(22deg)}
.mun.cansado .mun-cab{transform:rotate(-12deg)}
.mun.volando .mun-cuerpo i{transform:rotate(80deg)}
.mun.volando{margin-bottom:30px}
.mun.capa .mun-cuerpo::after{content:"";position:absolute;left:-11px;top:2px;width:13px;height:9px;
  border-radius:3px;background:#c2185b;animation:munCapa .35s linear infinite alternate}
@keyframes munCapa{from{transform:skewY(-12deg)}to{transform:skewY(12deg)}}
.mun.festejo-ryu .mun-cuerpo{animation:munRyu .5s ease-in-out infinite alternate}
@keyframes munRyu{from{transform:rotate(-8deg)}to{transform:rotate(8deg)}}
.mun.festejo-chunli .mun-cab{animation:munGirar .6s linear infinite}
@keyframes munGirar{to{transform:rotate(360deg)}}
.mun.festejo-salto{animation:munFestSalto .45s ease-in-out infinite alternate}
@keyframes munFestSalto{from{margin-bottom:0}to{margin-bottom:16px}}
.mun.festejo-baile .mun-cab,.mun.festejo-baile .mun-cuerpo{
  animation:munBaile .38s ease-in-out infinite alternate}
@keyframes munBaile{from{transform:translateX(-5px) rotate(-12deg)}
                    to{transform:translateX(5px) rotate(12deg)}}
@media(prefers-reduced-motion:reduce){#munecos{display:none}}
@media print{#munecos{display:none}}
/* v177: cartel de Catálogos — la foto de cada vendedor, con un efecto al azar */
.skl-track-cat{display:flex;align-items:center;justify-content:center;min-height:150px;overflow:hidden}
.skl-cat{max-height:200px;max-width:min(320px,70vw);border-radius:14px}
@keyframes fxTiembla{0%,100%{transform:translate(0,0) rotate(0)}20%{transform:translate(-4px,2px) rotate(-2deg)}
  40%{transform:translate(4px,-2px) rotate(2deg)}60%{transform:translate(-3px,-3px) rotate(-1deg)}
  80%{transform:translate(3px,3px) rotate(1deg)}}
@keyframes fxGira{0%{transform:rotate(0) scale(1)}50%{transform:rotate(180deg) scale(.85)}100%{transform:rotate(360deg) scale(1)}}
@keyframes fxLate{0%,100%{transform:scale(1)}30%{transform:scale(1.16)}45%{transform:scale(.96)}70%{transform:scale(1.08)}}
@keyframes fxSalta{0%,100%{transform:translateY(0) scaleY(1)}25%{transform:translateY(-26px) scaleY(1.06)}
  50%{transform:translateY(0) scaleY(.9)}75%{transform:translateY(-12px) scaleY(1.03)}}
@keyframes fxGlitch{0%,100%{transform:translate(0);filter:none}
  20%{transform:translate(-6px,2px);filter:hue-rotate(90deg) saturate(2)}
  40%{transform:translate(6px,-2px);filter:hue-rotate(-70deg) contrast(1.6)}
  60%{transform:translate(-3px,-4px);filter:invert(.15) saturate(3)}
  80%{transform:translate(4px,3px);filter:hue-rotate(160deg)}}
@keyframes fxVaiven{0%,100%{transform:translateX(-40px) rotate(-6deg)}50%{transform:translateX(40px) rotate(6deg)}}
@keyframes fxFlota{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-16px) rotate(2deg)}}
@keyframes fxLoco{0%{transform:rotate(-8deg) scale(1)}25%{transform:rotate(8deg) scale(1.12)}
  50%{transform:rotate(-6deg) scale(.92) translateY(-14px)}75%{transform:rotate(10deg) scale(1.06)}
  100%{transform:rotate(-8deg) scale(1)}}
.skl-cat.fx-tiembla{animation:fxTiembla .5s linear infinite}
.skl-cat.fx-gira{animation:fxGira 2.2s ease-in-out infinite}
.skl-cat.fx-late{animation:fxLate 1.1s ease-in-out infinite}
.skl-cat.fx-salta{animation:fxSalta 1.3s ease-in-out infinite}
.skl-cat.fx-glitch{animation:fxGlitch .45s steps(2,end) infinite}
.skl-cat.fx-vaiven{animation:fxVaiven 1.8s ease-in-out infinite}
.skl-cat.fx-flota{animation:fxFlota 2s ease-in-out infinite}
.skl-cat.fx-loco{animation:fxLoco 1.5s ease-in-out infinite}
@media(prefers-reduced-motion:reduce){.skl-cat{animation:none!important}}
/* v176: cartel de "Subir a Odoo" — la imagen la pone un admin, la ven todos */
.skl-track-odoo{display:flex;align-items:center;justify-content:center;min-height:120px}
.skl-odoo-img{max-height:190px;max-width:min(340px,70vw);border-radius:14px;
  animation:sklOdooLatir 1.6s ease-in-out infinite}
@keyframes sklOdooLatir{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
@media(prefers-reduced-motion:reduce){.skl-odoo-img{animation:none}}
.ped-top-r{margin-left:auto;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
/* .btn-ghost es width:100% por defecto: acá tienen que medir lo que dicen */
.ped-top-r .btn-ghost{width:auto;white-space:nowrap}
.ped-k{font-weight:700}
.ped-k.amarillo{color:#a67c00}
body.dark .ped-k.amarillo{color:#e6c260}
.ped-pasos{margin:0 0 4px 18px;font-size:13px;line-height:1.7}
/* cartel de "entró un pedido" adentro de la app (además del aviso de Windows) */
#ped-cartel{position:fixed;right:16px;bottom:16px;z-index:9999;display:flex;gap:10px;
  align-items:center;background:#15924D;color:#fff;padding:11px 14px;border-radius:12px;
  box-shadow:0 8px 26px rgba(0,0,0,.3);font-size:13.5px;max-width:min(440px,92vw)}
#ped-cartel button{border:0;background:rgba(255,255,255,.2);color:#fff;border-radius:8px;
  padding:5px 9px;cursor:pointer;font-weight:700;font-size:12px}
#ped-cartel button:hover{background:rgba(255,255,255,.32)}
.cat-vend{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding-top:6px;
  border-top:1px dashed var(--border,#d8dbe2);margin-top:4px}
.cat-vend .chk{font-size:12.5px}
.wa-badge-n{background:#d8362b;color:#fff;border-radius:999px;padding:0 6px;font-size:11px;font-weight:800}
.ped-cliente{margin-top:5px;display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12.5px}
.ped-cli-ok{color:#15924D;font-weight:700}
body.dark .ped-cli-ok{color:#5cc98a}
.ped-cli-falta{color:#b3261e;font-weight:800}
body.dark .ped-cli-falta{color:#f2857c}

/* v209.12: Deuda por WhatsApp — un bloque por listado. La idea es que de un
   vistazo se vea CÓMO sale cada uno, sin leer un cartel por cliente. */
.cw-lista{border:1px solid var(--border,#e3e3ea);border-radius:10px;margin:12px 0;
  background:var(--card,#fff);overflow:hidden}
.cw-lista .cw-h{padding:9px 12px;background:var(--bg-soft,#faf7fb);
  border-bottom:1px solid var(--border,#e3e3ea);font-size:13px;
  display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.cw-lista table.stk-table{margin:0}
/* v209.262 envío automático y «todos los que deben» */
.cwa-cuerpo{padding:10px 12px;display:flex;flex-direction:column;gap:10px}
.cwa-ctrl{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.cwa-ctrl label{display:inline-flex;align-items:center;gap:6px;font-weight:600}
.cwa-corr{display:flex;flex-direction:column;gap:4px}
.cwa-c{text-align:left;border:1px solid var(--border);background:var(--surface);border-radius:8px;padding:6px 10px;cursor:pointer;font:inherit;color:inherit}
.cwa-c:hover{border-color:var(--accent)}
details.cw-lista > summary{cursor:pointer;list-style:none}
details.cw-lista > summary::-webkit-details-marker{display:none}
.cw-lista table.stk-table th{position:static}
b.cw-on{color:#15924D}
b.cw-off{color:#b3261e}
body.dark .cw-lista{background:#1a1d24;border-color:#2a2e3a}
body.dark .cw-lista .cw-h{background:#20242c;border-color:#2a2e3a}
body.dark b.cw-on{color:#7fd6a2}
body.dark b.cw-off{color:#ff8a7d}


/* ==========================================================================
   v209.32 — DESARROLLOS: el tablero de en qué anda cada cosa.
   La PRIORIDAD es la franja gruesa del borde izquierdo; el ESTADO es el
   cartelito de la derecha, siempre con ícono. Van separados a propósito: los
   dos usan color y los dos tienen un verde (baja prioridad y terminado), así
   que si estuvieran juntos como dos puntitos no se distinguirían.
   ========================================================================== */
.dv-top { display:flex; flex-wrap:wrap; gap:12px; align-items:center;
          justify-content:space-between; margin-bottom:14px; }
.dv-sum { display:flex; flex-wrap:wrap; gap:8px; align-items:center; }
.dv-acciones { display:flex; gap:10px; align-items:center; }
.dv-check { font-size:13px; opacity:.85; display:flex; gap:5px; align-items:center;
            cursor:pointer; }
.dv-chip { display:inline-flex; align-items:center; gap:5px; font-size:12.5px;
           font-weight:600; padding:4px 10px; border-radius:999px;
           color:var(--c); border:1px solid color-mix(in srgb, var(--c) 45%, transparent);
           background:color-mix(in srgb, var(--c) 12%, transparent); }
.dv-chip-alarma { font-weight:800; }
.dv-aviso { font-size:13px; opacity:.8; margin:-6px 0 12px; }

.dv-grid { display:grid; gap:12px;
           grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); }
.dv-card { position:relative; border:1px solid var(--border); border-radius:12px;
           padding:14px 14px 12px 18px; cursor:pointer; overflow:hidden;
           background:var(--surface); color:var(--text); transition:transform .08s, box-shadow .12s; }
/* la franja de prioridad */
.dv-card::before { content:""; position:absolute; left:0; top:0; bottom:0; width:6px;
                   background:var(--pri); }
.dv-card:hover { transform:translateY(-1px); box-shadow:0 6px 18px rgba(0,0,0,.28); }
.dv-card.dv-arch { opacity:.55; }
.dv-card-head { display:flex; justify-content:space-between; align-items:center;
                gap:8px; margin-bottom:7px; }
.dv-pri { font-size:11.5px; font-weight:700; letter-spacing:.02em; opacity:.9; }
.dv-est { font-size:11.5px; font-weight:700; padding:3px 9px; border-radius:999px;
          color:var(--c); border:1px solid color-mix(in srgb, var(--c) 45%, transparent);
          background:color-mix(in srgb, var(--c) 14%, transparent); white-space:nowrap; }
.dv-titulo { color:var(--ink); font-size:15.5px; font-weight:700; line-height:1.28; margin-bottom:4px; }
.dv-resumen { font-size:13px; opacity:.78; line-height:1.4; }
.dv-pie { display:flex; gap:10px; align-items:center; flex-wrap:wrap;
          margin-top:10px; font-size:11.5px; }
.dv-estancado { color:#f97316; font-weight:700; }
.dv-coment { opacity:.75; }

/* --- la ficha, en su propia ventanita ------------------------------------ */
.dv-back { position:fixed; inset:0; background:rgba(0,0,0,.62); z-index:9000;
           display:flex; align-items:flex-start; justify-content:center;
           padding:28px 16px; overflow:auto; }
.dv-box { background:var(--surface); border:1px solid var(--border);
          border-radius:14px; width:min(760px, 100%); max-width:100%; color:var(--text);
          box-shadow:0 18px 50px rgba(0,0,0,.5); }
.dv-box-head { display:flex; align-items:center; justify-content:space-between;
               gap:12px; padding:14px 18px; border-bottom:1px solid var(--border); }
.dv-box-head h3 { margin:0; font-size:17px; line-height:1.3; }
.dv-x { background:none; border:none; color:inherit; font-size:18px; cursor:pointer;
        opacity:.7; padding:2px 6px; }
.dv-x:hover { opacity:1; }
.dv-box-body { padding:16px 18px; }
.dv-box-pie { display:flex; gap:8px; justify-content:flex-end; flex-wrap:wrap;
              padding:12px 18px; border-top:1px solid var(--border); }
.dv-lab { display:block; font-size:12px; font-weight:700; opacity:.75;
          margin:12px 0 4px; }
.dv-lab:first-child { margin-top:0; }
.dv-in { width:100%; box-sizing:border-box; padding:9px 11px; border-radius:9px;
         border:1px solid var(--border); background:var(--bg);
         color:inherit; font:inherit; font-size:14px; }
.dv-in:disabled { opacity:.65; cursor:default; }
.dv-nota { resize:vertical; line-height:1.5; min-height:150px; font-size:14px; }
.dv-fila2 { display:grid; grid-template-columns:1fr 1fr; gap:12px; }

.dv-sec { margin-top:20px; padding-top:14px; border-top:1px solid var(--border); }
.dv-sec-tit { font-size:13px; font-weight:800; opacity:.85; margin-bottom:10px; }
.dv-c { margin-bottom:10px; padding:9px 11px; border-radius:9px;
        background:color-mix(in srgb, currentColor 6%, transparent); }
.dv-c-head { font-size:11.5px; margin-bottom:3px; }
.dv-c-txt { font-size:13.5px; line-height:1.45; white-space:pre-wrap; }
.dv-c-nuevo { display:flex; gap:8px; align-items:flex-end; margin-top:10px; }
.dv-c-nuevo textarea { flex:1; }
.dv-h { font-size:12px; opacity:.8; line-height:1.6; }

@media (max-width:640px) {
  .dv-grid { grid-template-columns:1fr; }
  .dv-fila2 { grid-template-columns:1fr; }
  .dv-top { flex-direction:column; align-items:stretch; }
}


/* ==========================================================================
   v209.41 — «SE ACTUALIZO EL RECORRIDO». Pasa de verdad: imprimen, alguien
   reguarda el recorrido el MISMO dia, y siguen armando con la hoja vieja. El
   cartel tiene que ser imposible de no ver, porque el error se comete mirando
   un papel, no la pantalla.
   ========================================================================== */
.rec-cambio{margin:14px 0;padding:16px 18px;border-radius:12px;
  background:#FFEBEE;border:3px solid #D8362B;color:#7f1d1a;
  box-shadow:0 4px 18px rgba(216,54,43,.22);animation:recLatir 1.4s ease-in-out 3}
@keyframes recLatir{0%,100%{transform:scale(1)}50%{transform:scale(1.012)}}
.rec-cambio-t{font-size:19px;font-weight:900;letter-spacing:.01em;line-height:1.25;
  margin-bottom:6px;color:#B3261E}
.rec-cambio-s{font-size:14px;line-height:1.5;margin-bottom:12px}
.rec-cambio-s b{color:#7f1d1a}
.rec-cambio-btn{border:none;background:#D8362B;color:#fff;border-radius:9px;
  padding:10px 18px;font-size:14.5px;font-weight:800;cursor:pointer;font-family:inherit;
  margin-right:8px}
.rec-cambio-btn:hover{background:#B3261E}
.rec-cambio-x{border:1px solid #C08A86;background:#fff;color:#7f1d1a;border-radius:9px;
  padding:10px 14px;font-size:13.5px;font-weight:700;cursor:pointer;font-family:inherit}
.rec-cambio-x:hover{background:#FBE0DD}
@media print{.rec-cambio{display:none}}


/* ========== v209.42 — BONIFICACIONES: lo que se lleva sin cargo ========== */
.bonif-modos{display:flex;gap:10px;margin:12px 0}
.bonif-modo{flex:1;display:flex;flex-direction:column;gap:2px;padding:10px 12px;
  border:2px solid var(--border);border-radius:10px;cursor:pointer;font-size:13.5px}
.bonif-modo.on{border-color:var(--accent);background:var(--accent-soft)}
.bonif-modo input{margin-right:6px}
.bonif-modo span{font-size:12px}
.bonif-pctbox{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:10px 0}
.bonif-pctbox input{width:78px;padding:8px 10px;border:2px solid var(--accent);
  border-radius:8px;font-size:16px;font-weight:bold;text-align:center;font-family:inherit}
.bonif-tabla{margin-top:6px}
.bonif-pct{width:66px;padding:5px 7px;border:1px solid var(--border);border-radius:7px;
  font-size:13.5px;text-align:center;font-family:inherit}
.bonif-si{color:var(--green);font-weight:800}
.bonif-total{margin:10px 0 0;font-size:14.5px;font-weight:700}
.bonif-total b{color:var(--green);font-size:17px}
.bonif-guardar{display:flex;align-items:center;gap:7px;margin-top:12px;font-size:13.5px;
  font-weight:600;cursor:pointer}
.bonif-guardar.no{opacity:.6;cursor:default}
.ped-b-bonif{border-color:var(--green)!important;background:var(--green-soft)!important}


/* ===== v209.43 — MODO PRUEBA de Deuda por WhatsApp =====================
   Viene prendido de fabrica. El cartel esta SIEMPRE a la vista mientras lo este:
   el error caro es mandarle a un cliente creyendo que era una prueba. */
.cw-prueba{margin:0 0 14px;padding:14px 16px;border-radius:12px;
  background:#FBEFCF;border:3px solid #C77A06;color:#6b4d0e}
.cw-prueba-t{font-size:17px;font-weight:900;color:#8a5a00;margin-bottom:4px}
.cw-prueba-s{font-size:13.5px;line-height:1.5;margin-bottom:10px}
.cw-falta{color:#B3261E}
.cw-prueba-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;font-size:13px}
.cw-prueba-row select{padding:7px 10px;border:1px solid #C99A2E;border-radius:8px;
  font-family:inherit;font-size:13px;margin-left:6px}
.cw-prueba-off{border:1px solid #B3261E;background:#fff;color:#B3261E;border-radius:8px;
  padding:7px 12px;font-size:12.5px;font-weight:700;cursor:pointer;font-family:inherit;
  margin-left:auto}
.cw-prueba-off:hover{background:#FBE0DD}
.cw-vivo{margin:0 0 14px;padding:11px 15px;border-radius:11px;background:#FBE0DD;
  border:2px solid #D8362B;color:#7f1d1a;display:flex;gap:12px;align-items:center;
  flex-wrap:wrap;font-size:14px}
.cw-vivo button{margin-left:auto}

/* ===================== v209.62 — USUARIOS y contraseñas ================= */
/* OJO: todo sale de las variables del tema. La primera versión usaba colores
   escritos a mano y en modo oscuro quedaba una caja blanca sobre fondo negro. */
.usr-linea{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.usr-linea select{
  min-width:230px;padding:7px 10px;border:1px solid var(--border);border-radius:9px;
  background:var(--surface);color:var(--text);font-size:14px}
.usr-acciones{display:flex;gap:6px;flex-wrap:wrap}
.usr-ficha{
  display:flex;gap:7px;flex-wrap:wrap;align-items:center;
  margin-top:8px;font-size:12.5px;color:var(--muted)}
.usr-ficha b{color:var(--text);font-weight:600}
.usr-rol{
  padding:1px 8px;border-radius:99px;border:1px solid var(--border);
  background:var(--bg);color:var(--text);font-size:11.5px}
.usr-muted{opacity:.75;font-style:italic}
.usr-tag{
  font-size:11px;padding:1px 8px;border-radius:99px;white-space:nowrap;
  background:var(--amber-soft);color:var(--amber);border:1px solid var(--amber-soft)}
.usr-tag-off{background:var(--red-soft);color:var(--red);border-color:var(--red-soft)}
.usr-res{font-size:12.5px;color:var(--muted);margin:8px 0 2px;min-height:1em}
.usr-alta{margin-top:6px}
.usr-alta summary{cursor:pointer;font-weight:600;padding:4px 0;color:var(--text)}
.usr-ayuda{font-size:12.5px;color:var(--muted);margin-top:8px}
/* v209.97: forzar el import o el recalculo se hace desde el final de Config.
   Arriba quedan solo los tres botones que se usan de verdad. */
.cc-manual{margin-top:26px;padding-top:16px;border-top:1px solid var(--border)}
.cc-manual h4{margin:0 0 5px;font-size:14px;color:var(--text)}
.cc-manual p{margin:0 0 10px;font-size:12.5px;line-height:1.5;max-width:62ch}
.usr-ayuda b{color:var(--text)}
/* el freno de la contraseña: ocupa la pantalla, no se puede saltear */
.clave-gate{max-width:460px;margin:8vh auto;text-align:center;padding:0 18px;color:var(--text)}
.clave-gate h2{margin:0 0 10px;color:var(--ink)}
.clave-form{display:flex;flex-direction:column;gap:8px;margin:18px 0 10px}
.clave-form input{
  padding:11px 12px;border:1px solid var(--border);border-radius:9px;font-size:15px;
  background:var(--surface);color:var(--text)}
.clave-form button{padding:11px 12px;font-size:15px}

/* ===================== v209.61 — COMPRAS CHINA ============================= */

/* v130: Compras China */
.cc-actions{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:14px}
.cc-big{font-size:16px;padding:12px 22px;font-weight:800;letter-spacing:.3px}
.cc-kpis{margin:14px 0}
.cc-filtros{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:12px 0}
.cc-filtros .emp-search{max-width:260px}
.cc-sel{padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);font:inherit}
/* v209.64: alto acotado + overflow en los DOS ejes. Antes la barra horizontal
   quedaba al fondo de 400 filas: para correrla habia que bajar toda la tabla. */
.cc-table-wrap{max-height:70vh;overflow:auto;border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.cc-table{width:100%;border-collapse:collapse;font-size:13px;min-width:1100px}
.cc-table th{position:sticky;top:0;background:var(--surface);text-align:left;padding:9px 8px;border-bottom:2px solid var(--border);font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);white-space:nowrap}
.cc-table td{padding:7px 8px;border-bottom:1px solid var(--border);vertical-align:middle}
.cc-row{cursor:pointer}
.cc-row:hover td{background:var(--accent-soft)}
.cc-cod{font-weight:800;font-family:'Bricolage Grotesque',sans-serif}
.cc-name{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* v209.64: la respuesta —cuanto comprar— va primero y se lee de un vistazo. */
.cc-cajas{font-weight:800;font-family:'Bricolage Grotesque',sans-serif;font-size:14.5px;white-space:nowrap}
.cc-ucaja,.cc-nec{color:var(--muted);white-space:nowrap}
/* la linea que separa 'que compro' de 'por que' */
.cc-table th.cc-sep,.cc-table td.cc-sep{border-left:2px solid var(--border)}
.cc-chev{color:var(--muted)}
.cc-detail td{background:var(--bg);padding:0}
.cc-det{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;padding:14px 16px}
@media (max-width:900px){.cc-det{grid-template-columns:1fr}}
.cc-det h4{margin:2px 0 8px;font-size:13px}
.cc-porque{white-space:pre-line;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:10px 12px;font-size:13px;line-height:1.5}
.cc-pipe{margin-top:8px;font-size:12px}
.cc-whatif{display:flex;gap:8px;align-items:center;margin-top:10px;flex-wrap:wrap}
.cc-form{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.cc-form label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--muted)}
.cc-form input[type=text],.cc-form input[type=number],.cc-form input[type=date],.cc-form select{padding:7px 9px;border:1px solid var(--border);border-radius:8px;background:var(--surface);color:var(--text);font:inherit;min-width:110px}
.cc-form .chk{flex-direction:row;align-items:center;gap:6px;color:var(--text)}
.cc-form-row{margin:10px 0}
.cc-config{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px;margin:12px 0}
.cc-ia-log{max-height:420px;overflow-y:auto;display:flex;flex-direction:column;gap:10px;margin-bottom:12px}
.cc-ia-user{align-self:flex-end;background:var(--accent-soft);border-radius:14px 14px 2px 14px;padding:9px 13px;max-width:75%;font-size:13px}
.cc-ia-bot{align-self:flex-start;background:var(--surface);border:1px solid var(--border);border-radius:14px 14px 14px 2px;padding:10px 14px;max-width:85%;font-size:13px;white-space:pre-line;line-height:1.5}
.cc-ia-sug{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px}
.cc-up{color:var(--red);font-weight:700}
.cc-down{color:var(--green);font-weight:700}
body.dark .cc-row:hover td{background:rgba(255,90,60,.08)}
body.dark .cc-detail td{background:#141720}
body.dark .cc-porque,body.dark .cc-ia-bot{background:#1b1f2a}
.cc-mf{margin-top:12px;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface)}
.cc-mf h4{margin:0 0 8px}
.cc-mf-table{min-width:auto;font-size:12px}
.cc-mf-table th{font-size:10px}
.cc-mf-desc{font-size:11px;line-height:1.35;max-width:260px}
body.dark .cc-mf{background:#1b1f2a}
.cc-sellout{margin-top:12px;border:1px solid var(--border);border-radius:10px;padding:10px 12px;background:var(--surface)}
.cc-sellout b{font-size:13px}
.cc-warn-cell{color:var(--amber);font-weight:700}
body.dark .cc-sellout{background:#1b1f2a}

/* v209.66 — la barra horizontal de la tabla de compras, IMPOSIBLE de no ver.
   Adriano: «la barra horizontal sigue sin salir». La del sistema es fina, gris y
   se confunde con el borde de la tarjeta; con 20 columnas hay que usarla siempre,
   asi que se dibuja gruesa y con color. */
.cc-table-wrap{scrollbar-color:var(--accent) var(--bg);scrollbar-width:auto}
.cc-table-wrap::-webkit-scrollbar{width:14px;height:14px}
.cc-table-wrap::-webkit-scrollbar-track{background:var(--bg);border-radius:8px}
.cc-table-wrap::-webkit-scrollbar-thumb{
  background:var(--accent);border-radius:8px;border:3px solid var(--bg)}
.cc-table-wrap::-webkit-scrollbar-thumb:hover{background:var(--accent-dark)}
.cc-table-wrap::-webkit-scrollbar-corner{background:var(--bg)}
/* y un cartelito que avisa que hay mas a la derecha, hasta que se corre */
.cc-mas{
  display:flex;align-items:center;gap:6px;margin:6px 2px 0;
  font-size:12px;color:var(--muted)}
.cc-mas b{color:var(--accent)}

/* v209.66 — la MISMA barra horizontal, pero arriba.
   Adriano: «debería estar arriba y abajo, porque abajo de todo no se veía». Con
   400 filas, la barra que el navegador pone al pie de la tabla queda a una
   pantallada larga de distancia: existe, pero no sirve. Esta es un div vacío del
   ancho de la tabla, puesto ANTES; el scroll de las dos se copia. */
.cc-scroll-top{overflow-x:auto;overflow-y:hidden;margin-bottom:4px}
.cc-scroll-top > div{height:1px}
.cc-scroll-top.cc-oculta{display:none}
.cc-scroll-top{scrollbar-color:var(--accent) var(--bg);scrollbar-width:auto}
.cc-scroll-top::-webkit-scrollbar{height:14px}
.cc-scroll-top::-webkit-scrollbar-track{background:var(--bg);border-radius:8px}
.cc-scroll-top::-webkit-scrollbar-thumb{
  background:var(--accent);border-radius:8px;border:3px solid var(--bg)}
.cc-scroll-top::-webkit-scrollbar-thumb:hover{background:var(--accent-dark)}

/* v209.78 — la llave MCP recién creada: es la UNICA vez que se puede ver */
.mcp-nueva{border:1px solid var(--accent);border-radius:10px;padding:12px;
  background:var(--accent-soft);display:flex;flex-direction:column;gap:8px}
.mcp-llave,.mcp-cmd{display:block;background:var(--surface);color:var(--text);
  border:1px solid var(--border);border-radius:8px;padding:9px 11px;cursor:pointer;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12px;
  overflow-wrap:anywhere;line-height:1.5}
.mcp-llave{font-size:13px;font-weight:600}
.mcp-llave:hover,.mcp-cmd:hover{border-color:var(--accent)}

/* v209.79 — quién contestó en el chat del módulo (Claude o el intérprete local) */
.cc-ia-pie{margin-top:6px;font-size:11px;color:var(--muted);opacity:.85}

/* v209.80 — cual Excel de ventas esta usando el modulo */
.cc-base-hoy{border:1px solid var(--border);border-left:3px solid var(--accent);
  border-radius:0 10px 10px 0;padding:12px 14px;margin-bottom:14px;background:var(--surface)}
.cc-base-hoy b{font-size:15px}


/* Cobranzas por vendedor (v209.101). La tabla es el modulo entero, asi que las dos
   columnas de plata tienen que leerse de un vistazo: numeros alineados a la derecha
   y tabulares para que las cifras se comparen columna contra columna. */
.cv-top { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.cv-top .cv-sp { flex:1; }
/* El label ES el boton de carga (tiene el <input type=file> adentro), asi que
   tiene que PARECER un boton: como texto subrayado chico nadie lo encuentra, y
   el que lo aprieta no sabe si hizo algo. */
.cv-up { cursor:pointer; font-size:13px; padding:7px 13px; border-radius:4px;
         border:1px solid rgba(128,128,128,.5); display:inline-flex; align-items:center;
         gap:7px; white-space:nowrap; }
.cv-up::before { content:"91"; font-weight:600; }
.cv-up:hover { border-color:currentColor; background:rgba(128,128,128,.12); }
.cv-msg { font-size:13px; opacity:.8; }
.cv-warn { padding:10px 12px; margin-bottom:12px; border-left:3px solid #c0392b; font-size:14px; }
.cv-tab { width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.cv-tab th, .cv-tab td { padding:9px 12px; border-bottom:1px solid rgba(128,128,128,.25); }
.cv-tab th { text-align:left; font-size:12px; letter-spacing:.06em; text-transform:uppercase; opacity:.7; }
.cv-tab td.n, .cv-tab th.n { text-align:right; white-space:nowrap; }
.cv-tab tfoot th { border-top:2px solid rgba(128,128,128,.5); border-bottom:none; font-size:13px; text-transform:none; opacity:1; }
.cv-tab .cv-vacio { opacity:.35; }
.cv-tab tr.cv-parcial td { opacity:.75; }
.cv-nota { font-size:11px; opacity:.6; }
.cv-pie { font-size:12.5px; opacity:.75; margin-top:14px; line-height:1.6; }

/* Observaciones por mes (v209.102): quien esta de un solo lado. Colapsado por
   defecto, porque son decenas de clientes y abiertos tapan la tabla. */
.cv-obs-td { font-size:12.5px; max-width:340px; }
.cv-obs-btn { background:none; border:none; padding:0; cursor:pointer; font:inherit;
              color:inherit; text-align:left; text-decoration:underline; opacity:.85; }
.cv-obs-btn:hover, .cv-obs-btn.abierto { opacity:1; }
.cv-obs { margin-top:8px; display:flex; flex-direction:column; gap:6px; }
.cv-obs-i { padding-left:9px; border-left:2px solid rgba(128,128,128,.4); line-height:1.4; }
.cv-obs-odoo { border-left-color:#c0392b; }
.cv-obs-gustavo { border-left-color:#c8951a; }
.cv-obs-m { display:inline-block; margin-left:6px; font-variant-numeric:tabular-nums; opacity:.9; }
.cv-obs-i .cv-nota { display:block; }

/* «Vamos en el mes de...» (v209.102). Va abajo del cuadro historico y es lo que
   cada vendedor mira todos los dias, asi que el numero manda sobre el resto. */
.cv-curso { margin-top:26px; padding-top:18px; border-top:2px solid rgba(128,128,128,.35); }
.cv-curso h3 { margin:0 0 14px; font-size:15px; font-weight:600; }
.cv-curso-g { display:flex; flex-wrap:wrap; gap:10px; }
.cv-curso-i { flex:1 1 150px; padding:12px 14px; border:1px solid rgba(128,128,128,.28);
              display:flex; flex-direction:column; gap:5px; }
.cv-curso-n { font-size:12px; letter-spacing:.05em; text-transform:uppercase; opacity:.7; }
.cv-curso-m { font-size:21px; font-weight:600; font-variant-numeric:tabular-nums; }
.cv-curso-tot { border-width:2px; }
.cv-curso .cv-nota { margin-top:10px; display:block; }

/* Las columnas por vendedor (v209.106): se leen de reojo contra el total, asi
   que van un poco mas tenues para que el total siga mandando. */
.cv-tab th.cv-vend { opacity:.85; }
.cv-tab td.cv-vend { opacity:.8; }
.cv-tab th.cv-vend + th:not(.cv-vend), .cv-tab td.cv-vend + td:not(.cv-vend) {
  border-left:1px solid rgba(128,128,128,.3);
}

/* El tercer tipo de observacion (v209.109): mismo cliente, vendedor distinto en
   cada fuente. No es plata que falta, asi que no va en rojo. */
.cv-obs-cruzado { border-left-color:#4a7ba7; }

/* Cobranzas y ventas del mes en curso (v209.111): dos bloques, mismo formato,
   para que se comparen de un vistazo. */
.cv-curso h3.cv-curso-h2 { font-size:12px; letter-spacing:.08em; text-transform:uppercase;
                           opacity:.65; margin:18px 0 10px; font-weight:600; }
.cv-curso h3.cv-curso-h2:first-of-type { margin-top:0; }
.cv-curso-v .cv-curso-m { opacity:.9; }


/* Recargar pedido (v209.113) */
.rc-top { display:flex; align-items:center; gap:14px; flex-wrap:wrap; margin-bottom:14px; }
.rc-top .emp-search { flex:1 1 260px; }
.rc-cfg { display:flex; align-items:center; gap:18px; flex-wrap:wrap; margin:0 0 14px;
          padding:12px 14px; border:1px solid rgba(128,128,128,.28); border-radius:4px; }
.rc-cfg label { display:flex; align-items:center; gap:6px; }
.rc-cfg input[type=number] { width:74px; }
.rc-acciones { display:flex; align-items:center; gap:14px; margin:14px 0; flex-wrap:wrap; }
.rc-cli { font-family:inherit; font-size:14px; max-width:280px; }
.rc-ley { font-size:12px; opacity:.8; max-width:420px; }
.cv-tab input[type=number].rc-pa { width:70px; text-align:right; }


/* La tabla generica `.tbl` no estaba estilada y la usan Natural Life (v209.127) y el
   Control de stock (v209.129): sin esto salen como tabla pelada del navegador. */
.tbl { width:100%; border-collapse:collapse; font-variant-numeric:tabular-nums; }
.tbl th, .tbl td { padding:8px 11px; border-bottom:1px solid rgba(128,128,128,.25);
                   text-align:left; vertical-align:top; }
.tbl th { font-size:12px; letter-spacing:.06em; text-transform:uppercase; opacity:.7;
          white-space:nowrap; }
.tbl td.num, .tbl th.num { text-align:right; white-space:nowrap; }

/* Control de stock (v209.129) — la planilla de ceros para el deposito */
.c0-cab { padding:14px 16px; border:1px solid rgba(128,128,128,.28); border-radius:4px;
          margin-bottom:14px; }
.c0-cab.c0-toca { border-color:#c2185b; background:rgba(194,24,91,.07); }
.c0-cuando { font-size:15px; font-weight:600; }
.c0-cada { font-size:12.5px; opacity:.7; margin-top:4px; }

.c0-aviso { padding:10px 14px; margin-bottom:10px; border-radius:4px; font-size:13px;
            border-left:3px solid #b00020; background:rgba(176,0,32,.08); }
.c0-nota { padding:9px 13px; margin:10px 0; border-radius:4px; font-size:13px;
           border-left:3px solid rgba(128,128,128,.5); background:rgba(128,128,128,.08); }

.c0-cajas { display:flex; gap:12px; flex-wrap:wrap; margin:14px 0; }
.c0-caja { flex:1 1 130px; padding:12px 14px; border-radius:4px;
           border:1px solid rgba(128,128,128,.28); }
.c0-caja b { display:block; font-size:26px; line-height:1.1;
             font-variant-numeric:tabular-nums; }
.c0-caja span { display:block; font-size:12px; opacity:.75; margin-top:3px; }
.c0-caja.c0-van { border-color:#c2185b; }
.c0-caja.c0-van b { color:#c2185b; }
.c0-caja.c0-cero b { color:#b00020; }
.c0-caja.c0-poco b { color:#a06000; }

.c0-acciones { display:flex; align-items:center; gap:12px; flex-wrap:wrap; margin:16px 0 6px; }
/* .btn-primary y .btn-ghost vienen con width:100% (nacieron en la columna del login):
   sin esto los tres botones salen uno abajo del otro, cada uno del ancho de la pantalla. */
.c0-acciones .btn-primary, .c0-acciones .btn-ghost { width:auto; }
.c0-chico { font-size:12.5px; opacity:.75; max-width:640px; margin-bottom:14px; }

/* `.scroll` la usan varias pantallas como envoltorio de tabla ancha y tampoco estaba
   definida: sin overflow, la tabla estira el panel en vez de scrollear. */
.scroll { overflow-x:auto; }

/* `table-layout:fixed` y no `auto`: con auto el ancho que se pide es una sugerencia y
   los encabezados cortos («ODOO DICE», «ENTRO») se quedaban con el lugar mientras la
   descripcion salia cortada en cuatro renglones. */
.c0-tabla { margin-top:12px; table-layout:fixed; width:100%; }
.c0-tabla th { white-space:normal; }
/* El corte de palabra va SOLO en las columnas de texto: puesto en todas partia el
   codigo al medio («2400 / 1»), que es justo lo que el deposito usa para buscar. */
.c0-tabla td:nth-child(2), .c0-tabla td:nth-child(3) { overflow-wrap:break-word; }
.c0-tabla td:nth-child(1) { white-space:nowrap; }
.c0-tabla th:nth-child(1) { width:74px; }
.c0-tabla th:nth-child(3) { width:22%; }
.c0-tabla th:nth-child(4) { width:82px; }
.c0-tabla th:nth-child(5) { width:96px; }
.c0-tabla th:nth-child(6) { width:66px; }
/* Por que sale: va debajo de la descripcion y no en columna propia (no entraba). */
.c0-motivo { display:block; font-size:11.5px; opacity:.7; margin-top:2px; }
.c0-tabla tr.c0-f-cero td { background:rgba(176,0,32,.09); }
.c0-tabla tr.c0-f-poco td { background:rgba(200,140,0,.10); }
.c0-cont { font-size:11px; opacity:.6; }

.c0-hist { margin-top:26px; }
.c0-hist h3 { font-size:12px; letter-spacing:.08em; text-transform:uppercase;
              opacity:.65; margin:0 0 8px; font-weight:600; }
.c0-hist a.btn-xs { text-decoration:none; width:auto; display:inline-block; }

/* En oscuro los rojos y naranjas de arriba quedan casi negros contra la tarjeta. */
body.dark .c0-caja.c0-cero b { color:#ff7b7b; }
body.dark .c0-caja.c0-poco b { color:#e0a63a; }
body.dark .c0-caja.c0-van b { color:#ff6f9a; }
body.dark .c0-cab.c0-toca { border-color:#ff6f9a; background:rgba(255,111,154,.10); }
body.dark .c0-aviso { border-left-color:#ff7b7b; background:rgba(255,123,123,.12); }

/* v209.136 — Natural Life: el filtro de articulos sin stock y el consolidado.
   Va ARRIBA de todo en la pantalla, que es lo que pidio Adriano: lo primero que se
   ve despues de elegir el Excel, antes de mirar los pedidos. */
.nl-filtro{padding:12px 14px;margin:10px 0 14px;border:1px solid rgba(128,128,128,.3);
  border-left:3px solid #C2185B;border-radius:6px}
.nl-filtro-l{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:6px}
.nl-filtro-l>button{flex:0 0 auto;width:auto}
.nl-sacados{margin-top:8px;font-size:12.5px}
.nl-sac-chip{display:inline-block;background:rgba(176,0,32,.10);color:#8A1C1C;
  border:1px solid rgba(176,0,32,.25);border-radius:999px;padding:2px 9px;margin:2px 3px;
  font-weight:600;font-size:12px}
body.dark .nl-sac-chip{background:rgba(255,123,123,.14);color:#ff9d9d;
  border-color:rgba(255,123,123,.35)}
.nl-cons{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-top:10px;
  padding-top:10px;border-top:1px dashed rgba(128,128,128,.3)}
.nl-cons>button{flex:0 0 auto;width:auto}
.nl-msg-ok{color:#8a6d00}
body.dark .nl-msg-ok{color:#e0a63a}
/* v209.137 — los codigos que Natural Life manda mal y Skynet corrige. Van en verde y
   no en rojo: no es un problema, es algo que se arreglo — pero SE MUESTRA, porque
   cambiarle el producto a un pedido en silencio no se hace. */
.nl-corregidos{margin-bottom:8px}
.nl-corr-chip{display:inline-block;background:rgba(27,158,90,.10);color:#136b3d;
  border:1px solid rgba(27,158,90,.3);border-radius:999px;padding:2px 9px;margin:2px 3px;
  font-weight:600;font-size:12px}
body.dark .nl-corr-chip{background:rgba(143,217,170,.14);color:#8fd9aa;
  border-color:rgba(143,217,170,.35)}
/* v209.138 — la columna de +30 dias en el impreso y en cobranzas */
.d30col{color:#B3261E;font-weight:800}
.rbx-kpi-n{display:block;font-size:9px;font-style:normal;opacity:.75;font-weight:600}
/* v209.137 — el consolidado se ve en pantalla y de ahi se baja en Excel */
.nl-cons-box:empty{display:none}
.nl-cons-box{margin-top:10px;padding-top:10px;border-top:1px dashed rgba(128,128,128,.3)}
.nl-cons-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:8px}
.nl-cons-h>button{flex:0 0 auto;width:auto}
.nl-cons-tab{max-width:760px}
/* v209.140 — el boton del consolidado, en su renglon debajo del de cargar */
.rc-nl-cons{flex-basis:100%;display:flex;gap:10px;align-items:center;flex-wrap:wrap;
  margin-top:8px;padding-top:8px;border-top:1px dashed rgba(128,128,128,.3)}
.rc-nl-cons>label{flex:0 0 auto;width:auto}

/* v209.142 — el movimiento del deposito 2 que arma Brian en la pantalla de Stock */
.stk-mov-bar{border:1px solid rgba(128,128,128,.3);border-left:3px solid #C2185B;
  border-radius:6px;padding:10px 12px;margin:12px 0}
.stk-mov-l{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:4px 0}
.stk-mov-l>button,.stk-mov-l>select{flex:0 0 auto;width:auto}
.stk-uxc{color:var(--muted,#8a8a99);font-variant-numeric:tabular-nums}
.stk-chk input{width:18px;height:18px;cursor:pointer}
.stk-cajas{white-space:nowrap}
.stk-cajas input.stk-cj{width:62px;text-align:right;padding:3px 6px;
  border:1px solid var(--border,#d8dbe2);border-radius:6px;background:var(--card,#fff);
  color:inherit;font-family:inherit}
.stk-uni{display:inline-block;min-width:62px;margin-left:6px;font-size:11.5px;
  font-weight:700;color:#B3261E}
body.dark .stk-uni{color:#ff9d9d}
/* v209.143 — el asterisco de la UXC que no salio del embalaje de Odoo */
.stk-uxc-f{color:#a06000;font-weight:800;cursor:help}
body.dark .stk-uxc-f{color:#e0a63a}


/* v209.168 — Servicios a pagar. `sv-min` es el texto chico y atenuado del modulo;
   existe porque `.rb-ver`, que parecia serlo por el nombre, es una pastilla VERDE. */
.sv-min { font-size: 12px; color: var(--muted); }
#servicios-panel .tbl td { vertical-align: middle; }

/* v209.189 — Avisos de Recorrido. v209.191: con los colores del TEMA (--surface, --text,
   --border...). La primera versión usaba --card y --line, que no existen: quedaba el
   fondo blanco fijo y en modo oscuro no se veía nada. */
.av-top{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin:6px 0 12px}
.av-top select{font:inherit;font-size:14px;padding:7px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text);min-width:280px}
.av-lista{display:flex;flex-direction:column;gap:4px;max-width:900px}
.av-cli{border:1px solid var(--border);border-radius:10px;background:var(--surface);color:var(--text)}
.av-cli.hecho{opacity:.7}
.av-cli.abierto{opacity:1;border-color:var(--accent);box-shadow:var(--shadow)}
.av-cli-h{display:flex;gap:10px;align-items:center;padding:7px 12px;cursor:pointer;font-size:14px}
.av-num{color:var(--muted);font-size:12px;min-width:34px}
.av-nom{flex:1;font-weight:600;color:var(--ink)}
.av-tot{font-variant-numeric:tabular-nums;font-weight:600;color:var(--ink)}
.av-ok{color:var(--green);font-size:12px;font-weight:600}
.av-alerta-chip{background:var(--red-soft);color:var(--red);border-radius:999px;padding:1px 8px;font-size:12px;font-weight:700}
.av-cli-b{padding:4px 12px 12px;display:flex;flex-direction:column;gap:8px}
.av-alerta{background:var(--red-soft);color:var(--red);border:2px solid var(--red);border-radius:8px;padding:10px 12px;font-weight:700}
.av-txt{width:100%;font:inherit;font-size:14px;line-height:1.45;padding:10px;border:1px solid var(--border);border-radius:8px;resize:vertical;background:var(--bg);color:var(--text)}
.av-acc{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.av-saldo{display:inline-flex;gap:5px;align-items:center;font-size:12px;color:var(--muted);white-space:nowrap;cursor:pointer}
/* v209.195 — periodos de turno en la ficha del empleado */
.as-periodos{border-top:1px solid var(--border);margin-top:8px;padding-top:6px;display:flex;flex-direction:column;gap:6px}
.as-per{display:flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:13px}
.as-per-add{display:flex;gap:6px;align-items:flex-end;flex-wrap:wrap;font-size:12px}
.as-per-add label{display:flex;flex-direction:column;gap:2px}
/* v209.196 — horarios de siempre debajo de los periodos */
.as-presets{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.as-preset{display:inline-flex;gap:0;align-items:center}
/* v209.199 — marcar todas las entregas desde el encabezado */
.cm-todos{display:inline-flex;align-items:center;gap:6px;cursor:pointer;font-weight:inherit}
.cm-todos input{margin:0}
/* v209.204 — Catálogos: solapa «Orden y categorías» */
.cord-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:8px 0}
.cord-top select,.cord-top input[type=text]{min-width:200px}
.cord-ayuda{font-size:12px;margin-bottom:6px}
.cord-warn{color:var(--red)}
.cord-wrap{overflow-x:auto}
.cord-table td{vertical-align:middle}
.cord-table tr[draggable=true]{cursor:default}
.cord-h{cursor:grab;color:var(--muted);user-select:none;width:18px;text-align:center}
.cord-pos input{width:64px;font-variant-numeric:tabular-nums}
.cord-fl{white-space:nowrap;min-width:66px}
.cord-fl .btn-xs{width:30px;min-width:0;padding:2px 0;margin:0 1px}
.cord-secs{display:inline-flex;gap:4px}
.cord-secs .btn-xs{width:auto;flex:0 0 auto}
.cord-cod{font-variant-numeric:tabular-nums;white-space:nowrap}
.cord-cat{max-width:280px}
.cord-precio{font-variant-numeric:tabular-nums;white-space:nowrap;text-align:right}
.cord-sub{width:130px}
.cord-ordenar{margin-left:auto}
.cord-suelto td{background:var(--red-soft)}
.cord-flash td{animation:cordFlash 1.6s ease-out}
@keyframes cordFlash{from{background:rgba(255,196,0,.45)}to{background:transparent}}
.cord-drag{opacity:.45}
.cord-sobre td{border-top:3px solid var(--accent)}
@media (prefers-reduced-motion: reduce){.cord-flash td{animation:none}}
/* v209.205 — el acceso a la solapa, arriba de todo */
.cat-acceso-orden{display:flex;gap:8px;margin:0 0 10px}
.cat-acceso-orden .btn-ghost{font-weight:600}
/* v209.206 — Pedidos Terminados / Bultos */
.bu-carga{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;padding:14px;border:1px solid var(--border);
  border-radius:12px;background:var(--surface);margin:8px 0 10px}
.bu-carga label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:13px}
.bu-carga #bu-ped{width:140px;font-size:18px;text-transform:uppercase}
.bu-carga #bu-bul{width:110px;font-size:18px}
.bu-cli{flex:1 1 260px;min-height:38px;display:flex;flex-direction:column;justify-content:center;font-size:15px}
.bu-err{color:var(--red);font-size:13px}
.bu-tit{margin:14px 0 6px}
.bu-table td{vertical-align:middle}
.bu-acc{white-space:nowrap}
.bu-cancel{color:var(--red)}
.bu-hist{margin-top:12px}
.bu-hist summary{cursor:pointer;font-weight:600}
/* en el Armado de Recorrido */
.rb-tabs{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0}
.rb-ver-bultos{margin-left:auto}
.rb-term-panel{margin:6px 0 14px}
.rb-term-ayuda{font-size:13px;margin-bottom:6px}
.route-builder.rb-en-term .rb-search,.route-builder.rb-en-term #rb-summary,
.route-builder.rb-en-term #rb-list,.route-builder.rb-en-term .rb-cob{display:none}
.rb-bultos{margin-top:6px;padding:6px 10px;border-radius:8px;font-size:13px;border:1px solid var(--border)}
.rb-bultos.ok{background:rgba(34,160,90,.10)}
.rb-bultos.parcial{background:rgba(255,180,0,.14)}
.rb-bultos.nada{color:var(--muted)}
/* v209.207 — Completados, desplegable como los demás y sin botones cortados */
.bu-comp{margin-top:14px}
.bu-comp > summary{font-size:17px}
.bu-wrap{overflow-x:auto}
.bu-acc{white-space:normal}
.bu-btns{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.bu-btns .btn-xs,.bu-acc .btn-xs{width:auto;min-width:0;flex:0 0 auto;padding:3px 10px;white-space:nowrap}
/* v209.208 — por cliente */
.bu-buscar{position:relative;flex:0 1 340px}
.bu-buscar #bu-q{width:100%;font-size:16px;text-transform:none}
.bu-buscar .rb-suggest{position:absolute;top:100%;left:0;right:0;z-index:20}
.bu-cli{flex:1 1 100%;display:block}
.bu-cli-tit{font-size:16px;margin:4px 0 6px}
.bu-peds td{vertical-align:middle}
.bu-ya td{opacity:.6}
.bu-total{display:flex;gap:12px;align-items:flex-end;flex-wrap:wrap;margin-top:10px}
.bu-total label{display:flex;flex-direction:column;gap:4px;font-weight:600;font-size:13px}
.bu-total #bu-bul{width:120px;font-size:18px}
.bu-ped{display:inline-block;margin:0 8px 2px 0;white-space:nowrap}
/* v209.209 — la barra de contenedores que llegaron */
.bu-conts{display:flex;gap:6px;align-items:center;flex-wrap:wrap;padding:10px 14px;margin:0 0 10px;
  border:1px solid var(--border);border-radius:12px;background:var(--surface)}
.bu-conts-add{display:inline-flex;gap:6px;align-items:center;margin-left:auto}
.bu-conts-add input{width:80px;text-transform:uppercase}
.bu-conts-add .btn-xs{width:auto}
.bu-conts-ayuda{flex-basis:100%;font-size:12px}
/* v209.213 — de a un pedido */
.bu-cli-res{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 8px}
.bu-peds tr.bu-libre{cursor:pointer}
.bu-peds tr.bu-sel td{background:rgba(34,160,90,.12)}
/* v209.215 — Checklist chofer: Paradas y Bultos en una línea, sin plata */
.rbx-head-check{align-items:center}
.rbx-kpis-linea{display:flex;gap:10px;align-items:center;flex-wrap:nowrap}
.rbx-kl{display:inline-flex;align-items:baseline;gap:8px;background:#f3f4f6;border-radius:10px;padding:6px 14px;
  font-size:12px;color:#6b7280;font-weight:700;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.rbx-kl b{font-size:20px;color:#15171e;letter-spacing:0}
/* v209.217 — control del recorrido (módulo Recorridos) */
.ctl-wrap{border:1px solid var(--border);border-radius:12px;background:var(--surface);padding:12px 14px;margin:0 0 14px}
.ctl-top{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ctl-top select{min-width:240px}
.ctl-top .btn-xs{width:auto}
.ctl-ayuda{font-size:12px;margin:6px 0 8px}
.ctl-res{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:8px}
.ctl-lista{display:flex;flex-direction:column;gap:6px}
.ctl-cli{border:1px solid var(--border);border-radius:10px;padding:8px 10px}
.ctl-cli.ctl-entregado{border-left:5px solid var(--green)}
.ctl-cli.ctl-no_entregado{border-left:5px solid var(--red)}
.ctl-cli-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ctl-cli .rbx-cnum{width:26px;height:26px;border-radius:7px;background:var(--ink, #15171e);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;flex:0 0 auto}
.ctl-nom{flex:1 1 260px;min-width:0}
.ctl-docs{font-size:12px}
.ctl-btns{display:flex;gap:6px;flex:0 0 auto}
.ctl-b{border:1.5px solid var(--border);background:transparent;color:var(--text);border-radius:8px;padding:6px 12px;font-weight:700;cursor:pointer;width:auto}
.ctl-b.on.si{background:var(--green);border-color:var(--green);color:#fff}
.ctl-b.on.no{background:var(--red);border-color:var(--red);color:#fff}
.ctl-estado{display:flex;flex-direction:column;gap:3px;margin:6px 0 0 36px;font-size:13px}
.ctl-ok{color:var(--green);font-weight:700}
.ctl-warn{color:#b7791f;font-weight:700}
.ctl-mal{color:var(--red);font-weight:900;font-size:15px;letter-spacing:.02em}
.ctl-quien{font-size:11px}
/* v209.221 — el control pegado a cada día y a cada cliente */
.ctl-ayuda-lista{font-size:12px;margin:0 0 10px;display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.ctl-ayuda-lista .btn-xs{width:auto}
.ctl-dia{display:inline-flex;gap:6px;align-items:center;flex-wrap:wrap;font-size:12px;margin-left:10px;color:var(--muted)}
.ctl-dia .btn-xs{width:auto;padding:2px 8px}
.ctl-mal-chico{color:var(--red)}
.ctl-strip{margin-top:6px;padding:6px 8px;border-radius:8px;border:1px dashed var(--border)}
.ctl-strip.ctl-entregado{border:1px solid var(--green);border-left-width:4px}
.ctl-strip.ctl-no_entregado{border:1px solid var(--red);border-left-width:4px}
.ctl-strip-h{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ctl-strip .ctl-estado{margin:4px 0 0}
.ctl-rec{font-size:11px}
.ctl-badge-falt{background:var(--red) !important}
.ctl-row-falt .name{font-weight:700}
/* v209.222 — el cartel de servicios vencidos */
.sva{display:flex;flex-direction:column;gap:10px}
.sva-head{background:var(--red);color:#fff;font-weight:900;font-size:20px;letter-spacing:.02em;padding:12px 14px;border-radius:10px;text-align:center}
.sva-item{border:2px solid var(--red);border-radius:10px;padding:10px 12px;font-size:15px}
.sva-tit{color:var(--red);font-weight:900;font-size:17px;margin-bottom:2px}
.sva-total{font-size:18px;text-align:right;color:var(--red);font-weight:800}
/* v209.223 — la barra, las tarjetas y los carteles de arriba son solo de los vendedores */
body.sin-carteles #kpis, body.sin-carteles #ticker-bar, body.sin-carteles #tips{display:none !important}
/* v209.224 — la acción en la hoja del chofer, a la izquierda de los casilleros */
.rbx-acc{flex:0 0 150px;display:flex;flex-direction:column;align-items:flex-start;gap:2px;padding:5px 8px;border-radius:8px;
  font-size:12px;line-height:1.25;border:2px solid #d1d5db;color:#15171e;background:#fff}
.rbx-acc b{font-size:12.5px;font-weight:900;letter-spacing:.02em}
.rbx-acc span{font-size:11px;font-weight:700}
.rbx-acc.ent{border-color:#93b4f0;background:#eef4ff}
.rbx-acc.cob{border-color:#f0b46a;background:#fff4e5}
.rbx-acc.cob span{color:#b45309}
.rbx-acc.conf{border-color:#34a46b;background:#e7f7ee}
.rbx-acc.conf span{color:#1f8a4c}
/* v209.225 — Checklist chofer para impresoras láser BLANCO Y NEGRO (Adriano): nada que
   dependa del color. Fondos blancos, letra negra, y la diferencia por el BORDE y el texto. */
.rbx-checklist .rbx-acc,.rbx-checklist .rbx-acc.ent,.rbx-checklist .rbx-acc.cob,.rbx-checklist .rbx-acc.conf{background:#fff;color:#000}
.rbx-checklist .rbx-acc span{color:#000 !important}
.rbx-checklist .rbx-acc.ent{border:1.5px solid #000}
.rbx-checklist .rbx-acc.cob{border:2px dashed #000}
.rbx-checklist .rbx-acc.conf{border:3.5px solid #000}
.rbx-checklist .rbx-acc.conf span{font-weight:900;text-decoration:underline}
.rbx-checklist .rbx-crow.warn{background:#fff}
.rbx-checklist .rbx-falt{background:#fff;color:#000;border:1.5px solid #000}
.rbx-checklist .rbx-cid{color:#000}
.rbx-checklist .rbx-hora{background:#fff;color:#000;border:1px solid #000}
.rbx-checklist .rbx-kl{background:#fff;color:#000;border:1.5px solid #000}
.rbx-checklist .rbx-date,.rbx-checklist .rbx-addr-fis,.rbx-checklist .sub{color:#000}
/* v209.226 — la casilla «Confirmó el pago» al lado de la acción (Armado de recorrido) */
.rb-accion{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.rb-accion select{flex:1 1 150px;min-width:0}
.rb-pago-conf{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border:1px solid var(--border,#e7e7ee);
  border-radius:8px;font-size:12.5px;font-weight:700;color:var(--text,#1d1f27);cursor:pointer;white-space:nowrap}
.rb-pago-conf input{margin:0;width:16px;height:16px}
.rb-pago-conf.on{border-color:#1f8a4c;background:#e7f7ee;color:#1f6b3d}
.rb-pago-tag{display:inline-block;margin-left:4px;padding:1px 6px;border:1.5px solid #000;border-radius:5px;
  font-size:10.5px;font-weight:900;color:#000;background:#fff;white-space:nowrap}
/* v209.227 — Armado: casilla «Sale por expreso» y botón 🔄 Odoo en cada cliente */
.rb-exp-chk{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border:1px solid var(--border,#e7e7ee);
  border-radius:999px;font-size:11.5px;font-weight:700;color:var(--muted,#8a8a99);cursor:pointer;white-space:nowrap}
.rb-exp-chk input{margin:0}
.rb-exp-chk.on{color:var(--text,#1d1f27);border-color:#c9a227;background:#fff8e1}
.rb-odoo{padding:3px 9px;border:1px solid var(--border,#e7e7ee);border-radius:999px;background:var(--card,#fff);
  font-size:11.5px;font-weight:700;color:var(--text,#1d1f27);cursor:pointer;white-space:nowrap}
.rb-odoo:hover{border-color:#6b7cff}
/* v209.228 — «Probar plantilla» (WhatsApp → Configuración) */
.wa-tpl-form{display:flex;flex-direction:column;gap:9px;margin-top:8px}
.wa-tpl-form label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:600;color:var(--muted,#8a8a99)}
.wa-tpl-form select,.wa-tpl-form input{padding:7px 9px;border:1px solid var(--border,#e7e7ee);border-radius:8px;font-size:14px;color:var(--text,#1d1f27);background:var(--card,#fff)}
#wa-tpl-vars{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:8px}
.wa-tpl-prev-t{font-size:12px;font-weight:600;color:var(--muted,#8a8a99)}
.wa-tpl-prev{background:#dcf8c6;color:#111b21;border-radius:10px 10px 10px 2px;padding:9px 11px;font-size:14px;line-height:1.45;max-width:420px;white-space:normal}

/* v209.229 — CONTEO DE DEPÓSITO (la tablet). Colores propios, los del mockup que aprobó
   Adriano: pizarra #16201B, rosa de la casa #A3124F, verde «contado» #1E5E45. Todo
   pensado para el dedo: nada interactivo de menos de 44 px. */
.ct-app{--ct-ink:#16201B;--ct-mut:#5B6660;--ct-line:#D5DBD7;--ct-acc:#A3124F;--ct-ok:#1E5E45;
  --ct-bg:#EEF1EF;background:var(--ct-bg);color:var(--ct-ink);border-radius:16px;overflow:hidden;
  display:flex;flex-direction:column;min-height:calc(100vh - 140px)}
.ct-sr{position:absolute;left:-9999px}
.ct-cargando{padding:40px;font-size:18px;color:#5B6660}
.ct-top{background:#16201B;color:#fff;display:flex;align-items:center;justify-content:space-between;gap:14px;
  padding:10px 20px;flex-wrap:wrap;min-height:60px}
.ct-top-t{display:flex;align-items:center;gap:12px;font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:21px;min-width:0}
.ct-logo{font-size:22px}
.ct-nombre{cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px;border-bottom:1px dashed #5B6660}
.ct-volver{width:44px;height:44px;border-radius:10px;border:1px solid #3A4640;background:transparent;color:#fff;font-size:28px;line-height:1;cursor:pointer}
.ct-top-acc{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ct-chip{font-size:12px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;border-radius:99px;padding:4px 10px}
.ct-chip.ab{background:#FBEFF4;color:#A3124F}
.ct-chip.ce{background:#E2ECE6;color:#1E5E45}
.ct-btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:44px;padding:0 18px;border-radius:10px;
  border:0;background:#A3124F;color:#fff;font-family:inherit;font-size:15px;font-weight:700;cursor:pointer;text-decoration:none;white-space:nowrap}
.ct-btn:hover{background:#7A0D3B}
.ct-btn.dark{background:#16201B;color:#fff}
.ct-top .ct-btn.dark{background:#fff;color:#16201B}
.ct-btn.ghost{background:#fff;color:#16201B;border:1px solid #C3CBC6}
.ct-btn.ghost.dark{background:transparent;color:#fff;border:1px solid #4A5650}
.ct-btn.grande{min-height:56px;font-size:17px;padding:0 24px}
.ct-btn:focus-visible,.ct-pm:focus-visible,.ct-n:focus-visible,.ct-big:focus-visible,.ct-uxc:focus-visible,.ct-q:focus-visible,.ct-ean:focus-visible{outline:3px solid #A3124F;outline-offset:2px}
.ct-red{font-size:13px;font-weight:700;border-radius:99px;padding:5px 11px}
.ct-red.ok{background:#E2ECE6;color:#1E5E45}
.ct-red.env{background:#FFF4D6;color:#7A5300}
.ct-red.off{background:#FBE3EC;color:#A3124F}
.ct-prog{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:700}
.ct-prog-bar{width:120px;height:8px;border-radius:99px;background:#34403A;overflow:hidden;display:inline-block}
.ct-prog-bar span{display:block;height:8px;background:#fff;border-radius:99px;width:0;transition:width .3s}

.ct-nuevo{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:14px;padding:16px 20px 0}
.ct-nuevo-op{background:#fff;border:1px solid #D5DBD7;border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:8px}
.ct-nuevo-t{font-weight:800;font-size:17px}
.ct-nuevo-s{font-size:14px;color:#5B6660;line-height:1.4}
.ct-fila{display:flex;gap:10px;align-items:center;flex-wrap:wrap}
.ct-sel,.ct-in{min-height:44px;border:1px solid #C3CBC6;border-radius:10px;padding:0 12px;font-family:inherit;font-size:15px;background:#fff;color:#16201B;flex:1 1 200px;min-width:0}
.ct-lista{display:flex;flex-direction:column;gap:10px;padding:16px 20px}
.ct-lcard{display:flex;align-items:center;gap:16px;background:#fff;border:1px solid #D5DBD7;border-radius:14px;padding:14px 16px;flex-wrap:wrap}
.ct-lcard.cerrado{opacity:.85}
.ct-lcard-main{flex:1 1 320px;display:flex;flex-direction:column;gap:4px;min-width:0}
.ct-lcard-t{font-weight:800;font-size:17px}
.ct-lcard-s{font-size:13.5px;color:#5B6660}
.ct-lbar{height:7px;border-radius:99px;background:#E4E8E5;overflow:hidden;max-width:360px}
.ct-lbar div{height:7px;background:#1E5E45;border-radius:99px}
.ct-lcard-acc{display:flex;gap:8px}
.ct-vacio{padding:26px 20px;color:#5B6660;font-size:16px}
.ct-pie{padding:10px 20px 16px;font-size:13.5px;color:#3E4943;line-height:1.45}

.ct-barra{display:flex;gap:12px;padding:14px 20px 0;flex-wrap:wrap}
.ct-buscar{flex:1 1 380px;display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #D5DBD7;border-radius:14px;padding:6px 8px 6px 14px;min-width:0}
.ct-lupa{font-size:24px;color:#5B6660}
.ct-q{flex:1 1 auto;min-width:0;height:48px;border:0;background:transparent;font-size:22px;font-weight:600;color:#16201B;font-family:inherit}
.ct-q:focus{outline:none}
.ct-foto-chk{display:flex;align-items:center;gap:10px;background:#fff;border:1px solid #D5DBD7;border-radius:14px;padding:0 18px;font-size:16px;font-weight:700;cursor:pointer;min-height:60px;white-space:nowrap}
.ct-foto-chk input{width:26px;height:26px;accent-color:#A3124F;margin:0}
.ct-ean{display:flex;align-items:center;gap:10px;border:0;border-radius:14px;background:#A3124F;color:#fff;font-family:inherit;font-size:16px;font-weight:800;padding:0 22px;min-height:60px;cursor:pointer;white-space:nowrap}
.ct-ean:hover{background:#7A0D3B}
.ct-cerrado-aviso{margin:14px 20px 0;padding:12px 16px;border-radius:12px;background:#E2ECE6;color:#1E5E45;font-weight:700}

.ct-sug{margin:10px 20px 0;background:#fff;border:1px solid #D5DBD7;border-radius:14px;padding:6px;display:flex;flex-direction:column;max-height:300px;overflow:auto}
.ct-sug-i{text-align:left;min-height:46px;border:0;background:transparent;border-radius:10px;padding:8px 12px;font-family:inherit;font-size:15px;cursor:pointer;color:#16201B}
.ct-sug-i:hover{background:#F1F4F2}
.ct-enc{position:relative;margin:12px 20px 0;display:flex;align-items:center;gap:18px;background:#fff;border:2px solid #A3124F;border-radius:16px;padding:12px 48px 12px 14px;flex-wrap:wrap}
.ct-enc.fuera{border-style:dashed}
.ct-enc.nada{font-size:17px;font-weight:600;border-style:dashed;padding:18px 48px 18px 18px}
.ct-enc > .ct-x{position:absolute;right:8px;top:8px}
.ct-enc-foto{width:170px;height:126px;object-fit:contain;background:#F6F7F6;border-radius:10px;flex:0 0 170px}
.ct-enc-main{flex:1 1 280px;display:flex;flex-direction:column;gap:4px;min-width:0}
.ct-enc-cod{font-size:24px;font-weight:800;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ct-enc-ean{font-size:13px;font-weight:700;background:#EEF1EF;border-radius:99px;padding:3px 10px}
.ct-enc-pp{font-family:'Bricolage Grotesque',sans-serif;font-weight:700;font-size:22px;line-height:1.15}
.ct-enc-gen{font-size:15px;color:#5B6660}
.ct-enc-der{display:flex;flex-direction:column;align-items:flex-end;gap:6px}
.ct-enc-det{font-size:14px;font-weight:700;color:#3E4943}
.ct-enc-nums{display:flex;gap:22px}
.ct-enc-nums div{display:flex;flex-direction:column;align-items:flex-end}
.ct-enc-nums span{font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:#5B6660}
.ct-enc-nums b{font-family:'Bricolage Grotesque',sans-serif;font-size:38px;line-height:1}

.ct-tabla-box{margin:12px 20px 0;background:#fff;border:1px solid #D5DBD7;border-radius:16px;overflow:auto;flex:1 1 auto}
.ct-tabla{min-width:1210px}
.ct-th,.ct-fila-art{display:grid;grid-template-columns:136px 140px minmax(150px,1fr) 352px 150px 118px 128px 48px;align-items:center}
.ct-th{position:sticky;top:0;z-index:1;background:#F6F7F6;border-bottom:1px solid #D5DBD7;font-size:12.5px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:#3E4943}
.ct-th > div{padding:11px 10px}
.ct-th .c{text-align:center}
.ct-fila-art{border-bottom:1px solid #E4E8E5;min-height:78px;padding:8px 0;background:#fff}
.ct-fila-art.hecho{background:#F3F8F5}
.ct-fila-art.marcada{background:#FBEFF4;box-shadow:inset 5px 0 0 #A3124F}
.ct-fila-art > div{padding:0 8px;min-width:0}
.ct-cod{display:flex;align-items:center;gap:8px;font-weight:800;font-size:17px}
.ct-mini{width:44px;height:44px;object-fit:contain;background:#F6F7F6;border-radius:8px;flex:0 0 44px}
.ct-app.sin-foto .ct-mini{display:none}
.ct-gen{font-size:14px;color:#3E4943}
.ct-pp{font-size:14.5px;font-weight:700;line-height:1.25}
.ct-agr{display:inline-block;margin-left:6px;font-size:11px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;color:#5B6660;background:#EEF1EF;border-radius:99px;padding:2px 8px;vertical-align:middle}
.ct-lotes{display:flex;flex-direction:column;gap:6px}
.ct-lote{display:flex;align-items:center;gap:4px}
.ct-de{font-size:14px;font-weight:700;color:#5B6660;padding:0 2px;white-space:nowrap}
.ct-pm{width:42px;height:44px;border-radius:10px;border:1px solid #C3CBC6;background:#fff;font-size:24px;font-weight:600;color:#16201B;cursor:pointer;padding:0;font-family:inherit}
.ct-pm:active{background:#EEF1EF}
.ct-n{width:52px;height:44px;border:1px solid #C3CBC6;border-radius:10px;text-align:center;font-size:21px;font-weight:800;color:#16201B;font-family:inherit;background:#fff;padding:0}
.ct-uxc{width:104px;height:44px;border:1px solid #C3CBC6;border-radius:10px;font-size:17px;font-weight:800;color:#16201B;background:#fff;padding:0 4px;font-family:inherit}
.ct-x{width:40px;height:44px;border:0;background:transparent;color:#5B6660;font-size:22px;cursor:pointer;border-radius:10px}
.ct-x:hover{background:#EEF1EF;color:#16201B}
.ct-lotes-pie{display:flex;align-items:center;justify-content:space-between;gap:8px}
.ct-mas-lote{min-height:34px;padding:0 10px;border-radius:8px;border:1px dashed #A3124F;background:#fff;color:#A3124F;font-size:13.5px;font-weight:800;cursor:pointer;font-family:inherit}
.ct-bultos{font-size:13.5px;font-weight:800}
.ct-sueltas{display:flex;align-items:center;justify-content:center;gap:4px}
.ct-ap,.ct-co{display:flex;flex-direction:column;align-items:center;gap:3px}
.ct-big{width:100px;height:48px;border:2px solid #C3CBC6;border-radius:10px;text-align:center;font-size:23px;font-weight:800;color:#16201B;font-family:inherit;background:#fff;padding:0}
.ct-fila-art.falta .ct-co .ct-big{border-color:#A3124F}
.ct-fila-art.hecho .ct-co .ct-big{border-color:#1E5E45;background:#F3F8F5}
.ct-ref{font-size:12px;color:#5B6660}
.ct-estado{font-size:12px;font-weight:800}
.ct-fila-art.falta .ct-estado{color:#A3124F}
.ct-fila-art.hecho .ct-estado{color:#1E5E45}
.ct-app.solo-ver .ct-pm,.ct-app.solo-ver .ct-mas-lote,.ct-app.solo-ver .ct-acc,.ct-app.solo-ver .ct-x[data-act]{visibility:hidden}
.ct-app.solo-ver input,.ct-app.solo-ver select{pointer-events:none;background:#F6F7F6}
.ct-app input[type=number]::-webkit-inner-spin-button,.ct-app input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.ct-app input[type=number]{-moz-appearance:textfield}

.ct-toast{position:fixed;left:50%;bottom:28px;transform:translateX(-50%) translateY(30px);opacity:0;pointer-events:none;
  background:#16201B;color:#fff;font-weight:700;font-size:16px;padding:14px 20px;border-radius:12px;z-index:9999;transition:.25s;max-width:90vw}
.ct-toast.on{opacity:1;transform:translateX(-50%) translateY(0)}

.ct-cam{position:fixed;inset:0;z-index:9998;background:#0B0F0D;color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;padding:20px}
.ct-cam-t{font-family:'Bricolage Grotesque',sans-serif;font-size:26px;font-weight:700;text-align:center}
.ct-cam-visor{position:relative;width:min(680px,92vw);aspect-ratio:16/9;border-radius:20px;overflow:hidden;background:#26302B}
.ct-cam-visor video{width:100%;height:100%;object-fit:cover}
.ct-cam-linea{position:absolute;left:6%;right:6%;top:50%;height:3px;background:#FF4D8D;box-shadow:0 0 14px 2px #FF4D8D;animation:ctBarrido 2.4s ease-in-out infinite}
@keyframes ctBarrido{0%{top:18%}50%{top:82%}100%{top:18%}}
@media (prefers-reduced-motion: reduce){.ct-cam-linea{animation:none}}
.ct-cam-s{font-size:16px;color:#B9C4BE;text-align:center;max-width:640px}
.ct-cam-manual{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:center;font-size:14px;color:#B9C4BE}
.ct-cam-manual .ct-in{flex:0 1 220px}

/* /conteo en la tablet: sin el menú de Skynet, de borde a borde */
body.modo-tablet .sidebar,body.modo-tablet .topbar{display:none !important}
body.modo-tablet .main{max-width:none;padding:0}
body.modo-tablet #conteo-panel{padding:0}
body.modo-tablet .ct-app{border-radius:0;min-height:100vh}
body.modo-tablet .ct-tabla-box{margin-bottom:0}
/* v209.230 — Conteo: artículos unificados */
.ct-enc-reem{margin:12px 20px 0;padding:12px 16px;border-radius:14px 14px 0 0;background:#A3124F;color:#fff;font-size:16px;line-height:1.35}
.ct-enc.con-reem{margin-top:0;border-radius:0 0 16px 16px}
.ct-unif{font-size:12.5px;font-weight:700;color:#5B6660;margin-top:3px}
.ct-unif-box{margin:0 20px;background:#fff;border:1px solid #D5DBD7;border-radius:14px;padding:12px 16px;display:flex;flex-direction:column;gap:8px;font-size:14.5px}
.ct-unif-box label.ct-btn{cursor:pointer}
/* v209.259 mails a clientes: tildar por rango de fechas */
.cm-rango{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:6px 0 8px;padding:8px 10px;border:1px solid var(--border);border-radius:10px;background:var(--surface)}
.cm-rango label{display:inline-flex;align-items:center;gap:4px}
/* v209.267 a qué vendedor va la copia */
.cm-vend{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap}
.cm-vend select{font:inherit;font-size:12px;padding:2px 4px}
/* v209.269 Excel Diego */
.xd-caja{max-width:760px;background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:18px 20px;display:flex;flex-direction:column;gap:10px}
.xd-arch{font-size:18px}
.xd-bts{display:flex;gap:10px;flex-wrap:wrap;margin-top:6px}
.xd-bts a.disabled{pointer-events:none;opacity:.5}
.xd-pie{font-size:12.5px}
/* v209.270 filtro de deuda del mapa del Armado */
.rb-mf-deuda{font:inherit;font-size:13px;padding:6px 8px;border-radius:8px;border:1px solid var(--border);background:var(--surface);color:var(--text);margin-left:6px}
/* v209.261 stock: filtros de «Todo el stock» */
.stk-filtro{display:inline-flex;align-items:center;gap:5px;font-size:12.5px;font-weight:600;margin-left:12px;cursor:pointer}
/* v209.257 medidas y ubicación */
.ct-ficha{margin:10px 20px 0;background:#fff;border:2px solid #1E5E45;border-radius:16px;padding:12px 14px;display:flex;flex-direction:column;gap:10px}
.ct-ficha.falta{border-color:#A3124F;background:#FFF8FB}
.ct-ficha-t{font-weight:800;font-size:17px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ct-ficha-por{font-size:13px;font-weight:600;color:#5B6660}
.ct-med{display:flex;align-items:flex-end;gap:10px;flex-wrap:wrap}
.ct-med-l{display:flex;flex-direction:column;gap:4px;font-size:13px;font-weight:700;color:#5B6660}
.ct-med-in{display:inline-flex;align-items:center;gap:6px}
.ct-med-in i{font-style:normal;font-weight:700;color:#5B6660}
.ct-med-n{width:84px}
.ct-ubs{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ct-ubs-t{font-size:13px;font-weight:700;color:#5B6660;margin-right:4px}
.ct-ub{display:inline-flex;align-items:center;gap:2px;background:#16201B;color:#fff;font-weight:800;font-size:17px;border-radius:10px;padding:4px 4px 4px 12px}
.ct-ub button{border:0;background:transparent;color:#fff;font-size:20px;width:34px;height:34px;cursor:pointer;border-radius:8px}
.ct-ub button:hover{background:rgba(255,255,255,.15)}
.ct-ub-vacio{font-size:14px;color:#A3124F;font-weight:700}
.ct-ub-in{flex:0 0 96px;text-transform:uppercase}
.ct-fcard .ct-med,.ct-fcard .ct-ubs{margin-top:6px}
.ct-unif-tabla{display:flex;flex-direction:column;border-top:1px solid #E4E8E5;margin-top:4px}
.ct-unif-f{display:grid;grid-template-columns:minmax(0,1fr) 28px minmax(0,1fr);gap:8px;padding:8px 0;border-bottom:1px solid #E4E8E5;font-size:13.5px}
.ct-unif-viejo{color:#5B6660;text-decoration:line-through}
.ct-unif-flecha{text-align:center;font-weight:800;color:#A3124F}
/* v209.231 — Conteo: lo que entró en cada contenedor */
.ct-hist{font-size:13px;font-weight:600;color:#3E4943;margin-top:2px}
/* v209.232 — Bultos: ver el pedido y un cliente por línea */
.bu-ped-ver,.bu-ped-btn{border:1px solid var(--border,#e7e7ee);background:#fff;border-radius:8px;padding:4px 9px;
  font-family:inherit;font-size:13.5px;font-weight:800;color:var(--ink,#191B22);cursor:pointer;white-space:nowrap}
.bu-ped-ver:hover,.bu-ped-btn:hover{border-color:var(--accent,#FF5A3C);color:var(--accent-dark,#E8421F)}
.bu-agrup td{vertical-align:top}
.bu-sub{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:6px 0}
.bu-sub + .bu-sub{border-top:1px dashed var(--border,#e7e7ee)}
.bu-sub-ped{display:flex;gap:6px;flex-wrap:wrap}
.bu-sub-fecha{font-weight:800;min-width:46px}
.bu-sub-bul{min-width:86px}
.bu-sub-quien{font-size:12px}
.bu-sub .bu-acc{margin-left:auto}
.bu-modal{position:fixed;inset:0;background:rgba(20,22,30,.45);z-index:9000;display:flex;align-items:center;justify-content:center;padding:16px}
.bu-modal-box{background:#fff;border-radius:16px;padding:18px 20px;width:min(760px,100%);max-height:86vh;display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.bu-modal-t{display:flex;align-items:center;gap:8px;font-size:16px;flex-wrap:wrap;padding-right:36px;position:relative}
.bu-modal-x{position:absolute;right:-6px;top:-6px;width:40px;height:40px;border:0;background:transparent;font-size:24px;cursor:pointer;border-radius:10px}
.bu-modal-x:hover{background:#f1f1f4}
.bu-modal-tabla{overflow:auto}
.bu-modal-acc{display:flex;justify-content:flex-end}
.bu-modal-acc .btn-ghost{width:auto}
/* v209.233 — Armado: cliente peligroso */
.rb-card.rb-peligro{border:2px solid #B3261E;box-shadow:0 0 0 3px #FBE0DD}
.rb-pel{margin:8px 0 4px;display:flex;flex-direction:column;gap:8px}
.rb-pel.on{background:#FFF4F2;border:1px solid #F3C4BD;border-radius:12px;padding:10px 12px}
.rb-pel-top{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rb-pel-chk{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:800;color:#8C1D18;cursor:pointer;
  border:1px solid #F3C4BD;background:#fff;border-radius:999px;padding:4px 10px}
.rb-pel-chk input{margin:0;width:16px;height:16px;accent-color:#B3261E}
.rb-pel-aviso{font-size:13px;font-weight:800;color:#fff;background:#B3261E;border-radius:8px;padding:4px 10px}
.rb-pel-t{font-size:12px;font-weight:800;color:#8C1D18;text-transform:uppercase;letter-spacing:.04em}
.rb-pel-sucs{display:flex;flex-direction:column;gap:6px}
.rb-pel-suc{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #F3C4BD;border-radius:10px;padding:6px 10px;font-size:13.5px}
.rb-pel-suc.pel{border-color:#B3261E}
.rb-pel-suc > span:nth-child(2){margin-left:auto}
.rb-pel-tag{display:inline-block;font-size:11px;font-weight:900;color:#fff;background:#B3261E;border-radius:6px;padding:1px 6px;margin-left:4px}
.rb-pel-x{width:32px;height:32px;border:0;background:transparent;font-size:20px;color:#8C1D18;cursor:pointer;border-radius:8px}
.rb-pel-x:hover{background:#FBE0DD}
.rb-pel-buscar{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:#8C1D18}
.rb-pel-buscar input{padding:8px 10px;border:1px solid #F3C4BD;border-radius:8px;font-size:14px;font-family:inherit;max-width:420px}
.rb-pel-res{display:flex;flex-direction:column;gap:2px;max-width:520px}
.rb-pel-op{text-align:left;border:0;background:#fff;border-radius:8px;padding:7px 10px;font-family:inherit;font-size:13.5px;cursor:pointer;color:var(--text,#23262E)}
.rb-pel-op:hover{background:#FBE0DD}
/* v209.235 — el tilde y el buscador de sucursal, en la fila de Acción */
.rb-accion .rb-pel-chk{padding:6px 10px;border-radius:8px;white-space:nowrap}
.rb-accion .rb-pel-buscar{position:relative;flex:1 1 240px;display:block;min-width:200px}
.rb-accion .rb-pel-buscar input{width:100%;max-width:none;box-sizing:border-box}
.rb-accion .rb-pel-res{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:20;display:flex;flex-direction:column;
  background:#fff;border-radius:10px;box-shadow:0 10px 30px rgba(20,22,30,.18)}
.rb-accion .rb-pel-res:empty{display:none}
.rb-accion select{flex:0 1 220px}
.ct-sr{position:absolute;left:-9999px}
/* v209.236 — VERO2, la que se asoma por detrás de un borde: sube hasta la mitad, mira
   a un lado y al otro, baja; y otra vez. Las manitos quedan agarradas del borde. */
.skl-track-espia{display:flex;justify-content:center;height:190px;overflow:visible;margin:6px 0 8px}
.skl-espia{position:relative;width:250px;height:190px;overflow:hidden}
.skl-espia-cara{position:absolute;left:50%;bottom:0;width:168px;margin-left:-84px;z-index:1;
  transform-origin:50% 100%;animation:sklAsoma 6s ease-in-out infinite}
.skl-espia-borde{position:absolute;left:0;right:0;bottom:0;height:40px;z-index:2;border-radius:10px 10px 0 0;
  background:linear-gradient(#9C7A58,#7A5B3F);box-shadow:inset 0 3px 0 #B8936D}
.skl-espia-mano{position:absolute;bottom:22px;width:58px;height:31px;z-index:3;animation:sklManos .5s ease-out both}
.skl-espia-mano.izq{left:38px;transform:rotate(-4deg)}
.skl-espia-mano.der{right:38px;transform:rotate(4deg)}
@keyframes sklManos{from{opacity:0;translate:0 14px}to{opacity:1;translate:0 0}}
@keyframes sklAsoma{
  0%,6%{transform:translateY(100%) rotate(0)}
  18%{transform:translateY(15%) rotate(0)}
  27%{transform:translateY(15%) translateX(-14px) rotate(-8deg)}
  39%{transform:translateY(15%) translateX(14px) rotate(8deg)}
  50%{transform:translateY(15%) translateX(-12px) rotate(-7deg)}
  58%{transform:translateY(15%) rotate(0)}
  70%,100%{transform:translateY(100%) rotate(0)}
}
@media(prefers-reduced-motion:reduce){.skl-espia-cara{animation:none;transform:translateY(15%)}.skl-espia-mano{animation:none}}
/* v209.237 — Deuda por WhatsApp: los clientes en TARJETAS y la ficha grande */
.cw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-top:10px}
.cw-card{position:relative;display:flex;flex-direction:column;gap:6px;background:var(--surface,#fff);
  border:1px solid var(--border,#E9E6DD);border-radius:12px;padding:11px 12px;cursor:pointer;
  transition:border-color .15s, box-shadow .15s;min-height:84px}
.cw-card:hover,.cw-card:focus-visible{border-color:var(--accent,#FF5A3C);box-shadow:0 4px 14px rgba(20,22,30,.08);outline:none}
.cw-card.sel{border-color:var(--accent,#FF5A3C);background:var(--accent-soft,#FFE7E0)}
.cw-card.sin-tel{border-style:dashed}
.cw-card-chk{position:absolute;top:6px;right:6px;display:flex;align-items:center;justify-content:center;width:30px;height:30px;cursor:pointer}
.cw-card-chk input{width:17px;height:17px;margin:0;cursor:pointer}
.cw-card-nom{font-weight:800;font-size:13.5px;line-height:1.25;padding-right:26px;display:-webkit-box;
  -webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.cw-card-num{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-top:auto}
.cw-card-num b{font-size:16px;color:var(--red,#D8362B);font-variant-numeric:tabular-nums}
.cw-card-num span{font-size:12.5px;font-weight:700;color:var(--muted,#7A8090);white-space:nowrap}
.cw-card-aviso{font-size:11.5px;font-weight:700;color:var(--red,#D8362B)}
#wa-modal .modal.cw-grande{width:760px}
.cw-ficha{display:flex;flex-direction:column;gap:12px}
.cw-ficha-h{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding-right:30px}
.cw-ficha-h h3{margin:0;font-size:20px}
.cw-ficha-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}
.cw-ficha-kpis > div{background:var(--bg,#F4F2EC);border-radius:12px;padding:10px 12px;display:flex;flex-direction:column;gap:2px}
.cw-ficha-kpis span{font-size:11.5px;font-weight:700;color:var(--muted,#7A8090);text-transform:uppercase;letter-spacing:.04em}
.cw-ficha-kpis b{font-size:18px}
.cw-ficha-kpis a{font-size:12px}
.cw-ficha-tel{display:flex;align-items:center;gap:12px;flex-wrap:wrap;font-size:13.5px}
.cw-prueba-dest{background:#FFF4D6;color:#7A5300;border-radius:10px;padding:8px 12px}
.cw-dest{background:var(--green-soft,#DBF3E4);color:#0E5E33;border-radius:10px;padding:8px 12px}
.cw-ficha-sec{font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#7A8090);margin-top:4px}
.cw-pls{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px}
.cw-pl{display:flex;align-items:center;gap:8px;border:1px solid var(--border,#E9E6DD);border-radius:10px;padding:9px 11px;cursor:pointer;font-size:13.5px}
.cw-pl.on{border-color:var(--accent,#FF5A3C);background:var(--accent-soft,#FFE7E0)}
.cw-pl input{margin:0}
.cw-vars{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}
.cw-vars label{display:flex;flex-direction:column;gap:3px;font-size:12px;font-weight:700;color:var(--muted,#7A8090)}
.cw-vars input{padding:8px 10px;border:1px solid var(--border,#E9E6DD);border-radius:8px;font-size:14px;font-family:inherit;color:var(--text,#23262E)}
.cw-prev{background:#dcf8c6;color:#111b21;border-radius:12px 12px 12px 3px;padding:11px 13px;font-size:14.5px;line-height:1.45;max-width:520px}
/* v209.238 — los archivos que mandan los clientes, dentro del globito */
.wa-adj-img{display:block;max-width:240px;max-height:240px;border-radius:10px;margin-bottom:6px;object-fit:cover}
.wa-adj{display:inline-block;margin-bottom:6px;font-weight:700;font-size:13px}
/* v209.241 — Rendiciones: comprobantes + mensaje para el grupo de Pagos */
.rd-tabs{display:flex;gap:4px;border-bottom:1px solid var(--border,#E9E6DD);margin:0 0 12px}
.rd-tabs button{background:none;border:0;border-bottom:3px solid transparent;padding:9px 14px;font:inherit;font-weight:800;
  font-size:14px;color:var(--muted,#7A8090);cursor:pointer;margin-bottom:-1px}
.rd-tabs button.on{color:var(--ink,#191B22);border-bottom-color:var(--accent,#FF5A3C)}
.rd-tabs button:focus-visible{outline:2px solid var(--accent,#FF5A3C);outline-offset:2px}
.rd-badge{display:inline-block;min-width:18px;padding:0 6px;border-radius:999px;background:var(--accent,#FF5A3C);color:#fff;font-size:11px;line-height:18px;text-align:center}
.rd-inbox{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:10px;margin-top:10px}
.rd-in{display:flex;flex-direction:column;gap:8px;background:var(--surface,#fff);border:1px solid var(--border,#E9E6DD);border-radius:12px;padding:11px 12px}
.rd-in-h{display:flex;flex-direction:column;gap:2px}
.rd-in-h .wa-muted{font-size:12px}
.rd-thumbs{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.rd-thumbs .rd-thumb{width:52px;height:52px}
.rd-mas{font-weight:800;font-size:12px;color:var(--muted,#7A8090)}
.rd-txt{font-size:12.5px;color:var(--text,#23262E);font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rd-thumb{display:flex;align-items:center;justify-content:center;width:100%;aspect-ratio:1;border-radius:9px;overflow:hidden;
  background:var(--bg,#F4F2EC);border:1px solid var(--border,#E9E6DD);text-decoration:none;color:var(--muted,#7A8090)}
.rd-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.rd-thumb-x{font-size:11.5px;font-weight:700;padding:4px;text-align:center;word-break:break-word}
.rd-tabla-wrap{overflow-x:auto}
.rd-tabla td,.rd-tabla th{font-variant-numeric:tabular-nums}
.rd-tabla tr.rd-off td{opacity:.55}
.rd-dias{font-size:12px;font-weight:800;color:var(--red,#D8362B)}
#wa-modal .modal.rd-grande{width:min(980px,96vw)}
.rd-comps{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}
.rd-comp{display:flex;flex-direction:column;gap:5px;border:1px solid var(--border,#E9E6DD);border-radius:11px;padding:7px;background:var(--surface,#fff)}
.rd-comp.on{border-color:var(--accent,#FF5A3C);background:var(--accent-soft,#FFE7E0)}
.rd-comp.usado{opacity:.5}
.rd-comp-chk{display:flex;align-items:center;gap:6px;font-size:12.5px;font-weight:700;cursor:pointer}
.rd-monto{width:100%;box-sizing:border-box;padding:7px 8px;border:1px solid var(--border,#E9E6DD);border-radius:8px;font:inherit;font-size:14px;
  font-variant-numeric:tabular-nums;background:var(--surface,#fff);color:var(--text,#23262E)}
.rd-monto:disabled{background:var(--bg,#F4F2EC)}
.rd-comp-t{font-size:11.5px;font-style:italic;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rd-comp-f{font-size:11px;color:var(--muted,#7A8090)}
.rd-comp-m{font-weight:800;font-size:13.5px;text-align:right;font-variant-numeric:tabular-nums}
.rd-rep{font-size:11px;font-weight:800;color:var(--red,#D8362B)}
.rd-cuenta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}
.rd-cuenta > div{background:var(--bg,#F4F2EC);border-radius:12px;padding:9px 12px;display:flex;flex-direction:column;gap:1px}
.rd-cuenta span{font-size:11.5px;font-weight:700;color:var(--muted,#7A8090);text-transform:uppercase;letter-spacing:.04em}
.rd-cuenta b{font-size:18px;font-variant-numeric:tabular-nums}
.rd-cuenta em{font-style:normal;font-size:12px;color:var(--muted,#7A8090)}
.rd-cuenta .rd-sobra b{color:var(--red,#D8362B)}
.rd-ok-sobra{display:flex;align-items:center;gap:8px;font-weight:700;font-size:13.5px}
.rd-msg{margin:0;background:#dcf8c6;color:#111b21;border-radius:12px 12px 12px 3px;padding:11px 13px;font-family:inherit;font-weight:600;font-size:15px;line-height:1.5;
  white-space:pre-wrap;max-width:520px}
.rd-pasos{font-size:13.5px;background:var(--bg,#F4F2EC);border-radius:12px;padding:10px 14px}
.rd-pasos ol{margin:6px 0 0;padding-left:20px;display:flex;flex-direction:column;gap:3px}
.rd-hist{font-size:12.5px;color:var(--muted,#7A8090)}
.rd-hist summary{cursor:pointer;font-weight:700}
.rd-anular{color:var(--red,#D8362B)}
.rd-q{width:100%;box-sizing:border-box;padding:10px 12px;border:1px solid var(--border,#E9E6DD);border-radius:10px;font:inherit;font-size:15px;
  background:var(--surface,#fff);color:var(--text,#23262E)}
.rd-res{display:flex;flex-direction:column;gap:6px;max-height:50vh;overflow:auto}
.rd-res-it{display:flex;align-items:baseline;gap:8px;text-align:left;background:var(--surface,#fff);border:1px solid var(--border,#E9E6DD);
  border-radius:10px;padding:9px 12px;font:inherit;cursor:pointer;color:var(--text,#23262E)}
.rd-res-it:hover{border-color:var(--accent,#FF5A3C)}
.rd-res-d{margin-left:auto;font-weight:800;font-variant-numeric:tabular-nums}
#wa-modal-actions a.btn-ghost{text-decoration:none;display:inline-flex;align-items:center}
/* v209.242 — Deuda por WhatsApp en pantalla completa, con su propia barra */
.cwf{display:block}
.cwf-nav{display:none}
body.cw-full .sidebar,body.cw-full .topbar,body.cw-full #ticker-bar,body.cw-full #conn-banner,
body.cw-full #kpis,body.cw-full #tips{display:none !important}
body.cw-full .main{max-width:none;padding:0}
body.cw-full .cwf{display:flex;align-items:flex-start;min-height:100vh}
body.cw-full .cwf-nav{display:flex;flex-direction:column;gap:3px;width:214px;flex-shrink:0;background:var(--ink,#191B22);color:#C9CCD6;
  padding:22px 12px;position:sticky;top:0;height:100vh;overflow-y:auto;box-sizing:border-box}
body.dark.cw-full .cwf-nav{background:#101318}
.cwf-brand{font-weight:800;font-size:16px;line-height:1.25;color:#fff;padding:0 10px 16px}
.cwf-it{display:flex;align-items:center;gap:10px;width:100%;background:none;border:0;border-radius:10px;padding:10px;
  color:#C9CCD6;font:inherit;font-weight:700;font-size:14px;cursor:pointer;text-align:left}
.cwf-it:hover{background:rgba(255,255,255,.07);color:#fff}
.cwf-it.on{background:var(--accent,#FF5A3C);color:#fff}
.cwf-it:focus-visible{outline:2px solid var(--accent,#FF5A3C);outline-offset:2px}
.cwf-ic{width:20px;text-align:center}
.cwf-n{margin-left:auto;min-width:20px;padding:0 6px;border-radius:999px;background:rgba(255,255,255,.18);color:#fff;font-size:11.5px;line-height:20px;text-align:center}
.cwf-it.on .cwf-n{background:rgba(0,0,0,.18)}
.cwf-salir{margin-top:auto;color:#9aa0ad;font-weight:600}
body.cw-full .cwf-main{flex:1;min-width:0;padding:24px 30px 60px;max-width:1240px}
/* v209.263 — la barra del módulo va ARRIBA (Adriano: «así tenemos más lugar abajo para los
   clientes y sus chats»). Se pisa el layout lateral de v209.242. */
body.cw-full .cwf{flex-direction:column;align-items:stretch}
body.cw-full .cwf-nav{flex-direction:row;align-items:center;flex-wrap:nowrap;overflow-x:auto;width:auto;min-height:0;
  height:auto;position:sticky;top:0;z-index:20;padding:8px 14px;gap:4px}
body.cw-full .cwf-brand{padding:0 14px 0 4px;white-space:nowrap;font-size:15px}
body.cw-full .cwf-brand br{display:none}
body.cw-full .cwf-it{width:auto;flex:0 0 auto;padding:8px 12px;white-space:nowrap}
body.cw-full .cwf-n{margin-left:6px}
body.cw-full .cwf-salir{margin-top:0;margin-left:auto}
body.cw-full .cwf-main{max-width:1400px;margin:0 auto;width:100%;padding:18px 24px 50px;box-sizing:border-box}
body.cw-full.cw-chat .cwf-main{max-width:none;padding:0}
body.cw-full.cw-chat .emp-head{display:none}

/* la bandeja: lista | chat | ficha, alto de pantalla */
.bw{display:grid;grid-template-columns:340px minmax(0,1fr) 320px;height:calc(100vh - 58px);min-height:420px}
.bw-col{min-width:0;min-height:0;display:flex;flex-direction:column}
.bw-list{border-right:1px solid var(--border);background:var(--surface)}
.bw-list-h{padding:10px;display:flex;flex-direction:column;gap:8px;border-bottom:1px solid var(--border)}
.bw-search{width:100%;box-sizing:border-box;border:1px solid var(--border);border-radius:10px;padding:9px 11px;background:var(--bg);color:var(--text);font:inherit}
.bw-chips{display:flex;gap:5px;flex-wrap:wrap}
.bw-chip{border:1px solid var(--border);background:var(--surface);border-radius:999px;padding:3px 10px;font:inherit;font-size:12px;font-weight:600;color:var(--muted);cursor:pointer}
.bw-chip b{color:var(--text)}
.bw-chip.on{background:var(--ink);border-color:var(--ink);color:#fff}
.bw-chip.on b{color:#fff}
.bw-convs{overflow-y:auto;flex:1}
.bw-conv{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:2px 10px;align-items:center;width:100%;text-align:left;
  padding:10px 12px;border:0;border-bottom:1px solid var(--border);border-left:3px solid transparent;background:none;font:inherit;color:inherit;cursor:pointer}
.bw-conv:hover{background:var(--bg)}
.bw-conv.on{background:var(--accent-soft);border-left-color:var(--accent)}
.bw-av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:700;font-size:13px;grid-row:span 2;flex-shrink:0}
.bw-nom{font-weight:700;font-size:13.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bw-hora{font-size:11px;color:var(--muted);text-align:right;white-space:nowrap}
.bw-prev{font-size:12.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.bw-meta{display:flex;justify-content:flex-end}
.bw-dot{min-width:18px;height:18px;border-radius:999px;background:#25D366;color:#fff;font-size:10.5px;font-weight:700;display:grid;place-items:center;padding:0 5px}
.bw-tags{grid-column:2 / 4;display:flex;gap:4px;flex-wrap:wrap}
.bw-tags .cm-chip{font-size:10.5px;padding:1px 7px}
.bw-chat{background:#EFEAE2;min-height:0}
.bw-chat-h{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--surface);border-bottom:1px solid var(--border);flex-wrap:wrap}
.bw-who{display:flex;flex-direction:column;min-width:0;flex:1}
.bw-who span{font-size:12px;color:var(--muted)}
.bw-ventana{font-size:11.5px;font-weight:700;border-radius:999px;padding:3px 9px}
.bw-ventana.ab{background:#DBF3E4;color:#15924D}
.bw-ventana.ce{background:#FBE0DD;color:#D23A2F}
.bw-back,.bw-fichabtn{display:none}
.bw-back{border:0;background:none;font-size:26px;line-height:1;cursor:pointer;color:var(--text);padding:0 4px}
.bw-msgs{flex:1;overflow-y:auto;padding:14px clamp(10px,3vw,40px);display:flex;flex-direction:column;gap:5px}
.bw-dia{align-self:center;font-size:11.5px;font-weight:700;color:#54656F;background:#fff;border-radius:8px;padding:3px 10px;margin:8px 0;box-shadow:0 1px 1px rgba(0,0,0,.08)}
.bw-b{max-width:min(78%,520px);padding:6px 9px 4px;border-radius:9px;line-height:1.38;font-size:14px;color:#111B21;position:relative;box-shadow:0 1px .5px rgba(0,0,0,.13);display:flex;flex-direction:column;gap:4px}
.bw-b.in{align-self:flex-start;background:#fff;border-top-left-radius:2px}
.bw-b.out{align-self:flex-end;background:#D9FDD3;border-top-right-radius:2px}
.bw-b.nota{align-self:center;background:#FFF4C9;color:#5B4500;max-width:min(90%,560px)}
.bw-org{font-size:10.5px;font-weight:700;opacity:.65}
.bw-txt{white-space:pre-wrap;overflow-wrap:anywhere}
.bw-t{align-self:flex-end;font-size:10.5px;opacity:.6}
.bw-audio{width:260px;max-width:100%;height:40px}
.bw-img{max-width:260px;width:100%;max-height:320px;object-fit:cover;border-radius:6px;cursor:zoom-in;display:block}
.bw-img.stk{width:120px;background:none}
.bw-video{max-width:280px;width:100%;border-radius:6px}
.bw-pdf{width:280px;max-width:100%;height:340px;border:1px solid #ddd;border-radius:6px;background:#fff}
.bw-doc{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:6px 10px;background:rgba(0,0,0,.05);border-radius:6px;padding:8px 10px;color:inherit;text-decoration:none;font-weight:600;font-size:13px;max-width:280px}
.bw-doc.pdf{padding:6px}
.bw-pdf-prev{display:block;width:100%;max-height:340px;object-fit:cover;object-position:top;border-radius:4px;background:#fff;border:1px solid rgba(0,0,0,.1)}
.bw-doc-n{overflow-wrap:anywhere;min-width:0}
.bw-doc-a{color:#2559D6;white-space:nowrap}
.bw-adj-pend{font-size:12.5px;opacity:.7}
.bw-banner{display:flex;align-items:center;gap:10px;flex-wrap:wrap;background:#E3ECFE;color:#2559D6;font-weight:600;font-size:13px;padding:8px 14px}
.bw-banner .btn-primary{margin-left:auto}
.bw-comp{background:var(--surface);border-top:1px solid var(--border);padding:8px 12px 10px;display:flex;flex-direction:column;gap:6px}
.bw-tabs{display:flex;gap:4px;align-items:center}
.bw-tabs button{border:0;background:none;border-radius:8px;padding:4px 10px;font:inherit;font-size:12.5px;font-weight:700;color:var(--muted);cursor:pointer}
.bw-tabs button.on{background:var(--bg);color:var(--text);box-shadow:inset 0 0 0 1px var(--border)}
.bw-tabs button.on.nota{background:#FFF4C9;color:#5B4500;box-shadow:none}
.bw-wa{margin-left:auto;font-size:12.5px;font-weight:600}
.bw-row{display:flex;gap:8px;align-items:flex-end}
.bw-row textarea{flex:1;min-width:0;resize:vertical;border:1px solid var(--border);border-radius:12px;padding:9px 11px;background:var(--bg);color:var(--text);font:inherit;min-height:44px;max-height:180px}
.bw-row textarea.nota{background:#FFF4C9;color:#5B4500}
/* v209.272: .btn-primary es width:100% en todo Skynet, y en esta fila se comía el ancho
   entero: la caja para escribir quedaba de 1 cm. El botón va a su medida. */
.bw-row .btn-primary{width:auto;flex:none;padding:11px 22px;box-shadow:none}
.bw-row textarea{min-height:64px}
/* v209.272 atar un número sin cliente desde la bandeja */
.bw-atar{margin-top:12px}
.bw-atar-res{display:flex;flex-direction:column;gap:4px;max-height:360px;overflow:auto}
.bw-aviso{font-size:12px}
.bw-vacio{margin:auto;color:var(--muted);padding:30px;text-align:center}
.bw-ficha{border-left:1px solid var(--border);background:var(--surface);overflow-y:auto;padding:14px;gap:14px}
.bw-ficha h3{margin:0;font-size:16px}
.bw-f-sec{display:flex;flex-direction:column;gap:7px}
.bw-f-t{font-size:11px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}
.bw-f-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.bw-f-grid div{background:var(--bg);border:1px solid var(--border);border-radius:10px;padding:8px 10px}
.bw-f-grid span{display:block;font-size:11px;color:var(--muted);font-weight:700;text-transform:uppercase}
.bw-f-grid b{font-size:16px;font-variant-numeric:tabular-nums}
.bw-camino{display:flex;gap:4px}
.bw-camino i{flex:1;height:6px;border-radius:3px;background:var(--border)}
.bw-camino i.ok{background:var(--accent)}
.bw-f-acc{display:flex;flex-wrap:wrap;gap:6px}
.bw-f-row{display:flex;justify-content:space-between;gap:8px;font-size:12.5px;border-bottom:1px dashed var(--border);padding-bottom:4px}
@media (max-width:1180px){.bw{grid-template-columns:300px minmax(0,1fr)}.bw-ficha{display:none}
  .bw-ficha.abierta{display:flex;position:fixed;right:0;top:0;bottom:0;width:min(340px,100%);z-index:30;box-shadow:-10px 0 30px rgba(0,0,0,.2)}
  .bw-fichabtn{display:inline-flex}}
@media (max-width:760px){.bw{grid-template-columns:minmax(0,1fr)}.bw.en-chat .bw-list{display:none}.bw:not(.en-chat) .bw-chat{display:none}.bw-back{display:inline-flex}}
@media(max-width:880px){
  body.cw-full .cwf{flex-direction:column}
  body.cw-full .cwf-nav{width:100%;height:auto;position:relative;flex-direction:row;flex-wrap:wrap;padding:10px 12px}
  .cwf-brand{display:none}
  .cwf-it{width:auto;padding:8px 10px}
  .cwf-salir{margin-top:0}
  body.cw-full .cwf-main{padding:16px}
}
.cwb-atajos{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:14px}
.cwb-atajo{background:var(--surface,#fff);border:1px solid var(--border,#E9E6DD);border-radius:999px;padding:7px 14px;font:inherit;
  font-size:13.5px;color:var(--text,#23262E);cursor:pointer}
.cwb-atajo:hover{border-color:var(--accent,#FF5A3C)}
.cwb-sec{margin:0 0 18px}
.cwb-h{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;font-size:15px}
.cwb-hint{font-size:12px}
.cwb-vacio{font-size:13px;color:var(--muted,#7A8090);padding:10px 2px}
.cwb-list{display:flex;flex-direction:column;gap:8px}
.cwb-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:6px 14px;align-items:start;background:var(--surface,#fff);
  border:1px solid var(--border,#E9E6DD);border-radius:12px;padding:10px 12px}
.cwb-row.cwb-venc{border-color:var(--red,#D8362B)}
.cwb-row.cwb-hecho{opacity:.65}
.cwb-main{display:flex;flex-direction:column;gap:3px;min-width:0}
.cwb-txt{font-size:13.5px;color:var(--text,#23262E);overflow-wrap:anywhere}
.cwb-prop{font-size:12.5px;color:#1d5bbf}
body.dark .cwb-prop{color:#94bbf0}
.cwb-num{text-align:right;font-weight:800;font-variant-numeric:tabular-nums;display:flex;flex-direction:column;gap:1px}
.cwb-num span{font-size:11.5px;font-weight:700;color:var(--red,#D8362B)}
.cwb-acc{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:6px}
.cwb-curso summary{cursor:pointer;padding:6px 0;font-size:15px}
.cwb-pie{font-size:12.5px;margin:6px 0 14px}
.cw-card-paso{font-size:11.5px;font-weight:700;color:var(--muted,#7A8090)}
.cw-motivo{font-size:13.5px;font-weight:700;border-radius:10px;padding:8px 12px;background:var(--bg,#F4F2EC)}
.cw-motivo.rev{background:#e3eefe;color:#1d5bbf}
body.dark .cw-motivo.rev{background:#16263e;color:#94bbf0}
.cw-est{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px}
.cw-gest{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.cw-gr{font-size:12.5px;font-weight:700;color:var(--muted,#7A8090);display:flex;align-items:center;gap:6px}
.cw-gr select{font:inherit;font-size:12.5px;padding:4px 6px;border-radius:8px;border:1px solid var(--border,#E9E6DD);background:var(--surface,#fff);color:var(--text,#23262E)}
.cwm-box{display:flex;flex-direction:column;gap:6px;max-height:280px;overflow-y:auto;background:#efeae2;border-radius:12px;padding:10px}
body.dark .cwm-box{background:#0b141a}
.cwm{max-width:78%;padding:7px 10px;border-radius:10px;font-size:13.5px;line-height:1.4;color:#111b21;overflow-wrap:anywhere}
.cwm.in{align-self:flex-start;background:#fff}
.cwm.out{align-self:flex-end;background:#dcf8c6}
.cwm span{display:block;font-size:10.5px;color:#667781;margin-top:2px;text-align:right}
.cwc{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:10px;margin-bottom:10px}
.cwc label{display:flex;flex-direction:column;gap:4px;font-size:12px;font-weight:700;color:var(--muted,#7A8090)}
.cwc select{font:inherit;font-size:14px;padding:8px 10px;border-radius:8px;border:1px solid var(--border,#E9E6DD);background:var(--surface,#fff);color:var(--text,#23262E)}
textarea.rd-q{resize:vertical;min-height:90px}
.cwb-acc .btn-primary,.cwb-acc .btn-ghost,.cw-gest .btn-primary,.cw-gest .btn-ghost,.cw-est .btn-ghost,
.rd-in .btn-primary,.rd-in .btn-ghost,.cwb-sec .ped-top-r .btn-primary{width:auto;padding:6px 12px}
.cwb-h .ped-top-r{margin-left:auto}
.cwb-sec > .btn-ghost,.cwb-sec > .btn-primary{width:auto;padding:7px 14px}
/* v209.243 — pagos recibidos, planilla y el envío al grupo y al Excel */
.rd-pasos-est{display:flex;flex-wrap:wrap;gap:6px}
.rd-paso{display:inline-block;font-size:12px;font-weight:700;border-radius:999px;padding:3px 10px;background:var(--bg,#F4F2EC);color:var(--muted,#7A8090)}
.rd-paso.ok{background:#e2f6e9;color:#1f8a4c}
.rd-paso.mal{background:#fde7ea;color:#c01933}
body.dark .rd-paso.ok{background:#14301f;color:#8fd9aa}
body.dark .rd-paso.mal{background:#3a1f25;color:#f3a6b2}
.rd-enviar{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.rd-enviar .btn-primary{width:auto;padding:10px 18px}
.rd-enviar .wa-muted{font-size:12.5px;flex:1;min-width:220px}
.rd-pasos .btn-ghost,.rd-pasos .btn-primary{width:auto;padding:4px 10px;display:inline-flex}
.rd-pasos ol li{line-height:2}
.rd-queda{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13.5px;background:#FFF4D6;color:#7A5300;border-radius:10px;padding:8px 12px}
body.dark .rd-queda{background:#352c12;color:#e6cd7a}
.rd-queda .btn-ghost{width:auto;padding:4px 10px}
.rd-aviso-comp{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13.5px;background:#e3eefe;color:#1d5bbf;border-radius:10px;padding:8px 12px}
body.dark .rd-aviso-comp{background:#16263e;color:#94bbf0}
.rd-aviso-comp .btn-primary{width:auto;padding:5px 12px}
.rd-pagos td{vertical-align:top}
.rd-estados{display:flex;flex-direction:column;gap:3px;align-items:flex-start}
.rd-acc{white-space:nowrap}
.rd-acc .btn-ghost{width:auto;padding:4px 9px;display:inline-flex}
.rd-planilla-h{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:8px}
.rd-planilla-h .btn-ghost{width:auto;padding:5px 12px}
.rd-planilla{width:100%;height:calc(100vh - 170px);min-height:420px;border:1px solid var(--border,#E9E6DD);border-radius:12px;background:#fff}
.rd-conectar{font-size:13.5px;display:flex;flex-direction:column;gap:10px;padding-left:20px}
.rd-script{font-family:ui-monospace,Consolas,monospace;font-size:11.5px;margin:6px 0}
.rd-conectar-url{display:flex;gap:8px;align-items:center;margin-top:6px}
.rd-conectar .btn-ghost,.rd-conectar .btn-primary{width:auto;padding:6px 12px}
.rd-fact-txt{font-size:13.5px;line-height:1.55;background:var(--bg,#F4F2EC);border-radius:10px;padding:8px 12px;font-variant-numeric:tabular-nums}

/* v209.247 — link de comprobantes */
.rd-link{display:flex;align-items:center;gap:8px;flex-wrap:wrap;font-size:13px;background:var(--bg,#F4F2EC);border-radius:10px;padding:8px 12px}
.rd-link .btn-ghost,.rd-pasos a.btn-primary{width:auto;padding:5px 12px;display:inline-flex;text-decoration:none}
body.dark .bw-chat{background:#0B141A}
body.dark .bw-b{color:#E9EDEF}
body.dark .bw-b.in{background:#202C33}
body.dark .bw-b.out{background:#005C4B}
body.dark .bw-b.nota{background:#3A3115;color:#F1D98A}
body.dark .bw-dia{background:#182229;color:#8696A0}
body.dark .bw-doc{background:rgba(255,255,255,.08)}
body.dark .bw-doc span{color:#8FB4FA}
