
:root{
  --primary:#0a0f2e;
  --secondary:#16213e;
  --accent:#00d4ff;
  --accent2:#7c4dff;
  --success:#00e676;
  --warning:#ffd740;
  --danger:#ff5252;
  --text:#1a1a2e;
  --text-muted:#6b7280;
  --bg:#f0f4ff;
  --bg-card:#ffffff;
  --border:#e2e8f0;
  --shadow:0 4px 24px rgba(0,212,255,0.08);
  --shadow-hover:0 12px 40px rgba(0,212,255,0.18);
  --radius:14px;
  --radius-sm:8px;
  --font-main:'Plus Jakarta Sans','Segoe UI',sans-serif;
  --font-display:'Space Grotesk','Plus Jakarta Sans',sans-serif;
  --transition:all 0.28s cubic-bezier(0.4,0,0.2,1);
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;font-size:16px;}
body{font-family:var(--font-main);background:var(--bg);color:var(--text);min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;}
::-webkit-scrollbar{width:6px;}
::-webkit-scrollbar-track{background:var(--bg);}
::-webkit-scrollbar-thumb{background:var(--accent);border-radius:3px;}

/* ── LOADER ── */
#loader{position:fixed;inset:0;background:var(--primary);display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:9999;transition:opacity .5s,visibility .5s;}
#loader.hidden{opacity:0;visibility:hidden;}
.loader-logo{font-family:var(--font-display);font-size:2.2rem;font-weight:800;color:var(--accent);letter-spacing:4px;margin-bottom:30px;animation:pulse 1.5s infinite;display:flex;align-items:center;gap:12px;}
.loader-bar{width:200px;height:3px;background:rgba(255,255,255,0.1);border-radius:2px;overflow:hidden;}
.loader-progress{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent2));border-radius:2px;animation:loading 1.8s ease-in-out forwards;}
@keyframes loading{from{width:0}to{width:100%}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}

