/* REVOLT v2.0.37 — extended 90% Hero and concise Service methodology titles. */

:root {
  --service-hero-height: 90svh;
}

/* 01 / HERO — occupies 80% of the viewport so Description completes the first fold. */
.internal-page #inicio.service-v2-hero {
  height: var(--service-hero-height) !important;
  min-height: var(--service-hero-height) !important;
}

.internal-page #inicio.service-v2-hero .ip-hero__content {
  top: 50% !important;
}

.internal-page #inicio.service-v2-hero .ip-hero__meta,
.internal-page #inicio.service-v2-hero h1,
.internal-page #inicio.service-v2-hero .ip-hero__lead {
  opacity: 0;
  transition:
    opacity .82s cubic-bezier(.22, 1, .36, 1),
    transform .82s cubic-bezier(.22, 1, .36, 1);
}

.internal-page #inicio.service-v2-hero .ip-hero__meta {
  transform: translateY(calc(-100% - clamp(10px, 1.2vh, 16px))) !important;
}

.internal-page #inicio.service-v2-hero h1 {
  transform: translateY(28px) !important;
}

.internal-page #inicio.service-v2-hero .ip-hero__lead {
  transform: translateY(22px) !important;
  transition-delay: .13s;
}

.internal-page #inicio.service-v2-hero.is-hero-ready .ip-hero__meta {
  opacity: 1;
  transform: translateY(calc(-100% - clamp(18px, 2vh, 26px))) !important;
}

.internal-page #inicio.service-v2-hero.is-hero-ready h1,
.internal-page #inicio.service-v2-hero.is-hero-ready .ip-hero__lead {
  opacity: 1;
  transform: translateY(0) !important;
}

/* Hero exit — the IMPACTO blur language, driven and rewound by scroll. */
.internal-page #inicio.service-v2-hero.has-scroll-exit::after {
  opacity: calc(1 - (var(--hero-exit-progress, 0) * .48));
  filter:
    blur(calc(var(--hero-exit-progress, 0) * 14px))
    saturate(calc(1 - (var(--hero-exit-progress, 0) * .24)))
    brightness(calc(1 - (var(--hero-exit-progress, 0) * .3)));
  transform: scale(calc(1 + (var(--hero-exit-progress, 0) * .055)));
  transform-origin: 50% 50%;
  will-change: opacity, filter, transform;
}

.internal-page #inicio.service-v2-hero.has-scroll-exit::before {
  opacity: calc(.78 - (var(--hero-exit-progress, 0) * .68));
  will-change: opacity;
}

.internal-page #inicio.service-v2-hero.has-scroll-exit .ip-hero__content {
  opacity: calc(1 - var(--hero-exit-progress, 0));
  filter: blur(calc(var(--hero-exit-progress, 0) * 9px));
  will-change: opacity, filter;
}

/* The inner sections start immediately at the 80% Hero boundary. */
.internal-page .service-continuous-canvas {
  position: relative;
  isolation: isolate;
  overflow: visible !important;
  background:
    radial-gradient(ellipse 70% 34% at 82% 18%, rgba(239, 0, 140, .075), transparent 72%),
    radial-gradient(ellipse 58% 30% at 12% 52%, rgba(239, 0, 140, .045), transparent 74%),
    radial-gradient(ellipse 72% 34% at 74% 86%, rgba(239, 0, 140, .06), transparent 76%),
    linear-gradient(180deg, #0e0c12 0%, #0b0a0f 52%, #0d0b11 100%) !important;
}

.internal-page .service-continuous-canvas::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: 0;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(255, 255, 255, .022) 1px, transparent 1px),
    linear-gradient(rgba(255, 255, 255, .022) 1px, transparent 1px);
  background-size: 64px 64px;
  opacity: .55;
  -webkit-mask-image: linear-gradient(to bottom, rgba(0, 0, 0, .75), #000 8%, #000 92%, rgba(0, 0, 0, .4));
  mask-image: linear-gradient(to bottom, rgba(0, 0, 0, .75), #000 8%, #000 92%, rgba(0, 0, 0, .4));
}

.internal-page .service-continuous-canvas > section {
  position: relative;
  z-index: 1;
  background: transparent !important;
  border-top: 0 !important;
  border-bottom: 0 !important;
}

.internal-page #descripcion.service-v2-description {
  margin-top: 0 !important;
}

