@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');

:root {
  --brand:#16a34a; --brand-dark:#15803d; --brand-xdark:#14532d;
  --brand-light:#dcfce7; --brand-mid:#bbf7d0;
  --accent:#f59e0b; --danger:#dc2626;
  --surface:#ffffff; --bg:#f0fdf4;
  --text:#111827; --muted:#6b7280; --border:#e5e7eb;
  --radius:14px; --radius-sm:8px;
  --shadow:0 1px 4px rgba(0,0,0,.07),0 4px 20px rgba(0,0,0,.06);
  --shadow-lg:0 8px 40px rgba(0,0,0,.13);
  --transition:.18s cubic-bezier(.4,0,.2,1);
}
*,*::before,*::after{box-sizing:border-box}
body{font-family:'Plus Jakarta Sans',system-ui,sans-serif;background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased}

/* Navbar */
.navbar{background:var(--surface)!important;border-bottom:1px solid var(--border);padding:.7rem 0;position:sticky;top:0;z-index:1030}
.navbar-brand{font-weight:800;font-size:1.15rem;color:var(--brand)!important;letter-spacing:-.4px;display:flex;align-items:center;gap:.4rem}
.navbar .form-control{border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.875rem;transition:border-color var(--transition),box-shadow var(--transition)}
.navbar .form-control:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(22,163,74,.14);outline:none}
.navbar .form-select{border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.82rem}

/* Cart button */
#cartButton{background:var(--brand-light);color:var(--brand-dark);border:1.5px solid var(--brand-mid);border-radius:10px;font-weight:700;font-size:.85rem;padding:.45rem 1.1rem;transition:background var(--transition),transform var(--transition)}
#cartButton:hover{background:var(--brand-mid);color:var(--brand-xdark)}
#cartButton.bump{animation:cartBump .4s ease}
@keyframes cartBump{0%{transform:scale(1)}35%{transform:scale(1.15) rotate(-3deg)}65%{transform:scale(1.08) rotate(2deg)}100%{transform:scale(1) rotate(0)}}
#cartButton .badge{background:var(--brand)!important;font-size:.62rem;min-width:18px;height:18px;line-height:18px;padding:0 5px}

