Catálogo Atención VIP

Lencería Femenina • Tejidos Premium &bull

REF: IN001

Pijama ÉNIGME

Satén puro para la intimidad del reposo. Camisa y pantalón que abrazan la piel como una caricia.
Satén premium. Blanco absoluto.

Satén Premium · Camisa + Pantalón
L 1098
L 899
1
REF: IN002

Pijama Rosas

Un jardín en satén salmón. Rosas suaves pintadas sobre la tela que acompañará tus noches.
Satén estampado. Salmón romántico.

Satén Estampado · Camisa + Pantalón
L 898
L 699
1
REF: IN003

Camisón Rosas

La fluidez del camisón vestido con rosas salmón. Ligereza pura, feminidad absoluta.
Satén estampado. Salmón soñado.

Satén Estampado · Camisón
L 798
L 599
1
REF: IN004

Camisón Azul

El azul nocturno en satén, como un cielo recogido en tela. La elegancia serena del descanso.
Satén premium. Azul profundo.

Satén Premium · Camisón
L 798
L 599
1
REF: IN005

Íntima Primavera

Un jardín secreto que despierta solo para ti. Encaje botánico tejido para mujeres que florecen en silencio y reinan al amanecer.
Encaje premium. Floral romántico.

Encaje Premium · Íntima
L 599
L 499
1
REF: IN006

Rare Gold

Hilos de oro sobre satén nocturno. Lo verdaderamente raro nunca se exhibe — se susurra. Edición numerada para colecciones íntimas.
Satén con hilos dorados. Edición Limitada.

Satén Dorado · Limitado
L 649
L 549
1
REF: IN007

Dualidad

El blanco de tu pureza, el negro de tu poder. Una pieza, dos almas, infinitas razones para no tener que elegir solo una.
Satén bicolor. Contraste sofisticado.

Satén Bicolor · Premium
L 599
L 499
1
REF: IN008

Halo

Encaje suspendido como aureola sobre la piel. Diseñado para quienes no se visten — se consagran. La pieza más etérea de la maison.
Encaje etéreo. Acabado celestial.

