:root{
  --bg:#FAF6EC;
  --surface:#FFFFFF;
  --surface-2:#F1ECDD;
  --text:#1B2119;
  --text-muted:#5B6359;
  --border:#E3DCC7;
  --primary:#163832;
  --primary-light:#2F5D4F;
  --primary-soft:#E4EFE8;
  --accent:#FF6B35;
  --accent-soft:#FFE4D3;
  --lime:#C7D93B;
  --danger:#C7452E;
  --webpay:#E4032E;
  --shadow-soft: 0 10px 30px -14px rgba(22,56,50,0.28);
  --radius-card: 16px;
  --radius-chip: 999px;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --bg:#12211C; --surface:#193029; --surface-2:#1F3A31; --text:#F2EFE4;
    --text-muted:#AEBBB1; --border:#2C463C; --primary:#9FD8C4; --primary-light:#7FC1AA;
    --primary-soft:#20443A; --accent:#FF8A5C; --accent-soft:#3A2A22; --lime:#D8E86B; --danger:#E77361;
  }
}
:root[data-theme="dark"]{
  --bg:#12211C; --surface:#193029; --surface-2:#1F3A31; --text:#F2EFE4;
  --text-muted:#AEBBB1; --border:#2C463C; --primary:#9FD8C4; --primary-light:#7FC1AA;
  --primary-soft:#20443A; --accent:#FF8A5C; --accent-soft:#3A2A22; --lime:#D8E86B; --danger:#E77361;
}

*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{
  background:var(--bg); color:var(--text);
  font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;
  line-height:1.45; -webkit-font-smoothing:antialiased;
}
h1,h2,h3,.brand-word{font-family:'Fraunces',Georgia,'Times New Roman',serif;font-weight:600;letter-spacing:-0.01em;margin:0;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;}
img,svg{display:block;max-width:100%;}

.wrap{max-width:1180px;margin:0 auto;padding:0 24px;}
@media (max-width:640px){ .wrap{padding:0 16px;} }

/* Top bar */
.topbar{position:sticky;top:0;z-index:40;background:var(--bg);border-bottom:1px solid var(--border);}
.topbar-inner{display:flex;align-items:center;gap:20px;padding:14px 0;flex-wrap:wrap;row-gap:10px;}
.brand{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.brand-mark{width:34px;height:34px;flex-shrink:0;}
.brand-word{font-size:1.35rem;color:var(--primary);}
.brand-tag{font-size:0.72rem;color:var(--text-muted);margin-top:-2px;}

.search-box{flex:1;max-width:420px;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-chip);padding:9px 16px;}
.search-box input{border:none;background:transparent;flex:1;color:var(--text);font-size:0.92rem;}
.search-box input:focus{outline:none;}
.search-box svg{flex-shrink:0;color:var(--text-muted);}