/* Buttons */
.btn-primary{background:var(--brand);border-color:var(--brand);border-radius:var(--radius-sm);font-weight:700;transition:background var(--transition),transform var(--transition),box-shadow var(--transition)}
.btn-primary:hover{background:var(--brand-dark);border-color:var(--brand-dark);box-shadow:0 4px 12px rgba(22,163,74,.3)}
.btn-primary:active{transform:scale(.96)}
.btn-outline-primary{border-color:var(--brand);color:var(--brand);border-radius:var(--radius-sm);font-weight:600}
.btn-outline-primary:hover{background:var(--brand);color:#fff}
.btn-success{background:#16a34a;border-color:#16a34a;border-radius:var(--radius-sm);font-weight:700}
.btn-success:hover{background:#15803d;border-color:#15803d}
.btn-outline-secondary{border-radius:var(--radius-sm);font-weight:600}

/* Product cards */
.product-card{border:1px solid var(--border)!important;border-radius:var(--radius)!important;box-shadow:var(--shadow);transition:transform var(--transition),box-shadow var(--transition),border-color var(--transition);overflow:hidden;background:var(--surface);cursor:pointer}
.product-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg);border-color:var(--brand-mid)!important}
.product-card .card-img-top{background:#f9fafb;transition:transform .3s ease}
.product-card:hover .card-img-top{transform:scale(1.04)}
.product-card .card-body{padding:.9rem}
.product-card .card-title{font-size:.84rem;font-weight:600;line-height:1.35;color:var(--text);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.product-card .price-tag{color:var(--brand-dark);font-size:1.05rem;font-weight:800}

/* Botón Añadir en card */
.btn.add-to-cart{background:var(--brand);border-color:var(--brand);border-radius:var(--radius-sm);font-weight:700;font-size:.76rem;padding:.35rem .75rem;transition:background var(--transition),transform var(--transition)}
.btn.add-to-cart:hover:not(:disabled){background:var(--brand-dark);border-color:var(--brand-dark);transform:scale(1.06)}
.btn.add-to-cart:disabled{opacity:.45}

/* Favorito btn en card */
.btn-fav{position:absolute;top:8px;left:8px;width:30px;height:30px;border-radius:50%;background:rgba(255,255,255,.85);border:none;display:flex;align-items:center;justify-content:center;font-size:.9rem;cursor:pointer;transition:transform var(--transition),background var(--transition);backdrop-filter:blur(4px);z-index:2}
.btn-fav:hover{transform:scale(1.2);background:#fff}
.btn-fav.active{background:#fee2e2}

/* Expand hint */
.expand-hint{position:absolute;bottom:8px;right:8px;width:30px;height:30px;background:rgba(255,255,255,.85);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:.85rem;opacity:0;transition:opacity var(--transition);backdrop-filter:blur(4px);pointer-events:none}
.product-card:hover .expand-hint{opacity:1}

/* Badges stock */
.badge-stock{position:absolute;top:8px;right:8px;font-size:.68rem;border-radius:6px;padding:3px 7px;font-weight:700}
.badge-agotado{background:#fee2e2;color:#991b1b}
.badge-low{background:#fff7ed;color:#c2410c}

/* Banner de ofertas */
.featured-banner{background:linear-gradient(135deg,var(--brand-dark) 0%,var(--brand) 100%);border-radius:var(--radius);padding:1.5rem;color:#fff;margin-bottom:1.5rem;overflow:hidden;position:relative}
.featured-banner::after{content:'🦅';position:absolute;right:20px;top:50%;transform:translateY(-50%);font-size:5rem;opacity:.12}
.featured-banner .badge-oferta{background:rgba(255,255,255,.25);border-radius:6px;padding:2px 8px;font-size:.72rem;font-weight:700}
.featured-cards{display:flex;gap:.75rem;overflow-x:auto;padding-bottom:.5rem;scroll-snap-type:x mandatory}
.featured-cards::-webkit-scrollbar{height:4px}
.featured-cards::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}
.featured-cards::-webkit-scrollbar-thumb{background:var(--brand-mid);border-radius:4px}
.featured-card{flex:0 0 160px;scroll-snap-align:start;background:rgba(255,255,255,.15);border-radius:10px;padding:.75rem;cursor:pointer;transition:background var(--transition);backdrop-filter:blur(4px);border:1px solid rgba(255,255,255,.2)}
.featured-card:hover{background:rgba(255,255,255,.25)}
.featured-card img{width:100%;height:90px;object-fit:cover;border-radius:8px;margin-bottom:.5rem}
.featured-card .fc-name{font-size:.75rem;font-weight:600;color:#fff;line-height:1.3;margin-bottom:.25rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.featured-card .fc-price{font-size:.9rem;font-weight:800;color:#fff}
.featured-card .fc-badge{font-size:.65rem;background:#f59e0b;color:#fff;border-radius:4px;padding:1px 5px;font-weight:700}

/* Modal producto */
#modalProducto .modal-content{border-radius:20px;border:none;overflow:hidden;box-shadow:var(--shadow-lg)}
#modalProducto .modal-img-wrap{background:#f8fafc;display:flex;align-items:center;justify-content:center;min-height:280px;overflow:hidden}
#modalProducto .modal-img-wrap img{max-height:340px;width:100%;object-fit:contain;transition:transform .4s ease}
#modalProducto .modal-img-wrap img:hover{transform:scale(1.07)}
#modalProducto .modal-body{padding:1.75rem}
#modalProducto .prod-code{font-size:.75rem;font-weight:700;color:var(--muted);letter-spacing:.8px;text-transform:uppercase}
#modalProducto .prod-name{font-size:1.25rem;font-weight:800;line-height:1.3;margin:.4rem 0 .75rem}
#modalProducto .prod-price{font-size:1.9rem;font-weight:800;color:var(--brand-dark);line-height:1}
#modalProducto .prod-unit{font-size:.8rem;color:var(--muted);margin-top:.2rem}
#modalProducto .prod-stock-badge{display:inline-flex;align-items:center;gap:.3rem;padding:.3rem .75rem;border-radius:20px;font-size:.78rem;font-weight:700}
#modalProducto .stock-ok{background:var(--brand-light);color:var(--brand-dark)}
#modalProducto .stock-low{background:#fff7ed;color:#c2410c}
#modalProducto .stock-out{background:#fee2e2;color:#991b1b}
#modalProducto .qty-control{display:flex;align-items:center;gap:.5rem;margin:1rem 0}
#modalProducto .qty-control button{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--border);background:var(--surface);font-size:1.1rem;font-weight:700;transition:background var(--transition);display:flex;align-items:center;justify-content:center}
#modalProducto .qty-control button:hover{background:var(--brand-light);border-color:var(--brand-mid)}
#modalProducto .qty-control input{width:56px;text-align:center;font-weight:700;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:1rem;padding:.3rem 0}
#modalProducto .btn-add-modal{width:100%;padding:.75rem;font-size:1rem;font-weight:800;border-radius:12px}
#modalProducto .btn-add-modal:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 20px rgba(22,163,74,.35)}
#modalProducto .img-zoom-btn{position:absolute;top:10px;right:10px;background:rgba(255,255,255,.9);border:none;border-radius:8px;padding:5px 9px;font-size:.8rem;cursor:pointer;transition:background var(--transition);backdrop-filter:blur(4px)}
#modalProducto .img-zoom-btn:hover{background:#fff}

/* Reviews en modal */
.review-stars{color:#f59e0b;font-size:1.1rem;letter-spacing:1px}
.review-item{border-bottom:1px solid var(--border);padding:.6rem 0}
.review-item:last-child{border-bottom:none}

/* Paginación */
.pagination .page-link{border-radius:var(--radius-sm)!important;margin:0 2px;border:1.5px solid var(--border);color:var(--brand);font-weight:600;font-size:.84rem;transition:all var(--transition)}
.pagination .page-item.active .page-link{background:var(--brand);border-color:var(--brand);color:#fff}
.pagination .page-link:hover{background:var(--brand-light);border-color:var(--brand-mid)}

/* Forms */
.form-label{font-weight:600;font-size:.84rem;color:var(--text)}
.form-control,.form-select{border:1.5px solid var(--border);border-radius:var(--radius-sm);font-size:.88rem;transition:border-color var(--transition),box-shadow var(--transition)}
.form-control:focus,.form-select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(22,163,74,.14)}

/* Tabla carrito */
.table{font-size:.88rem}
.table th{font-weight:700;color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.6px;border-bottom:2px solid var(--border)}
.input-group-sm .btn{border-radius:6px}
.input-group-sm .form-control{text-align:center;font-weight:700}

/* Alertas */
.alert{border-radius:var(--radius);border:none;font-size:.875rem}
.alert-warning{background:#fffbeb;color:#92400e}
.alert-info{background:#eff6ff;color:#1e40af}
.alert-danger{background:#fef2f2;color:#991b1b}

/* Cards */
.card{border:1px solid var(--border)!important;border-radius:var(--radius)!important}
.shadow-sm{box-shadow:var(--shadow)!important}

/* Toast */
.cart-toast{position:fixed;bottom:80px;right:24px;z-index:10500;background:var(--brand-dark);color:#fff;border-radius:14px;padding:.8rem 1.4rem;font-weight:700;font-size:.88rem;box-shadow:var(--shadow-lg);display:flex;align-items:center;gap:.5rem;animation:toastIn .25s ease forwards;pointer-events:none;max-width:320px}
.cart-toast.error{background:var(--danger)}
@keyframes toastIn{from{transform:translateY(30px);opacity:0}to{transform:translateY(0);opacity:1}}

/* WhatsApp flotante */
.wa-float{position:fixed;bottom:24px;right:24px;z-index:10000;width:56px;height:56px;background:#25d366;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(37,211,102,.5);transition:transform var(--transition),box-shadow var(--transition);text-decoration:none}
.wa-float:hover{transform:scale(1.1);box-shadow:0 6px 28px rgba(37,211,102,.6);color:#fff}
.wa-float::before{content:'¿Consultas?';position:absolute;right:calc(100% + 12px);white-space:nowrap;background:#fff;color:var(--text);padding:.35rem .8rem;border-radius:20px;font-size:.78rem;font-weight:600;box-shadow:var(--shadow);opacity:0;transition:opacity var(--transition);pointer-events:none}
.wa-float:hover::before{opacity:1}

/* Autocomplete */
.suggest-wrapper{position:relative;flex:1}
#suggest-dropdown{position:absolute;z-index:9999;background:var(--surface);border:1.5px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow-lg);max-height:340px;overflow-y:auto;width:100%;top:calc(100% + 6px);left:0}
#suggest-dropdown .suggest-item{padding:.65rem 1rem;cursor:pointer;font-size:.85rem;transition:background var(--transition);border-bottom:1px solid #f3f4f6;display:flex;justify-content:space-between;align-items:center;gap:.5rem}
#suggest-dropdown .suggest-item:last-child{border-bottom:none}
#suggest-dropdown .suggest-item:hover,#suggest-dropdown .suggest-item.active{background:var(--brand-light)}
#suggest-dropdown .suggest-code{font-size:.7rem;color:var(--muted);background:#f3f4f6;border-radius:4px;padding:2px 6px;white-space:nowrap}
#suggest-dropdown mark{background:#fef08a;border-radius:3px;padding:0 2px;font-style:normal;font-weight:700}

/* Footer */
footer{background:var(--surface);border-top:1px solid var(--border);margin-top:3rem;padding:2rem 0 1.5rem}
footer .brand-footer{color:var(--brand-dark);font-weight:800;font-size:1.05rem}
footer .footer-link{color:var(--muted);text-decoration:none;font-size:.82rem;font-weight:500;transition:color var(--transition)}
footer .footer-link:hover{color:var(--brand)}

/* Página éxito */
.success-icon{width:80px;height:80px;background:var(--brand-light);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2.2rem;margin:0 auto 1.25rem;box-shadow:0 0 0 12px rgba(22,163,74,.08)}

/* Dashboard */
.stat-card{border-radius:var(--radius);padding:1.2rem 1.5rem;color:#fff;position:relative;overflow:hidden}
.stat-card::after{position:absolute;right:16px;top:50%;transform:translateY(-50%);font-size:3.5rem;opacity:.18}
.stat-card.green{background:linear-gradient(135deg,var(--brand) 0%,#059669 100%)}
.stat-card.green::after{content:'💰'}
.stat-card.blue{background:linear-gradient(135deg,#3b82f6 0%,#1d4ed8 100%)}
.stat-card.blue::after{content:'📦'}
.stat-card.amber{background:linear-gradient(135deg,#f59e0b 0%,#d97706 100%)}
.stat-card.amber::after{content:'⭐'}
.stat-card.red{background:linear-gradient(135deg,#ef4444 0%,#dc2626 100%)}
.stat-card.red::after{content:'⚠️'}
.stat-card .stat-val{font-size:2rem;font-weight:800;line-height:1}
.stat-card .stat-lbl{font-size:.8rem;opacity:.85;margin-top:.3rem}

/* Responsive */
@media(max-width:576px){
  .product-card .card-img-top{height:140px!important}
  .navbar-brand{font-size:.95rem}
  #modalProducto .prod-price{font-size:1.5rem}
  .featured-card{flex:0 0 130px}
  .wa-float{bottom:16px;right:16px;width:48px;height:48px}
}

/* Utils */
.object-fit-cover{object-fit:cover}
.object-fit-contain{object-fit:contain}
.rounded{border-radius:var(--radius)!important}
.bg-white{background:var(--surface)!important}