/* ── NAVBAR ── */
#navbar{position:sticky;top:0;z-index:1000;background:rgba(10,15,46,0.96);backdrop-filter:blur(20px);border-bottom:1px solid rgba(0,212,255,0.12);padding:0 20px;height:64px;display:flex;align-items:center;justify-content:space-between;gap:16px;}
.nav-brand{display:flex;align-items:center;gap:10px;text-decoration:none;flex-shrink:0;}
.nav-brand-name{font-family:var(--font-display);font-size:1.3rem;font-weight:800;color:var(--accent);letter-spacing:2px;}
.nav-search{flex:1;max-width:480px;position:relative;}
.nav-search input{width:100%;background:rgba(255,255,255,0.07);border:1px solid rgba(0,212,255,0.2);border-radius:50px;padding:9px 44px 9px 18px;color:#fff;font-size:.9rem;transition:var(--transition);outline:none;}
.nav-search input:focus{border-color:var(--accent);background:rgba(0,212,255,0.08);box-shadow:0 0 0 3px rgba(0,212,255,0.1);}
.nav-search input::placeholder{color:rgba(255,255,255,.4);}
.nav-search-icon{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:rgba(255,255,255,.4);pointer-events:none;}
.nav-actions{display:flex;align-items:center;gap:10px;}
.currency-wrapper{display:flex;flex-direction:column;align-items:flex-start;gap:1px;}
.currency-label{font-size:.6rem;font-weight:700;color:rgba(0,212,255,.7);text-transform:uppercase;letter-spacing:1px;line-height:1;pointer-events:none;}
.currency-select{background:rgba(255,255,255,0.07);border:1px solid rgba(0,212,255,0.2);border-radius:50px;padding:7px 12px;color:var(--accent);font-size:.85rem;font-weight:700;cursor:pointer;outline:none;transition:var(--transition);}
.currency-select:focus{border-color:var(--accent);}
.currency-select option{background:var(--primary);color:#fff;}
.btn-cart{position:relative;background:linear-gradient(135deg,var(--accent),var(--accent2));border:none;border-radius:50px;padding:8px 14px;color:var(--primary);font-weight:800;font-size:.88rem;cursor:pointer;display:flex;align-items:center;gap:5px;transition:var(--transition);white-space:nowrap;flex-shrink:0;}
.btn-cart:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,212,255,.4);}
.cart-count{position:absolute;top:-7px;right:-7px;background:var(--danger);color:#fff;font-size:.68rem;font-weight:900;min-width:20px;height:20px;padding:0 4px;border-radius:50px;display:none;align-items:center;justify-content:center;border:2px solid #0a0f2e;box-shadow:0 2px 6px rgba(0,0,0,.4);z-index:2;}
.cart-count.visible{display:flex;}

/* ── HERO ── */
#hero{background:linear-gradient(135deg,var(--primary) 0%,#0d1b4b 50%,#0a2a4a 100%);padding:70px 20px 160px;text-align:center;position:relative;overflow:hidden;}
#hero::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 30% 50%,rgba(0,212,255,.1) 0%,transparent 60%),radial-gradient(ellipse at 70% 50%,rgba(124,77,255,.1) 0%,transparent 60%);}
#hero::after{content:'';position:absolute;bottom:-1px;left:0;right:0;height:100px;background:var(--bg);clip-path:ellipse(60% 100% at 50% 100%);}
.hero-content{position:relative;z-index:1;max-width:640px;margin:0 auto;}
.hero-badge{display:inline-block;background:rgba(0,212,255,.12);border:1px solid rgba(0,212,255,.3);border-radius:50px;padding:6px 16px;color:var(--accent);font-size:.8rem;font-weight:700;letter-spacing:1.5px;text-transform:uppercase;margin-bottom:16px;}
.hero-title{font-family:var(--font-display);font-size:clamp(2rem,5vw,3.2rem);font-weight:900;color:#fff;line-height:1.1;margin-bottom:14px;}
.hero-title span{color:var(--accent);}
.hero-sub{color:rgba(255,255,255,.6);font-size:1rem;margin-bottom:28px;}
.hero-cta{display:inline-flex;gap:12px;flex-wrap:wrap;justify-content:center;}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--primary);border:none;border-radius:50px;padding:13px 30px;font-size:.95rem;font-weight:800;cursor:pointer;transition:var(--transition);text-decoration:none;display:inline-flex;align-items:center;gap:6px;}
.btn-primary:hover{transform:translateY(-3px);box-shadow:0 8px 28px rgba(0,212,255,.45);}
.btn-outline{background:transparent;color:#fff;border:1.5px solid rgba(255,255,255,.3);border-radius:50px;padding:13px 30px;font-size:.95rem;font-weight:700;cursor:pointer;transition:var(--transition);text-decoration:none;display:inline-flex;align-items:center;gap:6px;}
.btn-outline:hover{border-color:var(--accent);color:var(--accent);}

/* ── CATEGORÍAS ── */
#categories-bar{padding:20px;overflow-x:auto;scrollbar-width:none;}
#categories-bar::-webkit-scrollbar{display:none;}
.categories-scroll{display:flex;gap:10px;min-width:max-content;padding:4px 0;}
.cat-btn{background:var(--bg-card);border:1.5px solid var(--border);border-radius:50px;padding:8px 18px;font-size:.85rem;font-weight:600;cursor:pointer;transition:var(--transition);white-space:nowrap;display:flex;align-items:center;gap:6px;color:var(--text-muted);}
.cat-btn:hover,.cat-btn.active{background:var(--primary);border-color:var(--primary);color:var(--accent);box-shadow:0 4px 14px rgba(10,15,46,.15);}

/* ── PRODUCTOS ── */
#shop{max-width:1400px;margin:0 auto;padding:20px;}
.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px;flex-wrap:wrap;gap:12px;}
.section-title{font-family:var(--font-display);font-size:1.5rem;font-weight:800;color:var(--text);}
.section-title span{color:var(--accent);}
.products-count{font-size:.85rem;color:var(--text-muted);background:var(--border);border-radius:50px;padding:4px 12px;}
#products-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:20px;}
.product-card{background:var(--bg-card);border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);transition:var(--transition);cursor:pointer;position:relative;animation:fadeInUp .5s ease both;}
.product-card:hover{transform:translateY(-6px);box-shadow:var(--shadow-hover);border-color:rgba(0,212,255,.3);}
@keyframes fadeInUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
.product-badge{position:absolute;top:12px;left:12px;background:var(--accent);color:var(--primary);font-size:.7rem;font-weight:800;padding:3px 9px;border-radius:50px;z-index:1;text-transform:uppercase;letter-spacing:.5px;}
.product-badge.out{background:var(--danger);color:#fff;}
.product-img-wrap{position:relative;overflow:hidden;}
.product-img{width:100%;height:200px;object-fit:cover;transition:transform .4s ease;display:block;}
.product-card:hover .product-img{transform:scale(1.04);}
.product-info{padding:14px;}
.product-cat{font-size:.72rem;font-weight:700;color:var(--accent2);text-transform:uppercase;letter-spacing:.8px;margin-bottom:5px;}
.product-name{font-size:.95rem;font-weight:700;color:var(--text);margin-bottom:5px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.35;}
.product-desc{font-size:.78rem;color:var(--text-muted);margin-bottom:10px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;line-height:1.4;}
.product-footer{display:flex;flex-direction:column;gap:8px;}
.product-price{font-family:var(--font-display);font-size:1.15rem;font-weight:800;color:var(--text);}
.product-price-usd{font-size:.72rem;color:var(--text-muted);font-weight:600;margin-top:1px;}
.product-stock{font-size:.7rem;color:var(--text-muted);margin-top:2px;}
.product-stock.low{color:var(--warning);}
.product-stock.out-text{color:var(--danger);}
.btn-add{display:block;width:100%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--primary);border:none;border-radius:10px;padding:11px 10px;font-size:.88rem;font-weight:800;cursor:pointer;transition:var(--transition);text-align:center;}
.btn-add:hover{transform:translateY(-2px);box-shadow:0 6px 18px rgba(0,212,255,.4);}
.btn-add:disabled{background:var(--border);color:var(--text-muted);cursor:not-allowed;transform:none;box-shadow:none;}
.btn-remove-card{display:none;width:100%;background:transparent;border:1.5px solid var(--danger);color:var(--danger);border-radius:10px;padding:8px 10px;font-size:.82rem;font-weight:700;cursor:pointer;transition:var(--transition);text-align:center;}
.btn-remove-card:hover{background:var(--danger);color:#fff;}
.btn-remove-card.visible{display:block;}

/* ── CARRITO ── */
#cart-overlay{position:fixed;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px);z-index:2000;opacity:0;visibility:hidden;transition:var(--transition);}
#cart-overlay.open{opacity:1;visibility:visible;}
#cart-drawer{position:fixed;right:0;top:0;bottom:0;width:min(420px,100vw);background:var(--bg-card);z-index:2001;display:flex;flex-direction:column;transform:translateX(100%);transition:transform .35s cubic-bezier(.4,0,.2,1);box-shadow:-8px 0 40px rgba(0,0,0,.2);}
#cart-drawer.open{transform:translateX(0);}
.cart-header{display:flex;justify-content:space-between;align-items:center;padding:20px 22px;border-bottom:1px solid var(--border);background:var(--primary);color:#fff;}
.cart-title{font-family:var(--font-display);font-size:1.1rem;font-weight:800;color:var(--accent);}
.btn-close-cart{background:rgba(255,255,255,.1);border:none;border-radius:50%;width:36px;height:36px;color:#fff;font-size:1.1rem;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;}
.btn-close-cart:hover{background:rgba(0,212,255,.2);}
#cart-items{flex:1;overflow-y:auto;padding:16px;}
.cart-empty-msg{text-align:center;padding:50px 20px;color:var(--text-muted);}
.cart-empty-msg .icon{font-size:3rem;margin-bottom:12px;}
.cart-item{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:10px;background:#fff;animation:fadeInUp .3s ease both;}
.cart-item-img{width:64px;height:64px;border-radius:8px;object-fit:cover;flex-shrink:0;}
.cart-item-info{flex:1;min-width:0;}
.cart-item-name{font-size:.88rem;font-weight:700;margin-bottom:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cart-item-price{font-size:.85rem;color:var(--accent2);font-weight:700;}
.cart-item-price-usd{font-size:.72rem;color:var(--text-muted);}
.cart-item-controls{display:flex;align-items:center;gap:6px;margin-top:6px;}
.qty-btn{background:var(--bg);border:1px solid var(--border);border-radius:6px;width:26px;height:26px;font-size:.9rem;font-weight:700;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;}
.qty-btn:hover{background:var(--accent);color:var(--primary);border-color:var(--accent);}
.qty-display{font-size:.9rem;font-weight:700;min-width:24px;text-align:center;}
.btn-remove-item{background:none;border:none;color:var(--danger);cursor:pointer;font-size:1rem;padding:2px;margin-left:auto;flex-shrink:0;transition:var(--transition);}
.btn-remove-item:hover{transform:scale(1.2);}
.cart-footer{padding:16px 22px;border-top:1px solid var(--border);}
.cart-summary{margin-bottom:14px;}
.cart-summary-row{display:flex;justify-content:space-between;font-size:.88rem;margin-bottom:6px;color:var(--text-muted);}
.cart-total-row{display:flex;justify-content:space-between;font-size:1.1rem;font-weight:800;color:var(--text);padding-top:10px;border-top:2px solid var(--border);}
.btn-checkout{width:100%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--primary);border:none;border-radius:50px;padding:14px;font-size:1rem;font-weight:800;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;gap:8px;}
.btn-checkout:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,212,255,.4);}
.btn-checkout:disabled{opacity:.5;cursor:not-allowed;transform:none;}

/* ── CHECKOUT MODAL ── */
#checkout-overlay{position:fixed;inset:0;background:rgba(0,0,0,.6);backdrop-filter:blur(6px);z-index:3000;opacity:0;visibility:hidden;transition:var(--transition);display:flex;align-items:center;justify-content:center;padding:20px;}
#checkout-overlay.open{opacity:1;visibility:visible;}
#checkout-modal{background:var(--bg-card);border-radius:var(--radius);width:100%;max-width:520px;max-height:90vh;overflow-y:auto;transform:scale(.9) translateY(20px);transition:var(--transition);}
#checkout-overlay.open #checkout-modal{transform:scale(1) translateY(0);}
.modal-header{background:var(--primary);padding:20px 24px;display:flex;justify-content:space-between;align-items:center;border-radius:var(--radius) var(--radius) 0 0;}
.modal-title{font-family:var(--font-display);font-size:1.1rem;font-weight:800;color:var(--accent);}
.btn-close-modal{background:rgba(255,255,255,.1);border:none;border-radius:50%;width:34px;height:34px;color:#fff;font-size:1rem;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;}
.btn-close-modal:hover{background:rgba(0,212,255,.2);}
.modal-body{padding:24px;}
.form-group{margin-bottom:16px;}
.form-label{display:block;font-size:.82rem;font-weight:700;color:var(--text);margin-bottom:6px;}
.form-input,.form-select{width:100%;border:1.5px solid var(--border);border-radius:var(--radius-sm);padding:11px 14px;font-size:.92rem;outline:none;transition:var(--transition);background:var(--bg);font-family:var(--font-main);}
.form-input:focus,.form-select:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(0,212,255,.08);background:#fff;}
.form-input.error,.form-select.error{border-color:var(--danger);}
.form-error{font-size:.75rem;color:var(--danger);margin-top:4px;display:block;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;}
.order-summary-mini{background:var(--bg);border-radius:var(--radius-sm);padding:14px;margin-bottom:18px;}
.order-summary-mini h4{font-size:.88rem;font-weight:700;margin-bottom:10px;}
.order-item-mini{display:flex;justify-content:space-between;font-size:.82rem;margin-bottom:4px;color:var(--text-muted);}
.order-total-mini{font-size:1rem;font-weight:800;display:flex;justify-content:space-between;padding-top:8px;border-top:1.5px solid var(--border);margin-top:8px;}
.modal-footer{padding:0 24px 24px;display:flex;flex-direction:column;gap:10px;}
.btn-whatsapp{width:100%;background:#25D366;color:#fff;border:none;border-radius:50px;padding:14px;font-size:1rem;font-weight:800;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;gap:8px;}
.btn-whatsapp:hover{background:#20b858;transform:translateY(-2px);}
.btn-confirm-order{width:100%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--primary);border:none;border-radius:50px;padding:14px;font-size:1rem;font-weight:800;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;gap:8px;}
.btn-confirm-order:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,212,255,.4);}
.section-divider{font-size:.72rem;font-weight:800;color:var(--accent);text-transform:uppercase;letter-spacing:1px;margin:6px 0 12px;padding-bottom:6px;border-bottom:2px solid rgba(0,212,255,.15);}

/* ── PAYMENT MODAL ── */
.legal-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.65);backdrop-filter:blur(6px);z-index:4500;opacity:0;visibility:hidden;transition:all .3s;display:flex;align-items:center;justify-content:center;padding:20px;}
.legal-modal-overlay.open{opacity:1;visibility:visible;}
.legal-modal-box{background:#fff;border-radius:18px;width:100%;max-width:640px;max-height:88vh;display:flex;flex-direction:column;transform:scale(.9) translateY(20px);transition:all .3s cubic-bezier(.34,1.56,.64,1);box-shadow:0 24px 80px rgba(0,0,0,.25);overflow:hidden;}
.legal-modal-overlay.open .legal-modal-box{transform:scale(1) translateY(0);}
.legal-modal-header{background:var(--primary);padding:18px 24px;display:flex;justify-content:space-between;align-items:center;flex-shrink:0;}
.legal-modal-header h2{font-family:var(--font-display);font-size:1.05rem;font-weight:800;color:var(--accent);margin:0;}
.legal-modal-header button{background:rgba(255,255,255,.1);border:none;border-radius:50%;width:34px;height:34px;color:#fff;font-size:1rem;cursor:pointer;transition:var(--transition);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.legal-modal-header button:hover{background:rgba(0,212,255,.25);}
.legal-modal-body{overflow-y:auto;padding:24px;font-size:.9rem;line-height:1.7;color:#374151;}
.legal-modal-body h3{font-size:1rem;font-weight:800;color:var(--primary);margin:20px 0 8px;padding-bottom:4px;border-bottom:2px solid rgba(0,212,255,.2);}
.legal-modal-body p{margin-bottom:10px;}
.legal-modal-body ul,.legal-modal-body ol{padding-left:20px;margin-bottom:10px;}
.legal-modal-body li{margin-bottom:5px;}
.pay-method-card{display:flex;justify-content:space-between;align-items:center;padding:14px 16px;border:2px solid var(--border);border-radius:14px;cursor:pointer;transition:var(--transition);margin-bottom:10px;background:#fff;}
.pay-method-card:hover{border-color:var(--accent);background:rgba(0,212,255,.03);transform:translateY(-1px);box-shadow:0 4px 16px rgba(0,212,255,.1);}
.pay-method-card.selected{border-color:var(--accent);background:rgba(0,212,255,.06);box-shadow:0 0 0 3px rgba(0,212,255,.12);}
.pay-method-left{display:flex;align-items:center;gap:14px;}
.pay-method-name{font-size:.92rem;font-weight:800;color:var(--text);margin-bottom:2px;}
.pay-method-desc{font-size:.72rem;color:var(--text-muted);}
.pay-method-check{width:26px;height:26px;border-radius:50%;background:var(--border);color:transparent;display:flex;align-items:center;justify-content:center;font-size:.8rem;font-weight:900;transition:var(--transition);flex-shrink:0;}
.pay-method-card.selected .pay-method-check{background:var(--accent);color:var(--primary);}
#btn-pay-now{width:100%;background:linear-gradient(135deg,var(--accent),var(--accent2));color:var(--primary);border:none;border-radius:12px;padding:15px;font-size:1rem;font-weight:900;cursor:not-allowed;opacity:.5;transition:all .3s;}
#btn-pay-now.active{cursor:pointer;opacity:1;}
#btn-pay-now.active:hover{transform:translateY(-2px);box-shadow:0 8px 28px rgba(0,212,255,.4);}

/* ══════════════════════════════════════════════
   MODAL DE PRODUCTO — CORREGIDO
   FIX 1: El overlay usa display:none/flex en lugar de opacity+visibility
   FIX 2: El modal NO tiene max-height fijo — usa overflow-y:auto natural
   FIX 3: La imagen se adapta al ancho sin altura fija rígida
   FIX 4: Layout en columna para evitar que la imagen tape el contenido
══════════════════════════════════════════════ */
#product-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.78);
  backdrop-filter: blur(8px);
  z-index: 8000;
  /* CLAVE: display none por defecto, flex cuando .open */
  display: none;
  align-items: flex-start;
  justify-content: center;
  padding: 16px;
  box-sizing: border-box;
  overflow-y: auto;
  /* Permite scroll del overlay si el modal es muy alto en móvil */
}
#product-modal-overlay.open {
  display: flex !important;
}

#product-modal {
  position: relative;
  background: #fff;
  border-radius: 20px;
  width: 100%;
  max-width: 640px;
  /* FIX: sin max-height fijo — el contenido determina la altura */
  /* Se aplica margin:auto para centrar verticalmente cuando cabe */
  margin: auto;
  box-shadow: 0 30px 90px rgba(0, 0, 0, 0.4);
  animation: modalPop .32s cubic-bezier(.34, 1.3, .64, 1) both;
  overflow: hidden; /* border-radius se respeta en la imagen */
}

@keyframes modalPop {
  from { transform: scale(.88) translateY(24px); opacity: 0; }
  to   { transform: scale(1)   translateY(0);    opacity: 1; }
}

/* Imagen del modal: altura relativa al ancho, no fija */
#pmod-img {
  width: 100%;
  /* FIX: aspect-ratio en lugar de height fija para no cortar la imagen */
  aspect-ratio: 4 / 3;
  object-fit: cover;
  display: block;
  border-radius: 20px 20px 0 0;
  cursor: zoom-in;
}