/* 03 / METHODOLOGY — progressive fuchsia index cells. */
#metodologia[data-scroll-methodology] .skills-v42__index {
  color: rgba(255, 255, 255, .54) !important;
  border-color: rgba(255, 255, 255, .14) !important;
  background: rgba(255, 255, 255, .018) !important;
  transition:
    color .42s ease,
    border-color .42s ease,
    background-color .42s ease,
    box-shadow .42s ease,
    transform .42s cubic-bezier(.22, 1, .36, 1);
}

#metodologia[data-scroll-methodology] .skills-v42__index i {
  background: rgba(255, 255, 255, .48) !important;
  box-shadow: none !important;
  transition: background-color .42s ease, box-shadow .42s ease;
}

#metodologia[data-scroll-methodology] .skills-v42__item.is-reached .skills-v42__index {
  color: #fff !important;
  border-color: #ef008c !important;
  background: #ef008c !important;
  box-shadow: 0 8px 24px rgba(239, 0, 140, .18);
}

#metodologia[data-scroll-methodology] .skills-v42__item.is-reached .skills-v42__index i {
  background: #fff !important;
  box-shadow: 0 0 12px rgba(255, 255, 255, .45) !important;
}

#metodologia[data-scroll-methodology] .skills-v42__item.is-current .skills-v42__index {
  box-shadow:
    0 0 0 4px rgba(239, 0, 140, .12),
    0 10px 30px rgba(239, 0, 140, .3),
    0 0 26px rgba(239, 0, 140, .2);
  transform: translateX(3px);
}

#metodologia .skills-v42__item.is-active .skills-v42__panel-inner {
  padding-top: clamp(20px, 2vw, 30px) !important;
  padding-bottom: clamp(30px, 3vw, 42px) !important;
}

/* Methodology component parity — formerly isolated inside Desarrollo Web. */
.internal-page #metodologia.service-v2-methodology .skills-v42__trigger {
  min-height: 78px !important;
  grid-template-columns: 145px minmax(0, 1fr) 52px !important;
  padding: 20px 20px 20px 24px !important;
}

.internal-page #metodologia.service-v2-methodology .skills-v42__index {
  font-size: 16px !important;
  letter-spacing: .12em !important;
}

.internal-page #metodologia.service-v2-methodology .skills-v42__title {
  font-size: clamp(16px, 1.15vw, 20px) !important;
  line-height: 1.14 !important;
}

.internal-page #metodologia.service-v2-methodology .skills-v42__panel-inner {
  padding-left: 169px !important;
  padding-right: clamp(40px, 4vw, 74px) !important;
}

.internal-page #metodologia.service-v2-methodology .skills-v42__panel p {
  max-width: 720px !important;
}

.internal-page #metodologia .methodology-v27__button > span,
.internal-page #metodologia .methodology-v27__button > b {
  position: static !important;
  inset: auto !important;
  display: block !important;
  opacity: 1 !important;
  transform: none !important;
  font: inherit !important;
  letter-spacing: inherit !important;
  text-transform: inherit !important;
}

.internal-page #metodologia .methodology-v27__button > span,
.internal-page #metodologia .methodology-v27__button--primary > b {
  color: #fff !important;
}

.internal-page #metodologia .methodology-v27__button--secondary > b {
  color: rgba(255, 255, 255, .58) !important;
}

/* 04 / CONCEPTS — centered editorial system. */
.internal-page #tags.service-v2-concepts .service-v2-container {
  display: grid !important;
  grid-template-columns: 1fr !important;
  gap: clamp(58px, 7vh, 84px) !important;
}

.internal-page #tags.service-v2-concepts .ip-kicker {
  width: 100%;
  margin: 0 !important;
}

.internal-page #tags.service-v2-concepts .service-v2-concepts__content {
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.internal-page #tags.service-v2-concepts .service-v2-concepts__content h2 {
  width: 100%;
  max-width: none !important;
  margin: 0 !important;
  font-size: clamp(38px, 4.1vw, 78px) !important;
  line-height: .98 !important;
  white-space: nowrap;
  text-wrap: nowrap;
}

