.ref-name {
  font-size: 1.5rem;
  margin: 0;
  line-height: 0.9;
  white-space: pre;
}

@media screen and (min-width: 53em) {
  .ref-name {
    font-size: 3rem;
  }
}

.reflow-placeholder .ref-price {
  font-size: 1.1rem !important;
}

@media screen and (min-width: 53em) {
  .ref-description {
    margin: 1rem 0 0 0.2rem;
    max-width: 300px;
  }
}

.ref-description {
  font-size: 1rem;
  font-weight: normal;
}

/* 1. Fix the Z-Index so the header is always on top of the slideshow */

.codrops-header {
  z-index: 9999 !important;
  position: relative !important;
}

/* 2. Make the "Invisible" summary ignore clicks */

.ref-summary {
  pointer-events: auto !important;
}

/* 3. When the summary is open, allow clicks inside it again */

.ref-summary.active, .ref-summary:not(.undefined), .ref-summary[style*="display: block"] {
  pointer-events: auto !important;
}

/* 4. Ensure the trigger itself is always clickable */

.reflow-cart-toggler {
  cursor: pointer !important;
  position: relative !important;
  z-index: 10001 !important;
  pointer-events: auto !important;
}

.reflow-add-to-cart {
  background-color: transparent;
}

.reflow-add-to-cart.ref-product-controls .ref-min-qty-message {
  display: none;
}

.ref-button {
  display: inline-block;
  text-decoration: none;
  padding: var(--ref-btn-padding);
  background-color: var(--bs-danger);
  color: var(--ref-white);
  border-radius: var(--ref-btn-border-radius);
  line-height: 1.5;
  font-size: 1em;
  cursor: pointer;
  user-select: none;
}

.custom-qty-wrapper {
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff;
  border: 1px solid #ddd;
  border-radius: 6px;
  width: 140px;
  height: 40px;
  overflow: hidden;
  margin: 0 auto;
  z-index: 10000;
}

.qty-btn {
  width: 60px;
  height: 100%;
  border: none;
  background: white;
  cursor: pointer;
  font-size: 18px;
  font-weight: bold;
  transition: background 0.2s;
  align-items: center;
}

.qty-btn:hover {
  background: #e0e0e0;
}

.custom-qty-input {
  width: 50px;
  text-align: center;
  border: none;
  font-weight: bold;
  font-size: 14px;
  -moz-appearance: textfield;
}

/* Hide the default number arrows */

.custom-qty-input::-webkit-outer-spin-button, .custom-qty-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

.reflow-product .ref-price {
  display: block;
  margin-bottom: 1em;
  margin-top: 1em;
  font-size: 1.1rem;
}

.reflow-cart-toggler:before {
  content: attr(data-reflow-count);
  position: absolute;
  right: 0;
  background: var(--ref-danger);
  border-radius: 1em;
  color: #fff;
  font-size: 0.85em;
  padding: .25em .4em .2em;
  line-height: 1;
  transform: translate(70%,-50%);
  visibility: hidden;
}

@media screen and (min-width: 53em) {
  .ref-notification {
    margin: 0 50px 60px 0;
  }
}

.ref-notification .ref-button {
  display: none;
}

/* Hide the + text and show the cart icon */

.reflow-add-to-cart a.ref-button {
  font-size: 0;
  position: relative;
  padding: 8px 16px;
}

/* Add the cart icon */

.reflow-add-to-cart a.ref-button::before {
  content: '';
  display: inline-block;
  width: 32px;
  height: 32px;
  background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" class="bi bi-cart-plus" viewBox="0 0 16 16"><path d="M9 5.5a.5.5 0 0 0-1 0V7H6.5a.5.5 0 0 0 0 1H8v1.5a.5.5 0 0 0 1 0V8h1.5a.5.5 0 0 0 0-1H9z"/><path d="M.5 1a.5.5 0 0 0 0 1h1.11l.401 1.607 1.498 7.985A.5.5 0 0 0 4 12h1a2 2 0 1 0 0 4 2 2 0 0 0 0-4h7a2 2 0 1 0 0 4 2 2 0 0 0 0-4h1a.5.5 0 0 0 .491-.408l1.5-8A.5.5 0 0 0 14.5 3H2.89l-.405-1.621A.5.5 0 0 0 2 1zm3.915 10L3.102 4h10.796l-1.313 7zM6 14a1 1 0 1 1-2 0 1 1 0 0 1 2 0m7 0a1 1 0 1 1-2 0 1 1 0 0 1 2 0"/></svg>');
  background-repeat: no-repeat;
  background-position: center;
  background-size: contain;
  font-size: 0;
  filter: invert(1);
  transition: filter 0.2s;
  transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
  transform: scale(1);
}

/* Hover effect */

.reflow-add-to-cart a.ref-button:hover::before {
  /*Optional: Add a filter or scale effect;*/
  filter: invert(1);
  transform: scale(1.3);
}

.reflow-product-placeholder .ref-name {
  font-size: 2rem;
}

