/* ── Loader: hide content while curtain active ── */
html.pt-loading body {
  overflow: hidden;
}

html.pt-loading:not(.pt-revealing) body > *:not(#pt-curtain):not(#ck-banner):not(#ck-panel) {
  visibility: hidden;
}

html.pt-revealing body > *:not(#pt-curtain):not(#ck-banner):not(#ck-panel) {
  visibility: visible;
}

/* ── Light page exit ── */
html.pt-exiting body {
  transition: opacity 0.34s cubic-bezier(0.4, 0, 0.2, 1);
  opacity: 0;
}

/* ── GSAP entrance (loader / nav) — sin doble fade ── */
html.pt-gsap-enter body {
  visibility: visible;
}

html.pt-gsap-enter header,
html.pt-gsap-enter .banner,
  html.pt-gsap-enter .banner .text h1,
  html.pt-gsap-enter .banner .text h2,
  html.pt-gsap-enter .banner .text p,
  html.pt-gsap-enter .horario-container,
  html.pt-gsap-enter .contact-info a,
  html.pt-gsap-enter .nosotros-hero h1,
  html.pt-gsap-enter .nosotros-hero p,
  html.pt-gsap-enter .servicios-hero h1,
  html.pt-gsap-enter .servicios-hero p,
  html.pt-gsap-enter .blog-hero h1,
  html.pt-gsap-enter .blog-hero p,
  html.pt-gsap-enter .eq-hero__eyebrow,
  html.pt-gsap-enter .eq-hero h1,
  html.pt-gsap-enter .eq-hero p,
  html.pt-gsap-enter .c-hero__eyebrow,
  html.pt-gsap-enter .c-hero__h1,
  html.pt-gsap-enter .c-hero__sub,
  html.pt-gsap-enter .c-hero__ctas,
  html.pt-gsap-enter .c-hero__trust,
  html.pt-gsap-enter #hero .hero-animate,
  html.pt-gsap-enter .banner .text {
  opacity: 0;
}

.pt-banner-flash {
  position: absolute;
  inset: 0;
  z-index: 3;
  pointer-events: none;
  background: linear-gradient(125deg, rgba(232, 0, 29, 0.42) 0%, rgba(232, 0, 29, 0.12) 38%, transparent 72%);
}

.pt-hero-line {
  display: block;
  width: 72px;
  height: 3px;
  margin-bottom: 1.1rem;
  border-radius: 99px;
  background: linear-gradient(90deg, #e8001d 0%, #ff4d5e 100%);
  transform: scaleX(0);
  transform-origin: left center;
}

/* ── Content fade (solo visitas directas sin transición) ── */
html.pt-content-enter body {
  visibility: visible;
  animation: pt-content-fade-in 0.42s cubic-bezier(0.22, 1, 0.36, 1) both;
}

html.pt-scroll-lock {
  overflow: hidden;
}

@keyframes pt-content-fade-in {
  from {
    opacity: 0;
  }

  to {
    opacity: 1;
  }
}

/* ── Image fade-in on nav (no layout shift) ── */
html.pt-img-fade img {
  transition: opacity 0.45s ease;
}

html.pt-img-fade img:not(.pt-img-ready) {
  opacity: 0;
}

html.pt-img-fade img.pt-img-ready {
  opacity: 1;
}

/* ── Curtain (first-load index only) ── */
#pt-curtain {
  position: fixed;
  inset: 0;
  z-index: 2147483646;
  pointer-events: none;
  display: none;
  overflow: hidden;
}

#pt-curtain.is-active {
  display: block;
  pointer-events: all;
}

#pt-curtain .pt-curtain__overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  background: #ffffff;
  --pt-cx: 50%;
  --pt-cy: 50%;
  --pt-hole: 0px;
  -webkit-mask-image: radial-gradient(
    circle at var(--pt-cx) var(--pt-cy),
    transparent var(--pt-hole),
    #000 calc(var(--pt-hole) + 0.75px)
  );
  mask-image: radial-gradient(
    circle at var(--pt-cx) var(--pt-cy),
    transparent var(--pt-hole),
    #000 calc(var(--pt-hole) + 0.75px)
  );
  will-change: mask-image, -webkit-mask-image;
}

#pt-curtain .pt-curtain__overlay.is-animating {
  animation: pt-hole-grow 0.92s cubic-bezier(0.65, 0, 0.35, 1) forwards;
}

@keyframes pt-hole-grow {
  from {
    -webkit-mask-image: radial-gradient(
      circle at var(--pt-cx) var(--pt-cy),
      transparent var(--pt-hole-start, 0px),
      #000 calc(var(--pt-hole-start, 0px) + 0.75px)
    );
    mask-image: radial-gradient(
      circle at var(--pt-cx) var(--pt-cy),
      transparent var(--pt-hole-start, 0px),
      #000 calc(var(--pt-hole-start, 0px) + 0.75px)
    );
  }

  to {
    -webkit-mask-image: radial-gradient(
      circle at var(--pt-cx) var(--pt-cy),
      transparent 150vmax,
      #000 calc(150vmax + 0.75px)
    );
    mask-image: radial-gradient(
      circle at var(--pt-cx) var(--pt-cy),
      transparent 150vmax,
      #000 calc(150vmax + 0.75px)
    );
  }
}

#pt-curtain .pt-curtain__logo-anchor {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  width: 100px;
  height: 100px;
}