.internal-page #tags.service-v2-concepts .identity-tags {
  width: min(100%, 1420px) !important;
  margin: clamp(58px, 6vw, 88px) auto 0 !important;
  display: flex !important;
  justify-content: center;
  align-items: center;
  gap: 10px !important;
}

.internal-page #tags.service-v2-concepts .identity-tags .ip-tag {
  position: relative !important;
  padding: 12px 18px !important;
  border: 1px solid rgba(255, 255, 255, .17) !important;
  border-radius: 0 !important;
  background: rgba(255, 255, 255, .024) !important;
  color: rgba(255, 255, 255, .86) !important;
  clip-path: polygon(7px 0, 100% 0, 100% calc(100% - 7px), calc(100% - 7px) 100%, 0 100%, 0 7px) !important;
}

/* 02 / DESCRIPTION — one centered editorial column. */
.internal-page #descripcion.service-v2-description .service-v2-description__content {
  grid-template-columns: minmax(0, 1fr) !important;
  justify-items: center !important;
  row-gap: clamp(38px, 4vw, 58px) !important;
}

.internal-page #descripcion.service-v2-description h2 {
  width: min(100%, 880px) !important;
  max-width: 880px !important;
  justify-self: center !important;
  font-size: clamp(36px, 3.35vw, 62px) !important;
  line-height: .98 !important;
  text-align: center;
}

.internal-page #descripcion.service-v2-description .ip-copy {
  width: min(100%, 760px) !important;
  max-width: 760px !important;
  justify-self: center !important;
  text-align: center;
}

.internal-page #descripcion.service-v2-description .ip-copy p {
  font-size: clamp(15px, 1.02vw, 18px) !important;
  line-height: 1.68 !important;
  text-wrap: balance;
}

/* Scroll stages: title first, description after a second viewport advance. */
.internal-page #descripcion.has-scroll-reveal h2,
.internal-page #descripcion.has-scroll-reveal .ip-copy {
  opacity: 0;
  filter: blur(8px);
  transition:
    opacity .82s cubic-bezier(.22, 1, .36, 1),
    transform .82s cubic-bezier(.22, 1, .36, 1),
    filter .72s ease;
  will-change: opacity, transform, filter;
}

.internal-page #descripcion.has-scroll-reveal h2 {
  transform: translateY(34px);
}

.internal-page #descripcion.has-scroll-reveal .ip-copy {
  transform: translateY(28px);
  transition-delay: 0s;
}

.internal-page #descripcion.has-scroll-reveal.is-title-revealed h2,
.internal-page #descripcion.has-scroll-reveal.is-copy-revealed .ip-copy {
  opacity: 1;
  transform: translateY(0);
  filter: blur(0);
}

.internal-page #descripcion.has-scroll-reveal.is-copy-revealed .ip-copy {
  transition-delay: 0s;
}

/* 04 / CONCEPTS — reversible title, resources and goals. */
.internal-page #tags.has-concepts-reveal h2,
.internal-page #tags.has-concepts-reveal .ip-tag {
  opacity: 0;
  filter: blur(7px);
  will-change: opacity, transform, filter;
}

.internal-page #tags.has-concepts-reveal h2 {
  transform: translateY(28px);
  transition:
    opacity .78s cubic-bezier(.22, 1, .36, 1),
    transform .78s cubic-bezier(.22, 1, .36, 1),
    filter .7s ease;
}

.internal-page #tags.has-concepts-reveal .ip-tag {
  transform: translateY(-34px) scale(.97);
  transition:
    opacity .54s ease,
    transform .68s cubic-bezier(.2, 1.18, .36, 1),
    filter .58s ease,
    background-color .25s ease,
    border-color .25s ease,
    color .25s ease;
  transition-delay: 0s;
}

.internal-page #tags.has-concepts-reveal.is-concepts-title-revealed h2,
.internal-page #tags.has-concepts-reveal.is-concepts-tags-revealed .ip-tag {
  opacity: 1;
  transform: translateY(0) scale(1);
  filter: blur(0);
}