/* Fallback para navegadores sin aspect-ratio */
@supports not (aspect-ratio: 4/3) {
  #pmod-img { height: 280px; }
}

/* ── LIGHTBOX GALERÍA ── */
#gallery-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.97);z-index:9000;display:none;align-items:center;justify-content:center;flex-direction:column;}
#gallery-lightbox.open{display:flex;}
.gallery-nav-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.12);border:none;border-radius:50%;width:52px;height:52px;color:#fff;font-size:1.6rem;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:var(--transition);backdrop-filter:blur(4px);}
.gallery-nav-btn:hover{background:rgba(255,255,255,.25);}

/* ── PROCESSING OVERLAY ── */
#processing-overlay{position:fixed;inset:0;background:rgba(10,15,46,.92);backdrop-filter:blur(10px);z-index:5000;display:none;align-items:center;justify-content:center;flex-direction:column;gap:20px;}
#processing-overlay.show{display:flex;}

/* ── SUCCESS MODAL ── */
#success-overlay{position:fixed;inset:0;background:rgba(0,0,0,.7);backdrop-filter:blur(8px);z-index:6000;display:none;align-items:center;justify-content:center;padding:20px;}
#success-overlay.show{display:flex;}
.success-modal{background:#fff;border-radius:20px;max-width:420px;width:100%;padding:40px 30px;text-align:center;animation:popIn .4s cubic-bezier(.34,1.56,.64,1) both;}
@keyframes popIn{from{transform:scale(.7);opacity:0}to{transform:scale(1);opacity:1}}
.success-icon{font-size:4rem;margin-bottom:14px;}
.success-modal h2{font-family:var(--font-display);font-size:1.5rem;font-weight:900;color:var(--text);margin-bottom:8px;}
.success-modal p{color:var(--text-muted);margin-bottom:6px;font-size:.9rem;}
.success-id{background:var(--bg);border-radius:8px;padding:12px 16px;font-family:monospace;font-size:1rem;font-weight:700;color:var(--primary);margin:14px 0;}
.success-actions{display:flex;flex-direction:column;gap:14px;margin-top:22px;}

/* ── TOAST ── */
#toast-container{position:fixed;bottom:24px;right:24px;z-index:7000;display:flex;flex-direction:column;gap:10px;}
.toast{background:var(--primary);color:#fff;border-radius:var(--radius-sm);padding:12px 18px;font-size:.88rem;font-weight:600;box-shadow:0 8px 30px rgba(0,0,0,.25);display:flex;align-items:center;gap:10px;max-width:300px;animation:slideInRight .3s ease,fadeOut .4s ease 3s both;border-left:4px solid var(--accent);}
.toast.success{border-left-color:var(--success);}
.toast.error{border-left-color:var(--danger);}
.toast.warning{border-left-color:var(--warning);}
@keyframes slideInRight{from{transform:translateX(100%);opacity:0}to{transform:translateX(0);opacity:1}}
@keyframes fadeOut{from{opacity:1}to{opacity:0;transform:translateX(100%)}}

/* ── LOADING OVERLAY ── */
#loading-overlay{position:fixed;inset:0;background:rgba(10,15,46,.7);backdrop-filter:blur(4px);z-index:4000;display:none;align-items:center;justify-content:center;flex-direction:column;gap:16px;}
#loading-overlay.show{display:flex;}
.spinner{width:48px;height:48px;border:3px solid rgba(0,212,255,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite;}
@keyframes spin{to{transform:rotate(360deg)}}
#loading-overlay p{color:var(--accent);font-weight:700;}

/* ── FOOTER ── */
footer{background:var(--primary);color:rgba(255,255,255,.6);padding:40px 20px 20px;margin-top:60px;}
.footer-grid{max-width:1200px;margin:0 auto;display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:30px;margin-bottom:30px;}
.footer-brand h3{font-family:var(--font-display);font-size:1.4rem;font-weight:900;color:var(--accent);margin-bottom:8px;}
.footer-brand p{font-size:.85rem;line-height:1.6;}
.footer-col h4{color:#fff;font-size:.9rem;font-weight:700;margin-bottom:12px;text-transform:uppercase;letter-spacing:1px;}
.footer-col ul{list-style:none;}
.footer-col li{margin-bottom:8px;font-size:.85rem;}
.footer-col a{color:rgba(255,255,255,.6);text-decoration:none;transition:var(--transition);}
.footer-col a:hover{color:var(--accent);}
.footer-bottom{border-top:1px solid rgba(255,255,255,.1);padding-top:20px;text-align:center;font-size:.82rem;}
.footer-bottom span{color:var(--accent);}

/* ── EMPTY STATE ── */
.empty-state{text-align:center;padding:60px 20px;grid-column:1/-1;}
.empty-state-icon{font-size:3rem;margin-bottom:14px;}
.empty-state h3{font-size:1.2rem;color:var(--text-muted);margin-bottom:8px;}
.empty-state p{color:var(--text-muted);font-size:.9rem;}

/* ── BADGES MULTI-CATEGORÍA en tarjeta ── */
.product-cats-wrap {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-bottom: 5px;
}
.product-cat-tag {
  font-size: .68rem;
  font-weight: 700;
  color: var(--accent2);
  text-transform: uppercase;
  letter-spacing: .6px;
  background: rgba(124,77,255,.08);
  border-radius: 50px;
  padding: 2px 7px;
  white-space: nowrap;
}

/* ── RESPONSIVE ── */
@media(max-width:768px){
  #navbar{gap:8px;padding:0 10px;}
  .nav-brand-name{display:none;}
  .nav-search{max-width:none;flex:1;}
  .nav-search input{font-size:.85rem;padding:8px 38px 8px 14px;}
  #navbar:has(#search-input:focus) .nav-brand{opacity:0;pointer-events:none;max-width:0;overflow:hidden;}
  #navbar:has(#search-input:focus) .nav-actions{opacity:0;pointer-events:none;max-width:0;overflow:hidden;}
  #navbar:has(#search-input:focus) .nav-search{max-width:100%;}
  .btn-cart{padding:7px 11px;font-size:.82rem;}
  #products-grid{grid-template-columns:repeat(2,1fr);gap:12px;}
  .product-img{height:160px;}
  .hero-title{font-size:1.8rem;}
  #hero{padding:44px 16px 140px;}
  #shop{padding:16px;}
  .btn-add{padding:10px 8px;font-size:.8rem;}
  .form-row{grid-template-columns:1fr;}

  /* Modal más cómodo en móvil */
  #product-modal-overlay {
    padding: 8px;
    align-items: flex-start;
  }
  #product-modal {
    border-radius: 14px;
  }
  #pmod-img {
    aspect-ratio: 16 / 10;
    border-radius: 14px 14px 0 0;
  }
}
@media(max-width:420px){
  #products-grid{grid-template-columns:1fr 1fr;gap:10px;}
  .product-info{padding:10px;}
  .product-name{font-size:.85rem;}
  .product-price{font-size:1rem;}
  .currency-label{display:none;}
}

/* ══════════════════════════════════════════════════
   SISTEMA DE VARIANTES — Colores, Tallas, Opciones
══════════════════════════════════════════════════ */

/* Contenedor del modal de variantes */
#pmod-variants-section {
  display: none;
  padding: 0 24px 4px;
}