@media screen and (min-width: 53em) {
  .reflow-product-placeholder .ref-name {
    font-size: 3rem;
  }
}

.reflow-shopping-cart .ref-heading {
  margin-bottom: 70px;
  font-weight: bold;
  font-size: 1.5em;
}

@media (min-width: 992px) {
  .reflow-shopping-cart .ref-checkout {
    margin-top: 70px;
  }
}

.reflow-shopping-cart .ref-checkout .ref-heading-delivery, .reflow-shopping-cart .ref-checkout .ref-heading-payment {
  display: none !important;
}

.reflow-shopping-cart .ref-checkout .ref-product .ref-product-col .ref-product-total {
  line-height: 1 !important;
}

@media (min-width: 992px) {
  .reflow-shopping-cart .ref-checkout .ref-checkout-summary {
    padding-top: 85px;
  }
}

.ref-product-total {
  font-size: 0.95rem;
}

.reflow-shopping-cart .ref-checkout .ref-product .ref-product-name {
  font-size: 0.9rem;
}

@media (min-width: 992px) {
  .reflow-order-status > div.col > div {
    min-height: 275px;
  }
}

.small, small {
  font-size: .9rem !important;
}

.reflow-order-status .ref-line-item .ref-price {
  font-size: 0.8rem;
  color: #888888;
}

.reflow-order-status .ref-line-item .ref-price::first-line {
  font-size: 1rem !important;
  font-weight: bold;
  color: #000000 !important;
}

.carousel {
  position: relative;
}

.carousel-item-next, .carousel-item-prev, .carousel-item.active {
  display: block;
  z-index: 1000;
}

/* Crea una capa negra semitransparente sobre todo el carrusel */

#carousel-1 .carousel-inner::after {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: rgba(255, 255, 255, 0.6);
  z-index: 1;
  pointer-events: none;
}

.icons-index {
  position: absolute;
  top: 100px;
  left: 60px;
  z-index: 10000;
  display: flex;
  flex-direction: column;
  justify-content: center;
}

@media (min-width: 992px) {
  .icons-index {
    position: absolute;
    top: 180px;
    left: 200px;
    display: flex;
    width: 100%;
    height: 300px;
    z-index: 10000;
    flex-direction: column;
    justify-content: center;
  }
}

.icons-index span {
  pointer-events: none;
}

#preloader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #ffffff;
  z-index: 9999;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 15px;
  transition: opacity 2.5s ease, visibility 2.5s ease;
}

#preloader .progress {
  width: 80%;
  max-width: 300px;
  height: 10px;
}

/* ADD THIS: Forces smooth animated expansion of the bar */

#preloader .progress-bar {
  transition: width 0.03s linear !important;
}

#preloader.fade-out {
  opacity: 0;
  visibility: hidden;
}

/* Texto principal */

#preloader .loading-text {
  font-size: 1.2rem;
  font-weight: 500;
  position: relative;
  display: inline-block;
}

/* Pseudo-elemento que genera y anima los puntos (...) */

#preloader .loading-text::after {
  content: '';
  position: absolute;
  left: 100%;
  text-align: left;
  display: inline-block;
  width: 20px;
  animation: typingDots 1.5s infinite steps(4, end);
}

/* Animación de fotogramas clave compatible */

@keyframes typingDots {
  0% {
    content: '';
  }
  25% {
    content: '.';
  }
  50% {
    content: '..';
  }
  75% {
    content: '...';
  }
  100% {
    content: '';
  }
}

/* Detiene la animación y mantiene los 3 puntos visibles al final */

#preloader.loading-done .loading-text::after {
  animation: none;
  content: '...';
}

/* Se vuelve verde únicamente cuando la animación se congela al 100% */

#preloader.loading-done .progress-bar {
  background-color: #28a745 !important;
  transition: background-color 0.3s ease;
}

/* ==========================================
   COMPORTAMIENTO PARA DISPOSITIVOS MÓVILES
   ========================================== */

/* ========================================================
     1. DESBLOQUEO CRÍTICO DE CLICS (Fuerza la cadena de eventos)
     ======================================================== */

@media (max-width: 52em) {
  .slide, .slide--current, .slide__wrap, .slide__title-wrap {
    pointer-events: auto !important;
  }
}

/* ========================================================
   COMPORTAMIENTO EXCLUSIVO PARA MÓVILES
   ======================================================== */

/* EL BOTÓN MÓVIL: Símbolo negro minimalista con área táctil grande */

@media (max-width: 52em) {
  .mobile-toggle-btn {
    display: flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    position: absolute !important;
    isolation: isolate !important;
    top: 8px !important;
    left: 15px !important;
    z-index: 9999999 !important;
    cursor: pointer !important;
    pointer-events: auto !important;
    background: transparent !important;
    background-color: transparent !important;
    border: none !important;
    box-shadow: none !important;
    padding: 0 !important;
    color: #000000 !important;
    font-size: 3.2rem !important;
    font-weight: 300 !important;
    width: 60px !important;
    height: 60px !important;
    align-items: center !important;
    justify-content: center !important;
    margin: 0 !important;
    transform-origin: center !important;
    transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1) !important;
  }
}

