.elementor-kit-5{--e-global-color-primary:#010019;--e-global-color-secondary:#1155AC;--e-global-color-text:#F5F5F5E6;--e-global-color-accent:#FFFFFF;--e-global-color-9c6b1bf:#333333;--e-global-color-6476208:#00000080;--e-global-color-fa0a9e9:#1B1B1B;--e-global-color-46d05bc:#D9D9D9;--e-global-typography-primary-font-family:"Aspekta";--e-global-typography-primary-font-size:clamp(2rem, 0.6002rem + 5.7426vw, 5.625rem);--e-global-typography-primary-font-weight:700;--e-global-typography-primary-letter-spacing:0.1px;--e-global-typography-secondary-font-family:"Aspekta";--e-global-typography-secondary-font-size:clamp(2rem, 1.5991rem + 1.8868vw, 3.25rem);--e-global-typography-secondary-font-weight:700;--e-global-typography-secondary-line-height:1.3em;--e-global-typography-secondary-letter-spacing:0.1px;--e-global-typography-text-font-family:"Aspekta";--e-global-typography-text-font-size:clamp(0.8125rem, 0.7401rem + 0.297vw, 1rem);--e-global-typography-text-font-weight:400;--e-global-typography-text-letter-spacing:0.16px;--e-global-typography-accent-font-family:"Aspekta";--e-global-typography-accent-font-size:clamp(0.875rem, 0.8714rem + 0.147vw, 1rem);--e-global-typography-accent-font-weight:400;--e-global-typography-accent-letter-spacing:1px;--e-global-typography-7176118-font-family:"Aspekta";--e-global-typography-7176118-font-size:clamp(0.625rem, 0.4319rem + 0.7921vw, 1.125rem);--e-global-typography-7176118-font-weight:400;--e-global-typography-7176118-text-transform:uppercase;--e-global-typography-7176118-letter-spacing:3.6px;--e-global-typography-d6f45ad-font-family:"Aspekta";--e-global-typography-d6f45ad-font-size:clamp(0.75rem, 0.3786rem + 1.5238vw, 1.75rem);--e-global-typography-d6f45ad-font-weight:400;--e-global-typography-d6f45ad-text-transform:uppercase;--e-global-typography-d6f45ad-letter-spacing:1px;--e-global-typography-bbadb54-font-family:"Aspekta";--e-global-typography-bbadb54-font-size:clamp(0.625rem, 0.5477rem + 0.3636vw, 0.875rem);--e-global-typography-bbadb54-font-weight:400;--e-global-typography-bbadb54-line-height:1.5em;--e-global-typography-bbadb54-letter-spacing:1px;--e-global-typography-fdec046-font-family:"Aspekta";--e-global-typography-fdec046-font-size:clamp(1.1875rem, 0.6462rem + 2.5472vw, 2.875rem);--e-global-typography-fdec046-font-weight:400;--e-global-typography-fdec046-text-transform:uppercase;--e-global-typography-fdec046-letter-spacing:1px;--e-global-typography-e6c9742-font-family:"Aspekta";--e-global-typography-e6c9742-font-size:clamp(1.25rem, 1.0357rem + 1.0714vw, 2rem);--e-global-typography-e6c9742-font-weight:700;--e-global-typography-e6c9742-letter-spacing:0.1px;--e-global-typography-9f4a74c-font-family:"Aspekta";--e-global-typography-9f4a74c-font-size:clamp(0.925rem, 0.4319rem + 0.7921vw, 1.125rem);--e-global-typography-9f4a74c-font-weight:400;--e-global-typography-9f4a74c-letter-spacing:2px;background-color:var( --e-global-color-primary );}.elementor-kit-5 e-page-transition{background-color:#FFBC7D;}.elementor-kit-5 a{color:#17B4FE;}.elementor-kit-5 a:hover{color:var( --e-global-color-text );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1400px;}.e-con{--container-max-width:1400px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){--kit-widget-spacing:0px;}.elementor-element{--widgets-spacing:0px 0px;--widgets-spacing-row:0px;--widgets-spacing-column:0px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1366px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}}@media(max-width:880px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}}@media(max-width:767px){.elementor-kit-5{--e-global-typography-e6c9742-font-size:clamp(1.125rem, 0.875rem + 1.25vw, 2rem);}.elementor-section.elementor-section-boxed > .elementor-container{max-width:100%;}.e-con{--container-max-width:100%;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}}/* Start custom CSS */html, body {
  overflow-x: hidden !important;
}