#pt-curtain .pt-curtain__ring {
  position: absolute;
  left: 50%;
  top: 50%;
  z-index: 0;
  width: 88px;
  height: 88px;
  margin: -44px 0 0 -44px;
  border: 2px solid rgba(232, 0, 29, 0.5);
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  transform: scale(1);
  transform-origin: center center;
  box-sizing: border-box;
}

#pt-curtain.is-revealing-circle .pt-curtain__ring {
  opacity: 0.5;
}

#pt-curtain .pt-curtain__logo-anchor .pt-curtain__logo {
  position: relative;
  z-index: 1;
}

/* ── Brand block ── */
#pt-curtain .pt-curtain__brand {
  position: absolute;
  inset: 0;
  z-index: 10;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 1.1rem;
  padding: 2rem;
  text-align: center;
  opacity: 0;
  transform: translateY(12px);
  transition:
    opacity 0.45s ease,
    transform 0.55s cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}

#pt-curtain.is-logo-only .pt-curtain__progress,
#pt-curtain.is-logo-only .pt-curtain__title {
  display: none;
}

#pt-curtain.is-logo-only .pt-curtain__brand {
  gap: 0;
}

#pt-curtain.is-active .pt-curtain__brand,
#pt-curtain.is-loading .pt-curtain__brand,
#pt-curtain.is-revealing-circle .pt-curtain__brand {
  opacity: 1;
  transform: translateY(0);
}

#pt-curtain.is-revealing-circle .pt-curtain__brand {
  transition: none;
  pointer-events: none;
}

#pt-curtain.is-revealing-circle .pt-curtain__logo-anchor {
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
}

#pt-curtain.is-revealing-circle .pt-curtain__progress,
#pt-curtain.is-revealing-circle .pt-curtain__title {
  visibility: hidden;
}

#pt-curtain .pt-curtain__logo {
  width: 88px;
  height: auto;
  animation: pt-logo-breathe 2.4s ease-in-out infinite;
}

#pt-curtain .pt-curtain__logo--white {
  display: none;
  width: 100px;
  filter: drop-shadow(0 6px 20px rgba(0, 0, 0, 0.18));
}

#pt-curtain.is-loading .pt-curtain__logo--dark {
  display: block;
  filter: drop-shadow(0 8px 24px rgba(0, 0, 0, 0.1));
}

#pt-curtain.is-loading .pt-curtain__logo--white {
  display: none;
}

#pt-curtain.is-covering .pt-curtain__logo--dark {
  display: none;
}

#pt-curtain.is-covering .pt-curtain__logo--white {
  display: block;
}

#pt-curtain .pt-curtain__title {
  font-family: 'Poppins', system-ui, sans-serif;
  font-size: clamp(1.1rem, 3vw, 1.45rem);
  font-weight: 300;
  letter-spacing: 0.04em;
  color: #ffffff;
  line-height: 1.35;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.15);
}

#pt-curtain .pt-curtain__title strong {
  display: block;
  font-size: clamp(1.5rem, 4.5vw, 2rem);
  font-weight: 700;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  margin-top: 0.15rem;
}

#pt-curtain.is-loading .pt-curtain__title {
  color: #1a1a1a;
  text-shadow: none;
}

#pt-curtain.is-loading .pt-curtain__title strong {
  color: #e8001d;
}

#pt-curtain.is-covering .pt-curtain__title {
  color: #ffffff;
  text-shadow: 0 2px 16px rgba(0, 0, 0, 0.15);
}

#pt-curtain.is-covering .pt-curtain__title strong {
  color: #ffffff;
}

/* ── Progress bar (first-load index) ── */
#pt-curtain .pt-curtain__progress {
  width: min(220px, 60vw);
  height: 3px;
  background: rgba(232, 0, 29, 0.15);
  border-radius: 99px;
  overflow: hidden;
  opacity: 0;
  transform: scaleX(0.85);
  transition: opacity 0.4s ease, transform 0.5s ease;
}

#pt-curtain.is-loading .pt-curtain__progress {
  opacity: 1;
  transform: scaleX(1);
}

#pt-curtain .pt-curtain__progress-bar {
  display: block;
  height: 100%;
  width: 0%;
  background: linear-gradient(90deg, #e8001d 0%, #ff3b4d 100%);
  border-radius: inherit;
  transition: width 0.35s cubic-bezier(0.22, 1, 0.36, 1);
}

#pt-curtain.is-loading .pt-curtain__progress-bar.is-indeterminate {
  width: 40%;
  animation: pt-progress-slide 1.4s cubic-bezier(0.45, 0, 0.55, 1) infinite;
}

@keyframes pt-logo-breathe {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.04); }
}

@keyframes pt-progress-slide {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}

@media (prefers-reduced-motion: reduce) {
  html.pt-loading body > *:not(#pt-curtain):not(#ck-banner):not(#ck-panel),
  html.pt-exiting body,
  html.pt-content-enter body,
  html.pt-gsap-enter header,
  html.pt-gsap-enter .banner {
    opacity: 1 !important;
    transform: none !important;
    animation: none !important;
    transition: none !important;
    visibility: visible !important;
  }

  html.pt-skeleton .pt-skeleton-wrap,
  html.pt-img-fade img:not(.pt-img-ready) {
    opacity: 1;
  }

  #pt-curtain {
    display: none !important;
  }
}
