/* ============================================================
   Mr. Limpieza — estilos
   Colores del personaje: naranja (#F7941D) + cian (#29ABE2).
   Los colores reales los define el administrador y se aplican
   en tiempo de ejecución sobre estas variables.
   ============================================================ */
:root{
  --primary:#F7941D;
  --primary-d:#E07E0A;
  --secondary:#29ABE2;
  --secondary-d:#1E86B8;
  --ink:#123047;
  --ink-soft:#4a637a;
  --bg:#f3f6fb;
  --card:#ffffff;
  --line:#e6ecf3;
  --ok:#2e9e5b;
  --danger:#e2453b;
  --warn:#f0a500;
  --radius:16px;
  --shadow:0 6px 22px rgba(18,48,71,.10);
  --shadow-s:0 2px 8px rgba(18,48,71,.08);
  --safe-b:env(safe-area-inset-bottom,0px);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0}
body{
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.4;
  -webkit-font-smoothing:antialiased;
}
button{font-family:inherit;cursor:pointer;border:none;background:none}
input,select,textarea{font-family:inherit;font-size:16px}
img{max-width:100%}
.hidden{display:none!important}

/* ---------- Botones ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  padding:13px 18px;border-radius:12px;font-weight:700;font-size:15px;
  transition:.15s transform,.15s box-shadow,.15s background;line-height:1;
}
.btn:active{transform:translateY(1px)}
.btn-primary{background:var(--primary);color:#fff;box-shadow:0 4px 12px rgba(247,148,29,.35)}
.btn-primary:hover{background:var(--primary-d)}
.btn-secondary{background:var(--secondary);color:#fff}
.btn-secondary:hover{background:var(--secondary-d)}
.btn-ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn-ghost:hover{border-color:var(--primary);color:var(--primary)}
.btn-danger{background:#fdecea;color:var(--danger)}
.btn-block{display:flex;width:100%}
.btn-lg{padding:16px 22px;font-size:16px;border-radius:14px}
.btn-sm{padding:8px 12px;font-size:13px;border-radius:10px}
.btn-wa{background:#25D366;color:#fff;box-shadow:0 4px 14px rgba(37,211,102,.4)}
.btn:disabled{opacity:.55;pointer-events:none}

/* ---------- Campos ---------- */
.field{margin-bottom:12px}
.field label{display:block;font-size:13px;font-weight:600;color:var(--ink-soft);margin-bottom:5px}
.input,.select,textarea.input{
  width:100%;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;
  background:#fff;color:var(--ink);outline:none;transition:.15s border-color;
}
.input:focus,.select:focus,textarea.input:focus{border-color:var(--primary)}
textarea.input{resize:vertical;min-height:72px}
.row2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
@media(max-width:420px){.row2{grid-template-columns:1fr}}

/* ============================================================
   TIENDA (cliente)
   ============================================================ */
.store{min-height:100vh;display:flex;flex-direction:column;padding-bottom:calc(88px + var(--safe-b))}

/* Encabezado */
.store-header{
  background:linear-gradient(120deg,var(--primary),var(--primary-d));
  color:#fff;padding:14px 16px 16px;position:relative;overflow:hidden;
}
.store-header::after{content:"";position:absolute;right:-40px;top:-40px;width:180px;height:180px;
  background:radial-gradient(circle,rgba(41,171,226,.55),transparent 70%);pointer-events:none}