.transNo {
  transition: none !important;
}

/* ── Altura de línea para textos ── */
h1 { line-height: 1.1 !important; }
.texto-varios p { line-height: 1.5 !important; }
.texto-grande p { line-height: 1.4 !important; }
.texto-frase p  { line-height: 1.8 !important; }

/* ── Ajuste de alto icono ── */
.ajusvector svg { height: 56px !important; }

/* ── Quitar margen final texto ── */
.elementor-text-editor p { margin-bottom: 1em !important; }
.elementor-text-editor p:last-child { margin-bottom: 0 !important; }

/* ── V fondo decorativa ── */
.v-fondo {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: -2;
  pointer-events: none;
}

/* ── Degradado azul ── */
:root {
  --gradient-main: linear-gradient(200deg, #229BC7 0.32%, #2278C3 25.64%, #1155AC 59.94%, #0D3968 99.68%);
}

.gradient-text {
  background: var(--gradient-main) !important;
  -webkit-background-clip: text !important;
  background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  color: transparent !important;
  display: inline !important;
}

.gradient-bg { background: var(--gradient-main) !important; }

.elementor-heading-title .fw-400 {
  font-weight: 400 !important;
  -webkit-text-fill-color: initial;
}

/*Borde contenedor degradado azul*/
.border-gradient {
  position: relative;
  box-shadow:
    -4px -6px 8px 0 rgba(104, 250, 255, 0.25) inset,
     4px  6px 8px 0 rgba(104, 250, 255, 0.25) inset;
}

.border-gradient::before {
  content: '';
  position: absolute;
  inset: 0;
  border-radius: 18px;
  padding: 1.5px;
  background: var(--gradient-main);
  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0);
  -webkit-mask-composite: xor;
  mask-composite: exclude;
  pointer-events: none;
}


/*----------COSASA DEL HERO---------*/
.ctn-hero {
    transition: none !important;
    height: 100vh;
}

.elemtHero {
    transition: none !important;
}


.contimg-izq {
    position: absolute;
    top: -3%;
    left: 0%;
    transform: scale(1.2);
    pointer-events: none;
}
@media (max-width: 1366px) {
.contimg-izq {
    left: calc(0% - 150px);
    transform: scale(1);
    }
}
@media (max-width: 1024px) {
.contimg-izq {
    left: calc(0% - 220px);
    }
}
@media (max-width: 767px) {
.contimg-izq {
    left: -55%;
    top: -7%;
    }
}


.contimg-der {
    position: absolute;
    top: -3%;
    right: 0%;
    transform: scale(1.2);
    pointer-events: none;
}

@media (max-width: 1366px) {
.contimg-der {
    right: calc(0% - 160px);
    transform: scale(1);
    }
}

@media (max-width: 1024px) {
.contimg-der {
   right: calc(0% - 220px);
    }
}

@media (max-width: 767px) {
.contimg-der {
    right: -55%;
    top: -6%;
    }
}


.frase1 {
    position: absolute;
    top: 40vh;
    opacity: 0;
    transform: scale(0.8);
    pointer-events: none;
}
@media (max-width: 767px) {
  .frase1 {
    top: 42%;
    }
}


.textVisuales {
    opacity: 0;
}

.flecha {
  animation: bounce-fade 2s infinite ease-in-out;
}

@keyframes bounce-fade {
  0%   { transform: translateY(0);    opacity: 0.5; }
  50%  { transform: translateY(15px); opacity: 1;   }
  100% { transform: translateY(0);    opacity: 0.5; }
}


/* ── Botones primarios ── */
.btn-primary a.elementor-button {
  padding: clamp(14px, 0.8714rem + 0.147vw, 18px)
           clamp(28px, 1.7428rem + 0.2939vw, 30px) !important;
  transition: box-shadow 0.3s ease, transform 0.3s ease !important;
  border-radius: 60px !important;
  background: #FFF !important;
  font-weight: 700 !important;
  line-height: 1 !important;
}

.btn-primary span.elementor-button-icon {
  width: 16px !important;
  height: 16px !important;
  font-size: 16px !important;
  margin-top: 0px !important;
}

