:root{
  --verde:#22a06b; --verde-osc:#178a59; --verde-claro:#e6f7ee;
  --tinta:#1b2133; --gris:#6b7390; --gris-2:#9aa0b4; --linea:#e3e6f0; --fondo:#f6f7fb;
  --ok:#22b07d; --pend:#f5a623; --alerta:#e5484d; --wa:#25d366;
  --sombra:0 1px 4px rgba(20,24,60,.08);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{background:var(--fondo);color:var(--tinta);font-family:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;font-size:16px;line-height:1.4;-webkit-text-size-adjust:100%}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;border:0;background:none;padding:0}
#app{max-width:560px;margin:0 auto;min-height:100%;background:var(--fondo);position:relative;padding-bottom:110px}

/* Barra superior */
.barra{background:var(--verde);color:#fff;padding:14px 16px 18px;padding-top:calc(14px + env(safe-area-inset-top));display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:5}
.barra h1{margin:0;font-size:22px;font-weight:800;letter-spacing:-.01em;line-height:1.15}
.barra small{display:block;font-size:14px;font-weight:400;opacity:.9}
.barra .tit{flex:1;min-width:0}
.barra .tit h1,.barra .tit small{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ico{width:44px;height:44px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;flex:none}
.ico:active{background:rgba(255,255,255,.18)}
.ico svg{width:26px;height:26px}
.logo{width:40px;height:40px;border-radius:12px;background:rgba(255,255,255,.2);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:22px;flex:none}

.cuerpo{padding:14px 14px 0;display:flex;flex-direction:column;gap:12px}
.demo-cinta{font-size:12px;color:var(--gris);text-align:center;padding:2px 0 0}
.demo-cinta b{color:var(--verde-osc)}

/* KPIs */
.kpis{display:grid;grid-template-columns:1.35fr 1fr;gap:10px}
.kpi{background:#fff;border-radius:14px;padding:12px 14px;box-shadow:var(--sombra)}
.kpi b{display:block;font-size:24px;font-weight:800;letter-spacing:-.02em;line-height:1.15}
.kpi span{font-size:13px;color:var(--gris)}
.kpi.grande b{color:var(--verde-osc)}

.aviso{border-radius:12px;padding:11px 14px;font-weight:600;font-size:14.5px;display:flex;gap:10px;align-items:flex-start}
.aviso.alerta{background:#fdecec;color:#a51f24}
.aviso.ok{background:var(--verde-claro);color:#137a43}
.aviso.info{background:#eef0ff;color:#3b3f9a}
.aviso button{text-decoration:underline;font-weight:700;color:inherit}

/* Buscar y filtros */
.buscar{position:relative}
.buscar input{width:100%;background:#fff;border:1px solid var(--linea);border-radius:999px;padding:13px 16px 13px 46px;font-size:16px;outline:none}
.buscar input:focus{border-color:var(--verde);box-shadow:0 0 0 3px rgba(34,160,107,.15)}
.buscar svg{position:absolute;left:16px;top:50%;transform:translateY(-50%);width:20px;height:20px;color:var(--gris-2)}
.chips{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
.chip{flex:none;background:#fff;border:1px solid var(--linea);border-radius:999px;padding:8px 14px;font-size:14px;font-weight:600;color:#4b5270}
.chip.on{background:var(--verde);border-color:var(--verde);color:#fff}

/* Lista */
.lista{background:#fff;border-radius:14px;overflow:hidden;box-shadow:var(--sombra)}
.it{display:flex;align-items:center;gap:12px;padding:12px 14px;border-bottom:1px solid #eef0f6;width:100%;text-align:left}
.it:last-child{border-bottom:0}
.it:active{background:#f3f5fa}
.av{flex:none;width:42px;height:42px;border-radius:50%;color:#fff;font-weight:700;font-size:15px;display:flex;align-items:center;justify-content:center}
.it .tx{flex:1;min-width:0}
.it .tx b{display:block;font-weight:650;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.it .tx span{font-size:13.5px;color:#7a819a}
.it .der{text-align:right;flex:none}
.it .der b{display:block;font-weight:800;font-size:16.5px;white-space:nowrap}
.it .der span{font-size:12.5px;color:#7a819a;display:inline-flex;align-items:center;gap:5px}
.dot{display:inline-block;width:10px;height:10px;border-radius:50%}
.ok{background:var(--ok)}.pend{background:var(--pend)}.alerta{background:var(--alerta)}.cero{background:#c9cdd9}
.tag-cupo{display:inline-block;background:#fdecec;color:#a51f24;font-size:11.5px;font-weight:700;padding:1px 7px;border-radius:999px;margin-left:4px;vertical-align:1px}
.vacio{padding:26px 16px;text-align:center;color:var(--gris)}
.leyenda{display:flex;gap:14px;flex-wrap:wrap;justify-content:center;font-size:12.5px;color:var(--gris);padding:2px 0 6px}
.leyenda span{display:inline-flex;align-items:center;gap:5px}

/* Botones */
.btn{display:flex;align-items:center;justify-content:center;gap:8px;border-radius:14px;background:var(--verde);color:#fff;font-weight:750;font-size:17px;padding:15px 16px;min-height:54px;width:100%;text-align:center;text-decoration:none;box-shadow:0 2px 6px rgba(34,160,107,.25)}
.btn:active{transform:translateY(1px);filter:brightness(.95)}
.btn.alt{background:#fff;color:var(--tinta);border:1.5px solid #d5d9e6;box-shadow:none}
.btn.wa{background:var(--wa);box-shadow:0 2px 6px rgba(37,211,102,.3)}
.btn.rojo{background:var(--alerta);box-shadow:none}
.btn.suave{background:var(--verde-claro);color:var(--verde-osc);box-shadow:none}
.btn svg{width:22px;height:22px;flex:none}
.btn[disabled]{opacity:.5;pointer-events:none}
.pie-fijo{position:fixed;left:0;right:0;bottom:0;z-index:6;background:linear-gradient(rgba(246,247,251,0),var(--fondo) 30%);padding:18px 14px calc(14px + env(safe-area-inset-bottom))}
.pie-fijo .in{max-width:532px;margin:0 auto;display:grid;grid-template-columns:1.4fr 1fr;gap:10px}

/* Detalle de cliente */
.tarjeta{background:#fff;border-radius:16px;padding:16px;box-shadow:var(--sombra)}
.saldo{display:flex;align-items:flex-end;justify-content:space-between;gap:10px}
.saldo .n{font-size:36px;font-weight:850;letter-spacing:-.03em;line-height:1}
.saldo small{display:block;color:var(--gris);font-size:13.5px;margin-bottom:4px}
.estado{display:inline-flex;align-items:center;gap:6px;font-size:13.5px;font-weight:700;padding:5px 10px;border-radius:999px}
.estado.ok{background:#e6f7ee;color:#137a43}.estado.pend{background:#fff4e0;color:#9a5b00}.estado.alerta{background:#fdecec;color:#a51f24}.estado.cero{background:#eef0f6;color:#4b5270}
.estado .dot{width:9px;height:9px}
.estado.ok .dot{background:var(--ok)}.estado.pend .dot{background:var(--pend)}.estado.alerta .dot{background:var(--alerta)}.estado.cero .dot{background:#9aa0b4}
.cupo{margin-top:14px}
.cupo .bar{height:10px;border-radius:99px;background:#eef0f6;overflow:hidden}
.cupo .bar i{display:block;height:100%;border-radius:99px;background:var(--verde)}
.cupo .bar i.medio{background:var(--pend)}.cupo .bar i.lleno{background:var(--alerta)}
.cupo .t{display:flex;justify-content:space-between;font-size:13px;color:var(--gris);margin-top:6px}
.acciones{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.acciones .btn{font-size:16px}
.acciones .full{grid-column:1/-1}
.demo-caja{border:1.5px dashed #b9c0d4;border-radius:16px;padding:12px;background:#fbfbfe}
.demo-caja .btn{background:#6c2bd9;box-shadow:none}
.demo-caja p{margin:8px 2px 0;font-size:12.5px;color:var(--gris);line-height:1.35}
.demo-caja p b{color:#6c2bd9}
h2.sec{font-size:15px;font-weight:750;color:#4b5270;margin:6px 2px -4px;text-transform:uppercase;letter-spacing:.04em}
.mov{display:flex;gap:12px;padding:12px 14px;border-bottom:1px solid #eef0f6;align-items:center}
.mov:last-child{border-bottom:0}
.mov .ic{flex:none;width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:18px}
.mov .ic.f{background:#fff4e0;color:#b86e00}.mov .ic.a{background:#e6f7ee;color:#137a43}
.mov .tx{flex:1;min-width:0}
.mov .tx b{display:block;font-weight:600;font-size:15px}
.mov .tx span{font-size:13px;color:#7a819a}
.mov .v{text-align:right;flex:none;font-weight:800}
.mov .v.a{color:#137a43}
.mov .v small{display:block;font-weight:500;color:#9aa0b4;font-size:12px}
.datos-cli{font-size:13.5px;color:var(--gris);display:flex;flex-wrap:wrap;gap:4px 14px;margin-top:10px}
.link{color:var(--verde-osc);font-weight:700;text-decoration:underline;font-size:14px}

/* Hojas (bottom sheet) */
#capa{position:fixed;inset:0;z-index:20;display:none}
#capa.on{display:block}
.fondo-capa{position:absolute;inset:0;background:rgba(15,20,40,.45);animation:aparece .18s ease}
.hoja{position:absolute;left:0;right:0;bottom:0;max-width:560px;margin:0 auto;background:#fff;border-radius:22px 22px 0 0;max-height:92vh;overflow:auto;padding:8px 18px calc(18px + env(safe-area-inset-bottom));animation:sube .22s ease;overscroll-behavior:contain}
.hoja .asa{width:42px;height:5px;border-radius:9px;background:#d5d9e6;margin:4px auto 12px}
.hoja h3{margin:0 0 4px;font-size:21px;font-weight:800}
.hoja .sub{color:var(--gris);font-size:14.5px;margin:0 0 14px}
.campo{display:block;margin-bottom:14px}
.campo>span{display:block;font-size:14px;font-weight:650;color:#4b5270;margin-bottom:6px}
.campo input,.campo select,.campo textarea{width:100%;border:1.5px solid #d5d9e6;border-radius:12px;padding:13px 14px;font-size:17px;background:#fff;outline:none}
.campo input:focus,.campo textarea:focus,.campo select:focus{border-color:var(--verde);box-shadow:0 0 0 3px rgba(34,160,107,.15)}
.campo .ayuda{display:block;font-size:12.5px;color:var(--gris);margin-top:5px}
.valor input{font-size:30px;font-weight:800;padding:12px 14px;letter-spacing:-.01em}
.mini-chips{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px}
.mini-chips button{background:#f1f3f8;border-radius:999px;padding:8px 13px;font-size:14px;font-weight:600;color:#4b5270}
.mini-chips button:active{background:#e3e6f0}
.mini-chips button.on{background:var(--verde);color:#fff}
.sugerencias{border:1px solid var(--linea);border-radius:12px;margin-top:6px;overflow:hidden}
.sugerencias button{display:flex;width:100%;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #eef0f6;text-align:left;font-size:15.5px}
.sugerencias button:last-child{border-bottom:0}
.sugerencias button span{color:var(--gris);font-size:14px}
.sugerencias .nuevo{color:var(--verde-osc);font-weight:700}
.elegido{display:flex;align-items:center;gap:10px;background:var(--verde-claro);border-radius:12px;padding:10px 12px}
.elegido b{flex:1}
.elegido button{color:var(--verde-osc);font-weight:700;font-size:14px}
.alerta-cupo{background:#fdecec;color:#a51f24;border-radius:12px;padding:10px 12px;font-size:14px;font-weight:600;margin:-4px 0 14px}
.fila-btns{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.medios{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.medios button{border:1.5px solid #d5d9e6;border-radius:12px;padding:12px 6px;font-weight:700;font-size:15px}
.medios button.on{border-color:var(--verde);background:var(--verde-claro);color:var(--verde-osc)}

/* Vista previa WhatsApp */
.wa-prev{background:#efe7dd;border-radius:14px;overflow:hidden;margin-bottom:14px}
.wa-prev .hd{background:#075e54;color:#fff;padding:10px 14px;display:flex;gap:10px;align-items:center;font-weight:600;font-size:15px}
.wa-prev .hd i{width:30px;height:30px;border-radius:50%;background:#d9dde6;flex:none}
.wa-prev .hd small{display:block;font-weight:400;font-size:12px;opacity:.8}
.wa-prev .bd{padding:12px}
.wa-prev .bub{background:#d9fdd3;border-radius:10px;padding:9px 11px;white-space:pre-wrap;font-size:14.5px;line-height:1.42;box-shadow:0 1px 1px rgba(0,0,0,.12);margin-left:auto;max-width:96%}
.wa-prev .hora{display:block;text-align:right;font-size:11px;color:#8a8f99;margin-top:3px}

/* Notificación tipo Android */
#notif{position:fixed;left:0;right:0;top:0;z-index:40;pointer-events:none;display:flex;justify-content:center;padding:10px 10px 0}
.noti{pointer-events:auto;width:100%;max-width:520px;background:#fff;border-radius:20px;box-shadow:0 10px 30px rgba(10,15,40,.28);padding:12px 14px;display:flex;gap:12px;align-items:flex-start;animation:baja .35s cubic-bezier(.2,.9,.3,1.2)}
.noti.sale{animation:subeOut .3s ease forwards}
.noti .ap{width:40px;height:40px;border-radius:12px;background:#200020;color:#fff;display:flex;align-items:center;justify-content:center;font-weight:900;font-size:20px;flex:none;position:relative}
.noti .ap:after{content:"";position:absolute;right:7px;top:7px;width:7px;height:7px;background:#da0081;border-radius:2px}
.noti .tx{flex:1;min-width:0}
.noti .tx small{display:block;font-size:12px;color:var(--gris)}
.noti .tx b{display:block;font-size:16px}
.noti .tx span{font-size:14px;color:#4b5270}
.noti .demo{font-size:10.5px;font-weight:700;color:#6c2bd9;background:#f1eafe;border-radius:6px;padding:2px 6px;align-self:flex-start}

#toast{position:fixed;left:0;right:0;bottom:96px;z-index:45;display:flex;justify-content:center;pointer-events:none;padding:0 16px}
.tst{background:#1b2133;color:#fff;border-radius:12px;padding:12px 16px;font-size:15px;font-weight:600;box-shadow:0 8px 20px rgba(0,0,0,.25);max-width:520px;animation:aparece .2s ease}

/* Diálogo de confirmación */
.dialogo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:calc(100% - 40px);max-width:420px;background:#fff;border-radius:20px;padding:20px;animation:aparece .18s ease}
.dialogo h3{margin:0 0 8px;font-size:20px}
.dialogo p{margin:0 0 16px;color:#4b5270;font-size:15.5px}
.dialogo .fila-btns{margin-top:0}

/* Ajustes */
.grupo{background:#fff;border-radius:16px;padding:16px;box-shadow:var(--sombra)}
.grupo h2{margin:0 0 12px;font-size:17px}
.nota{font-size:13px;color:var(--gris);line-height:1.45}
.firma{text-align:center;font-size:12.5px;color:var(--gris-2);padding:10px 0 4px}

@keyframes sube{from{transform:translateY(100%)}to{transform:none}}
@keyframes aparece{from{opacity:0}to{opacity:1}}
@keyframes baja{from{transform:translateY(-120%)}to{transform:none}}
@keyframes subeOut{to{transform:translateY(-130%);opacity:0}}
@media (min-width:600px){ body{background:#e9ecf4} #app{box-shadow:0 0 40px rgba(20,24,60,.08)} }
#capa.on ~ #toast{bottom:auto;top:calc(16px + env(safe-area-inset-top))}