.internal-page #tags.has-concepts-reveal.is-concepts-tags-revealed .ip-tag {
  transition-delay: calc(.3s + (var(--concept-order, 0) * 72ms));
}

.internal-page #tags.service-v2-concepts.has-concepts-reveal.is-concepts-tags-revealed .identity-tags .ip-tag:hover,
.internal-page #tags.service-v2-concepts.has-concepts-reveal.is-concepts-tags-revealed .identity-tags .ip-tag:focus-visible {
  color: #fff !important;
  background: #ef008c !important;
  border-color: #ef008c !important;
  transform: translateY(-4px) scale(1) !important;
  transition-delay: 0s;
}

.internal-page #tags.has-concepts-reveal.is-concepts-rewinding:not(.is-concepts-tags-revealed) .ip-tag {
  transition-delay: calc(var(--concept-reverse-order, 0) * 38ms);
}

/* Goals inherited from Home / IMPACTO, now as individual modules. */
.internal-page #tags.service-v2-concepts .service-v2-goals {
  width: min(calc(100% - (2 * var(--v2-gutter, 24px))), var(--v2-max, 1680px)) !important;
  margin: clamp(88px, 9vw, 142px) auto 0 !important;
  display: grid !important;
  grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
  gap: 14px !important;
}

.internal-page #tags .service-v2-goal {
  min-height: clamp(190px, 16vw, 258px);
  padding: clamp(24px, 2.4vw, 38px);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  border: 1px solid rgba(255, 255, 255, .14);
  background:
    linear-gradient(145deg, rgba(255, 255, 255, .045), rgba(255, 255, 255, .012)),
    rgba(8, 6, 11, .38);
  clip-path: polygon(10px 0, 100% 0, 100% calc(100% - 10px), calc(100% - 10px) 100%, 0 100%, 0 10px);
  transition:
    border-color .3s ease,
    background-color .3s ease,
    transform .45s cubic-bezier(.22, 1, .36, 1),
    opacity .58s ease,
    filter .58s ease;
}

.internal-page #tags .service-v2-goal:hover {
  border-color: rgba(239, 0, 140, .72);
  background-color: rgba(239, 0, 140, .055);
  transform: translateY(-5px);
}

.internal-page #tags .service-v2-goal__number {
  display: flex;
  align-items: flex-start;
}

.internal-page #tags .service-v2-goal strong {
  font-family: "Space Grotesk", Arial, sans-serif;
  font-size: clamp(58px, 6vw, 104px);
  line-height: .8;
  letter-spacing: -.065em;
  color: #fff;
}

.internal-page #tags .service-v2-goal__number span {
  margin: 1px 0 0 5px;
  font-family: "Space Grotesk", Arial, sans-serif;
  font-size: clamp(20px, 2vw, 32px);
  line-height: 1;
  color: #ef008c;
}

.internal-page #tags .service-v2-goal p {
  margin: 34px 0 0;
  font-family: "Space Grotesk", Arial, sans-serif;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: .16em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .7);
}

.internal-page #tags.has-goals-reveal .service-v2-goal {
  opacity: 0;
  filter: blur(7px);
  transform: translateY(34px);
  transition-delay: 0s;
  will-change: opacity, filter, transform;
}

.internal-page #tags.has-goals-reveal.is-goals-revealed .service-v2-goal {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
  transition-delay: calc(.12s + (var(--goal-order, 0) * 90ms));
}

.internal-page #tags.has-goals-reveal.is-goals-rewinding:not(.is-goals-revealed) .service-v2-goal {
  transition-delay: calc(var(--goal-reverse-order, 0) * 70ms);
}

@media (max-width: 900px) {
  .internal-page #metodologia.service-v2-methodology .skills-v42__trigger {
    grid-template-columns: 96px minmax(0, 1fr) 44px !important;
  }

  .internal-page #metodologia.service-v2-methodology .skills-v42__panel-inner {
    padding-left: 134px !important;
    padding-right: 24px !important;
  }

  .internal-page #descripcion.service-v2-description .service-v2-description__content {
    row-gap: 38px !important;
  }

  .internal-page #descripcion.service-v2-description h2,
  .internal-page #descripcion.service-v2-description .ip-copy {
    justify-self: center !important;
    text-align: center;
  }

  .internal-page #tags.service-v2-concepts .service-v2-concepts__content h2 {
    width: min(100%, 720px);
    white-space: normal;
    text-wrap: balance;
  }

  .internal-page #tags.service-v2-concepts .service-v2-goals {
    grid-template-columns: 1fr !important;
  }

  .internal-page #tags .service-v2-goal {
    min-height: 170px;
  }
}