.btn-primary a.elementor-button:hover {
  box-shadow: 0 0 28px 0 rgba(255, 255, 255, 0.45);
  transform: scale(1.05) !important;
}

/* ── Botones primarios negativo ── */
.btn-primary-n a.elementor-button {
  padding: clamp(14px, 0.8714rem + 0.147vw, 18px)
           clamp(28px, 1.7428rem + 0.2939vw, 30px) !important;
  transition: box-shadow 0.3s ease, transform 0.3s ease !important;
  border-radius: 60px !important;
  font-weight: 700 !important;
  line-height: 1 !important;
}

.btn-primary-n span.elementor-button-icon {
  width: 16px !important;
  height: 16px !important;
  font-size: 16px !important;
  margin-top: 0px !important;
}

.btn-primary-n a.elementor-button:hover {
  transform: scale(1.05) !important;
}

/* ── Botones secundarios ── */
.btn-secondary a.elementor-button {
  display: flex !important;
  padding: clamp(14px, 0.8714rem + 0.147vw, 18px)
           clamp(28px, 1.7428rem + 0.2939vw, 30px) !important;
  justify-content: center !important;
  align-items: center !important;
  border-radius: 60px !important;
  border: none !important;
  background: transparent !important;
  box-shadow:
    -1px -2px 8px 0 rgba(104, 250, 255, 0.25) inset,
     1px  4px 8px 0 rgba(104, 250, 255, 0.25) inset !important;
  color: #F5F5F5 !important;
  text-decoration: none !important;
  position: relative !important;
  transition: box-shadow 0.3s ease, transform 0.3s ease !important;
}

.btn-secondary span.elementor-button-icon {
  width: 20px !important;
  height: 20px !important;
  font-size: 20px !important;
  margin-top: -1px !important;
}