.store-top{display:flex;align-items:center;gap:12px;position:relative;z-index:1}
.store-logo{width:52px;height:52px;border-radius:14px;background:#fff;object-fit:contain;padding:3px;box-shadow:var(--shadow-s);flex-shrink:0}
.store-title{font-size:19px;font-weight:800;letter-spacing:-.3px;line-height:1.1}
.store-sub{font-size:12.5px;opacity:.92;margin-top:1px}
.store-hicon{margin-left:auto;display:flex;gap:8px;flex-shrink:0}
.hbtn{width:40px;height:40px;border-radius:11px;background:rgba(255,255,255,.18);color:#fff;
  display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hbtn:hover{background:rgba(255,255,255,.28)}
/* En celulares angostos los íconos se achican para que quepan todos
   (capacitación, catálogo, Excel, pedidos, admin) junto al nombre. */
@media (max-width:430px){
  .store-top{gap:8px}
  .store-logo{width:44px;height:44px;border-radius:12px}
  .store-title{font-size:16.5px}
  .store-sub{font-size:11px}
  .store-hicon{gap:4px}
  .hbtn{width:33px;height:33px;border-radius:9px}
  .hbtn svg{width:17px;height:17px}
}

.store-search{position:relative;z-index:1;margin-top:12px}
.store-search input{
  width:100%;padding:12px 14px 12px 42px;border-radius:12px;border:none;font-size:15px;
  background:#fff;color:var(--ink);box-shadow:var(--shadow-s)
}
.store-search svg{position:absolute;left:13px;top:12px;color:var(--ink-soft)}

/* Chips de categorías */
.vend-banner{display:flex;align-items:center;gap:10px;margin:12px 16px 0;padding:10px 14px;
  background:linear-gradient(100deg,#eaf6fd,#fff3e6);border:1px solid #d9e9f4;border-radius:14px;font-size:13px;color:var(--ink)}
.vend-banner span{flex:1;line-height:1.3}
.vend-banner .btn{flex-shrink:0}
@media(min-width:980px){.vend-banner{max-width:1200px;margin-left:auto;margin-right:auto}}
.cat-bar{display:flex;gap:8px;overflow-x:auto;padding:12px 16px 4px;scrollbar-width:none}
.cat-bar::-webkit-scrollbar{display:none}
.chip{
  flex-shrink:0;padding:9px 16px;border-radius:999px;background:#fff;border:1.5px solid var(--line);
  font-weight:700;font-size:13.5px;color:var(--ink-soft);white-space:nowrap
}
.chip.active{background:var(--secondary);border-color:var(--secondary);color:#fff}

/* Grid de productos */
.prod-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;padding:12px 16px 20px}
@media(min-width:640px){.prod-grid{grid-template-columns:repeat(3,1fr)}}
@media(min-width:980px){.prod-grid{grid-template-columns:repeat(4,1fr);max-width:1200px;margin:0 auto;width:100%}}

.prod-card{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-s);
  display:flex;flex-direction:column;border:1px solid var(--line)}
.prod-img{width:100%;aspect-ratio:1/1;object-fit:cover;background:#eef3f8;display:block}
.prod-img.ph{display:flex;align-items:center;justify-content:center;color:#b9c7d6;font-size:34px}
.prod-body{padding:10px 11px 12px;display:flex;flex-direction:column;flex:1}
.prod-name{font-weight:800;font-size:14.5px;line-height:1.2;margin-bottom:2px}
.prod-desc{font-size:12px;color:var(--ink-soft);margin-bottom:8px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;min-height:16px}
.prod-price{font-weight:800;color:var(--primary);font-size:16px;margin-bottom:8px}
.prod-price small{color:var(--ink-soft);font-weight:600;font-size:11px}
.prod-card .select{padding:9px 10px;font-size:13px;margin-bottom:8px}
/* En celular (2 columnas) se apila: cantidad arriba, "Agregar" a lo ancho
   debajo, para que el botón "+" nunca quede cortado. En pantallas más
   anchas vuelven a quedar en la misma fila. */
.prod-actions{margin-top:auto;display:flex;flex-direction:column;gap:8px}
.prod-actions .qty{align-self:flex-start}
.qty{display:flex;align-items:center;border:1.5px solid var(--line);border-radius:10px;overflow:hidden}
.qty button{width:36px;height:38px;font-size:19px;font-weight:700;color:var(--ink);background:#f4f7fb;flex:none}
.qty button:hover{background:var(--line)}
.qty span{min-width:30px;text-align:center;font-weight:700;font-size:15px}
.add-btn{width:100%;height:40px;border-radius:10px;background:var(--primary);color:#fff;font-weight:800;font-size:13.5px;
  display:flex;align-items:center;justify-content:center;gap:5px}
.add-btn:hover{background:var(--primary-d)}
@media(min-width:640px){
  .prod-actions{flex-direction:row;align-items:center}
  .prod-actions .qty{align-self:auto}
  .add-btn{width:auto;flex:1;height:38px}
}
.prod-tag{position:absolute;top:8px;left:8px;background:var(--danger);color:#fff;font-size:10.5px;font-weight:800;padding:3px 8px;border-radius:999px}

.empty{text-align:center;padding:50px 24px;color:var(--ink-soft)}
.empty .mascot{width:120px;opacity:.85;margin-bottom:10px}
.empty h3{margin:6px 0 4px;color:var(--ink)}

/* Barra inferior de la tienda (carrito) */
.store-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:40;
  padding:10px 16px calc(10px + var(--safe-b));background:#fff;border-top:1px solid var(--line);
  display:flex;gap:10px;align-items:center;box-shadow:0 -4px 18px rgba(18,48,71,.08)
}
.store-bar .btn{flex:1}
.cart-count{background:#fff;color:var(--primary);border-radius:999px;font-size:12px;font-weight:900;
  min-width:22px;height:22px;display:inline-flex;align-items:center;justify-content:center;padding:0 6px}

/* ============================================================
   HOJAS DESLIZANTES / MODALES
   ============================================================ */
.overlay{position:fixed;inset:0;background:rgba(18,48,71,.5);
  z-index:60;display:none;opacity:0;transition:.2s opacity}
.overlay.show{display:block;opacity:1}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:61;background:var(--bg);
  border-radius:22px 22px 0 0;max-height:92vh;display:flex;flex-direction:column;
  transform:translateY(100%);transition:.25s transform;box-shadow:0 -10px 40px rgba(0,0,0,.2)
}
.sheet.show{transform:translateY(0)}
@media(min-width:720px){
  .sheet{left:50%;right:auto;bottom:auto;top:50%;transform:translate(-50%,-46%) scale(.98);
    width:640px;max-width:94vw;border-radius:22px;max-height:88vh;opacity:0}
  .sheet.show{transform:translate(-50%,-50%) scale(1);opacity:1}
}
.sheet-head{display:flex;align-items:center;gap:10px;padding:16px 18px 12px;border-bottom:1px solid var(--line);background:#fff;border-radius:22px 22px 0 0}
.sheet-head h2{margin:0;font-size:18px;font-weight:800}
.sheet-head .close{margin-left:auto;width:36px;height:36px;border-radius:10px;background:#f2f5f9;color:var(--ink-soft);font-size:20px;display:flex;align-items:center;justify-content:center}
.sheet-body{padding:16px 18px;overflow-y:auto;flex:1;-webkit-overflow-scrolling:touch}
.sheet-foot{padding:12px 18px calc(14px + var(--safe-b));border-top:1px solid var(--line);background:#fff;display:flex;gap:10px}
.sheet-foot .btn{flex:1}

/* Ítems del carrito */
.cart-item{display:flex;gap:11px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:10px;margin-bottom:10px}
.cart-item img{width:56px;height:56px;border-radius:10px;object-fit:cover;background:#eef3f8;flex-shrink:0}
.cart-item .ph{display:flex;align-items:center;justify-content:center;color:#b9c7d6;font-size:22px}
.cart-info{flex:1;min-width:0}
.cart-info .n{font-weight:800;font-size:14px}
.cart-info .p{font-size:12.5px;color:var(--ink-soft)}
.cart-info .sub{font-weight:800;color:var(--primary);margin-top:2px}
.cart-side{display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between}
.icon-del{width:30px;height:30px;border-radius:8px;background:#fdecea;color:var(--danger);display:flex;align-items:center;justify-content:center;font-size:15px}

/* Totales */
.totals{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin-top:6px}
.totals .line{display:flex;justify-content:space-between;padding:4px 0;font-size:14.5px}
.totals .line.desc{color:var(--ok);font-weight:700}
.totals .line.total{border-top:1.5px dashed var(--line);margin-top:6px;padding-top:10px;font-size:19px;font-weight:900}
.totals .total b{color:var(--primary)}
.desc-badge{display:inline-flex;align-items:center;gap:6px;background:#eafaf0;color:var(--ok);font-weight:800;
  font-size:12.5px;padding:6px 12px;border-radius:999px;margin-bottom:10px}
.desc-note{font-size:12px;color:var(--ink-soft);background:#fff7ec;border:1px solid #ffe6c2;border-radius:10px;padding:9px 11px;margin-top:8px}

/* Confirmación de pedido */
.confirm{text-align:center;padding:8px 4px}
.confirm .big{width:76px;height:76px;border-radius:50%;background:#eafaf0;color:var(--ok);display:flex;align-items:center;justify-content:center;font-size:40px;margin:6px auto 12px}
/* Elección de entrega: domicilio o recoger en tienda */
.entrega-opts{display:grid;gap:8px}
.entrega-opt{display:flex;align-items:center;gap:10px;padding:11px 12px;border:2px solid var(--line);
  border-radius:14px;cursor:pointer;background:#fff;transition:border-color .15s,background .15s}
.entrega-opt input{width:18px;height:18px;flex-shrink:0;accent-color:var(--primary)}
.entrega-opt .ico{font-size:22px;line-height:1}
.entrega-opt .txt{display:flex;flex-direction:column;flex:1;min-width:0}
.entrega-opt .txt b{font-size:14.5px}
.entrega-opt .txt small{font-size:12px;color:var(--ink-soft)}
.entrega-opt .val{font-weight:900;font-size:14.5px;color:var(--primary);white-space:nowrap}
.entrega-opt .val.ok{color:var(--ok)}
.entrega-opt.on{border-color:var(--primary);background:#fff7ec}

/* Datos de pago al terminar el pedido */
.pago-card{background:#f2f9ff;border-color:#cfe8fb;margin-top:6px}
.pago-valor{display:flex;justify-content:space-between;align-items:center;gap:10px;
  background:#fff;border:1px solid #cfe8fb;border-radius:12px;padding:10px 12px;margin-bottom:10px}
.pago-valor span{font-size:13.5px;color:var(--ink-soft);font-weight:700}
.pago-valor b{font-size:20px;font-weight:900;color:var(--primary)}
.pago-datos{font-size:14px;line-height:1.7}
.pago-cuenta{font-size:20px;font-weight:900;letter-spacing:.6px;color:var(--ink);margin:2px 0}

/* Variante de advertencia (ej: WhatsApp ya registrado como vendedor) */
.confirm .big.warn{background:#fff4e0;color:var(--warn)}
.confirm h2{margin:0 0 4px}
.confirm .num{font-size:15px;color:var(--ink-soft);margin-bottom:14px}
.confirm .num b{color:var(--primary)}

/* ============================================================
   PANEL ADMIN
   ============================================================ */
.admin{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}
.admin-top{background:var(--ink);color:#fff;padding:12px 16px;display:flex;align-items:center;gap:12px;position:sticky;top:0;z-index:20}
.admin-top .logo{width:34px;height:34px;border-radius:9px;background:#fff;padding:2px;object-fit:contain}
.admin-top h1{font-size:16px;margin:0;font-weight:800;flex:1}
.admin-top .btn{padding:8px 12px;font-size:13px}
.admin-tabs{display:flex;gap:4px;overflow-x:auto;background:#fff;padding:6px 10px;border-bottom:1px solid var(--line);position:sticky;top:58px;z-index:19;scrollbar-width:none}
.admin-tabs::-webkit-scrollbar{display:none}
.admin-tab{flex-shrink:0;padding:9px 14px;border-radius:10px;font-weight:700;font-size:13.5px;color:var(--ink-soft);white-space:nowrap}
.admin-tab.active{background:var(--primary);color:#fff}
.admin-body{padding:16px;max-width:1000px;margin:0 auto;width:100%;flex:1}

.panel-head{display:flex;align-items:center;gap:10px;margin-bottom:14px;flex-wrap:wrap}
.panel-head h2{margin:0;font-size:18px;font-weight:800;flex:1}

.a-card{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;margin-bottom:12px;box-shadow:var(--shadow-s)}
.a-row{display:flex;gap:12px;align-items:center}
.a-row img{width:52px;height:52px;border-radius:11px;object-fit:cover;background:#eef3f8;flex-shrink:0}
.a-row .ph{display:flex;align-items:center;justify-content:center;color:#b9c7d6;font-size:22px}
.a-row .info{flex:1;min-width:0}
.a-row .info .n{font-weight:800}
.a-row .info .m{font-size:12.5px;color:var(--ink-soft)}
.a-actions{display:flex;gap:6px}
.mini{width:36px;height:36px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:15px;border:1.5px solid var(--line);background:#fff;color:var(--ink-soft)}
.mini:hover{border-color:var(--primary);color:var(--primary)}
.mini.del:hover{border-color:var(--danger);color:var(--danger)}

.drag-handle{cursor:grab;touch-action:none;color:#b9c7d6;font-size:20px;line-height:1;padding:6px 4px;margin:-4px 2px -4px -2px;
  user-select:none;flex-shrink:0;align-self:center}
.drag-handle:active{cursor:grabbing;color:var(--primary)}
.a-card.dragging{opacity:.9;box-shadow:0 12px 30px rgba(18,48,71,.22);border-color:var(--primary);position:relative;z-index:5}
body.dragging-activo{user-select:none;-webkit-user-select:none;cursor:grabbing}
#prodOrdenList .a-card{margin-bottom:10px}

/* Vendedor resaltado al llegar por el enlace "Autorizar" de WhatsApp */
.a-card.resaltar{border-color:var(--ok);animation:resaltarVend 1.1s ease-in-out 3}
@keyframes resaltarVend{
  0%,100%{box-shadow:0 0 0 3px rgba(46,158,91,.38)}
  50%{box-shadow:0 0 0 7px rgba(46,158,91,.12)}
}

.pill{display:inline-block;padding:3px 10px;border-radius:999px;font-size:11.5px;font-weight:800}
.pill.on{background:#eafaf0;color:var(--ok)}
.pill.off{background:#f1f3f6;color:var(--ink-soft)}
.pill.new{background:#e7f3fc;color:var(--secondary-d)}
.pill.prep{background:#fff4e0;color:#c07c00}
.pill.done{background:#eafaf0;color:var(--ok)}

.stat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-bottom:14px}
@media(min-width:640px){.stat-grid{grid-template-columns:repeat(4,1fr)}}
.stat{background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:var(--shadow-s)}
.stat .v{font-size:22px;font-weight:900;color:var(--ink);letter-spacing:-.5px}
.stat .l{font-size:12px;color:var(--ink-soft);font-weight:600;margin-top:2px}
.stat.p .v{color:var(--primary)}
.stat.s .v{color:var(--secondary)}

table.rep{width:100%;border-collapse:collapse;font-size:13.5px}
table.rep th,table.rep td{text-align:left;padding:9px 8px;border-bottom:1px solid var(--line)}
table.rep th{font-size:11.5px;text-transform:uppercase;letter-spacing:.4px;color:var(--ink-soft)}
table.rep td.r,table.rep th.r{text-align:right}
.tbl-wrap{overflow-x:auto;background:#fff;border:1px solid var(--line);border-radius:14px;padding:6px 12px;box-shadow:var(--shadow-s)}

.pres-editor .pres-line{background:#f7f9fc;border:1px solid var(--line);border-radius:12px;padding:9px;margin-bottom:9px}
.pres-editor .pres-line>.input{margin-bottom:6px}
.pres-nums{display:grid;grid-template-columns:1fr 1fr 38px;gap:6px;align-items:center}
.pres-margin{font-size:11.5px;font-weight:700;margin-top:5px;min-height:14px;color:var(--ok)}

/* Carga de imagen */
.img-drop{border:2px dashed var(--line);border-radius:14px;padding:14px;text-align:center;color:var(--ink-soft);cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:8px}
.img-drop:hover{border-color:var(--primary);color:var(--primary)}
.img-drop img{width:110px;height:110px;object-fit:cover;border-radius:12px}
.color-row{display:flex;align-items:center;gap:10px}
.color-row input[type=color]{width:46px;height:40px;border:none;border-radius:10px;background:none;padding:0}

/* ---------- Login admin / arranque ---------- */
.gate{position:fixed;inset:0;background:linear-gradient(150deg,var(--primary),var(--secondary));
  display:flex;align-items:center;justify-content:center;padding:22px;z-index:80}
.gate-card{background:#fff;border-radius:22px;padding:26px 22px;width:380px;max-width:100%;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.gate-card img.m{width:120px;margin:0 auto 6px;display:block}
.gate-card h1{margin:0 0 4px;font-size:22px;font-weight:900}
.gate-card p{margin:0 0 16px;color:var(--ink-soft);font-size:14px}

/* ---------- Toast ---------- */
#toast-host{position:fixed;left:0;right:0;bottom:calc(96px + var(--safe-b));display:flex;flex-direction:column;align-items:center;gap:8px;z-index:200;pointer-events:none}
.toast{background:var(--ink);color:#fff;padding:11px 18px;border-radius:12px;font-weight:600;font-size:14px;box-shadow:var(--shadow);max-width:90vw;animation:tin .2s ease}
.toast.ok{background:var(--ok)}.toast.err{background:var(--danger)}.toast.warn{background:var(--warn);color:#3a2a00}
@keyframes tin{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}

/* ---------- Spinner / carga ---------- */
.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;gap:14px;color:var(--ink-soft)}
.spin{width:38px;height:38px;border:4px solid var(--line);border-top-color:var(--primary);border-radius:50%;animation:sp 1s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ---------- Anuncio / bienvenida ---------- */
.promo{max-width:420px;margin:0 auto;text-align:center}
.promo img{border-radius:14px;margin-bottom:10px}

.section-note{font-size:12.5px;color:var(--ink-soft);margin:-4px 0 14px}
.link{color:var(--secondary-d);font-weight:700;cursor:pointer;text-decoration:none}
.divider{height:1px;background:var(--line);margin:16px 0}
.grid-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media(max-width:560px){.grid-cols{grid-template-columns:1fr}}