.nav-tabs{display:flex;gap:4px;margin-left:auto;flex-shrink:0;flex-wrap:wrap;}
.nav-tabs a{border:none;background:transparent;color:var(--text-muted);font-size:0.92rem;font-weight:600;padding:8px 14px;border-radius:var(--radius-chip);transition:background .15s ease,color .15s ease;display:inline-block;}
.nav-tabs a.active{background:var(--primary);color:#fff;}
.nav-tabs a:hover:not(.active){background:var(--surface-2);color:var(--text);}

.top-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;}
.icon-btn{position:relative;width:40px;height:40px;border-radius:50%;border:1px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:center;color:var(--text);}
.icon-btn .badge{position:absolute;top:-4px;right:-4px;background:var(--accent);color:#fff;font-size:0.68rem;font-weight:700;min-width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center;padding:0 4px;}

@media (max-width:860px){
  .search-box{display:none;}
  .nav-tabs{order:5;width:100%;margin-left:0;overflow-x:auto;-webkit-overflow-scrolling:touch;padding-bottom:2px;}
  .nav-tabs a{white-space:nowrap;}
}

.page{padding:32px 0 72px;}

/* Hero */
.hero{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);border-radius:22px;padding:44px 40px;color:#F4F1E4;display:grid;grid-template-columns:1.2fr 0.8fr;align-items:center;gap:24px;margin-bottom:36px;position:relative;overflow:hidden;}
.hero::after{content:"";position:absolute;right:-40px;bottom:-60px;width:220px;height:220px;background:var(--lime);opacity:.18;border-radius:50%;}
.hero h1{font-size:2.1rem;color:#fff;max-width:14ch;}
.hero p{color:#DCE7DF;max-width:38ch;margin-top:12px;font-size:0.98rem;}
.hero-cta{margin-top:22px;display:inline-flex;align-items:center;gap:8px;background:var(--accent);color:#fff;border:none;padding:12px 22px;border-radius:var(--radius-chip);font-weight:700;font-size:0.95rem;}
.hero-art{display:flex;justify-content:center;}
@media (max-width:760px){ .hero{grid-template-columns:1fr;padding:32px 24px;} .hero-art{display:none;} .hero h1{font-size:1.6rem;max-width:none;} }

/* Category chips */
.cat-row{display:flex;gap:10px;overflow-x:auto;padding:2px 2px 18px;-webkit-overflow-scrolling:touch;}
.cat-chip{flex-shrink:0;display:flex;align-items:center;gap:8px;background:var(--surface);border:1px solid var(--border);padding:9px 16px;border-radius:var(--radius-chip);font-size:0.88rem;font-weight:600;color:var(--text);}
.cat-chip.active{background:var(--primary-soft);border-color:var(--primary);color:var(--primary);}
:root[data-theme="dark"] .cat-chip.active{color:var(--text);}

.section-heading{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:16px;flex-wrap:wrap;gap:6px;}
.section-heading h2{font-size:1.3rem;}
.section-heading span{color:var(--text-muted);font-size:0.88rem;}

/* Product grid */
.product-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(216px,1fr));gap:16px;}
.product-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:16px;display:flex;flex-direction:column;gap:10px;}
.product-thumb{height:104px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:2.4rem;}
.product-vendor{font-size:0.74rem;color:var(--text-muted);display:flex;align-items:center;gap:5px;}
.product-vendor .dot{width:5px;height:5px;border-radius:50%;background:var(--lime);}
.product-name{font-size:0.98rem;font-weight:700;}
.product-unit{font-size:0.78rem;color:var(--text-muted);}
.product-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:auto;}
.product-price{font-weight:800;font-size:1.02rem;color:var(--primary);}
:root[data-theme="dark"] .product-price{color:var(--accent);}
.add-btn{width:34px;height:34px;border-radius:50%;border:none;background:var(--accent);color:#fff;font-size:1.2rem;display:flex;align-items:center;justify-content:center;line-height:1;}
.qty-stepper{display:flex;align-items:center;gap:10px;background:var(--surface-2);border-radius:var(--radius-chip);padding:4px 6px;}
.qty-stepper button{background:none;border:none;width:24px;height:24px;font-weight:700;color:var(--primary);font-size:1rem;}
.qty-stepper span{min-width:14px;text-align:center;font-weight:700;font-size:0.86rem;}

/* Cart */
.cart-layout{display:grid;grid-template-columns:1.5fr 1fr;gap:28px;align-items:start;}
@media (max-width:860px){ .cart-layout{grid-template-columns:1fr;} }
.vendor-group{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);margin-bottom:16px;overflow:hidden;}
.vendor-group-head{display:flex;align-items:center;justify-content:space-between;padding:14px 18px;background:var(--surface-2);}
.vendor-group-head strong{font-size:0.94rem;}
.vendor-group-head span{font-size:0.76rem;color:var(--text-muted);}
.cart-line{display:flex;align-items:center;gap:14px;padding:14px 18px;border-top:1px solid var(--border);flex-wrap:wrap;}
.cart-line .thumb{width:48px;height:48px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:1.4rem;flex-shrink:0;}
.cart-line .name{font-weight:600;font-size:0.9rem;}
.cart-line .unit{font-size:0.76rem;color:var(--text-muted);}
.cart-line .line-price{font-weight:700;margin-left:auto;font-size:0.92rem;}
.cart-line .remove{background:none;border:none;color:var(--text-muted);font-size:1rem;padding:4px;}
.cart-line form{display:inline;}