.btn-secondary a.elementor-button::before {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  border-radius: 60px !important;
  padding: 1.5px !important;
  background: var(--gradient-main) !important;
  -webkit-mask:
    linear-gradient(#fff 0 0) content-box,
    linear-gradient(#fff 0 0) !important;
  -webkit-mask-composite: xor !important;
  mask-composite: exclude !important;
  pointer-events: none !important;
}

.btn-secondary a.elementor-button:hover {
  box-shadow:
    0 0 32px 0 rgba(55, 152, 255, 0.35),
    -1px -2px 8px 0 rgba(104, 250, 255, 0.25) inset,
     1px  4px 8px 0 rgba(104, 250, 255, 0.25) inset !important;
  transform: scale(1.05) !important;
}

/* ── Sin brinco en scale ── */
.btn-primary a.elementor-button, .btn-primary-n a.elementor-button,
.btn-secondary a.elementor-button {
  will-change: transform;
}

/* ── Botones icono móvil ── */
@media (max-width: 767px) {
  .btn-primary span.elementor-button-icon,
  .btn-secondary span.elementor-button-icon {
    width: 16px !important;
    height: 16px !important;
    font-size: 16px !important;
    margin-top: -2px !important;
  }
}


/* ── Luces decorativas — compartido ── */
.luz-izq,
.luz-der {
  aspect-ratio: 1;
  background-color: tomato;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-size: 100% auto;
  -webkit-mask-size: 100% auto;
  transform-origin: top center;
  animation: luz-swing 6s ease-in-out infinite;
}

.luz-izq {
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='916' height='976' fill='none' viewBox='0 0 916 976'%3E%3Cg filter='url(%23a)' opacity='.1'%3E%3Cpath fill='%230093C8' d='M683.596 525.745C611.65 422.993 475.405 316.139 399.88 252.75c.917-3.723-94.014-65.776-158.001-88.5-53.5-19-42.999-19-74.499 0-31.414 18.948-16.5 58.5 15 150 31.364 91.106 111.454 229.929 148.5 285.5 37.046 55.571 110.608 151.972 190.69 194.804 80.081 42.832 206.443 39.392 230.642-1.489 24.198-40.881 21.317-138.879-68.616-267.32Z'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='915.167' height='975.229' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/%3E%3CfeGaussianBlur result='effect1_foregroundBlur_192_3' stdDeviation='75'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='916' height='976' fill='none' viewBox='0 0 916 976'%3E%3Cg filter='url(%23a)' opacity='.15'%3E%3Cpath fill='%230093C8' d='M683.596 525.745C611.65 422.993 475.405 316.139 399.88 252.75c.917-3.723-94.014-65.776-158.001-88.5-53.5-19-42.999-19-74.499 0-31.414 18.948-16.5 58.5 15 150 31.364 91.106 111.454 229.929 148.5 285.5 37.046 55.571 110.608 151.972 190.69 194.804 80.081 42.832 206.443 39.392 230.642-1.489 24.198-40.881 21.317-138.879-68.616-267.32Z'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='915.167' height='975.229' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/%3E%3CfeGaussianBlur result='effect1_foregroundBlur_192_3' stdDeviation='75'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E");
  animation-delay: -3s;
}

.luz-der {
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='916' height='976' fill='none' viewBox='0 0 916 976'%3E%3Cg filter='url(%23a)' opacity='.1'%3E%3Cpath fill='%230093C8' d='M231.57 525.745c71.946-102.752 208.191-209.606 283.717-272.995-.917-3.723 94.013-65.776 158-88.5 53.5-19 43-19 74.5 0 31.413 18.948 16.5 58.5-15 150-31.365 91.106-111.455 229.929-148.5 285.5-37.046 55.571-110.609 151.972-190.69 194.804-80.082 42.832-206.444 39.392-230.642-1.489-24.198-40.881-21.317-138.879 68.615-267.32Z'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='915.167' height='975.229' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/%3E%3CfeGaussianBlur result='effect1_foregroundBlur_192_2' stdDeviation='75'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='916' height='976' fill='none' viewBox='0 0 916 976'%3E%3Cg filter='url(%23a)' opacity='.15'%3E%3Cpath fill='%230093C8' d='M231.57 525.745c71.946-102.752 208.191-209.606 283.717-272.995-.917-3.723 94.013-65.776 158-88.5 53.5-19 43-19 74.5 0 31.413 18.948 16.5 58.5-15 150-31.365 91.106-111.455 229.929-148.5 285.5-37.046 55.571-110.609 151.972-190.69 194.804-80.082 42.832-206.444 39.392-230.642-1.489-24.198-40.881-21.317-138.879 68.615-267.32Z'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='915.167' height='975.229' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/%3E%3CfeGaussianBlur result='effect1_foregroundBlur_192_2' stdDeviation='75'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E");
}

@keyframes luz-swing {
  0%   { transform: rotate(-16deg); }
  50%  { transform: rotate(16deg); }
  100% { transform: rotate(-16deg); }
}


/*Luz de fondo*/
.luz-fondo {
  aspect-ratio: 100/100;
  background-color: tomato;
  mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1665' height='1540' fill='none' viewBox='0 0 1665 1540'%3E%3Cg filter='url(%23a)' opacity='.2'%3E%3Cpath fill='%231155AC' d='M778.759 338.956c266.141-27.277 153.356 134.776 275.351 230.776 122 96 378.5-23.5 229 224.5-149.56 248.108-272.5 59.5-428.495 275.998-90.364 125.41-209.5 133-316.5 133-81.539 0-129.833-29.64-173.5-98.5-43.668-68.86-53.061-145.554 85.5-203.498 138.561-57.943 128.781-181.024 125.422-286.834-3.359-105.81-62.922-248.166 203.222-275.442Z'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='1664.52' height='1539.14' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/%3E%3CfeGaussianBlur result='effect1_foregroundBlur_568_3' stdDeviation='167.953'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E");
  -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='1665' height='1540' fill='none' viewBox='0 0 1665 1540'%3E%3Cg filter='url(%23a)' opacity='.2'%3E%3Cpath fill='%231155AC' d='M778.759 338.956c266.141-27.277 153.356 134.776 275.351 230.776 122 96 378.5-23.5 229 224.5-149.56 248.108-272.5 59.5-428.495 275.998-90.364 125.41-209.5 133-316.5 133-81.539 0-129.833-29.64-173.5-98.5-43.668-68.86-53.061-145.554 85.5-203.498 138.561-57.943 128.781-181.024 125.422-286.834-3.359-105.81-62.922-248.166 203.222-275.442Z'/%3E%3C/g%3E%3Cdefs%3E%3Cfilter id='a' width='1664.52' height='1539.14' x='0' y='0' color-interpolation-filters='sRGB' filterUnits='userSpaceOnUse'%3E%3CfeFlood flood-opacity='0' result='BackgroundImageFix'/%3E%3CfeBlend in='SourceGraphic' in2='BackgroundImageFix' result='shape'/%3E%3CfeGaussianBlur result='effect1_foregroundBlur_568_3' stdDeviation='167.953'/%3E%3C/filter%3E%3C/defs%3E%3C/svg%3E");
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-size: 100% auto;
  -webkit-mask-size: 100% auto;
}



/* ═══════════════════════════════
   Servicios y Reseñas
   ════════════════════════════*/

/* MÁSCARA SERVICIOS */

.cont-mask1 { height: 100vh !important; }

.contAbout {
  mask-image: url(https://visualestudio.es/wp-content/uploads/2026/04/logo-servicios.svg);
  -webkit-mask-image: url(https://visualestudio.es/wp-content/uploads/2026/04/logo-servicios.svg);
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  mask-position: 52.3% 50%;
  -webkit-mask-position: 52.3% 50%;
  mask-size: 3800vw;
  -webkit-mask-size: 3800vw;
}

.colorSVG { background-color: transparent; }

/* TARJETAS SERVICIOS */

.tarjeta-item {
  border-radius: 18px;
  box-shadow:
    0px 0px 0px rgba(255, 255, 255, 1),
    0px 0px 0px rgba(21, 21, 21, 0.3) !important;
  transition: all 0.8s ease !important;
}

.tarjeta-item.activa {
  border-radius: 18px;
  box-shadow:
    -12px -12px 24px rgba(255, 255, 255, 1),
     12px  12px 24px rgba(21, 21, 21, 0.3) !important;
  transform: scale(1.1) !important;
  transition: all 0.8s ease !important;
}

.tarjeta-item.activa .elementor-icon svg path {
  fill: #2278C3 !important;
  transition: fill 0.8s ease !important;
}


/* ═══════════════════════════════
   PORTAFOLIO
   ════════════════════════════*/

#pf-slider .swiper-slide:not(.swiper-slide-duplicate) .swiper-slide-image {
  opacity: 0;
  transform: translateX(60px);
}

.bt-ca .elementor-swiper-button-prev,
.bt-ca .elementor-swiper-button-next {
  background: #ffffff !important;
  border-radius: 50% !important;
  box-shadow: 0 2px 12px rgba(0,0,0,0.18) !important;
  width: 42px !important;
  height: 42px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  transition: box-shadow 0.3s ease, scale 0.3s ease !important;
}
.bt-ca .elementor-swiper-button-next {
  padding-left: 3px !important;
}
.bt-ca .elementor-swiper-button-prev {
  padding-right: 3px !important;
}
.bt-ca .elementor-swiper-button-prev:hover,
.bt-ca .elementor-swiper-button-next:hover {
  box-shadow: 2px 2px 12px rgba(0,0,0,0.5) !important;
  scale: 1.02;
}

#pf-slider .elementor-swiper-button-next { right: -28px !important; }
#pf-slider .elementor-swiper-button-prev { left: -28px !important; }


.pf-titulos,
.pf-botones {
  position: relative;
  transition: height 0.3s ease-in-out;
  height: var(--h);
}

.pf-titulos .elementor-widget,
.pf-botones .elementor-widget {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  opacity: 0;
}

.pf-titulos .elementor-widget.currentUp,
.pf-titulos .elementor-widget.currentDown,
.pf-botones .elementor-widget.currentUp,
.pf-botones .elementor-widget.currentDown {
  animation: fadeIn 0.6s ease-in-out;
  opacity: 1;
}

@keyframes fadeIn {
  0%   { opacity: 0; transform: translateY(-50%) translateY(12px); }
  100% { opacity: 1; transform: translateY(-50%); }
}

.pf-titulos .elementor-widget,
.pf-titulos .elementor-widget * {
  color: #FFF !important;
  font-family: 'Aspekta', sans-serif !important;
  font-size: clamp(1.25rem, 1.0714rem + 0.8929vw, 1.875rem) !important;
  font-weight: 700 !important;
  line-height: 1.1 !important;
  letter-spacing: -0.5px !important;
}

.pf-botones .elementor-widget .elementor-button {
  background: #fff !important;
  color: #0A0A0A !important;
  border: none !important;
  border-radius: 30px !important;
  box-shadow: none !important;
  font-size: 16px !important;
  opacity: 1 !important;
  transition: opacity 0.3s ease, transform 0.3s ease !important;
}

.pf-botones .elementor-widget .elementor-button:hover {
  transform: scale(1.08) !important;
  box-shadow: none !important;
}

.pf-botones .elementor-widget .elementor-button-icon {
  width: 16px !important;
  height: 17px !important;
  font-size: 14px !important;
}

.pf-botones .elementor-widget .elementor-button-icon svg * {
  fill: #0A0A0A !important;
}

.pf-botones .elementor-widget { pointer-events: none; }

.pf-botones .elementor-widget.currentUp,
.pf-botones .elementor-widget.currentDown {
  pointer-events: all;
}


/*Portafolio Servicios*/

#hom-slider .elementor-swiper-button.elementor-swiper-button-next {
  left: 58.8%;
}

#hom-slider .elementor-swiper-button.elementor-swiper-button-prev {
  left: calc(38.6%);
}
@media (max-width: 767px) {
  #hom-slider .elementor-swiper-button.elementor-swiper-button-next {
    left: 89%;
  }
  #hom-slider .elementor-swiper-button.elementor-swiper-button-prev {
    left: 1%;
  }
}

