.text-shadow-outline {
  text-shadow: 
    -1px -1px 0 #000,  
     1px -1px 0 #000,
    -1px  1px 0 #000,
     1px  1px 0 #000;
}

.text-shadow-outline-light {
  text-shadow: 
    -1px -1px 6px #00000031,  
     1px -1px 6px #00000031,
    -1px  1px 6px #00000031,
     1px  1px 6px #00000031;
}

.rts-btn.btn-sm, .btn-group-sm > .rts-btn.btn {
  padding: 0.5rem 0.75rem;
  font-size: 1.25rem !important;
}

.rts-btn.mw-none {
  max-width: none !important;
}

.mh-stretch {
  max-height: stretch !important;
  max-height: -webkit-fill-available !important;
}

.etapas-imagen img {
  max-height: 250px;
  object-fit: cover;
  object-position: top;
}

.text-justify {
  text-align: justify;
}

.simulador-form {
  margin: 0;
  border-radius: 10px;
}

.contact-form.simulador-form .form-inner .single-input {
  border-radius: 10px;
}

.simulador-form .rts-btn.btn-primary {
  border-radius: 10px;
}

.resultado-test-container {
  padding: 60px 0;
}

.switch-price {
  cursor: pointer;
}

.switch-price:hover {
  background-color: #fff !important;
}

.valor-icono {
  cursor: pointer;
}

.cursor-pointer {
  cursor: pointer;
}

/* SCROLL BAR */
.custom-scroll {
  scrollbar-color: var(--sb-color, #333333) transparent;
  scrollbar-width: thin;
}

.custom-scroll::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}

.custom-scroll::-webkit-scrollbar-track {
  background: transparent;
}