.summary-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:22px;position:sticky;top:96px;}
.summary-row{display:flex;justify-content:space-between;font-size:0.9rem;margin-bottom:10px;color:var(--text-muted);}
.summary-row.total{color:var(--text);font-weight:800;font-size:1.05rem;border-top:1px solid var(--border);padding-top:14px;margin-top:6px;}
.btn-primary{width:100%;border:none;background:var(--primary);color:#fff;padding:14px;border-radius:var(--radius-chip);font-weight:700;font-size:0.96rem;margin-top:16px;display:block;text-align:center;}
.btn-secondary{width:100%;border:1px solid var(--border);background:transparent;color:var(--text);padding:12px;border-radius:var(--radius-chip);font-weight:600;font-size:0.9rem;margin-top:10px;display:block;text-align:center;}
.empty-state{text-align:center;padding:60px 20px;color:var(--text-muted);}
.empty-state .em{font-size:2.4rem;margin-bottom:14px;}

/* Checkout */
.checkout-layout{display:grid;grid-template-columns:1.4fr 1fr;gap:28px;align-items:start;}
@media (max-width:860px){ .checkout-layout{grid-template-columns:1fr;} }
.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:24px;margin-bottom:18px;}
.form-card h3{font-size:1.05rem;margin-bottom:16px;}
.field-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px;}
@media (max-width:520px){ .field-grid{grid-template-columns:1fr;} }
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;}
.field label{font-size:0.82rem;font-weight:600;color:var(--text-muted);}
.field input,.field select,.field textarea{border:1px solid var(--border);background:var(--bg);color:var(--text);padding:11px 13px;border-radius:10px;font-size:0.92rem;font-family:inherit;width:100%;}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:transparent;}