/* ═══════════════════════════════
   MASCARA DE PORTAFOLIO
   ════════════════════════════*/
#port-wrap {
  position: relative;
  height: 100vh;
}

#port-slider-wrap,
#port-slider-wrap .elementor-widget,
#port-slider-wrap .elementor-element {
  transition: none !important;
}

#port-slider-wrap {
  position: relative;
  z-index: 2;
  height: 100vh !important;
  --mask-pos: 30vh;
  --mask-inner: 100vh;
  --mask-outer: 150vh;
  -webkit-mask-image: radial-gradient(circle at 50% var(--mask-pos), black var(--mask-inner), transparent var(--mask-outer));
  mask-image: radial-gradient(circle at 50% var(--mask-pos), black var(--mask-inner), transparent var(--mask-outer));
  transform: scale(1);
}

#port-final {
  position: absolute !important;
  top: 0 !important;
  left: 0 !important;
  width: 100% !important;
  height: 100% !important;
  z-index: 1;
  --mask-pos2: 250vh;
  --mask-inner2: 100vh;
  --mask-outer2: 150vh;
  -webkit-mask-image: radial-gradient(circle at 50% var(--mask-pos2), black var(--mask-inner2), transparent var(--mask-outer2));
  mask-image: radial-gradient(circle at 50% var(--mask-pos2), black var(--mask-inner2), transparent var(--mask-outer2));
}