.variants-wrap {
  display: flex;
  flex-direction: column;
  gap: 18px;
}

/* Grupo de variante (ej: Color, Talla) */
.variant-group {
  background: #f8faff;
  border-radius: 12px;
  padding: 14px 16px;
  border: 1.5px solid #e5e7eb;
}

.variant-group-label {
  font-size: .78rem;
  font-weight: 800;
  color: var(--primary);
  text-transform: uppercase;
  letter-spacing: 1px;
  margin-bottom: 12px;
  display: flex;
  align-items: center;
  gap: 6px;
}

.variant-selected-text {
  font-weight: 600;
  color: var(--accent2);
  text-transform: none;
  letter-spacing: 0;
  font-size: .8rem;
}

/* ── SELECTOR DE COLORES (círculos) ── */
.variant-color-row {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
}

.vopt-color {
  position: relative;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  cursor: pointer;
  transition: all .22s cubic-bezier(.34,1.56,.64,1);
  outline: none;
  flex-shrink: 0;
  box-shadow: 0 2px 8px rgba(0,0,0,.15);
}

.vopt-color:hover:not(:disabled) {
  transform: scale(1.18);
  box-shadow: 0 4px 14px rgba(0,0,0,.25);
}

.vopt-color.vopt-selected {
  transform: scale(1.15);
  box-shadow: 0 0 0 3px #fff, 0 0 0 5px var(--accent2), 0 4px 14px rgba(0,0,0,.2);
}

