/* ---- Base (usa variables inyectadas por company_settings) ---- */
*{box-sizing:border-box}
body{
  margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
  background:var(--background-color,#fff);color:var(--text-color,#212529);
  line-height:1.5;
}
a{color:var(--primary-color,#0d6efd);text-decoration:none}
a:hover{text-decoration:underline}
.container{max-width:1000px;margin:0 auto;padding:16px}
h1{font-size:1.5rem}h2{font-size:1.2rem;margin-top:1.5rem}

/* ---- Topbar ---- */
.topbar{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  padding:10px 16px;background:var(--primary-color,#0d6efd);color:#fff;
}
.topbar a{color:#fff}
.brand{display:flex;align-items:center;gap:8px;font-weight:700}
.brand-logo{height:28px;width:auto;background:#fff;border-radius:4px;padding:2px}
.menu{display:flex;gap:14px;flex-wrap:wrap;flex:1}
.session{display:flex;align-items:center;gap:10px}
.user-name{font-size:.85rem;opacity:.9}
.inline{display:inline}
.btn-link{background:none;border:none;color:#fff;cursor:pointer;font:inherit;text-decoration:underline}

/* ---- Botones ---- */
.btn{
  display:inline-block;padding:9px 16px;border-radius:8px;border:1px solid var(--secondary-color,#6c757d);
  background:#fff;color:var(--text-color,#212529);cursor:pointer;font:inherit;text-decoration:none;
}
.btn.primary{background:var(--primary-color,#0d6efd);border-color:var(--primary-color,#0d6efd);color:#fff}
.btn.ok{background:#198754;border-color:#198754;color:#fff}
.btn.danger{background:#dc3545;border-color:#dc3545;color:#fff}
.btn-row{display:flex;gap:8px;flex-wrap:wrap}

/* ---- Cards / formularios ---- */
.card{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px;margin:14px 0;box-shadow:0 1px 3px rgba(0,0,0,.05)}
.auth-card{max-width:380px;margin:40px auto}
label{display:block;margin:10px 0;font-size:.9rem}
input,select,textarea{
  width:100%;padding:9px;border:1px solid #cbd5e1;border-radius:8px;font:inherit;background:#fff;color:inherit;
}
input[type=color]{height:42px;padding:2px}
.form-grid{display:grid;gap:4px}
.code-input{font-size:1.5rem;letter-spacing:.4rem;text-align:center}

/* ---- Alertas ---- */
.alert{padding:10px 14px;border-radius:8px;margin:10px 0}
.alert.ok{background:#d1e7dd;color:#0f5132}
.alert.error{background:#f8d7da;color:#842029}
.alert.warn{background:#fff3cd;color:#664d03}

/* ---- Tablas ---- */
.table-wrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{padding:8px 10px;text-align:left;border-bottom:1px solid #eef2f7}
th{background:#f8fafc}
code{background:#f1f5f9;padding:2px 5px;border-radius:4px;font-size:.85em}

/* ---- Badges de estado ---- */
.badge{display:inline-block;padding:2px 8px;border-radius:999px;font-size:.72rem;font-weight:600;color:#fff;background:#6c757d}
.s-solicitado{background:#6c757d}.s-asignado{background:#0d6efd}
.s-en_camino_recoleccion{background:#0dcaf0;color:#04303a}
.s-paquete_recolectado{background:#6610f2}
.s-en_ruta_entrega{background:#fd7e14}
.s-entregado{background:#198754}.s-cancelado{background:#dc3545}

/* ---- Dashboard ---- */
.grid-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px}
.stat{background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:16px;text-align:center;display:block}
.stat-num{display:block;font-size:1.8rem;font-weight:700;color:var(--primary-color)}
.stat-lbl{font-size:.8rem;color:#64748b}

/* ---- Listas de pedidos (móvil PWA) ---- */
.order-list{display:grid;gap:10px}
.order-item{display:grid;gap:2px;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:12px;color:inherit}
.cash-pill{background:#f1f5f9;border-radius:999px;padding:8px 14px;display:inline-block}
.cash-pill.big{font-size:1.2rem}

/* ---- Timeline / mapa ---- */
.cols{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:800px){.cols{grid-template-columns:1fr}}
.timeline{list-style:none;padding-left:0}
.timeline li{border-left:3px solid var(--primary-color);padding:6px 0 6px 12px;margin-left:6px}
.map{height:320px;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb}
.qr-box{margin:12px 0}
.secret code{font-size:1.1rem;letter-spacing:2px}
.steps{padding-left:20px}
.logo-preview{max-height:80px;background:#f1f5f9;border-radius:8px;padding:6px}
/* ---- Formularios en 2 columnas (config empresa) ---- */
.form-2col{display:grid;grid-template-columns:1fr 1fr;gap:6px 16px}
@media(max-width:640px){.form-2col{grid-template-columns:1fr}}
.hint{display:block;font-size:.78rem;color:#94a3b8;margin-top:2px}
.logo-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.logo-empty{width:80px;height:80px;border-radius:8px;background:#f1f5f9;display:flex;align-items:center;justify-content:center;color:#94a3b8;font-size:.8rem}
.grow{flex:1;min-width:220px}
.save-bar{position:sticky;bottom:0;background:linear-gradient(transparent,rgba(241,245,249,.95) 40%);padding:14px 0;margin-top:8px;text-align:right}
.save-bar .btn{padding:12px 28px;font-size:1.05rem}
.muted{color:#64748b}
.footer{text-align:center;padding:20px;color:#94a3b8}

/* ================= PANEL ADMIN (menú lateral) ================= */
body.role-admin{background:#f1f5f9}
.admin-shell{display:flex;min-height:100vh}
.sidebar{
  width:240px;background:#0f172a;color:#cbd5e1;position:fixed;inset:0 auto 0 0;
  display:flex;flex-direction:column;overflow-y:auto;z-index:60;transition:transform .2s;
}
.side-brand{display:flex;align-items:center;gap:10px;padding:18px 16px;color:#fff;font-weight:800;font-size:1.05rem;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.08)}
.side-brand img{height:34px;width:34px;object-fit:contain;background:#fff;border-radius:8px;padding:2px}
.side-logo-fallback{font-size:1.5rem}
.side-brand-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-nav{display:flex;flex-direction:column;padding:10px 0;flex:1}
.side-link{display:flex;align-items:center;gap:12px;padding:11px 18px;color:#cbd5e1;text-decoration:none;font-size:.92rem;font-weight:500;border-left:3px solid transparent}
.side-link:hover{background:rgba(255,255,255,.06);color:#fff;text-decoration:none}
.side-link.active{background:rgba(59,130,246,.15);color:#fff;border-left-color:var(--primary-color)}
.side-ico{width:22px;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.side-ico .ic{display:block}
.side-foot{border-top:1px solid rgba(255,255,255,.08);padding:14px 16px}
.side-user{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.side-ava{width:34px;height:34px;border-radius:50%;background:var(--primary-color);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:700}
.side-uname{font-size:.85rem;color:#e2e8f0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.side-logout{width:100%;background:rgba(255,255,255,.08);color:#fff;border:0;border-radius:8px;padding:9px;cursor:pointer;font:inherit}
.side-logout:hover{background:rgba(255,255,255,.16)}
.admin-main{margin-left:240px;flex:1;min-width:0;display:flex;flex-direction:column}
.admin-topbar{display:flex;align-items:center;gap:12px;background:#fff;border-bottom:1px solid #e5e7eb;padding:12px 20px;position:sticky;top:0;z-index:40}
.admin-title{font-weight:700;font-size:1.05rem}
.side-toggle{display:none;background:none;border:0;font-size:1.4rem;cursor:pointer;color:#0f172a}
.role-admin .container{max-width:1100px}
@media(max-width:900px){
  .sidebar{transform:translateX(-100%)}
  .sidebar.open{transform:translateX(0);box-shadow:0 0 40px rgba(0,0,0,.4)}
  .admin-main{margin-left:0}
  .side-toggle{display:block}
}

/* Tarjetas de estadística con gradiente (dashboard admin) */
.role-admin .grid-cards{grid-template-columns:repeat(auto-fill,minmax(160px,1fr))}
.role-admin .stat{border:0;color:#fff;background:linear-gradient(135deg,var(--primary-color),#3b0764)}
.role-admin .stat .stat-num,.role-admin .stat .stat-lbl{color:#fff}
.role-admin .stat:nth-child(2){background:linear-gradient(135deg,#0ea5e9,#2563eb)}
.role-admin .stat:nth-child(3){background:linear-gradient(135deg,#10b981,#047857)}
.role-admin .stat:nth-child(4){background:linear-gradient(135deg,#f59e0b,#b45309)}
.role-admin .stat:nth-child(5){background:linear-gradient(135deg,#8b5cf6,#6d28d9)}
.role-admin .stat:nth-child(6){background:linear-gradient(135deg,#ef4444,#b91c1c)}
.role-admin .stat:nth-child(7){background:linear-gradient(135deg,#14b8a6,#0f766e)}

/* ---- Barra inferior tipo app ---- */
.topbar-app{justify-content:center}
.topbar-app .brand{font-size:1.1rem}
body.has-bottomnav{padding-bottom:76px}
body.has-bottomnav .footer{display:none}
.bottomnav{
  position:fixed;left:0;right:0;bottom:0;z-index:50;
  display:flex;background:#fff;border-top:1px solid #e5e7eb;
  box-shadow:0 -2px 10px rgba(0,0,0,.06);
  padding-bottom:env(safe-area-inset-bottom,0);
}
.bn-item{
  flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:3px;padding:8px 2px;color:#94a3b8;text-decoration:none;font-weight:600;
}
.bn-label{font-size:.66rem;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center}
.bn-item .bn-ico{line-height:0;display:flex}
.bn-item .bn-ico .ic{display:block}
.bn-item.active{color:var(--primary-color)}
.bn-item:hover{text-decoration:none;color:var(--primary-color)}
.bottomnav button.bn-item{background:none;border:0;cursor:pointer;font:inherit}

/* ---- Botón grande "pedir envío" (home cliente) ---- */
.hero-btn{
  display:flex;align-items:center;gap:14px;justify-content:center;
  background:var(--primary-color);color:#fff;border-radius:16px;
  padding:22px;font-size:1.2rem;font-weight:700;margin:16px 0;text-decoration:none;
  box-shadow:0 4px 14px rgba(13,110,253,.25);
}
.hero-btn:hover{text-decoration:none;filter:brightness(.95)}
.hero-ico{font-size:1.8rem}

/* ---- Pantalla de bienvenida (landing) ---- */
.landing-hero{
  text-align:center;padding:40px 20px;margin:-16px -16px 20px;border-radius:0 0 28px 28px;
  color:#fff;
  background:
    radial-gradient(1200px 400px at 50% -20%, rgba(255,255,255,.18), transparent),
    linear-gradient(135deg, var(--primary-color), #3b0764);
}
.landing-logo{max-height:88px;margin:0 auto 10px;background:#fff;border-radius:16px;padding:6px}
.landing-hero h1{font-size:1.8rem;margin:6px 0}
.landing-tag{color:rgba(255,255,255,.85);margin:4px 0 22px;font-size:1rem}
.cta-register{
  display:inline-block;background:#fff;color:var(--primary-color);
  padding:16px 38px;border-radius:999px;font-size:1.2rem;font-weight:800;
  text-decoration:none;box-shadow:0 8px 22px rgba(0,0,0,.25);
}
.cta-register:hover{text-decoration:none;transform:translateY(-1px)}
.landing-links{margin:18px 0 4px;color:rgba(255,255,255,.9)}
.landing-links a{margin:0 6px;color:#fff;text-decoration:underline}
.center{text-align:center}
.install-btn{display:inline-block;margin-top:14px;background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.4)}

/* ---- Cuadrícula de comercios ---- */
.biz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;margin:12px 0 24px}
.biz-card{
  background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:16px;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:6px;
}
.biz-ava{
  width:48px;height:48px;border-radius:50%;background:var(--primary-color);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:1.3rem;font-weight:700;
}
.biz-card .muted{font-size:.78rem}

/* ---- Slider de anuncios ---- */
.ad-slot{margin:12px 0}
.ad-slider{position:relative;margin:12px 0}
.ad-slides{position:relative}
.ad-slide{display:none;align-items:center;gap:14px;border-radius:16px;padding:16px 18px;text-decoration:none;min-height:92px;overflow:hidden}
.ad-slide.active{display:flex}
.ad-slide:hover{filter:brightness(.97);text-decoration:none}
/* Banner con imagen: pancarta ancha, responsiva (se adapta a móvil, tablet y horizontal) */
.ad-slide.has-img{padding:0;position:relative;display:none}
.ad-slide.has-img.active{display:block}
.ad-img{display:block;width:100%;aspect-ratio:4/1;max-height:320px;object-fit:cover;border-radius:16px}
/* Texto sobre la imagen (opcional): legible con degradado */
.ad-overlay{position:absolute;left:0;right:0;bottom:0;padding:10px 16px 12px;
  background:linear-gradient(transparent,rgba(0,0,0,.62));color:#fff;border-radius:0 0 16px 16px}
.ad-overlay .ad-title,.ad-overlay .ad-desc,.ad-overlay .ad-adv,.ad-overlay .ad-contact{color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.5)}
.ad-body{display:flex;flex-direction:column;gap:2px;line-height:1.3;min-width:0}
.ad-title{font-size:1.05rem;font-weight:800}
.ad-desc{font-size:.9rem;opacity:.95}
.ad-adv{font-size:.9rem;font-weight:700;margin-top:2px}
.ad-contact{font-size:.82rem;opacity:.95}
.ad-empty{background:#f8fafc;color:#475569;border:2px dashed #cbd5e1;justify-content:center;text-align:center}
.ad-empty .ad-title{color:#334155}
.ad-dots{display:flex;gap:6px;justify-content:center;margin-top:8px}
.ad-dot{width:8px;height:8px;border-radius:50%;border:0;background:#cbd5e1;cursor:pointer;padding:0;transition:width .2s,background .2s}
.ad-dot.active{background:var(--primary-color);width:22px;border-radius:4px}

/* ---- Perfil ---- */
.profile-head{display:flex;align-items:center;gap:14px}
.avatar{
  width:56px;height:56px;border-radius:50%;flex:0 0 auto;
  background:var(--primary-color);color:#fff;font-size:1.6rem;font-weight:700;
  display:flex;align-items:center;justify-content:center;
}

/* ---- Selector de mapa (origen/destino) ---- */
#map-picker{height:360px;border-radius:12px;overflow:hidden;border:1px solid #e5e7eb;margin:10px 0}
.pin{display:flex;align-items:center;justify-content:center;font-weight:700;color:#fff;border-radius:50% 50% 50% 0;transform:rotate(-45deg);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.4)}
.pin>*{transform:rotate(45deg)}
.pin-o{background:#198754}.pin-d{background:#dc3545}
.pick-controls{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin:8px 0}
.pick-controls .btn.on{outline:3px solid var(--primary-color);font-weight:700}
.search-row{display:flex;gap:6px;margin:6px 0}
.search-row input{flex:1}
#quote-box{background:#f1f5f9;border-radius:8px;padding:12px;font-size:1.05rem;margin:8px 0}
#quote-box.quote-bad{background:#f8d7da;color:#842029}
.tier-table input{max-width:120px}
.pod-img{max-width:100%;border-radius:12px;border:1px solid #e5e7eb;margin:6px 0}
.bulk-bar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;background:#fff;border:1px solid #e5e7eb;border-radius:12px;padding:10px 14px;margin:10px 0}
.bulk-bar select{width:auto;min-width:160px}
/* Acciones como texto en negrita (editar/eliminar) */
.act-row{display:flex;gap:16px;align-items:center;flex-wrap:wrap}
.act-row form{display:inline}
.act{background:none;border:0;padding:0;margin:0;font:inherit;font-weight:700;cursor:pointer;color:var(--primary-color);text-decoration:none;white-space:nowrap}
.act:hover{text-decoration:underline}
.act.danger{color:#dc3545}
.act.neutral{color:#64748b}
.act.ok{color:#198754}
.tier-head,.tier-form{display:grid;grid-template-columns:70px 1fr 1fr 1fr 1fr 60px 90px;gap:6px;align-items:center}
.tier-head{padding:0 4px 4px;font-size:.8rem}
.tier-row{display:flex;gap:6px;align-items:center;margin:4px 0}
.tier-row .tier-form{flex:1}
.tier-form input[type=number]{width:100%}
.chk{display:flex;justify-content:center}
@media(max-width:700px){.tier-head{display:none}.tier-form{grid-template-columns:1fr 1fr}}

/* ---- Firma de entrega (canvas) ---- */
.sign-box{margin-top:8px}
.sign-pad{width:100%;height:170px;border:2px dashed #b9c2cf;border-radius:10px;background:#fff;touch-action:none;display:block}
.sign-box .btn-row{display:flex;gap:8px;margin-top:8px}
.sign-img{max-width:260px;border:1px solid #dfe4ea;border-radius:8px;background:#fff;padding:4px}
.sign-done{margin-bottom:8px}
.sign-box.signed .sign-pad{opacity:.5}

/* ---- Compartir enlace (copiar / WhatsApp) ---- */
.share-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:10px}
.share-link{flex:1;min-width:160px;padding:8px 10px;border:1px solid #dfe4ea;border-radius:8px;font-size:13px;background:#f8fafc}
.btn.small{padding:4px 8px;font-size:13px}
.order-item-main{display:block;text-decoration:none;color:inherit}

/* ---- Negocios afiliados: logo + directorio (horario / ubicación / llamar / WhatsApp) ---- */
.biz-clickable{cursor:pointer;transition:transform .1s ease,box-shadow .1s ease}
.biz-clickable:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,0,0,.12)}
.biz-logo{width:64px;height:64px;object-fit:contain;border-radius:12px;background:#fff}
.biz-logo-mini{width:26px;height:26px;object-fit:contain;border-radius:6px;vertical-align:middle;margin-right:6px}
.biz-dir-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:16px}
.biz-dir-backdrop{position:absolute;inset:0;background:rgba(15,23,42,.55)}
.biz-dir-card{position:relative;background:#fff;color:#0f172a;border-radius:14px;padding:22px;max-width:340px;width:100%;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.biz-dir-x{position:absolute;top:10px;right:12px;background:none;border:0;font-size:20px;cursor:pointer;color:#64748b;line-height:1}
.biz-dir-name{margin:0 0 10px;font-size:1.15rem;padding-right:20px}
.biz-dir-hours,.biz-dir-phone,.biz-dir-address{margin:4px 0;font-size:.95rem;color:#334155}
.biz-dir-actions{display:flex;flex-direction:column;gap:8px;margin-top:14px}
.biz-dir-actions .btn{width:100%;text-align:center;text-decoration:none}