#pf-slider .elementor-swiper-button-prev,
#pf-slider .elementor-swiper-button-next {
  opacity: 0;
}



/* ═══════════════════════════════
   STRIP ANIMADO 
   ════════════════════════════*/

.strip-wrap {
  overflow: hidden;
  width: 100%;
  pointer-events: none;
  display: block;
  line-height: 0.8;
}
.strip-track {
  display: flex;
  width: max-content;
  transform: translateX(20vw);
  animation: strip-move 60s linear infinite;
  animation-play-state: paused;
}
.strip-item {
  font-family: 'Aspekta', sans-serif;
  font-size: clamp(9.375rem, 6.3679rem + 14.1509vw, 18.75rem);
  font-weight: 700;
  color: rgba(100, 100, 100, 0.1);
  white-space: nowrap;
  letter-spacing: -0.01em;
  text-transform: uppercase;
}
@keyframes strip-move {
  0%   { transform: translateX(20vw); }
  100% { transform: translateX(calc(-50% + 50vw)); }
}/* End custom CSS */
/* Start Custom Fonts CSS */@font-face {
	font-family: 'Aspekta';
	font-style: normal;
	font-weight: 400;
	font-display: auto;
	src: url('https://visualestudio.es/wp-content/uploads/2026/03/Aspekta-400-1.woff2') format('woff2');
}
@font-face {
	font-family: 'Aspekta';
	font-style: normal;
	font-weight: 700;
	font-display: auto;
	src: url('https://visualestudio.es/wp-content/uploads/2026/03/Aspekta-700-1.woff2') format('woff2');
}
/* End Custom Fonts CSS */