Encaje Etéreo · Premium
L 749
L 599
1
Añadido a la bolsa
' }) }); } catch(emailErr) { console.warn('Email de bienvenida no enviado:', emailErr); } // 3) Exito msgEl.textContent = '\u00a1Bienvenido/a! Revisa tu correo para la confirmaci\u00f3n.'; msgEl.style.color = '#CBAA63'; msgEl.style.display = 'block'; btn.textContent = '\u2713'; document.getElementById('subscribeEmail').disabled = true; showToast('Inscrito/a en \u00c8NIGME \u00cdntima'); } catch(err) { msgEl.textContent = 'Error al suscribirse. Int\u00e9ntalo de nuevo.'; msgEl.style.color = '#E53935'; msgEl.style.display = 'block'; btn.disabled = false; btn.textContent = 'UNIRME'; } } /* ========================================= AUDIO GLOBAL Y FORZADO DE VIDEOS ========================================= */ let globalMuted = true; // Forzar videos mudos al cargar document.addEventListener("DOMContentLoaded", function() { var vids = document.querySelectorAll('.carousel-track video'); vids.forEach(function(v) { v.muted = true; v.play().catch(function(e){ console.log("Autoplay móvil prevenido"); }); }); }); /* BOTÓN FLOTANTE MÓVIL */ function toggleFabMobile() { if(window.innerWidth <= 768) { document.getElementById('fab-container').classList.toggle('active'); } } /* Crossfade + swipe — enigme-crossfade.js (compartido) */ /* ========================================= MOTOR DEL CARRITO Y FAVORITOS ========================================= */ function changeCardQty(id, delta) { let el = document.getElementById(id); let current = parseInt(el.innerText); if (current + delta > 0) { el.innerText = current + delta; } } function toggleFav(ref, name, price, img, btn) { let favs = JSON.parse(localStorage.getItem('enigme_favs')) || []; const index = favs.findIndex(i => i.ref === ref); if(index > -1) { favs.splice(index, 1); btn.classList.remove('active'); } else { let card = btn.closest('.product-card'); let track = card.querySelector('.carousel-track'); let mediaElements = []; Array.from(track.children).forEach(child => { let type = child.tagName.toLowerCase() === 'video' ? 'video' : 'img'; mediaElements.push({type: type, src: child.src || child.getAttribute('src')}); }); favs.push({ref, name, price, img, media: mediaElements}); btn.classList.add('active'); } localStorage.setItem('enigme_favs', JSON.stringify(favs)); updateCounts(); } function showToast(msg = "Añadido a la bolsa", isError = false) { const toast = document.getElementById('toast-notification'); document.getElementById('toast-msg').innerText = msg; if(isError) { toast.style.backgroundColor = "#550000"; toast.style.borderColor = "#550000"; } else { toast.style.backgroundColor = "var(--marfil)"; toast.style.borderColor = "var(--dorado)"; } toast.classList.add('show'); setTimeout(() => { toast.classList.remove('show'); }, 3000); } function addToCartBase(ref, name, priceStr, img, btn, qtyId, sizeId) { if (btn.classList.contains('added')) return; const qtyToAdd = parseInt(document.getElementById(qtyId).innerText) || 1; const sizeEl = sizeId ? document.getElementById(sizeId) : null; let sizeValue = sizeEl ? sizeEl.value : 'ÚNICA'; // VALIDACIÓN: si hay select de talla y está vacío, bloquear y avisar if (sizeEl && !sizeValue) { sizeEl.classList.add('size-error'); try { sizeEl.focus({ preventScroll: false }); } catch(e) { sizeEl.focus(); } sizeEl.scrollIntoView({ behavior: 'smooth', block: 'center' }); setTimeout(() => sizeEl.classList.remove('size-error'), 1800); showToast('Por favor, elige una talla antes de añadir', true); return; } const uniqueRef = ref + '-T' + sizeValue; const fullName = name + ' (' + sizeValue + ')'; let cart = JSON.parse(localStorage.getItem('enigme_cart')) || []; let existing = cart.find(i => i.ref === uniqueRef); let card = btn.closest('.product-card'); let track = card.querySelector('.carousel-track'); let mediaElements = []; Array.from(track.children).forEach(child => { let type = child.tagName.toLowerCase() === 'video' ? 'video' : 'img'; mediaElements.push({type: type, src: child.src || child.getAttribute('src')}); }); if(existing) { existing.qty += qtyToAdd; } else { cart.push({ ref: uniqueRef, name: fullName, price: "L " + priceStr, img: img, media: mediaElements, qty: qtyToAdd }); } localStorage.setItem('enigme_cart', JSON.stringify(cart)); const originalText = btn.innerText; btn.classList.add('added'); btn.innerText = "SELECCIONADO ✓"; document.getElementById(qtyId).innerText = "1"; showToast("Añadido a la bolsa", false); animateBagIcon(); setTimeout(() => { btn.classList.remove('added'); btn.innerText = originalText; }, 2000); updateCounts(); } function updateCounts() { const cart = JSON.parse(localStorage.getItem('enigme_cart')) || []; const favs = JSON.parse(localStorage.getItem('enigme_favs')) || []; let totalItems = 0; cart.forEach(item => totalItems += (item.qty || 1)); if(document.getElementById('cart-count')) document.getElementById('cart-count').innerText = totalItems; if(document.getElementById('fav-count')) document.getElementById('fav-count').innerText = favs.length; document.querySelectorAll('.btn-fav').forEach(btn => { if(favs.find(i => i.ref === btn.getAttribute('data-ref'))) btn.classList.add('active'); }); } /* ========================================= LIGHTBOX INMERSIVO Y AUDIO INTELIGENTE ========================================= */ const lightbox = document.getElementById('lightbox'); const lbTrack = document.getElementById('lightbox-track'); const lbIndicator = document.getElementById('lb-indicator'); let lbCurrentIndex = 0; let lbItemsCount = 0; function getSoundIcon(isMuted) { if (isMuted) { return ''; } else { return ''; } } function openLightbox(wrapperElement) { lbTrack.innerHTML = ''; lbIndicator.innerHTML = ''; let sourceTrack = wrapperElement.querySelector('.carousel-track'); let items = sourceTrack.children; lbItemsCount = items.length; lbCurrentIndex = parseInt(sourceTrack.getAttribute('data-index') || 0); for(let i=0; i, clonamos el interno (.lightbox-media // no se cascada al wrapper; resultaria en thumbnail 32x32). Si es //