.webpay-box{border:1px solid var(--border);border-radius:14px;padding:18px;background:var(--surface-2);display:flex;align-items:center;gap:14px;margin-top:6px;}
.webpay-mark{width:44px;height:44px;border-radius:10px;background:var(--webpay);color:#fff;display:flex;align-items:center;justify-content:center;font-weight:800;font-size:0.72rem;flex-shrink:0;text-align:center;}
.webpay-copy p{margin:0;font-size:0.82rem;color:var(--text-muted);}
.webpay-copy strong{font-size:0.94rem;}
.pay-btn{width:100%;border:none;background:var(--webpay);color:#fff;padding:15px;border-radius:var(--radius-chip);font-weight:800;font-size:0.98rem;margin-top:16px;display:flex;align-items:center;justify-content:center;gap:8px;}
.lock-note{display:flex;align-items:center;gap:6px;justify-content:center;font-size:0.76rem;color:var(--text-muted);margin-top:10px;}

/* Auth */
.auth-wrap{max-width:420px;margin:0 auto;}
.auth-toggle{display:flex;background:var(--surface-2);border-radius:var(--radius-chip);padding:4px;margin-bottom:24px;}
.auth-toggle a{flex:1;border:none;background:transparent;padding:10px;border-radius:var(--radius-chip);font-weight:700;font-size:0.9rem;color:var(--text-muted);text-align:center;}
.auth-toggle a.active{background:var(--primary);color:#fff;}

/* Admin panel */
.panel-grid{display:grid;grid-template-columns:1fr 1.3fr;gap:24px;align-items:start;}
@media (max-width:900px){ .panel-grid{grid-template-columns:1fr;} }
.prov-table{width:100%;border-collapse:collapse;font-size:0.86rem;}
.prov-table th{text-align:left;color:var(--text-muted);font-weight:600;font-size:0.76rem;padding:0 10px 10px;border-bottom:1px solid var(--border);}
.prov-table td{padding:12px 10px;border-bottom:1px solid var(--border);}
.status-pill{padding:4px 10px;border-radius:var(--radius-chip);font-size:0.72rem;font-weight:700;}
.status-active{background:var(--primary-soft);color:var(--primary);}
:root[data-theme="dark"] .status-active{color:var(--text);}
.status-pending{background:var(--accent-soft);color:var(--accent);}
.status-inactive{background:var(--surface-2);color:var(--text-muted);}
.btn-block{border:none;background:var(--primary);color:#fff;padding:12px 18px;border-radius:var(--radius-chip);font-weight:700;font-size:0.9rem;}
.btn-danger{border:none;background:transparent;color:var(--danger);padding:6px 10px;font-weight:700;font-size:0.8rem;}
.admin-tabs{display:flex;gap:8px;margin-bottom:24px;flex-wrap:wrap;}
.admin-tabs a{padding:9px 16px;border-radius:var(--radius-chip);border:1px solid var(--border);font-weight:600;font-size:0.86rem;color:var(--text-muted);}
.admin-tabs a.active{background:var(--primary);color:#fff;border-color:var(--primary);}
.stat-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px;margin-bottom:28px;}
.stat-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-card);padding:18px;}
.stat-card .num{font-size:1.6rem;font-weight:800;color:var(--primary);}
.stat-card .label{font-size:0.8rem;color:var(--text-muted);}

footer{border-top:1px solid var(--border);padding:26px 0;color:var(--text-muted);font-size:0.82rem;text-align:center;}

.alert{padding:12px 16px;border-radius:12px;margin-bottom:16px;font-size:0.88rem;}
.alert-error{background:var(--accent-soft);color:var(--danger);}
.alert-success{background:var(--primary-soft);color:var(--primary);}
:root[data-theme="dark"] .alert-success{color:var(--text);}
.alert-info{background:var(--surface-2);color:var(--text);}

/* ---------- Ajustes móviles (Android / iPhone) ---------- */
.hint{font-size:0.78rem;color:var(--text-muted);margin-top:-6px;margin-bottom:12px;}

.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;}
.table-scroll .prov-table{min-width:560px;}

@media (max-width:600px){
  /* iOS hace zoom automático si un input tiene menos de 16px */
  .field input, .field select, .field textarea, .search-box input { font-size:16px; }

  /* objetivos táctiles más grandes (mínimo recomendado ~40-44px) */
  .icon-btn{width:44px;height:44px;}
  .qty-stepper{padding:6px 8px;}
  .qty-stepper button{width:32px;height:32px;font-size:1.15rem;}
  .add-btn{width:40px;height:40px;}
  .cart-line .remove{padding:8px;font-size:1.1rem;}
  .nav-tabs a{padding:10px 14px;}

  .hero{border-radius:18px;}
  .product-grid{gap:12px;}
  .cart-line{gap:10px;}
  .cart-line .line-price{margin-left:0;flex-basis:100%;order:3;text-align:left;}
}

html{-webkit-text-size-adjust:100%;}
body{overflow-x:hidden;-webkit-tap-highlight-color:transparent;}
input, select, textarea, button{-webkit-appearance:none;appearance:none;border-radius:10px;}
button, .btn-primary, .btn-secondary, .btn-block, .cat-chip, .add-btn, .icon-btn{touch-action:manipulation;}

/* respeta el notch/home-indicator en iPhone */
.topbar{padding-top:env(safe-area-inset-top);}
footer{padding-bottom:calc(26px + env(safe-area-inset-bottom));}