@media (max-width: 700px) {
  .internal-page #inicio.service-v2-hero::after {
    background-position: 84% center !important;
  }

  .internal-page #inicio.service-v2-hero .ip-hero__content {
    top: auto !important;
    bottom: clamp(38px, 5.5svh, 52px) !important;
  }

  .internal-page #descripcion.service-v2-description .service-v2-description__content {
    row-gap: 32px !important;
  }

  .internal-page #tags.service-v2-concepts .service-v2-container {
    gap: 44px !important;
  }

  .internal-page #tags.service-v2-concepts .service-v2-concepts__content h2 {
    font-size: clamp(38px, 12vw, 54px) !important;
  }

  .internal-page #tags.service-v2-concepts .identity-tags {
    margin-top: 44px !important;
    gap: 8px !important;
  }

  .internal-page #tags.service-v2-concepts .identity-tags .ip-tag {
    padding: 12px 14px !important;
    font-size: 10px !important;
  }

  .internal-page #tags.service-v2-concepts .service-v2-goals {
    margin-top: 72px !important;
    gap: 10px !important;
  }

  .internal-page #tags .service-v2-goal {
    min-height: 148px;
    padding: 24px;
  }

  .internal-page #tags .service-v2-goal strong {
    font-size: clamp(56px, 19vw, 76px);
  }

  .internal-page .service-continuous-canvas::before {
    background-size: 52px 52px;
    opacity: .42;
  }
}

@media (max-width: 640px) {
  .internal-page #metodologia.service-v2-methodology .skills-v42__trigger {
    min-height: 70px !important;
    grid-template-columns: 72px minmax(0, 1fr) 38px !important;
    gap: 10px !important;
    padding: 20px 12px !important;
  }

  .internal-page #metodologia.service-v2-methodology .skills-v42__title {
    font-size: 18px !important;
  }

  .internal-page #metodologia.service-v2-methodology .skills-v42__panel-inner,
  .internal-page #metodologia.service-v2-methodology .skills-v42__item.is-active .skills-v42__panel-inner {
    padding-left: 12px !important;
    padding-right: 12px !important;
  }
}

@media (prefers-reduced-motion: reduce) {
  .internal-page #inicio.service-v2-hero .ip-hero__meta,
  .internal-page #inicio.service-v2-hero h1,
  .internal-page #inicio.service-v2-hero .ip-hero__lead {
    opacity: 1 !important;
    transition: none !important;
  }

  .internal-page #inicio.service-v2-hero .ip-hero__meta {
    transform: translateY(calc(-100% - clamp(18px, 2vh, 26px))) !important;
  }

  .internal-page #inicio.service-v2-hero h1,
  .internal-page #inicio.service-v2-hero .ip-hero__lead {
    transform: none !important;
  }

  .internal-page #inicio.service-v2-hero.has-scroll-exit::after,
  .internal-page #inicio.service-v2-hero.has-scroll-exit::before,
  .internal-page #inicio.service-v2-hero.has-scroll-exit .ip-hero__content {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    will-change: auto;
  }

  #metodologia[data-scroll-methodology] .skills-v42__index,
  #metodologia[data-scroll-methodology] .skills-v42__index i {
    transition: none !important;
  }

  .internal-page #descripcion.has-scroll-reveal h2,
  .internal-page #descripcion.has-scroll-reveal .ip-copy,
  .internal-page #tags.has-concepts-reveal h2,
  .internal-page #tags.has-concepts-reveal .ip-tag,
  .internal-page #tags.has-goals-reveal .service-v2-goal {
    opacity: 1 !important;
    filter: none !important;
    transform: none !important;
    transition: none !important;
    will-change: auto;
  }
}