.custom-scroll::-webkit-scrollbar-thumb {
  background-color: var(--sb-color, #333333);
  border-radius: 4px;
}

.custom-scroll::-webkit-scrollbar-thumb:hover {
  background-color: var(--sbh-color, #333333); 
}

/*Phone wrapper*/
.phone-wrapper {
  position: relative;
  width: 100%;
  max-width: 450px;
  display: block;

  .phone-frame {
    position: relative;
    width: 100%;
    height: auto;
    z-index: 2;
    pointer-events: none;
  }

  .phone-video {
    position: absolute;
    z-index: 1;
    
    top: 3.2%;      /* Distancia desde el top frame al inicio de la pantalla */
    left: 10%;     /* Distancia desde el left frame al inicio de la pantalla */
    width: 80%;     /* Ancho del área de la pantalla con relación al ancho total de la imágen */
    height: 93.6%;  /* Alto del área de la pantalla con relación al alto total de la imágen */
    
    object-fit: cover; 
    border-radius: 40px;

    pointer-events: auto; 
    cursor: pointer;
  }

  .video-btn-area {
    position: absolute;
    z-index: 3;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    display: flex;
    justify-content: center;
    align-items: center;

    .play-icon {
      position: absolute;
      top: 50%;
      left: 53%;
      transform: translate(-50%, -50%);
    }
  }
}

/* BOTONES VIVOS */
@keyframes microOscilacion {
  0%, 85%, 100% {
    transform: translate3d(0, 0, 0) rotate(0deg);
  }
  88% {
    transform: translate3d(-1px, -1px, 0) rotate(-0.5deg);
  }
  91% {
    transform: translate3d(1px, 1px, 0) rotate(0.5deg);
  }
  94% {
    transform: translate3d(-1px, 1px, 0) rotate(-0.3deg);
  }
  97% {
    transform: translate3d(1px, -1px, 0) rotate(0.3deg);
  }
}

.boton-vivo {
  display: inline-block;
  will-change: transform;
  
  /* Si JS no carga, por defecto el delay es 0s */
  animation: microOscilacion 4s ease-in-out infinite;
  animation-delay: var(--delay-aleatorio, 0s); 
}

.boton-vivo.ya-clicado {
  animation: none !important;
}

.box-shadow-none {
    box-shadow: none !important;
    transition: box-shadow 0.1s ease-in-out;
}

.social-icon-wrapper {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background-color: #FFF;
    text-decoration: none;
    transition: background-color 0.3s ease;
}

.social-icon-wrapper i {
    color: var(--bs-naranja);
    font-size: 22px;
}

.social-icon-wrapper:hover {
    background-color: rgba(255, 255, 255,0.75);
}

/* NUEVO DISEÑO DE CARDS */
.joy-card {
  border: 3px solid #fff !important;
  color: #fff;
  box-shadow: 3px 7px 6px #0000008e !important;
  transition: .20s ease !important;
}

.joy-card.selected {
  box-shadow: none !important;
  transform: translate(0px, 6px) !important;
  opacity: 90%;
  border: none !important;
}

.joy-card:not(.selected):hover {
  transform: translate(2px, -6px) !important;
  box-shadow: 3px 14px 6px #0000004b !important;
}

.joy-card.naranja-logo {
  border-color: var(--bs-naranja-logo) !important;
}

.joy-card.azul-logo {
  border-color: var(--bs-azul-logo) !important;
}

.joy-card.rosa-logo {
  border-color: var(--bs-rosa-logo) !important;
}

.joy-card.border-none {
  border: none !important;
}

.invert-svg {
  filter: invert(100%);
}

@keyframes drawMarker {
  from {
    clip-path: inset(0 100% 0 0); /* Hides everything from the right edge */
  }
  to {
    clip-path: inset(0 0 0 0); /* Fully reveals the element */
  }
}

.subrayado-1, 
.subrayado-2,
.subrayado-3 {
  position: relative;
  display: inline-block;
}

/* =========================================
   1. Subrayado tipo marcador irregular
   ========================================= */
.subrayado-1::after {
  content: '';
  position: absolute;
  left: 35%;
  bottom: -7px; /* Ajuste vertical */
  width: 65%;
  height: 12px; /* Grosor mayor para el trazo irregular */
  
  background-color: var(--bs-naranja-logo);

  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 8c3-3 8-6 15-5 7 1 12 5 19 4s11-4 18-3c7 1 12 5 19 4s11-4 18-3c7 1 11 5 11 4' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3Cpath d='M0 6c3-3 8-6 15-5 7 1 12 5 19 4s11-4 18-3c7 1 12 5 19 4s11-4 18-3c7 1 11 5 11 4' stroke='black' stroke-width='4' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 12' preserveAspectRatio='none'%3E%3Cpath d='M0 8c3-3 8-6 15-5 7 1 12 5 19 4s11-4 18-3c7 1 12 5 19 4s11-4 18-3c7 1 11 5 11 4' stroke='black' stroke-width='3' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3Cpath d='M0 6c3-3 8-6 15-5 7 1 12 5 19 4s11-4 18-3c7 1 12 5 19 4s11-4 18-3c7 1 11 5 11 4' stroke='black' stroke-width='4' stroke-linecap='round' stroke-linejoin='round' fill='none'/%3E%3C/svg%3E");

  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  
  /* Mantener la ligera rotación para mayor naturalidad */
  transform: rotate(-1.5deg);

  animation: drawMarker 0.4s ease-out forwards;
}

/* =========================================
   2. Subrayado doble línea irregular
   ========================================= */
.subrayado-2::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -2px; /* Ajuste vertical */
  width: 100%;
  height: 6px; /* Altura del "bloque" de doble línea */

  background-color: var(--bs-rosa-logo);

  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 8' preserveAspectRatio='none'%3E%3Cpath d='M0,2 Q25,3 50,2 T100,2' stroke='%23E43374' stroke-width='1.5' fill='none' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M0,6 Q30,5 60,6 T100,6' stroke='%23E43374' stroke-width='1.5' fill='none' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 8' preserveAspectRatio='none'%3E%3Cpath d='M0,2 Q25,3 50,2 T100,2' stroke='%23E43374' stroke-width='1.5' fill='none' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3Cpath d='M0,6 Q30,5 60,6 T100,6' stroke='%23E43374' stroke-width='1.5' fill='none' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");

  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  
  /* Inclinación opuesta para mayor naturalidad */
  transform: rotate(1deg);

  animation: drawMarker 0.4s ease-out forwards;
}

/* =========================================
   3. Subrayado tipo lápiz (una línea fina)
   ========================================= */
.subrayado-3::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: -20px;
  width: 100%;
  height: 8px; 
  
  background-color: #4A4A4A; 
  z-index: -1;

  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0,5 Q15,7 30,4 T60,6 T100,5' stroke='black' stroke-width='1.5' fill='none' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 10' preserveAspectRatio='none'%3E%3Cpath d='M0,5 Q15,7 30,4 T60,6 T100,5' stroke='black' stroke-width='1.5' fill='none' stroke-linecap='round' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;

  transform: rotate(0.5deg);

  animation: drawMarker 0.4s ease-out forwards;
}