/* Animación del botón: El + gira 45 grados y se vuelve una X al abrirse */

@media (max-width: 52em) {
  .mobile-toggle-btn.is-open {
    transform: rotate(45deg) !important;
  }
}

/* ESTADO INICIAL DEL TÍTULO EN MÓVIL: Oculto de forma segura */

@media (max-width: 52em) {
  .slide__title-wrap {
    max-height: 0 !important;
    opacity: 0 !important;
    overflow: hidden !important;
    pointer-events: none !important;
    position: absolute !important;
    top: 75px !important;
    left: 0 !important;
    width: 100% !important;
    background-color: rgba(255, 255, 255, 0.57) !important;
    z-index: 999998 !important;
    transition: max-height 0.4s ease-out, opacity 0.3s ease-out !important;
  }
}

/* ========================================================
   1. FORZAR AL CONTENEDOR ENTORNO SEGURO
   ======================================================== */

@media (max-width: 52em) {
  .slide__wrap {
    position: relative !important;
  }
}

/* ========================================================
   2. EL PSEUDO-ELEMENTO CORREGIDO Y FLOTANTE
   ======================================================== */

@media (max-width: 52em) {
  .slide__wrap::before {
    content: "detalles" !important;
    display: flex !important;
    color: #000000 !important;
    font-size: 0.7rem !important;
    font-weight: 400 !important;
    position: absolute !important;
    top: 25px !important;
    left: 65px !important;
    z-index: 99999999 !important;
    pointer-events: auto !important;
    cursor: pointer !important;
    width: max-content !important;
    height: auto !important;
  }
}

/* ESTADO ABIERTO: Se despliega suavemente cuando el botón tiene la clase .is-open */

@media (max-width: 52em) {
  .mobile-toggle-btn.is-open ~ .slide__title-wrap {
    max-height: 600px !important;
    opacity: 1 !important;
    overflow: visible !important;
    pointer-events: auto !important;
    border: 1px solid #e4e4e7 !important;
    box-shadow: 0 10px 25px rgba(0, 0, 0, 0.15) !important;
  }
}

/* ========================================================
   COMPORTAMIENTO PARA ESCRITORIO (Anula los cambios de móvil)
   ======================================================== */

/* Ocultamos el botón por completo en computadoras */

@media (min-width: 52em) {
  .mobile-toggle-btn {
    display: none !important;
  }
}

.carousel.slide {
  width: 100%;
  height: 80vh;
  top: 0;
  left: 0;
  position: absolute;
  overflow-x: hidden;
  pointer-events: none;
  opacity: 0;
}

@media screen and (min-width: 53em) {
  .carousel.slide {
    height: 100vh;
  }
}

#index-preloader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #ffffff;
  z-index: 99999;
  display: flex;
  justify-content: center;
  align-items: center;
  transition: opacity 1.5s ease, visibility 1.5s ease;
}

#index-preloader .loader {
  width: 120px;
  height: 160px;
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: center;
}

/* Contenedor del SVG con tu animación de rotación */

#index-preloader .loader .image {
  width: 100px;
  height: 100px;
  text-align: center;
  transform-origin: bottom center;
  animation: rotateIndex 1.5s infinite ease-in-out;
  opacity: 0;
  display: flex;
  justify-content: center;
  align-items: center;
}

/* Forzar que los SVG inyectados hereden el color y tamaño */

#index-preloader .loader .image svg {
  font-size: 50px !important;
  color: #333333;
  width: 1em;
  height: 1em;
}

#index-preloader .loader .percentage-text {
  display: block;
  width: 100%;
  text-align: center;
  font-size: 1.2rem;
  font-weight: bold;
  color: #333333;
}

#index-preloader.fade-out {
  opacity: 0;
  visibility: hidden;
}

@keyframes rotateIndex {
  0% {
    transform: rotate(90deg);
    opacity: 0;
  }
  10% {
    opacity: 0;
  }
  35% {
    transform: rotate(0deg);
    opacity: 1;
  }
  65% {
    transform: rotate(0deg);
    opacity: 1;
  }
  80% {
    opacity: 0;
  }
  100% {
    transform: rotate(-90deg);
    opacity: 0;
  }
}

/* Detiene el giro en seco en su posición actual cuando se agrega la clase en el 100% */

/* Borra la anterior y deja solo esta */

#index-preloader.loading-done .loader .image {
  animation: none !important;
  transform: rotate(0deg) !important;
  opacity: 1 !important;
}

.product-static .ref-product-data {
  padding-left: 0.5em;
}

@media (min-width: 52em) {
  .product-static .ref-product-data {
    padding-left: 2em;
  }
}

.product-static .ref-product-data .ref-price {
  display: block;
  margin-bottom: 1em;
  margin-top: 1em;
  font-size: 1.1rem;
}