/* Variante agotada: círculo con tachado */
.vopt-color.vopt-out {
  opacity: .45;
  cursor: not-allowed;
  filter: grayscale(0.4);
}

.vopt-slash {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  overflow: hidden;
  pointer-events: none;
}

.vopt-slash::after {
  content: '';
  position: absolute;
  top: 50%;
  left: -4px;
  right: -4px;
  height: 2px;
  background: rgba(255,255,255,.85);
  transform: rotate(-45deg);
  transform-origin: center;
  border-radius: 2px;
  box-shadow: 0 0 2px rgba(0,0,0,.3);
}

/* ── SELECTOR DE TEXTO (tallas, ediciones) ── */
.variant-text-row {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.vopt-text {
  padding: 8px 16px;
  border: 2px solid var(--border);
  border-radius: 8px;
  background: #fff;
  color: var(--text);
  font-size: .85rem;
  font-weight: 700;
  cursor: pointer;
  transition: all .2s;
  font-family: var(--font-main);
  position: relative;
}

.vopt-text:hover:not(:disabled) {
  border-color: var(--accent2);
  color: var(--accent2);
  background: rgba(124,77,255,.05);
  transform: translateY(-1px);
}

.vopt-text.vopt-selected {
  border-color: var(--accent2);
  background: var(--accent2);
  color: #fff;
  box-shadow: 0 4px 14px rgba(124,77,255,.35);
}

.vopt-text.vopt-out {
  opacity: .45;
  cursor: not-allowed;
  text-decoration: line-through;
  background: #f5f5f5;
}

/* ── BADGE Variantes en la tarjeta ── */
.product-badge.variants-badge {
  background: #7c4dff;
  color: #fff;
}


/* ── BUSCADOR FOOTER ── */
.footer-search-section {
  border-top: 1px solid rgba(255,255,255,.08);
  padding: 26px 24px;
  background: transparent;
}

.footer-search-inner {
  max-width: 860px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: 20px;
  flex-wrap: wrap;
}

.footer-search-text {
  display: flex;
  align-items: center;
  gap: 10px;
  flex-shrink: 0;
}

.footer-search-emoji {
  font-size: 1.2rem;
  line-height: 1;
}

.footer-search-label {
  font-size: .88rem;
  font-weight: 700;
  color: rgba(255,255,255,.8);
  margin: 0;
  white-space: nowrap;
}

.footer-search-hint {
  font-size: .75rem;
  color: rgba(255,255,255,.38);
  white-space: nowrap;
}

.footer-search-form {
  display: flex;
  gap: 8px;
  flex: 1;
  min-width: 240px;
  max-width: 460px;
}

.footer-search-field {
  flex: 1;
  height: 40px;
  background: rgba(255,255,255,.07);
  border: 1.5px solid rgba(255,255,255,.14);
  border-radius: 8px;
  padding: 0 14px;
  color: #fff;
  font-size: .88rem;
  font-family: var(--font-main);
  outline: none;
  transition: border-color .2s, box-shadow .2s;
  box-sizing: border-box;
}

.footer-search-field:focus {
  border-color: #25D366;
  box-shadow: 0 0 0 3px rgba(37,211,102,.14);
  background: rgba(255,255,255,.1);
}

.footer-search-field::placeholder {
  color: rgba(255,255,255,.3);
  font-size: .83rem;
}

.footer-search-btn {
  height: 40px;
  padding: 0 18px;
  background: #25D366;
  color: #fff;
  border: none;
  border-radius: 8px;
  font-size: .86rem;
  font-weight: 800;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 6px;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background .2s, transform .15s, box-shadow .2s;
  font-family: var(--font-main);
  box-shadow: 0 2px 10px rgba(37,211,102,.25);
}

.footer-search-btn:hover {
  background: #20c05a;
  transform: translateY(-1px);
  box-shadow: 0 4px 16px rgba(37,211,102,.38);
}

.footer-search-btn:active {
  transform: translateY(0);
}

.footer-search-btn-wa {
  font-size: 1rem;
}

@media (max-width: 680px) {
  .footer-search-inner {
    flex-direction: column;
    align-items: flex-start;
    gap: 12px;
  }
  .footer-search-text {
    flex-wrap: wrap;
  }
  .footer-search-hint { display: none; }
  .footer-search-form {
    width: 100%;
    max-width: 100%;
  }
}

@media (max-width: 400px) {
  .footer-search-btn span:last-child { display: none; }
  .footer-search-btn { padding: 0 14px; }
}

/* ══════════════════════════════════════════════════
   BURBUJA AUTH — animación flotante + panel expandible
══════════════════════════════════════════════════ */

/* Contenedor principal — posición fija */
#auth-bubble-wrap {
  position: fixed;
  bottom: 28px;
  right: 28px;
  z-index: 2000;
  display: flex;
  align-items: flex-end;
  justify-content: flex-end;
}