.subrayado-3.bot-5::after {
  bottom: -5px !important;
}

.category-wrapper:hover .hover-bg-azul-fuerte {
  background-color: var(--bs-azul-fuerte) !important;
  color: #FFF;
}

.hover-bg-azul-fuerte:hover {
  background-color: var(--bs-azul-fuerte) !important;
}

.category-wrapper:hover .hover-bg-azul-logo {
  background-color: var(--bs-azul-logo) !important;
  color: #000;

  img {
    filter: invert(100%);
  }
}

.hover-bg-azul-logo:hover {
  background-color: var(--bs-azul-logo) !important;
}

.category-wrapper:hover .hover-bg-rosa-claro {
  background-color: var(--bs-rosa-claro) !important;
  color: #000;

  img {
    filter: invert(100%);
  }
}

.hover-bg-rosa-claro:hover {
  background-color: var(--bs-rosa-claro) !important;

  img {
    filter: invert(100%);
  }
}

.category-wrapper:hover .hover-bg-naranja {
  background-color: var(--bs-naranja) !important;
  color: #FFF;
}

.hover-bg-naranja:hover {
  background-color: var(--bs-naranja) !important;
}

.category-wrapper:hover .hover-bg-naranja-logo {
  background-color: var(--bs-naranja-logo) !important;
  color: #000;

  img {
    filter: invert(100%);
  }
}

.hover-bg-naranja-logo:hover {
  background-color: var(--bs-naranja-logo) !important;
}

.category-wrapper:hover .hover-bg-verde-chillon {
  background-color: var(--bs-verde) !important;
  color: #000;

  img {
    filter: invert(100%);
  }
}

.hover-bg-verde-chillon:hover {
  background-color: var(--bs-verde) !important;
}

.category-wrapper:hover .hover-bg-verde {
  background-color: var(--color-primary-5) !important;
  color: #FFF;
}

.hover-bg-verde:hover {
  background-color: var(--color-primary-5) !important;
}

.bg-verde {
  background-color: var(--color-primary-5) !important;
}

.ff-visby {
  font-family: var(--bs-body-font-family) !important;
}

.superscript {
  vertical-align: super;
  font-size: 70%;
  line-height: 0;
}

.banner-bg-grid-shape {
    position: absolute;
    width: 100%;
    height: 100%;
    top: 0;
    left: 0;
    background: url(../images/banner/bg-grid.png);
    background-size: cover;
    background-repeat: repeat;
    z-index: -2;
}


.pulse-animation {
    animation: pulse 1.5s ease-in-out infinite;
    transform-origin: center;
}

@keyframes pulse {
    0% {
        transform: scale(1);
    }
    50% {
        transform: scale(1.08);
    }
    100% {
        transform: scale(1);
    }
}