/* La burbuja circular */
#auth-bubble {
  width: 60px;
  height: 60px;
  border-radius: 50%;
  background: linear-gradient(135deg, #7c4dff 0%, #00d4ff 100%);
  border: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.5rem;
  color: #fff;
  box-shadow: 0 6px 28px rgba(124,77,255,.55), 0 0 0 0 rgba(124,77,255,.4);
  animation: bubbleFloat 3s ease-in-out infinite, bubblePulse 2.5s ease-in-out infinite;
  transition: transform .3s cubic-bezier(.34,1.56,.64,1), box-shadow .3s ease, opacity .2s;
  flex-shrink: 0;
  position: relative;
  z-index: 2;
  -webkit-tap-highlight-color: transparent;
  user-select: none;
}
#auth-bubble:hover {
  transform: scale(1.12) translateY(-3px);
  box-shadow: 0 10px 40px rgba(124,77,255,.7), 0 0 0 8px rgba(124,77,255,.15);
  animation: none;
}
#auth-bubble:active { transform: scale(.94); }

@keyframes bubbleFloat {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-8px); }
}
@keyframes bubblePulse {
  0%,100% { box-shadow: 0 6px 28px rgba(124,77,255,.55), 0 0 0 0 rgba(124,77,255,.35); }
  50%     { box-shadow: 0 6px 28px rgba(124,77,255,.55), 0 0 0 14px rgba(124,77,255,.0); }
}

/* Badge de nombre cuando está logueado */
#auth-bubble-badge {
  position: absolute;
  top: -4px;
  right: -4px;
  background: #22c55e;
  border: 2px solid #fff;
  border-radius: 50%;
  width: 18px;
  height: 18px;
  display: none;
  align-items: center;
  justify-content: center;
  font-size: .55rem;
  font-weight: 900;
  color: #fff;
}
#auth-bubble-badge.show { display: flex; }

/* Panel expandido */
#auth-panel {
  position: absolute;
  bottom: 70px;
  right: 0;
  width: 320px;
  background: #fff;
  border-radius: 22px;
  box-shadow: 0 20px 70px rgba(10,15,46,.25), 0 4px 20px rgba(124,77,255,.18);
  overflow: hidden;
  transform-origin: bottom right;
  transform: scale(0) translateY(10px);
  opacity: 0;
  pointer-events: none;
  transition: transform .35s cubic-bezier(.34,1.3,.64,1), opacity .25s ease;
}
#auth-panel.open {
  transform: scale(1) translateY(0);
  opacity: 1;
  pointer-events: all;
}

/* Cabecera del panel */
.abp-head {
  background: linear-gradient(135deg, #0a0f2e 0%, #16213e 100%);
  padding: 18px 20px 16px;
  display: flex;
  align-items: center;
  justify-content: space-between;
}
.abp-head-logo { display: flex; align-items: center; gap: 9px; }
.abp-head-logo img { width: 34px; height: 34px; border-radius: 8px; }
.abp-head-logo span { font-family: var(--font-display); font-size: 1rem; font-weight: 900; color: #00d4ff; letter-spacing: 1.5px; }
.abp-close {
  background: rgba(255,255,255,.1);
  border: none;
  border-radius: 50%;
  width: 30px;
  height: 30px;
  color: #fff;
  font-size: .95rem;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background .2s;
  -webkit-tap-highlight-color: transparent;
}
.abp-close:hover { background: rgba(239,68,68,.5); }

/* Tabs */
.abp-tabs {
  display: flex;
  background: #f0f4ff;
  margin: 14px 16px 0;
  border-radius: 10px;
  padding: 3px;
  gap: 3px;
}
.abp-tab {
  flex: 1;
  padding: 7px;
  border: none;
  border-radius: 8px;
  font-size: .82rem;
  font-weight: 700;
  cursor: pointer;
  font-family: var(--font-main);
  background: transparent;
  color: #6b7280;
  transition: all .2s;
  -webkit-tap-highlight-color: transparent;
}
.abp-tab.on { background: #fff; color: #0a0f2e; box-shadow: 0 2px 8px rgba(0,0,0,.1); }

/* Contenido de panes */
.abp-body { padding: 14px 16px 16px; }
.abp-pane { display: flex; flex-direction: column; gap: 11px; }

/* Campos */
.abp-field { display: flex; flex-direction: column; gap: 4px; }
.abp-field label { font-size: .74rem; font-weight: 700; color: #0a0f2e; }
.abp-field input {
  border: 1.5px solid #e2e8f0;
  border-radius: 10px;
  padding: 9px 12px;
  font-size: .88rem;
  outline: none;
  font-family: var(--font-main);
  color: #1a1a2e;
  background: #fafbff;
  transition: border-color .2s, box-shadow .2s;
  width: 100%;
  box-sizing: border-box;
}
.abp-field input:focus { border-color: #00d4ff; box-shadow: 0 0 0 3px rgba(0,212,255,.1); background: #fff; }

/* Mensajes */
.abp-msg { font-size: .77rem; font-weight: 600; min-height: 16px; text-align: center; color: #ef4444; }
.abp-msg.ok { color: #16a34a; }

/* Botón principal */
.abp-btn {
  width: 100%;
  background: linear-gradient(135deg, #00d4ff, #7c4dff);
  color: #0a0f2e;
  border: none;
  border-radius: 10px;
  padding: 11px;
  font-size: .92rem;
  font-weight: 800;
  cursor: pointer;
  font-family: var(--font-main);
  transition: opacity .2s, transform .15s;
  -webkit-tap-highlight-color: transparent;
}
.abp-btn:hover { opacity: .9; transform: translateY(-1px); }
.abp-btn:active { transform: scale(.97); }

/* Link de cambio de tab */
.abp-sw { font-size: .73rem; color: #6b7280; text-align: center; }
.abp-sw button { background: none; border: none; color: #7c4dff; font-weight: 700; cursor: pointer; font-size: .73rem; font-family: var(--font-main); }

/* Nota inferior */
.abp-note { font-size: .7rem; color: #9ca3af; text-align: center; border-top: 1px solid #f1f5f9; padding-top: 10px; line-height: 1.5; }

/* Panel de usuario logueado */
.abp-logged { text-align: center; padding: 6px 0 4px; }
.abp-logged-avatar { font-size: 2.4rem; margin-bottom: 6px; }
.abp-logged-name { font-weight: 900; font-size: .98rem; color: #0a0f2e; margin-bottom: 2px; }
.abp-logged-email { font-size: .76rem; color: #6b7280; margin-bottom: 14px; }
.abp-admin-btn {
  display: none;
  align-items: center;
  justify-content: center;
  gap: 6px;
  background: linear-gradient(135deg, #00d4ff, #7c4dff);
  color: #0a0f2e;
  border-radius: 10px;
  padding: 10px;
  font-size: .85rem;
  font-weight: 800;
  text-decoration: none;
  margin-bottom: 9px;
  transition: opacity .2s;
}
.abp-admin-btn:hover { opacity: .88; }
.abp-logout {
  width: 100%;
  background: #fee2e2;
  color: #dc2626;
  border: 1.5px solid #fecaca;
  border-radius: 10px;
  padding: 9px;
  font-size: .85rem;
  font-weight: 700;
  cursor: pointer;
  font-family: var(--font-main);
  transition: background .2s;
}
.abp-logout:hover { background: #dc2626; color: #fff; }

/* Responsive móvil */
@media(max-width:480px) {
  #auth-bubble-wrap { bottom: 80px; right: 14px; }
  #auth-panel { width: calc(100vw - 28px); right: 0; }
}
@media(max-width:400px) {
  .footer-search-btn span:last-child { display: none; }
  .footer-search-btn { padding: 0 14px; }
}

/* Lightbox con zoom */
#gallery-lightbox{position:fixed;inset:0;background:rgba(0,0,0,.97);z-index:9000;display:none;flex-direction:column;align-items:center;justify-content:center;touch-action:none;user-select:none;-webkit-user-select:none;}
#gallery-lightbox.open{display:flex;}
#glb-wrap{position:relative;flex:1;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:56px 64px;box-sizing:border-box;cursor:zoom-in;}
#glb-wrap.panned{cursor:grab;}
#gallery-main-img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px;transition:opacity .15s ease;-webkit-user-drag:none;transform-origin:center center;will-change:transform;}
.gallery-nav-btn{position:absolute;top:50%;transform:translateY(-50%);background:rgba(255,255,255,.13);border:none;border-radius:50%;width:48px;height:48px;color:#fff;font-size:1.5rem;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:5;-webkit-tap-highlight-color:transparent;transition:background .2s;}
.gallery-nav-btn:hover{background:rgba(255,255,255,.28);}

