/* =========================================================
   PABLO VÁZQUEZ SÁNCHEZ — VZSZ
   Dark · Industrial · Techno · Minimal
   ========================================================= */

:root{
  --black:#000000;
  --white:#ffffff;
  --grey:#8a8a8a;
  --grey-dk:#3a3a3a;
  --line:rgba(255,255,255,.12);
  --accent:#ffffff;
  --ease:cubic-bezier(.62,.05,.01,.99);
  --pad:clamp(20px,5vw,80px);
  --font-d:"Chakra Petch",sans-serif;
  --font-b:"Inter",sans-serif;
}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body{
  background:var(--black);
  color:var(--white);
  font-family:var(--font-b);
  font-weight:300;
  line-height:1.5;
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
img{display:block;width:100%;height:100%;object-fit:cover}
section{position:relative}
::selection{background:#fff;color:#000}

/* Hide default cursor on desktop only */
@media (hover:hover) and (pointer:fine){
  *{cursor:none !important}
}

.tag{
  font-family:var(--font-d);
  font-size:.72rem;
  letter-spacing:.25em;
  color:var(--grey);
  font-weight:500;
}
.section-title{
  font-family:var(--font-d);
  font-weight:600;
  font-size:clamp(2.4rem,8vw,7rem);
  line-height:.95;
  letter-spacing:-.01em;
  text-transform:uppercase;
}

/* ====================== PRELOADER ====================== */
.loader{
  position:fixed;inset:0;z-index:1000;
  background:var(--black);
  display:flex;align-items:center;justify-content:center;
}
.loader__inner{width:min(80vw,520px);text-align:center}
.loader__brand{
  font-family:var(--font-d);
  font-weight:700;
  display:flex;flex-direction:column;gap:.1em;
  font-size:clamp(1.6rem,5vw,3rem);
  letter-spacing:.18em;
  line-height:1;
  margin-bottom:2rem;
}
.loader__brand span{display:block;overflow:hidden;transform:translateY(110%)}
.loader__bar{height:1px;background:var(--grey-dk);position:relative;overflow:hidden}
.loader__bar span{position:absolute;inset:0;background:#fff;transform-origin:left;transform:scaleX(0)}
.loader__count{
  font-family:var(--font-d);font-size:.8rem;letter-spacing:.2em;
  margin-top:1rem;color:var(--grey);
}

/* ====================== CURSOR ====================== */
.cursor,.cursor-dot{
  position:fixed;top:0;left:0;z-index:999;pointer-events:none;
  border-radius:50%;mix-blend-mode:difference;
  will-change:transform;
}
.cursor{
  width:36px;height:36px;border:1px solid #fff;
  margin:-18px 0 0 -18px;
  transition:width .35s var(--ease),height .35s var(--ease),background .35s var(--ease);
}
.cursor-dot{width:5px;height:5px;background:#fff;margin:-2.5px 0 0 -2.5px}
.cursor.is-hover{width:64px;height:64px;background:rgba(255,255,255,.1)}
.cursor.is-view{width:96px;height:96px;background:#fff;border-color:#fff}
.cursor.is-view::after{
  content:"VIEW";color:#000;font-family:var(--font-d);font-size:.6rem;
  letter-spacing:.15em;font-weight:600;
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
}
@media (hover:none),(pointer:coarse){.cursor,.cursor-dot{display:none}}

/* ====================== NAV ====================== */
.nav{
  position:fixed;top:0;left:0;width:100%;z-index:200;
  display:flex;align-items:center;justify-content:space-between;
  padding:1.1rem var(--pad);
  mix-blend-mode:difference;
}
.nav__brand img{width:auto;height:38px;object-fit:contain}
.nav__links{display:flex;gap:2.2rem}
.nav__links a{
  font-family:var(--font-d);font-size:.78rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;
  position:relative;padding:.2rem 0;
}
.nav__links a::after{
  content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;
  background:#fff;transform:scaleX(0);transform-origin:right;
  transition:transform .4s var(--ease);
}
.nav__links a:hover::after{transform:scaleX(1);transform-origin:left}
.nav__vzsz{font-weight:700 !important;letter-spacing:.22em !important}
.nav__lang{
  background:none;border:1px solid var(--line);color:#fff;
  font-family:var(--font-d);font-size:.72rem;font-weight:500;letter-spacing:.1em;
  padding:.45rem .7rem;border-radius:40px;display:flex;gap:.4rem;
}
.nav__lang span{opacity:.4;transition:opacity .3s}
.nav__lang span.is-active{opacity:1}
.nav__burger{display:none}

/* ====================== MOBILE MENU ====================== */
.menu{
  position:fixed;inset:0;z-index:150;background:#000;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1rem;
  clip-path:inset(0 0 100% 0);
}
.menu a{font-family:var(--font-d);font-size:2.4rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em}

/* ====================== HERO ====================== */
.hero{height:100svh;width:100%;overflow:hidden;display:flex;align-items:flex-end}
.hero__media{position:absolute;inset:-10% 0;z-index:0}
.hero__media img{filter:grayscale(.15) contrast(1.05) brightness(.7)}
.hero__media::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(0,0,0,.5) 0%,rgba(0,0,0,.1) 35%,rgba(0,0,0,.85) 100%);
}
.hero__grain{position:absolute;inset:0;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='3'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");mix-blend-mode:overlay}
.hero__content{position:relative;z-index:2;padding:0 var(--pad) clamp(40px,7vw,90px);width:100%}
.hero__eyebrow{
  font-family:var(--font-d);font-size:.8rem;letter-spacing:.2em;
  text-transform:uppercase;color:var(--white);margin-bottom:1.2rem;opacity:.85;
}
.hero__title{
  font-family:var(--font-d);font-weight:700;
  font-size:clamp(3.2rem,15vw,15rem);
  line-height:.86;letter-spacing:-.02em;text-transform:uppercase;
}
.hero__title .line{display:block;overflow:hidden}
.hero__title .outline{
  color:transparent;-webkit-text-stroke:1.5px #fff;
}
.hero__meta{
  display:flex;gap:2rem;flex-wrap:wrap;margin-top:1.6rem;
  font-family:var(--font-d);font-size:.82rem;letter-spacing:.12em;
  text-transform:uppercase;color:var(--grey);
}
.hero__meta span{position:relative;padding-left:1.2rem}
.hero__meta span::before{content:"";position:absolute;left:0;top:50%;width:7px;height:7px;background:#fff;border-radius:50%;transform:translateY(-50%)}
.hero__scroll{
  position:absolute;right:var(--pad);bottom:clamp(40px,7vw,90px);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:.6rem;
  font-family:var(--font-d);font-size:.68rem;letter-spacing:.25em;text-transform:uppercase;
}
.hero__scroll em{width:1px;height:46px;background:#fff;position:relative;overflow:hidden}
.hero__scroll em::after{content:"";position:absolute;inset:0;background:var(--grey-dk);animation:scrolldn 2s var(--ease) infinite}
@keyframes scrolldn{0%{transform:translateY(-100%)}60%,100%{transform:translateY(100%)}}

/* ====================== MANIFESTO ====================== */
.manifesto{padding:clamp(120px,20vw,260px) var(--pad);display:flex;justify-content:center}
.manifesto__text{
  font-family:var(--font-d);font-weight:500;
  font-size:clamp(1.8rem,6vw,5.2rem);
  line-height:1.05;text-align:center;max-width:18ch;letter-spacing:-.01em;
}
.manifesto__text span{display:inline}
.manifesto__text .accent{color:transparent;-webkit-text-stroke:1px var(--grey)}
.word{display:inline-block;overflow:hidden}
.word > span{display:inline-block}

/* ====================== STUDIO ====================== */
.studio{padding:clamp(60px,9vw,140px) var(--pad)}
.studio__head{display:flex;align-items:baseline;gap:1.4rem;margin-bottom:clamp(40px,6vw,90px);border-bottom:1px solid var(--line);padding-bottom:2rem}
.studio__grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:start}
.studio__visual{aspect-ratio:3/4;overflow:hidden;position:relative}
.studio__visual img{height:122%;filter:grayscale(.1) brightness(.85)}
.studio__text{padding-top:1rem}
.lead{font-size:clamp(1.3rem,2.6vw,2rem);line-height:1.25;font-weight:400;margin-bottom:2rem}
.studio__text p{color:#cfcfcf;font-size:1.05rem;max-width:46ch;margin-bottom:2.5rem}
.studio__skills{list-style:none;border-top:1px solid var(--line)}
.studio__skills li{
  display:flex;justify-content:space-between;align-items:center;
  padding:1.1rem 0;border-bottom:1px solid var(--line);
}
.studio__skills span{font-family:var(--font-d);font-weight:600;font-size:1.05rem;letter-spacing:.04em}
.studio__skills em{color:var(--grey);font-style:normal;font-size:.85rem}

/* ====================== SERVICES ====================== */
.services{padding:clamp(60px,9vw,140px) var(--pad);position:relative}
.services__head{display:flex;align-items:baseline;gap:1.4rem;margin-bottom:1rem}
.services__list{list-style:none}
.service{
  display:grid;grid-template-columns:auto 1fr;gap:1.5rem;align-items:center;
  padding:clamp(1.4rem,3vw,2.6rem) 0;border-top:1px solid var(--line);
  position:relative;transition:padding-left .5s var(--ease);
}
.service:last-child{border-bottom:1px solid var(--line)}
.service__num{font-family:var(--font-d);font-size:.8rem;color:var(--grey);align-self:start;padding-top:.6rem}
.service__name{
  font-family:var(--font-d);font-weight:600;
  font-size:clamp(1.7rem,5vw,3.6rem);line-height:1;text-transform:uppercase;
  letter-spacing:-.01em;grid-column:2;transition:color .4s,transform .5s var(--ease);
}
.service__desc{grid-column:2;color:var(--grey);max-width:50ch;margin-top:.7rem;font-size:.95rem;
  max-height:0;opacity:0;overflow:hidden;transition:max-height .5s var(--ease),opacity .4s,margin-top .4s}
.service:hover{padding-left:1.5rem}
.service:hover .service__name{color:#fff}
.service:hover .service__desc{max-height:80px;opacity:1}
.service::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:1px;background:#fff;
  transform:scaleY(0);transform-origin:top;transition:transform .5s var(--ease);
}
.service:hover::before{transform:scaleY(1)}
.services__float{
  position:fixed;top:0;left:0;
  width:min(32vw,420px);height:min(43vw,500px);
  min-width:280px;min-height:340px;max-height:calc(100svh - 140px);
  z-index:90;pointer-events:none;opacity:0;overflow:hidden;
  margin:0;will-change:transform,opacity;
}
.services__float img{filter:grayscale(.2) brightness(.85);transform:scale(1.08)}
@media (hover:none){.services__float{display:none}.service__desc{max-height:80px;opacity:1;margin-top:.7rem}}

/* ====================== GALLERY ====================== */
.gallery{padding:clamp(60px,9vw,120px) 0;overflow:hidden}
.gallery__head{padding:0 var(--pad);margin-bottom:clamp(30px,4vw,60px);display:flex;align-items:baseline;gap:1.4rem;flex-wrap:wrap}
.gallery__hint{color:var(--grey);font-family:var(--font-d);font-size:.75rem;letter-spacing:.15em;text-transform:uppercase;margin-left:auto}
.gallery__track{display:flex;gap:clamp(16px,2vw,34px);padding:0 var(--pad);width:max-content}
@media (max-width:767px){
  .gallery__track{width:100%;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;padding-bottom:1.2rem}
  .gallery__track::-webkit-scrollbar{height:2px}
  .gallery__track::-webkit-scrollbar-thumb{background:var(--grey-dk)}
  .gcard{scroll-snap-align:start}
}
.gcard{position:relative;width:clamp(260px,38vw,560px);height:clamp(340px,52vh,640px);overflow:hidden;flex-shrink:0}
.gcard.tall{height:clamp(380px,60vh,720px);width:clamp(240px,30vw,440px)}
.gcard img{filter:grayscale(.15) brightness(.85);transform:scale(1.05);transition:transform 1s var(--ease),filter .6s}
.gcard:hover img{transform:scale(1.12);filter:grayscale(0) brightness(1)}
.gcard figcaption{
  position:absolute;left:0;bottom:0;width:100%;padding:1.4rem;
  display:flex;flex-direction:column;gap:.2rem;z-index:2;
  background:linear-gradient(0deg,rgba(0,0,0,.8),transparent);
}
.gcard figcaption span{font-family:var(--font-d);font-weight:600;font-size:1.15rem;letter-spacing:.02em}
.gcard figcaption em{color:var(--grey);font-style:normal;font-size:.8rem;letter-spacing:.1em;text-transform:uppercase}

/* ====================== MARQUEE ====================== */
.marquee{padding:clamp(30px,5vw,60px) 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);overflow:hidden;white-space:nowrap}
.marquee__row{display:inline-flex;align-items:center;gap:2.5rem;will-change:transform}
.marquee__row span{font-family:var(--font-d);font-weight:600;font-size:clamp(1.6rem,4vw,3rem);text-transform:uppercase;letter-spacing:.02em}
.marquee__row .dot{font-size:1rem;color:var(--grey)}

/* ====================== VZSZ ====================== */
.vzsz{min-height:100svh;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:clamp(80px,12vw,160px) var(--pad);text-align:center}
.vzsz__bg{position:absolute;inset:-10% 0;z-index:0}
.vzsz__bg img{filter:grayscale(.5) brightness(.32) contrast(1.1)}
.vzsz__bg::after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 50%,transparent,rgba(0,0,0,.85))}
.vzsz__inner{position:relative;z-index:2;max-width:760px;display:flex;flex-direction:column;align-items:center}
.vzsz__label{font-family:var(--font-d);font-size:.78rem;letter-spacing:.3em;text-transform:uppercase;color:var(--grey);margin-bottom:1.5rem}
.vzsz__logo{
  font-family:var(--font-d);font-weight:700;
  font-size:clamp(5rem,22vw,18rem);line-height:.9;letter-spacing:.04em;
  position:relative;
}
.vzsz__logo[data-glitch].is-glitch::before,
.vzsz__logo[data-glitch].is-glitch::after{
  content:"VZSZ";position:absolute;inset:0;
}
.vzsz__logo.is-glitch::before{color:#fff;left:3px;text-shadow:-2px 0 #555;clip-path:inset(0 0 55% 0);animation:gl 1.6s steps(2) infinite}
.vzsz__logo.is-glitch::after{color:#fff;left:-3px;text-shadow:2px 0 #333;clip-path:inset(55% 0 0 0);animation:gl 2.1s steps(2) infinite reverse}
@keyframes gl{0%,100%{transform:translateX(0)}20%{transform:translateX(-3px)}40%{transform:translateX(3px)}60%{transform:translateX(-2px)}}
.vzsz__text{font-size:clamp(1.05rem,2.2vw,1.4rem);line-height:1.4;color:#d6d6d6;margin:2rem 0;max-width:54ch}
.vzsz__collab{display:flex;gap:1rem 2.5rem;flex-wrap:wrap;justify-content:center;margin-bottom:2.6rem}
.vzsz__collab span{font-family:var(--font-d);font-weight:500;letter-spacing:.1em;color:var(--grey);position:relative}
.vzsz__collab span::after{content:"/";position:absolute;right:-1.4rem;color:var(--grey-dk)}
.vzsz__collab span:last-child::after{display:none}
.vzsz__cta{
  display:inline-flex;align-items:center;gap:.6rem;
  border:1px solid #fff;border-radius:50px;padding:1rem 2.4rem;
  font-family:var(--font-d);font-weight:600;font-size:.9rem;letter-spacing:.12em;text-transform:uppercase;
  position:relative;overflow:hidden;transition:color .5s var(--ease);
}
.vzsz__cta::before{content:"";position:absolute;inset:0;background:#fff;transform:translateY(101%);transition:transform .5s var(--ease);z-index:-1}
.vzsz__cta:hover{color:#000}
.vzsz__cta:hover::before{transform:translateY(0)}
.vzsz__cta span{position:relative;z-index:1}

/* ====================== CONTACT ====================== */
.contact{padding:clamp(80px,12vw,180px) var(--pad) clamp(40px,6vw,80px)}
.contact__head{display:flex;align-items:baseline;gap:1.4rem;margin-bottom:1rem}
.contact__pre{font-family:var(--font-d);font-size:1rem;letter-spacing:.06em;color:var(--grey)}
.contact__big{
  display:block;font-family:var(--font-d);font-weight:700;
  font-size:clamp(3.4rem,17vw,16rem);line-height:.9;text-transform:uppercase;letter-spacing:-.02em;
  margin-bottom:clamp(40px,7vw,100px);transition:color .4s;
}
.contact__big:hover{color:var(--grey)}
.contact__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2rem;border-top:1px solid var(--line);padding-top:2.5rem}
.contact__col{display:flex;flex-direction:column;gap:.6rem}
.contact__k{font-family:var(--font-d);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--grey)}
.contact__col a,.contact__col span{font-size:1.05rem;position:relative;width:fit-content}
.contact__col a::after{content:"";position:absolute;left:0;bottom:-2px;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:right;transition:transform .4s var(--ease)}
.contact__col a:hover::after{transform:scaleX(1);transform-origin:left}

/* ====================== FOOTER ====================== */
.footer{padding:clamp(30px,4vw,50px) var(--pad) clamp(14px,2vw,24px);border-top:1px solid var(--line)}
.footer__top{display:flex;justify-content:space-between;font-family:var(--font-d);font-size:.78rem;letter-spacing:.1em;text-transform:uppercase;color:var(--grey);flex-wrap:wrap;gap:1rem}
.footer__big{font-family:var(--font-d);font-weight:700;font-size:clamp(6rem,30vw,26rem);line-height:.8;text-align:center;letter-spacing:.05em;color:transparent;-webkit-text-stroke:1px var(--grey-dk);margin-top:1rem;margin-bottom:clamp(16px,2vw,28px);overflow:hidden}
.footer__kit{width:min(860px,86vw);margin:0 auto;display:flex;justify-content:center;align-items:center}
.footer__kit img{display:block;width:100%;height:auto;max-height:92px;object-fit:contain;background:#fff}
@media (max-width:700px){.footer__kit{width:100%;margin:0 auto}.footer__kit img{max-height:none}}


/* ====================== WHATSAPP ====================== */
.wa{
  position:fixed;right:clamp(18px,3vw,34px);bottom:clamp(18px,3vw,34px);z-index:120;
  width:54px;height:54px;border-radius:50%;background:#fff;color:#000;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 30px rgba(0,0,0,.5);transition:transform .4s var(--ease),background .4s;
}
.wa:hover{transform:scale(1.1)}

/* ====================== REVEAL UTILS ====================== */
.reveal-line{opacity:0;transform:translateY(30px)}
.split-line{overflow:hidden}

/* ====================== RESPONSIVE ====================== */
@media (max-width:900px){
  .nav__links{display:none}
  .nav__burger{
    display:flex;flex-direction:column;gap:5px;background:none;border:none;width:30px;
  }
  .nav__burger span{width:100%;height:2px;background:#fff;transition:transform .4s var(--ease),opacity .3s}
  .nav.is-open .nav__burger span:first-child{transform:translateY(3.5px) rotate(45deg)}
  .nav.is-open .nav__burger span:last-child{transform:translateY(-3.5px) rotate(-45deg)}
  .studio__grid{grid-template-columns:1fr;gap:40px}
  .studio__visual{aspect-ratio:4/5}
  .contact__grid{grid-template-columns:repeat(2,1fr);gap:2rem 1rem}
  .service{grid-template-columns:1fr}
  .service__num{position:absolute;right:0;top:1.4rem}
  .service__name{grid-column:1}
  .service__desc{grid-column:1}
}
@media (max-width:540px){
  .contact__grid{grid-template-columns:1fr}
  .hero__meta{gap:1rem .5rem}
  .nav__lang{margin-left:auto;margin-right:1rem}
}

/* ====================== REDUCED MOTION ====================== */
@media (prefers-reduced-motion:reduce){
  .reveal-line{opacity:1;transform:none}
  .hero__scroll em::after,.vzsz__logo.is-glitch::before,.vzsz__logo.is-glitch::after{animation:none}
}

/* =========================================================
   MULTI-PAGE ADDITIONS
   ========================================================= */

/* ---- Bigger logo in nav ---- */
.nav__brand img{height:clamp(46px,6vw,64px) !important;width:auto;object-fit:contain}
.nav{padding-top:1.4rem;padding-bottom:1.4rem}

/* ---- Nav text-roll hover (letters slide up to a copy) ---- */
.nav__links a::after{display:none}
.roll{display:inline-block;position:relative;overflow:hidden;vertical-align:bottom}
.roll__in{display:block;transition:transform .55s var(--ease)}
.roll__in span{display:block}
.roll__in span:last-child{position:absolute;top:100%;left:0}
.nav__links a:hover .roll__in,
.navlink.is-active .roll__in{transform:translateY(-100%)}
.navlink.is-active{color:#fff}
.navlink{position:relative}
.navlink::before{content:"";position:absolute;left:0;bottom:-3px;width:6px;height:6px;border-radius:50%;background:#fff;opacity:0;transform:scale(0);transition:.4s var(--ease)}
.navlink.is-active::before{opacity:1;transform:scale(1)}

/* ---- PAGE TRANSITION OVERLAY ---- */
/* Columns cover on first paint, then lift via PURE CSS (no JS/GSAP dependency,
   so the page can never get stuck behind a black curtain). */
.transition{position:fixed;inset:0;z-index:900;display:flex;pointer-events:none}
.transition__col{flex:1;height:100%;background:#0a0a0a;transform:translateY(0);
  animation:colReveal .85s cubic-bezier(.76,0,.24,1) forwards}
.transition__col:nth-child(odd){background:#000}
.transition__col:nth-child(1){animation-delay:.05s}
.transition__col:nth-child(2){animation-delay:.11s}
.transition__col:nth-child(3){animation-delay:.17s}
.transition__col:nth-child(4){animation-delay:.23s}
.transition__col:nth-child(5){animation-delay:.29s}
@keyframes colReveal{from{transform:translateY(0)}to{transform:translateY(-100%)}}
.transition__label{
  position:fixed;inset:0;z-index:901;display:flex;align-items:center;justify-content:center;
  font-family:var(--font-d);font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  font-size:clamp(2rem,9vw,7rem);color:#fff;pointer-events:none;opacity:0;
}
.transition__label .outline{color:transparent;-webkit-text-stroke:1px #fff;margin-left:.3em}

/* ---- HOME: PRELOADER (only on home) ---- */
/* reuse .loader styles */

/* ---- HOME: ENTER — client logo with the lights inside the letters ---- */
/* NOTE: never put a fixed height / overflow:hidden on the pinned section's wrapper,
   it clips the pin spacer and makes the intro overlap the next section. */
.enter{position:relative}
.enter__pin{position:relative;height:100svh;width:100%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:#000}
.enter__gallery{position:absolute;inset:0;z-index:3;pointer-events:none}
.gphoto{position:absolute;inset:0;opacity:0;overflow:hidden;will-change:opacity}
.gphoto img{width:100%;height:100%;object-fit:cover;filter:grayscale(.05) brightness(.85) contrast(1.05);will-change:transform}
.gphoto::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.25),transparent 30%,transparent 70%,rgba(0,0,0,.4))}
.maskwrap{position:relative;z-index:2;display:flex;align-items:center;justify-content:center;will-change:transform,opacity}
.masklogo{position:relative;width:min(94vw,1150px);aspect-ratio:1000/667;will-change:transform;
  -webkit-mask:url(../assets/img/logo-white.png) center/contain no-repeat;
  mask:url(../assets/img/logo-white.png) center/contain no-repeat;}
.masklogo__img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:brightness(1.4) contrast(1.15) saturate(1.12)}
.enter__hint{
  position:absolute;left:50%;bottom:clamp(28px,5vw,60px);transform:translateX(-50%);z-index:5;
  font-family:var(--font-d);font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:#fff;
  display:flex;flex-direction:column;align-items:center;gap:.7rem;pointer-events:none;
}
.enter__hint em{width:1px;height:42px;background:rgba(255,255,255,.35);position:relative;overflow:hidden}
.enter__hint em::after{content:"";position:absolute;inset:0;background:#fff;animation:scrolldn 2s var(--ease) infinite}

/* ---- HOME: HERO landing (fitted) ---- */
.hero2{height:100svh;width:100%;overflow:hidden;display:flex;align-items:flex-end;position:relative}
.hero2__bg{position:absolute;inset:0;z-index:0}
.hero2__bg img{filter:grayscale(.12) brightness(.5) contrast(1.05)}
.hero2__bg::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,.5),rgba(0,0,0,.15) 40%,rgba(0,0,0,.85))}
.hero2__content{position:relative;z-index:2;padding:0 var(--pad) clamp(40px,7vw,90px);width:100%}
.hero2__eyebrow{font-family:var(--font-d);font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:#fff;opacity:.85;margin-bottom:1.1rem}
.hero2__title{font-family:var(--font-d);font-weight:700;font-size:clamp(2.4rem,11vw,11rem);line-height:.88;letter-spacing:-.02em;text-transform:uppercase}
.hero2__meta{display:flex;gap:2rem;flex-wrap:wrap;margin-top:1.5rem;font-family:var(--font-d);font-size:.82rem;letter-spacing:.12em;text-transform:uppercase;color:var(--grey)}
.hero2__meta span{position:relative;padding-left:1.2rem}
.hero2__meta span::before{content:"";position:absolute;left:0;top:50%;width:7px;height:7px;background:#fff;border-radius:50%;transform:translateY(-50%)}
.hero2__scroll{position:absolute;right:var(--pad);bottom:clamp(40px,7vw,90px);z-index:3;display:flex;flex-direction:column;align-items:center;gap:.6rem;font-family:var(--font-d);font-size:.68rem;letter-spacing:.25em;text-transform:uppercase;color:#fff}
.hero2__scroll em{width:1px;height:46px;background:rgba(255,255,255,.4);position:relative;overflow:hidden}
.hero2__scroll em::after{content:"";position:absolute;inset:0;background:#fff;animation:scrolldn 2s var(--ease) infinite}
.char{display:inline-block;will-change:transform}

/* ---- HOME: INTRO STATEMENT after the zoom ---- */
.statement{min-height:90svh;display:flex;align-items:center;padding:clamp(80px,12vw,160px) var(--pad)}
.statement__text{
  font-family:var(--font-d);font-weight:500;font-size:clamp(1.7rem,5vw,4.4rem);
  line-height:1.08;letter-spacing:-.01em;max-width:20ch;
}
.statement__text .accent{color:transparent;-webkit-text-stroke:1px var(--grey)}

/* ---- HOME: SECTION INDEX (links to pages) ---- */
.index{padding:clamp(40px,7vw,120px) 0}
.index__row{
  display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:2rem;
  padding:clamp(1.4rem,3.2vw,2.8rem) var(--pad);border-top:1px solid var(--line);
  position:relative;overflow:hidden;
}
.index__row:last-child{border-bottom:1px solid var(--line)}
.index__num{font-family:var(--font-d);font-size:.8rem;color:var(--grey);position:relative;z-index:2}
.index__title{
  font-family:var(--font-d);font-weight:600;font-size:clamp(2rem,7vw,5.5rem);line-height:.95;
  text-transform:uppercase;letter-spacing:-.01em;position:relative;z-index:2;transition:transform .6s var(--ease),color .4s;
  color:#fff;
}
.index__go{font-family:var(--font-d);font-size:.75rem;letter-spacing:.2em;text-transform:uppercase;color:var(--grey);position:relative;z-index:2;transition:.4s}
.index__bg{position:absolute;inset:0;z-index:0;opacity:0;overflow:hidden}
.index__bg img{filter:grayscale(.3) brightness(.5);transform:scale(1.15)}
.index__bg::after{content:"";position:absolute;inset:0;background:rgba(0,0,0,.45)}
.index__row:hover .index__bg{opacity:1}
.index__row:hover .index__title{transform:translateX(1.5rem)}
.index__row:hover .index__go{color:#fff;transform:translateX(-.5rem)}

/* ---- GENERIC PAGE HEADER ---- */
.phead{padding:clamp(120px,18vw,240px) var(--pad) clamp(40px,6vw,80px);position:relative;overflow:hidden}
.phead__index{font-family:var(--font-d);font-size:.8rem;letter-spacing:.3em;color:var(--grey);text-transform:uppercase;margin-bottom:1.4rem;display:block}
.phead__title{
  font-family:var(--font-d);font-weight:700;
  font-size:clamp(3.2rem,16vw,14rem);line-height:.86;letter-spacing:-.02em;text-transform:uppercase;
}
.phead__title .char{display:inline-block;will-change:transform}
.phead__sub{margin-top:1.6rem;color:var(--grey);font-size:clamp(1rem,2vw,1.3rem);max-width:40ch}

/* magnetic-letter titles */
[data-magnetic] .char{display:inline-block;will-change:transform}
[data-magnetic] .mline{display:block;overflow:visible}

/* ---- breadcrumb / page footer nav ---- */
.pagenav{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:clamp(40px,6vw,90px) var(--pad);border-top:1px solid var(--line);flex-wrap:wrap}
.pagenav a{font-family:var(--font-d);font-weight:600;font-size:clamp(1.4rem,5vw,3rem);text-transform:uppercase;letter-spacing:-.01em;display:flex;align-items:center;gap:.6rem;transition:transform .5s var(--ease)}
.pagenav a:hover{transform:translateX(.6rem)}
.pagenav a.prev:hover{transform:translateX(-.6rem)}
.pagenav span{font-family:var(--font-d);font-size:.7rem;letter-spacing:.2em;color:var(--grey);text-transform:uppercase}

/* ---- VZSZ page extras ---- */
.vzsz-page{padding-top:0}
.disc{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin:clamp(40px,6vw,80px) var(--pad)}
.disc__item{background:#000;padding:clamp(1.4rem,3vw,2.4rem);min-height:200px;display:flex;flex-direction:column;justify-content:space-between;transition:background .4s}
.disc__item:hover{background:#0c0c0c}
.disc__item h3{font-family:var(--font-d);font-weight:600;font-size:1.3rem;letter-spacing:.02em}
.disc__item p{color:var(--grey);font-size:.9rem;margin-top:.5rem}
.disc__item .tag{margin-top:1.5rem}

/* ---- gallery page grid (below horizontal) ---- */
.ggrid{columns:3;column-gap:clamp(12px,1.6vw,22px);padding:clamp(40px,6vw,90px) var(--pad)}
.ggrid figure{break-inside:avoid;margin-bottom:clamp(12px,1.6vw,22px);overflow:hidden;position:relative}
.ggrid img{transition:transform 1s var(--ease),filter .6s;filter:grayscale(.2) brightness(.85)}
.ggrid figure:hover img{transform:scale(1.06);filter:grayscale(0) brightness(1)}
@media (max-width:900px){.ggrid{columns:2}}
@media (max-width:560px){.ggrid{columns:1}}

@media (max-width:900px){
  .index__row{grid-template-columns:auto 1fr;gap:1rem}
  .index__go{display:none}
}


/* ====================== WORDPRESS / ELEMENTOR WRAPPER ====================== */
.pvs-root{background:#000;color:#fff;min-height:100svh;position:relative;isolation:isolate}
.pvs-root .elementor-widget-container{margin:0;padding:0}
.elementor-page .pvs-root{margin:0}

/* ====================== PATCH 1.0.2 ====================== */
/* Header: clickable above effects and Elementor wrappers. */
.nav{z-index:1200;pointer-events:auto}
.nav a,.nav button{position:relative;z-index:2;pointer-events:auto}
.nav__links,.nav__brand,.nav__lang,.nav__burger{pointer-events:auto}


/* Services hover image: visible beside the service title, not above the page. */
.services__float{
  position:fixed !important;
  width:min(30vw,430px);
  height:min(42vw,510px);
  min-width:300px;
  min-height:350px;
  z-index:980;
  pointer-events:none;
  opacity:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.16);
  background:#050505;
  box-shadow:0 24px 80px rgba(0,0,0,.72), 0 0 34px rgba(90,150,255,.13);
  clip-path:inset(0 round 2px);
  isolation:isolate;
}
.services__float::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(circle at 42% 24%, rgba(255,255,255,.22), transparent 24%),
    linear-gradient(180deg, rgba(0,0,0,0), rgba(0,0,0,.28));
  mix-blend-mode:screen;
  opacity:.42;
}
.services__float img{
  filter:blur(12px) grayscale(.16) brightness(.62) contrast(1.12);
  transform:scale(1.16);
  will-change:transform,filter;
}
.service{cursor:none;}
.service.is-active{padding-left:1.5rem;}
.service.is-active::before{transform:scaleY(1);}
.service.is-active .service__name{color:#fff;}
.service.is-active .service__desc{max-height:80px;opacity:1;}
@media (max-width:980px){
  .services__float{display:none !important;}
}

/* Logo hover: light-reactive / blurred diffusion effect for the main capture area. */
.masklogo{overflow:hidden;isolation:isolate;transition:filter .35s var(--ease)}
.masklogo__img{transition:filter .42s var(--ease), opacity .42s var(--ease), transform .42s var(--ease);will-change:filter,transform,opacity}
.masklogo.is-hovered .masklogo__img{filter:brightness(1.65) contrast(1.08) saturate(1.32) blur(2.4px);opacity:.82}
.masklogo::before,
.masklogo::after{
  content:"";position:absolute;inset:-4%;pointer-events:none;opacity:0;z-index:2;
  transition:opacity .32s var(--ease),transform .32s var(--ease),filter .32s var(--ease);
  will-change:opacity,transform,clip-path;
}
.masklogo::before{
  background:url(../assets/img/crossing-lasers.jpg) center/cover no-repeat;
  mix-blend-mode:screen;
  filter:contrast(1.35) saturate(1.4) hue-rotate(16deg);
  transform:translate3d(var(--gx,0),var(--gy,0),0) scale(1.04);
  clip-path:polygon(0 8%,100% 4%,100% 24%,0 29%,0 43%,100% 39%,100% 58%,0 62%,0 78%,100% 74%,100% 90%,0 96%);
}
.masklogo::after{
  inset:0;
  background:
    radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.92) 0%, rgba(132,235,255,.42) 12%, rgba(70,110,255,.18) 24%, transparent 42%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.2) 0 1px, transparent 1px 7px);
  mix-blend-mode:screen;
  backdrop-filter:blur(6px);
  -webkit-backdrop-filter:blur(6px);
  transform:translate3d(calc(var(--gx,0) * -0.5),calc(var(--gy,0) * -0.5),0);
}
.masklogo.is-hovered{filter:drop-shadow(0 0 22px rgba(160,235,255,.42)) drop-shadow(0 0 58px rgba(80,80,255,.22))}
.masklogo.is-hovered::before{opacity:.58;animation:pvsLogoGlitch .74s steps(2,end) infinite}
.masklogo.is-hovered::after{opacity:.9}
@keyframes pvsLogoGlitch{
  0%{transform:translate3d(calc(var(--gx,0) + 0px),calc(var(--gy,0) + 0px),0) scale(1.04);clip-path:polygon(0 8%,100% 4%,100% 24%,0 29%,0 43%,100% 39%,100% 58%,0 62%,0 78%,100% 74%,100% 90%,0 96%)}
  28%{transform:translate3d(calc(var(--gx,0) + 10px),calc(var(--gy,0) - 4px),0) scale(1.055);clip-path:polygon(0 3%,100% 8%,100% 18%,0 22%,0 49%,100% 45%,100% 55%,0 59%,0 84%,100% 79%,100% 94%,0 91%)}
  52%{transform:translate3d(calc(var(--gx,0) - 8px),calc(var(--gy,0) + 5px),0) scale(1.045);clip-path:polygon(0 13%,100% 10%,100% 27%,0 31%,0 37%,100% 41%,100% 66%,0 63%,0 72%,100% 76%,100% 88%,0 92%)}
  100%{transform:translate3d(calc(var(--gx,0) + 0px),calc(var(--gy,0) + 0px),0) scale(1.04);clip-path:polygon(0 8%,100% 4%,100% 24%,0 29%,0 43%,100% 39%,100% 58%,0 62%,0 78%,100% 74%,100% 90%,0 96%)}
}

@media (hover:none),(pointer:coarse){
  .masklogo::before,.masklogo::after{display:none}
}


/* ====================== PATCH 1.2.0 ====================== */
/* Navegación: enlaces siempre por encima de overlays, Elementor y cursor personalizado. */
.pvs-root a,
.pvs-root button,
.nav a,
.nav button,
.menu a,
.wa{pointer-events:auto;}
.transition[aria-hidden="true"]{pointer-events:none!important;}
.nav,.menu,.wa{z-index:2147482000;}
.cursor,.cursor-dot{pointer-events:none!important;}

/* Servicios: imagen por servicio integrada en cada fila. No depende del flotante global. */
.services{overflow:visible;}
.services__list{position:relative;}
.service{
  overflow:visible;
  min-height:clamp(128px,13vw,210px);
  padding-right:min(34vw,520px);
}
.service__thumb{
  position:absolute;
  top:50%;
  right:clamp(18px,6vw,120px);
  width:min(30vw,430px);
  height:clamp(220px,31vw,470px);
  z-index:12;
  pointer-events:none;
  opacity:0;
  overflow:hidden;
  border:1px solid rgba(255,255,255,.16);
  background:#050505;
  box-shadow:0 28px 90px rgba(0,0,0,.78),0 0 34px rgba(110,170,255,.15);
  transform:translate3d(34px,-50%,0) scale(.94);
  filter:blur(18px) brightness(.62);
  transition:opacity .42s var(--ease),transform .52s var(--ease),filter .52s var(--ease);
  clip-path:inset(0 round 2px);
  isolation:isolate;
}
.service__thumb::after{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:radial-gradient(circle at 38% 18%,rgba(255,255,255,.24),transparent 26%),linear-gradient(180deg,rgba(0,0,0,0),rgba(0,0,0,.32));
  mix-blend-mode:screen;
  opacity:.58;
}
.service__thumb img{
  width:100%;
  height:100%;
  object-fit:cover;
  transform:scale(1.14);
  filter:grayscale(.2) brightness(.78) contrast(1.14);
  transition:transform .7s var(--ease),filter .55s var(--ease);
}
.service:hover .service__thumb,
.service.is-active .service__thumb{
  opacity:1;
  transform:translate3d(0,-50%,0) scale(1);
  filter:blur(0) brightness(1);
}
.service:hover .service__thumb img,
.service.is-active .service__thumb img{
  transform:scale(1.04);
  filter:grayscale(.08) brightness(.94) contrast(1.08);
}
.services__float{display:none!important;}

@media (max-width:1180px){
  .service{padding-right:min(36vw,430px);}
  .service__thumb{right:clamp(12px,4vw,54px);width:min(34vw,380px);height:clamp(200px,34vw,420px);}
}
@media (max-width:980px){
  .service{padding-right:0;min-height:0;}
  .service__thumb{display:none!important;}
}

/* ====================== PATCH 1.3.0 ====================== */
/* Transición de entrada más limpia y menos brusca. */
.transition{z-index:2147481000;pointer-events:none!important;will-change:opacity}
.transition__col{animation-duration:1.15s!important;animation-timing-function:cubic-bezier(.83,0,.17,1)!important;will-change:transform}
.transition__col:nth-child(1){animation-delay:.03s!important}
.transition__col:nth-child(2){animation-delay:.09s!important}
.transition__col:nth-child(3){animation-delay:.15s!important}
.transition__col:nth-child(4){animation-delay:.21s!important}
.transition__col:nth-child(5){animation-delay:.27s!important}
.transition__label{pointer-events:none!important}

/* Header y botones: siempre clicables por encima de Elementor, overlays y cursor. */
body .nav{position:fixed!important;z-index:2147483000!important;pointer-events:auto!important;transform:none!important}
body .nav a,body .nav button,body .menu a,.pagenav a,.index__row,.vzsz__cta,.contact__big,.wa{pointer-events:auto!important}
body .menu{z-index:2147482500!important}

/* Logo inicial: difusión tipo captura, más visible al pasar el cursor. */
.masklogo{transform:translateZ(0);backface-visibility:hidden}
.masklogo.is-hovered .masklogo__img{filter:brightness(1.85) contrast(1.18) saturate(1.55) blur(3.4px)!important;opacity:.78!important}
.masklogo.is-hovered::before{opacity:.78!important;filter:contrast(1.55) saturate(1.6) hue-rotate(20deg) blur(.4px)!important}
.masklogo.is-hovered::after{opacity:1!important;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}

/* Home: evita que saltos de línea editados en Elementor se vean como barras raras. */
.hero2__title br{display:block!important;content:""!important}
.hero2__title{white-space:normal;word-break:normal;overflow-wrap:normal}

/* Servicios: foto integrada a la derecha de cada servicio. Robusto en Elementor y shortcode. */
.services{overflow:visible!important}
.services__list{position:relative!important;z-index:2}
.service{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr) minmax(280px,30vw)!important;
  grid-template-rows:auto auto!important;
  column-gap:clamp(1.2rem,3vw,4rem)!important;
  row-gap:.7rem!important;
  align-items:center!important;
  min-height:clamp(180px,22vw,430px)!important;
  padding-right:0!important;
  overflow:visible!important;
}
.service__num{grid-column:1!important;grid-row:1 / span 2!important;align-self:start!important}
.service__name{grid-column:2!important;grid-row:1!important;align-self:end!important;max-width:11ch;position:relative;z-index:3}
.service__desc{grid-column:2!important;grid-row:2!important;position:relative;z-index:3}
.service__thumb{
  display:block!important;
  position:relative!important;
  grid-column:3!important;
  grid-row:1 / span 2!important;
  top:auto!important;right:auto!important;left:auto!important;
  width:100%!important;
  height:clamp(220px,30vw,470px)!important;
  min-width:0!important;min-height:0!important;
  transform:translate3d(32px,0,0) scale(.95)!important;
  opacity:0;
  filter:blur(20px) brightness(.58)!important;
  transition:opacity .46s var(--ease),transform .58s var(--ease),filter .58s var(--ease)!important;
  z-index:2!important;
}
.service:hover .service__thumb,
.service:focus-within .service__thumb,
.service.is-active .service__thumb{
  opacity:1!important;
  transform:translate3d(0,0,0) scale(1)!important;
  filter:blur(0) brightness(1)!important;
}
.service:hover .service__thumb img,
.service:focus-within .service__thumb img,
.service.is-active .service__thumb img{
  transform:scale(1.04)!important;
  filter:grayscale(.08) brightness(.94) contrast(1.08)!important;
}
.service:hover,.service.is-active{padding-left:clamp(.6rem,1vw,1.5rem)!important}
.services__float{display:none!important}

/* Páginas internas: corrige estructuras editables de Elementor para que no se rompan. */
.phead{overflow:visible!important}
.phead__title{overflow:visible!important;word-break:normal;overflow-wrap:normal}
.studio__grid{display:grid!important;grid-template-columns:1fr 1fr;gap:clamp(30px,5vw,80px);align-items:start}
.studio__skills{list-style:none;border-top:1px solid var(--line)}
.studio__skills li{display:flex;justify-content:space-between;align-items:center;padding:1.1rem 0;border-bottom:1px solid var(--line)}
.studio__skills span{font-family:var(--font-d);font-weight:600;font-size:1.05rem;letter-spacing:.04em}
.studio__skills em{color:var(--grey);font-style:normal;font-size:.85rem}

.contact__grid{grid-template-columns:repeat(auto-fit,minmax(245px,1fr))!important;gap:2.4rem 3rem!important}
.contact__col{min-width:0!important;display:flex!important;flex-direction:column!important;gap:.6rem!important}
.contact__col a,.contact__col span{max-width:100%;white-space:normal;overflow-wrap:anywhere;word-break:normal;line-height:1.26}
.contact__k{white-space:nowrap;overflow-wrap:normal!important}

.disc__item p{color:var(--grey);font-size:.95rem;line-height:1.45;margin-top:.5rem}
.disc__item .tag{display:block}

@media (max-width:980px){
  .service{grid-template-columns:auto 1fr!important;min-height:0!important;row-gap:.65rem!important}
  .service__num{grid-column:1!important;grid-row:1!important}
  .service__name{grid-column:2!important;grid-row:1!important;max-width:none!important}
  .service__desc{grid-column:2!important;grid-row:2!important}
  .service__thumb{display:none!important}
}
@media (max-width:900px){
  .studio__grid{grid-template-columns:1fr!important;gap:40px}
}


/* ====================== PATCH 1.3.1 ====================== */
/* Logo inicial: más brillo, destellos, scanline y barrido luminoso sin tocar la estructura editable. */
.masklogo{
  perspective:900px;
  transform-style:preserve-3d;
  transition:filter .28s var(--ease), transform .28s var(--ease);
}
.masklogo.is-hovered{
  transform:translateZ(0) rotateX(var(--ry,0deg)) rotateY(var(--rx,0deg));
  filter:
    drop-shadow(0 0 18px rgba(255,255,255,.72))
    drop-shadow(0 0 42px rgba(150,235,255,.78))
    drop-shadow(0 0 96px rgba(80,90,255,.42))
    drop-shadow(0 0 150px rgba(180,80,255,.22))!important;
  animation:pvsLogoPulse 1.05s ease-in-out infinite alternate;
}
.masklogo.is-hovered .masklogo__img{
  filter:brightness(2.22) contrast(1.28) saturate(1.95) blur(4.1px)!important;
  opacity:.76!important;
}
.masklogo::before{
  background:
    linear-gradient(105deg, transparent 0 23%, rgba(255,255,255,.9) 27%, transparent 32%, transparent 46%, rgba(110,235,255,.55) 49%, transparent 54%),
    linear-gradient(18deg, transparent 0 58%, rgba(120,95,255,.72) 61%, transparent 66%),
    url(../assets/img/crossing-lasers.jpg) center/cover no-repeat!important;
  background-blend-mode:screen,screen,normal;
}
.masklogo::after{
  background:
    radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,1) 0%, rgba(170,245,255,.72) 10%, rgba(93,118,255,.36) 22%, transparent 42%),
    linear-gradient(115deg, transparent 0 34%, rgba(255,255,255,.85) 38%, transparent 42% 100%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.22) 0 1px, transparent 1px 6px),
    repeating-linear-gradient(90deg, rgba(90,180,255,.18) 0 1px, transparent 1px 14px)!important;
  mix-blend-mode:screen;
}
.masklogo.is-hovered::before{
  opacity:1!important;
  filter:contrast(1.85) saturate(2.1) hue-rotate(24deg) brightness(1.24) blur(.25px)!important;
  animation:pvsLogoGlitch .42s steps(2,end) infinite, pvsLogoChromatic 1.15s ease-in-out infinite alternate!important;
}
.masklogo.is-hovered::after{
  opacity:1!important;
  backdrop-filter:blur(10px) brightness(1.15);
  -webkit-backdrop-filter:blur(10px) brightness(1.15);
  animation:pvsLogoSweep 1.25s linear infinite!important;
}
@keyframes pvsLogoPulse{
  from{filter:drop-shadow(0 0 16px rgba(255,255,255,.62)) drop-shadow(0 0 42px rgba(150,235,255,.62)) drop-shadow(0 0 94px rgba(80,90,255,.34)) drop-shadow(0 0 138px rgba(180,80,255,.16))}
  to{filter:drop-shadow(0 0 26px rgba(255,255,255,.95)) drop-shadow(0 0 64px rgba(150,235,255,.95)) drop-shadow(0 0 128px rgba(80,90,255,.58)) drop-shadow(0 0 190px rgba(180,80,255,.32))}
}
@keyframes pvsLogoChromatic{
  0%{filter:contrast(1.75) saturate(2) hue-rotate(0deg) brightness(1.18) blur(.2px)}
  100%{filter:contrast(2.05) saturate(2.35) hue-rotate(36deg) brightness(1.38) blur(.6px)}
}
@keyframes pvsLogoSweep{
  0%{transform:translate3d(calc(var(--gx,0) * -.5 - 14%),calc(var(--gy,0) * -.5),0)}
  100%{transform:translate3d(calc(var(--gx,0) * -.5 + 14%),calc(var(--gy,0) * -.5),0)}
}

/* Intro home: imágenes de scroll más suaves y sin cortes secos. */
.enter__pin{backface-visibility:hidden;transform:translateZ(0)}
.gphoto{will-change:opacity,filter,transform;backface-visibility:hidden;transform:translateZ(0)}
.gphoto img{will-change:transform,filter;backface-visibility:hidden;transform:translateZ(0) scale(1.08)}

/* ====================== PATCH 1.3.2 ====================== */
/* Intro más limpia: menos saturación visual y menos filtros pesados durante el scroll. */
.enter .masklogo__img{
  filter:brightness(1.06) contrast(1.04) saturate(.96)!important;
  opacity:.96!important;
}
.gphoto img{
  filter:grayscale(.08) brightness(.72) contrast(1.03) saturate(.82)!important;
}
.gphoto::after{
  background:linear-gradient(180deg,rgba(0,0,0,.34),transparent 32%,transparent 68%,rgba(0,0,0,.52))!important;
}
.maskwrap{
  will-change:transform,opacity!important;
}
.gphoto{
  will-change:opacity,transform!important;
}

/* Logo hover con brillo controlado: mantiene efecto, pero sin quemar la imagen ni ralentizar la intro. */
.masklogo.is-hovered{
  filter:
    drop-shadow(0 0 12px rgba(255,255,255,.38))
    drop-shadow(0 0 28px rgba(150,235,255,.34))
    drop-shadow(0 0 56px rgba(80,90,255,.2))!important;
  animation:pvsLogoPulse 2.2s ease-in-out infinite alternate!important;
}
.masklogo.is-hovered .masklogo__img{
  filter:brightness(1.22) contrast(1.06) saturate(1.08) blur(1.2px)!important;
  opacity:.9!important;
}
.masklogo::before{
  background:
    linear-gradient(105deg, transparent 0 26%, rgba(255,255,255,.36) 30%, transparent 36%, transparent 50%, rgba(110,235,255,.22) 54%, transparent 60%),
    url(../assets/img/crossing-lasers.jpg) center/cover no-repeat!important;
  background-blend-mode:screen,normal!important;
}
.masklogo::after{
  background:
    radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.48) 0%, rgba(170,245,255,.28) 11%, rgba(93,118,255,.16) 22%, transparent 43%),
    linear-gradient(115deg, transparent 0 38%, rgba(255,255,255,.28) 42%, transparent 48% 100%),
    repeating-linear-gradient(0deg, rgba(255,255,255,.08) 0 1px, transparent 1px 8px)!important;
  mix-blend-mode:screen!important;
}
.masklogo.is-hovered::before{
  opacity:.42!important;
  filter:contrast(1.18) saturate(1.08) hue-rotate(10deg) brightness(1.02) blur(.15px)!important;
  animation:pvsLogoGlitch 1.15s steps(2,end) infinite!important;
}
.masklogo.is-hovered::after{
  opacity:.5!important;
  backdrop-filter:blur(2.4px) brightness(1.02)!important;
  -webkit-backdrop-filter:blur(2.4px) brightness(1.02)!important;
  animation:pvsLogoSweep 2.8s linear infinite!important;
}
@keyframes pvsLogoPulse{
  from{filter:drop-shadow(0 0 10px rgba(255,255,255,.28)) drop-shadow(0 0 24px rgba(150,235,255,.28)) drop-shadow(0 0 46px rgba(80,90,255,.16))}
  to{filter:drop-shadow(0 0 16px rgba(255,255,255,.48)) drop-shadow(0 0 34px rgba(150,235,255,.4)) drop-shadow(0 0 64px rgba(80,90,255,.24))}
}
@keyframes pvsLogoChromatic{
  0%{filter:contrast(1.12) saturate(1.05) hue-rotate(0deg) brightness(1.01) blur(.12px)}
  100%{filter:contrast(1.2) saturate(1.12) hue-rotate(14deg) brightness(1.06) blur(.18px)}
}
@keyframes pvsLogoSweep{
  0%{transform:translate3d(calc(var(--gx,0) * -.35 - 7%),calc(var(--gy,0) * -.35),0)}
  100%{transform:translate3d(calc(var(--gx,0) * -.35 + 7%),calc(var(--gy,0) * -.35),0)}
}

/* ====================== PATCH 1.3.3 ====================== */
/* Pantalla de carga para que la home se asiente antes de activar la intro. */
body.pvs-loading,
html:has(.intro-loader:not(.is-done)){
  overflow:hidden!important;
}
.intro-loader{
  --p:0;
  position:fixed;
  inset:0;
  z-index:2147483600;
  background:#000;
  display:flex;
  align-items:center;
  justify-content:center;
  pointer-events:auto;
  opacity:1;
  visibility:visible;
  transition:opacity .72s cubic-bezier(.76,0,.24,1),visibility .72s cubic-bezier(.76,0,.24,1),filter .72s cubic-bezier(.76,0,.24,1);
  filter:blur(0);
  isolation:isolate;
}
.intro-loader::before{
  content:"";
  position:absolute;
  inset:0;
  background:
    radial-gradient(circle at 50% 48%,rgba(110,210,255,.08),transparent 32%),
    linear-gradient(180deg,rgba(255,255,255,.025),transparent 34%,rgba(255,255,255,.018));
  opacity:.9;
}
.intro-loader::after{
  content:"";
  position:absolute;
  left:50%;top:50%;
  width:min(70vw,620px);
  height:1px;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);
  transform:translate(-50%,-50%);
  opacity:.6;
}
.intro-loader.is-done{
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  filter:blur(12px);
}
.intro-loader__inner{
  position:relative;
  z-index:2;
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:clamp(28px,4vw,52px);
  width:min(82vw,620px);
}
.intro-loader__logo{
  width:min(72vw,560px);
  height:auto;
  object-fit:contain;
  opacity:.92;
  filter:drop-shadow(0 0 18px rgba(145,225,255,.22));
  animation:pvsLoaderLogo 2.4s ease-in-out infinite alternate;
}
.intro-loader__ring{
  position:relative;
  width:86px;
  height:86px;
  display:grid;
  place-items:center;
}
.intro-loader__ring svg{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  transform:rotate(-90deg);
  overflow:visible;
}
.intro-loader__track,
.intro-loader__progress{
  fill:none;
  stroke-width:3;
}
.intro-loader__track{
  stroke:rgba(255,255,255,.16);
}
.intro-loader__progress{
  stroke:#fff;
  stroke-linecap:round;
  stroke-dasharray:282.743;
  stroke-dashoffset:calc(282.743 - (282.743 * var(--p) / 100));
  transition:stroke-dashoffset .16s linear;
  filter:drop-shadow(0 0 8px rgba(160,230,255,.55));
}
.intro-loader__count{
  font-family:var(--font-d);
  font-size:.78rem;
  font-weight:600;
  letter-spacing:.16em;
  color:rgba(255,255,255,.82);
  transform:translateX(.08em);
}
@keyframes pvsLoaderLogo{
  from{opacity:.78;filter:drop-shadow(0 0 12px rgba(145,225,255,.16))}
  to{opacity:1;filter:drop-shadow(0 0 24px rgba(145,225,255,.34))}
}

/* Intro home optimizada: menos carga en GPU, sin filtros animados y con imágenes estables. */
.enter__pin{
  contain:layout paint;
  background:#000;
}
.maskwrap,
.masklogo,
.masklogo__img,
.gphoto,
.gphoto img{
  backface-visibility:hidden!important;
  transform-style:preserve-3d;
}
.enter .masklogo__img{
  filter:none!important;
  opacity:.82!important;
  transform:translateZ(0) scale(1)!important;
}
.enter .masklogo::before,
.enter .masklogo::after{
  will-change:opacity,transform!important;
}
.gphoto{
  opacity:0;
  transform:translateZ(0)!important;
  will-change:opacity!important;
  background:#000;
}
.gphoto img{
  filter:none!important;
  opacity:.72!important;
  transform:translateZ(0) scale(1.03)!important;
  will-change:transform!important;
}
.gphoto::after{
  background:linear-gradient(180deg,rgba(0,0,0,.42),rgba(0,0,0,.12) 32%,rgba(0,0,0,.16) 64%,rgba(0,0,0,.58))!important;
}
body.pvs-loading .enter,
body.pvs-loading .hero2{
  pointer-events:none;
}
@media (max-width:768px){
  .intro-loader__logo{width:min(78vw,430px)}
  .intro-loader__ring{width:74px;height:74px}
}
@media (prefers-reduced-motion:reduce){
  .intro-loader__logo{animation:none}
  .intro-loader,.intro-loader.is-done{transition:none}
}


/* ====================== PATCH 1.3.4 ====================== */
/* Intro estable: quitado el zoom/pin pesado del logo inicial. */
.enter{
  min-height:100svh!important;
  height:100svh!important;
  overflow:hidden!important;
  background:#000!important;
}
.enter__pin{
  position:relative!important;
  height:100svh!important;
  min-height:100svh!important;
  overflow:hidden!important;
  contain:layout paint!important;
  background:#000!important;
}
.enter__gallery{
  display:none!important;
}
.maskwrap{
  z-index:2!important;
  opacity:1;
  transform:translateZ(0)!important;
  will-change:opacity,transform!important;
}
.masklogo{
  width:min(86vw,980px)!important;
  transform:translateZ(0)!important;
  will-change:opacity,transform!important;
  filter:drop-shadow(0 0 12px rgba(145,225,255,.16))!important;
  animation:none!important;
  overflow:hidden!important;
  isolation:isolate!important;
}
.enter .masklogo__img{
  filter:grayscale(.08) brightness(.9) contrast(1.02) saturate(.68)!important;
  opacity:.9!important;
  transform:translateZ(0) scale(1)!important;
  will-change:transform!important;
}
.masklogo::before,
.masklogo::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  pointer-events:none!important;
  opacity:0!important;
  mix-blend-mode:screen!important;
  transition:opacity .28s var(--ease),transform .28s var(--ease)!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  animation:none!important;
}
.masklogo::before{
  background:linear-gradient(105deg,transparent 0 30%,rgba(255,255,255,.28) 35%,transparent 41%,transparent 58%,rgba(120,225,255,.18) 63%,transparent 70%)!important;
  transform:translate3d(-8%,0,0)!important;
}
.masklogo::after{
  background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.36) 0%,rgba(140,230,255,.2) 12%,rgba(90,100,255,.12) 26%,transparent 48%)!important;
  transform:translate3d(var(--gx,0),var(--gy,0),0)!important;
}
.masklogo.is-hovered{
  transform:translateZ(0) scale(1.006)!important;
  filter:
    drop-shadow(0 0 14px rgba(255,255,255,.22))
    drop-shadow(0 0 30px rgba(145,225,255,.22))
    drop-shadow(0 0 52px rgba(90,100,255,.14))!important;
  animation:none!important;
}
.masklogo.is-hovered .masklogo__img{
  filter:grayscale(.05) brightness(.98) contrast(1.03) saturate(.78)!important;
  opacity:.94!important;
}
.masklogo.is-hovered::before{
  opacity:.32!important;
  transform:translate3d(5%,0,0)!important;
}
.masklogo.is-hovered::after{
  opacity:.42!important;
}
.enter__hint{
  will-change:opacity,transform!important;
}
/* Evita que la home reserve el pin spacer antiguo si el navegador mantiene estado/caché. */
.enter + .pin-spacer,
.pin-spacer:has(.enter__pin){
  min-height:0!important;
}

/* ====================== PATCH 1.3.5 ====================== */
/* Intro rehacer: sticky nativo, sin pin GSAP pesado, con efecto de entrada del logo fluido. */
.enter{
  min-height:180svh!important;
  height:180svh!important;
  overflow:visible!important;
  background:#000!important;
  position:relative!important;
}
.enter__pin{
  position:sticky!important;
  top:0!important;
  height:100svh!important;
  min-height:100svh!important;
  overflow:hidden!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  contain:layout paint!important;
  background:
    radial-gradient(circle at 50% 45%,rgba(80,145,255,.14),transparent 34%),
    radial-gradient(circle at 50% 58%,rgba(255,255,255,.055),transparent 42%),
    #000!important;
}
.enter__pin::before{
  content:"";
  position:absolute;
  inset:-18%;
  z-index:0;
  pointer-events:none;
  background:
    linear-gradient(105deg,transparent 0 30%,rgba(255,255,255,.12) 34%,transparent 40%,transparent 59%,rgba(120,220,255,.1) 64%,transparent 70%),
    repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 54px);
  opacity:.65;
  transform:translate3d(0,0,0) rotate(-6deg);
}
.enter__pin::after{
  content:"";
  position:absolute;
  inset:0;
  z-index:1;
  pointer-events:none;
  background:radial-gradient(circle at 50% 50%,transparent 0 42%,rgba(0,0,0,.72) 78%,#000 100%);
}
.enter__aura{
  position:absolute;
  left:50%;
  top:50%;
  width:min(86vw,980px);
  aspect-ratio:1000/667;
  transform:translate(-50%,-50%) translateZ(0);
  z-index:1;
  pointer-events:none;
  background:
    radial-gradient(circle at 50% 50%,rgba(180,235,255,.16),transparent 48%),
    radial-gradient(circle at 35% 40%,rgba(110,120,255,.18),transparent 38%);
  filter:none!important;
  opacity:0;
}
.maskwrap{
  position:relative!important;
  z-index:2!important;
  transform-origin:center center!important;
  will-change:transform,opacity!important;
}
.masklogo{
  width:min(88vw,1040px)!important;
  aspect-ratio:1000/667!important;
  filter:drop-shadow(0 0 20px rgba(145,225,255,.18))!important;
  transform:translateZ(0)!important;
  will-change:transform,opacity!important;
  overflow:hidden!important;
  isolation:isolate!important;
}
.enter .masklogo__img{
  filter:grayscale(.08) brightness(.96) contrast(1.04) saturate(.8)!important;
  opacity:.92!important;
  transform:translateZ(0) scale(1.04)!important;
  will-change:transform!important;
}
.masklogo::before,
.masklogo::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  pointer-events:none!important;
  mix-blend-mode:screen!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  animation:none!important;
  transition:opacity .26s var(--ease),transform .26s var(--ease)!important;
}
.masklogo::before{
  opacity:.22!important;
  background:
    linear-gradient(105deg,transparent 0 31%,rgba(255,255,255,.3) 35%,transparent 42%,transparent 60%,rgba(120,230,255,.18) 64%,transparent 70%),
    url(../assets/img/crossing-lasers.jpg) center/cover no-repeat!important;
  background-blend-mode:screen,normal!important;
  transform:translate3d(-3%,0,0)!important;
}
.masklogo::after{
  opacity:.22!important;
  background:
    radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(255,255,255,.34),rgba(140,230,255,.15) 14%,transparent 42%),
    repeating-linear-gradient(0deg,rgba(255,255,255,.055) 0 1px,transparent 1px 9px)!important;
  transform:translate3d(var(--gx,0),var(--gy,0),0)!important;
}
.masklogo.is-hovered{
  transform:translateZ(0) scale(1.012)!important;
  filter:
    drop-shadow(0 0 18px rgba(255,255,255,.28))
    drop-shadow(0 0 42px rgba(145,225,255,.24))
    drop-shadow(0 0 76px rgba(90,100,255,.16))!important;
}
.masklogo.is-hovered .masklogo__img{
  filter:grayscale(.03) brightness(1.04) contrast(1.05) saturate(.9)!important;
  opacity:.96!important;
}
.masklogo.is-hovered::before{opacity:.42!important;transform:translate3d(4%,0,0)!important;}
.masklogo.is-hovered::after{opacity:.52!important;}
.enter__hint{
  bottom:clamp(34px,5vw,72px)!important;
  z-index:3!important;
}
.enter__gallery{display:none!important;}
.enter + .pin-spacer,
.pin-spacer:has(.enter__pin){display:none!important;min-height:0!important;height:0!important;}

/* Servicios: el recuadro de imagen persigue al cursor dentro de cada servicio. */
.services{overflow:visible!important;}
.services__list{position:relative!important;}
.service{
  display:grid!important;
  grid-template-columns:auto minmax(0,1fr)!important;
  grid-template-rows:auto auto!important;
  position:relative!important;
  overflow:visible!important;
  min-height:clamp(170px,19vw,280px)!important;
  padding-right:0!important;
  isolation:isolate!important;
}
.service__num{grid-column:1!important;grid-row:1 / span 2!important;position:relative!important;z-index:4!important;}
.service__name{grid-column:2!important;grid-row:1!important;max-width:none!important;position:relative!important;z-index:4!important;mix-blend-mode:normal!important;}
.service__desc{grid-column:2!important;grid-row:2!important;position:relative!important;z-index:4!important;max-width:min(54ch,62vw)!important;}
.service__thumb{
  --pvs-thumb-x:clamp(360px,56vw,820px);
  --pvs-thumb-y:18px;
  --pvs-thumb-rot:0deg;
  --pvs-thumb-scale:.88;
  display:block!important;
  position:absolute!important;
  left:0!important;
  top:0!important;
  right:auto!important;
  width:clamp(270px,25vw,390px)!important;
  height:clamp(220px,23vw,330px)!important;
  grid-column:auto!important;
  grid-row:auto!important;
  z-index:2!important;
  pointer-events:none!important;
  opacity:0!important;
  overflow:hidden!important;
  border:1px solid rgba(255,255,255,.18)!important;
  background:#050505!important;
  box-shadow:0 28px 90px rgba(0,0,0,.72),0 0 42px rgba(110,170,255,.12)!important;
  transform:translate3d(var(--pvs-thumb-x),var(--pvs-thumb-y),0) rotate(var(--pvs-thumb-rot)) scale(var(--pvs-thumb-scale))!important;
  transform-origin:center center!important;
  filter:blur(16px) brightness(.62)!important;
  transition:opacity .22s var(--ease),filter .28s var(--ease),transform .08s linear!important;
  clip-path:inset(0 round 10px)!important;
  border-radius:10px!important;
  isolation:isolate!important;
  will-change:transform,opacity,filter!important;
}
.service__thumb::before{
  content:"";
  position:absolute;
  inset:-1px;
  z-index:2;
  pointer-events:none;
  background:
    linear-gradient(115deg,transparent 0 34%,rgba(255,255,255,.35) 39%,transparent 45% 100%),
    radial-gradient(circle at 35% 18%,rgba(160,230,255,.22),transparent 30%);
  mix-blend-mode:screen;
  opacity:.55;
}
.service__thumb img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  transform:scale(1.04)!important;
  filter:grayscale(.08) brightness(.88) contrast(1.05)!important;
  transition:transform .55s var(--ease),filter .38s var(--ease)!important;
  will-change:transform!important;
}
.service.is-active .service__thumb,
.service:hover .service__thumb,
.service:focus-within .service__thumb{
  --pvs-thumb-scale:1;
  opacity:1!important;
  filter:blur(0) brightness(1)!important;
  z-index:5!important;
}
.service.is-active .service__thumb img,
.service:hover .service__thumb img,
.service:focus-within .service__thumb img{
  transform:scale(1)!important;
  filter:grayscale(.02) brightness(.98) contrast(1.04)!important;
}
.service:hover,.service.is-active{padding-left:clamp(.6rem,1vw,1.5rem)!important;}
@media (max-width:980px){
  .enter{height:120svh!important;min-height:120svh!important;}
  .service{overflow:visible!important;min-height:0!important;}
  .service__thumb{display:none!important;}
}

/* PATCH 1.3.5b — variables para que GSAP anime sin pelearse con !important antiguos. */
.enter .maskwrap{
  --pvs-enter-scale:1;
  --pvs-enter-y:0px;
  --pvs-enter-opacity:1;
  opacity:var(--pvs-enter-opacity)!important;
  transform:translate3d(0,var(--pvs-enter-y),0) scale(var(--pvs-enter-scale)) translateZ(0)!important;
}
.enter .enter__aura{
  --pvs-aura-scale:1;
  --pvs-aura-opacity:0;
  opacity:var(--pvs-aura-opacity)!important;
  transform:translate(-50%,-50%) translateZ(0) scale(var(--pvs-aura-scale))!important;
}

/* ====================== PATCH 1.3.6 ====================== */
/* Intro corregida: sin bloqueo/pin GSAP, sin zoom agresivo y con movimiento ligero por RAF. */
.pvs-root .enter{
  height:118svh!important;
  min-height:118svh!important;
  overflow:hidden!important;
  background:#000!important;
  position:relative!important;
  contain:layout paint!important;
}
.pvs-root .enter__pin{
  position:relative!important;
  top:auto!important;
  height:100svh!important;
  min-height:100svh!important;
  overflow:hidden!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  background:
    radial-gradient(circle at 50% 46%,rgba(130,205,255,.105),transparent 31%),
    radial-gradient(circle at 50% 58%,rgba(255,255,255,.04),transparent 40%),
    #000!important;
  transform:translateZ(0)!important;
  backface-visibility:hidden!important;
}
.pvs-root .enter__pin::before{
  opacity:.32!important;
  background:
    linear-gradient(105deg,transparent 0 32%,rgba(255,255,255,.08) 37%,transparent 43%,transparent 61%,rgba(120,220,255,.075) 65%,transparent 72%),
    repeating-linear-gradient(90deg,rgba(255,255,255,.022) 0 1px,transparent 1px 68px)!important;
  transform:translate3d(0,0,0) rotate(-4deg)!important;
  will-change:auto!important;
}
.pvs-root .enter__pin::after{
  background:radial-gradient(circle at 50% 50%,transparent 0 44%,rgba(0,0,0,.58) 78%,#000 100%)!important;
}
.pvs-root .enter .enter__aura{
  width:min(78vw,860px)!important;
  opacity:var(--pvs-aura-opacity,0)!important;
  transform:translate(-50%,-50%) scale(var(--pvs-aura-scale,1)) translateZ(0)!important;
  background:
    radial-gradient(circle at 50% 50%,rgba(180,235,255,.105),transparent 50%),
    radial-gradient(circle at 36% 42%,rgba(105,120,255,.11),transparent 38%)!important;
  filter:none!important;
  will-change:opacity,transform!important;
}
.pvs-root .enter .maskwrap{
  --pvs-enter-scale:1;
  --pvs-enter-y:0px;
  --pvs-enter-opacity:1;
  opacity:var(--pvs-enter-opacity)!important;
  transform:translate3d(0,var(--pvs-enter-y),0) scale(var(--pvs-enter-scale)) translateZ(0)!important;
  will-change:transform,opacity!important;
}
.pvs-root .enter .masklogo{
  width:min(82vw,930px)!important;
  filter:drop-shadow(0 0 18px rgba(145,225,255,.16))!important;
  transform:translateZ(0)!important;
  will-change:transform,opacity!important;
}
.pvs-root .enter .masklogo__img{
  filter:grayscale(.08) brightness(.92) contrast(1.02) saturate(.72)!important;
  opacity:.94!important;
  transform:translateZ(0) scale(1.015)!important;
  will-change:transform!important;
}
.pvs-root .enter .masklogo::before{
  opacity:.16!important;
  filter:none!important;
  animation:none!important;
}
.pvs-root .enter .masklogo::after{
  opacity:.18!important;
  filter:none!important;
  backdrop-filter:none!important;
  -webkit-backdrop-filter:none!important;
  animation:none!important;
}
.pvs-root .masklogo.is-hovered{
  transform:translateZ(0) scale(1.006)!important;
  filter:drop-shadow(0 0 18px rgba(255,255,255,.22)) drop-shadow(0 0 36px rgba(145,225,255,.2))!important;
}
.pvs-root .masklogo.is-hovered .masklogo__img{
  filter:grayscale(.05) brightness(.98) contrast(1.03) saturate(.82)!important;
  opacity:.96!important;
}
.pvs-root .masklogo.is-hovered::before{opacity:.28!important;transform:translate3d(2%,0,0)!important;}
.pvs-root .masklogo.is-hovered::after{opacity:.34!important;}
.pvs-root .enter__gallery{display:none!important;}
.pvs-root .enter + .pin-spacer,
.pvs-root .pin-spacer:has(.enter__pin){display:none!important;min-height:0!important;height:0!important;}

/* Servicios corregido: tarjeta más ligera, sin zoom posterior y sin recortes bruscos. */
.pvs-root .services{overflow:visible!important;}
.pvs-root .service{
  min-height:clamp(180px,18vw,250px)!important;
  overflow:hidden!important;
  padding-top:clamp(1.15rem,2vw,2rem)!important;
  padding-bottom:clamp(1.15rem,2vw,2rem)!important;
}
.pvs-root .service__thumb{
  width:clamp(210px,22vw,340px)!important;
  height:clamp(135px,15vw,220px)!important;
  opacity:0!important;
  transform:translate3d(var(--pvs-thumb-x),var(--pvs-thumb-y),0) scale(var(--pvs-thumb-scale,.97))!important;
  filter:blur(9px) brightness(.68)!important;
  transition:opacity .18s var(--ease),filter .2s var(--ease),transform .095s linear!important;
  box-shadow:0 24px 60px rgba(0,0,0,.68),0 0 26px rgba(110,170,255,.11)!important;
}
.pvs-root .service__thumb::before{
  opacity:.36!important;
  background:linear-gradient(115deg,transparent 0 35%,rgba(255,255,255,.24) 40%,transparent 46% 100%)!important;
}
.pvs-root .service__thumb img{
  transform:scale(1.01)!important;
  filter:grayscale(.08) brightness(.88) contrast(1.04)!important;
  transition:filter .18s var(--ease)!important;
  will-change:auto!important;
}
.pvs-root .service.is-active .service__thumb,
.pvs-root .service:hover .service__thumb,
.pvs-root .service:focus-within .service__thumb{
  --pvs-thumb-scale:1;
  opacity:1!important;
  filter:blur(0) brightness(1)!important;
  z-index:5!important;
}
.pvs-root .service.is-active .service__thumb img,
.pvs-root .service:hover .service__thumb img,
.pvs-root .service:focus-within .service__thumb img{
  transform:scale(1.01)!important;
  filter:grayscale(.04) brightness(.94) contrast(1.04)!important;
}
@media (max-width:980px){
  .pvs-root .enter{height:105svh!important;min-height:105svh!important;}
  .pvs-root .service{min-height:0!important;overflow:visible!important;}
  .pvs-root .service__thumb{display:none!important;}
}

/* ====================== PATCH 1.3.8 ====================== */
/* Home: letras acercándose + secuencia de imágenes al scrollear, sin bloquear scroll. */
.pvs-root.pvs-page-home .enter{
  height:310svh!important;
  min-height:310svh!important;
  overflow:visible!important;
  contain:none!important;
  background:#000!important;
}
.pvs-root.pvs-page-home .enter__pin{
  position:sticky!important;
  top:0!important;
  height:100svh!important;
  min-height:100svh!important;
  overflow:hidden!important;
  contain:layout paint!important;
}
.pvs-root.pvs-page-home .enter__gallery{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  z-index:1!important;
  opacity:0;
  pointer-events:none!important;
  background:#000!important;
}
.pvs-root.pvs-page-home .gphoto{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  opacity:0;
  visibility:hidden;
  overflow:hidden!important;
  transform:translateZ(0)!important;
  will-change:opacity!important;
}
.pvs-root.pvs-page-home .gphoto img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  opacity:1!important;
  filter:grayscale(.06) brightness(.78) contrast(1.06) saturate(.9)!important;
  transform:translateZ(0) scale(1.12)!important;
  will-change:transform!important;
}
.pvs-root.pvs-page-home .gphoto::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  background:
    radial-gradient(circle at 50% 48%,transparent 0 32%,rgba(0,0,0,.36) 72%,#000 100%),
    linear-gradient(180deg,rgba(0,0,0,.64),rgba(0,0,0,.12) 34%,rgba(0,0,0,.18) 63%,rgba(0,0,0,.78))!important;
}
.pvs-root.pvs-page-home .enter .maskwrap{
  z-index:3!important;
  opacity:var(--pvs-enter-opacity,1)!important;
  transform:translate3d(0,var(--pvs-enter-y,0px),0) scale(var(--pvs-enter-scale,1)) translateZ(0)!important;
  filter:blur(var(--pvs-enter-blur,0px))!important;
  transform-origin:center center!important;
  will-change:transform,opacity,filter!important;
}
.pvs-root.pvs-page-home .enter .masklogo{
  width:min(84vw,980px)!important;
  filter:drop-shadow(0 0 22px rgba(145,225,255,.22)) drop-shadow(0 0 58px rgba(80,90,255,.12))!important;
}
.pvs-root.pvs-page-home .enter .masklogo__img{
  filter:grayscale(.04) brightness(1.02) contrast(1.06) saturate(.9)!important;
  opacity:.98!important;
  transform:translateZ(0) scale(1.025)!important;
}
.pvs-root.pvs-page-home .enter .enter__aura{
  z-index:2!important;
}
.pvs-root.pvs-page-home .enter__hint{
  z-index:4!important;
}
@media (max-width:980px){
  .pvs-root.pvs-page-home .enter{
    height:245svh!important;
    min-height:245svh!important;
  }
  .pvs-root.pvs-page-home .enter .masklogo{width:min(90vw,680px)!important;}
}
@media (prefers-reduced-motion:reduce){
  .pvs-root.pvs-page-home .enter{height:100svh!important;min-height:100svh!important;overflow:hidden!important;}
  .pvs-root.pvs-page-home .enter__pin{position:relative!important;}
}

/* Servicios: un único recuadro flotante que persigue el cursor y cambia por servicio. */
.pvs-root.pvs-page-servicios .services{
  overflow:visible!important;
}
.pvs-root.pvs-page-servicios .service{
  overflow:visible!important;
  min-height:clamp(138px,15vw,230px)!important;
  padding-right:min(28vw,420px)!important;
}
.pvs-root.pvs-page-servicios .service__thumb{
  display:none!important;
}
.pvs-root.pvs-page-servicios .services__float{
  --pvs-float-x:62vw;
  --pvs-float-y:30vh;
  --pvs-float-rot:0deg;
  display:block!important;
  position:fixed!important;
  left:0!important;
  top:0!important;
  width:clamp(250px,26vw,390px)!important;
  height:clamp(180px,22vw,320px)!important;
  min-width:0!important;
  min-height:0!important;
  z-index:2147481200!important;
  pointer-events:none!important;
  opacity:0!important;
  visibility:hidden!important;
  overflow:hidden!important;
  border:1px solid rgba(255,255,255,.18)!important;
  border-radius:12px!important;
  clip-path:inset(0 round 12px)!important;
  background:#040404!important;
  box-shadow:0 30px 86px rgba(0,0,0,.76),0 0 48px rgba(110,170,255,.14)!important;
  transform:translate3d(var(--pvs-float-x),var(--pvs-float-y),0) rotate(var(--pvs-float-rot)) scale(.94)!important;
  filter:blur(10px) brightness(.7)!important;
  transition:opacity .22s var(--ease),visibility .22s var(--ease),filter .24s var(--ease),transform .085s linear!important;
  will-change:transform,opacity,filter!important;
  isolation:isolate!important;
}
.pvs-root.pvs-page-servicios .services__float.is-visible{
  opacity:1!important;
  visibility:visible!important;
  filter:blur(0) brightness(1)!important;
  transform:translate3d(var(--pvs-float-x),var(--pvs-float-y),0) rotate(var(--pvs-float-rot)) scale(1)!important;
}
.pvs-root.pvs-page-servicios .services__float.is-switching{
  filter:blur(8px) brightness(.74)!important;
}
.pvs-root.pvs-page-servicios .services__float img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  transform:scale(1.035)!important;
  filter:grayscale(.05) brightness(.96) contrast(1.05)!important;
  transition:opacity .18s var(--ease),filter .22s var(--ease),transform .42s var(--ease)!important;
}
.pvs-root.pvs-page-servicios .services__float.is-switching img{
  opacity:.28!important;
  transform:scale(1.08)!important;
}
.pvs-root.pvs-page-servicios .services__float::before{
  content:"";
  position:absolute;
  inset:-1px;
  z-index:2;
  pointer-events:none;
  background:linear-gradient(118deg,transparent 0 34%,rgba(255,255,255,.28) 40%,transparent 48% 100%),radial-gradient(circle at 30% 18%,rgba(160,230,255,.2),transparent 32%);
  mix-blend-mode:screen;
  opacity:.5;
}
.pvs-root.pvs-page-servicios .service.is-active::before{
  transform:scaleY(1)!important;
}
.pvs-root.pvs-page-servicios .service.is-active .service__desc{
  max-height:80px!important;
  opacity:1!important;
}
@media (max-width:980px){
  .pvs-root.pvs-page-servicios .service{
    padding-right:0!important;
  }
  .pvs-root.pvs-page-servicios .services__float{
    display:none!important;
  }
}

/* ====================== PATCH 1.3.9 ====================== */
/* Intro optimizada: mantiene logo acercándose + secuencia de imágenes, pero elimina máscara animada, filtros y capas pesadas. */
.enter.pvs-intro-lite{
  height:185svh!important;
  min-height:185svh!important;
  background:#000!important;
  overflow:visible!important;
}
.enter.pvs-intro-lite .enter__pin{
  position:sticky!important;
  top:0!important;
  height:100svh!important;
  min-height:100svh!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  overflow:hidden!important;
  contain:layout paint style!important;
  isolation:isolate!important;
  background:#000!important;
}
.enter.pvs-intro-lite .enter__pin::before{
  display:none!important;
}
.enter.pvs-intro-lite .enter__pin::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:5!important;
  pointer-events:none!important;
  background:radial-gradient(circle at 50% 50%,transparent 0 48%,rgba(0,0,0,.55) 82%,#000 100%)!important;
}
.enter.pvs-intro-lite .enter__aura{
  display:none!important;
}
.enter.pvs-intro-lite .maskwrap{
  position:relative!important;
  z-index:8!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  transform:translate3d(0,var(--pvs-logo-y,0px),0) scale(var(--pvs-logo-scale,1))!important;
  transform-origin:center center!important;
  opacity:var(--pvs-logo-opacity,1)!important;
  filter:none!important;
  will-change:transform,opacity!important;
  backface-visibility:hidden!important;
}
.enter.pvs-intro-lite .masklogo{
  width:min(84vw,940px)!important;
  aspect-ratio:1000/667!important;
  position:relative!important;
  background:url(../assets/img/logo-white.png) center/contain no-repeat!important;
  -webkit-mask:none!important;
  mask:none!important;
  transform:translateZ(0)!important;
  filter:none!important;
  overflow:visible!important;
  isolation:auto!important;
  will-change:auto!important;
}
.enter.pvs-intro-lite .masklogo__img{
  display:none!important;
}
.enter.pvs-intro-lite .masklogo::before,
.enter.pvs-intro-lite .masklogo::after,
.enter.pvs-intro-lite .masklogo.is-hovered::before,
.enter.pvs-intro-lite .masklogo.is-hovered::after{
  display:none!important;
  content:none!important;
}
.enter.pvs-intro-lite .masklogo.is-hovered{
  transform:translateZ(0)!important;
  filter:none!important;
}
.enter.pvs-intro-lite .enter__gallery{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  z-index:2!important;
  opacity:0;
  pointer-events:none!important;
  background:#000!important;
  transform:translateZ(0)!important;
}
.enter.pvs-intro-lite .gphoto{
  position:absolute!important;
  inset:0!important;
  opacity:0;
  visibility:hidden;
  overflow:hidden!important;
  will-change:auto!important;
  transform:translateZ(0)!important;
  transition:opacity .34s linear!important;
}
.enter.pvs-intro-lite .gphoto.is-active{
  opacity:1!important;
  visibility:visible!important;
  z-index:12!important;
}
.enter.pvs-intro-lite .gphoto img{
  width:100%!important;
  height:100%!important;
  object-fit:cover!important;
  transform:none!important;
  filter:brightness(.78) contrast(1.04) saturate(.95)!important;
  will-change:auto!important;
}
.enter.pvs-intro-lite .gphoto::after{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  background:linear-gradient(180deg,rgba(0,0,0,.22),rgba(0,0,0,.04) 42%,rgba(0,0,0,.5) 100%)!important;
  pointer-events:none!important;
}
.enter.pvs-intro-lite .enter__hint{
  z-index:10!important;
  will-change:transform,opacity!important;
}
@media (max-width:768px){
  .enter.pvs-intro-lite{
    height:165svh!important;
    min-height:165svh!important;
  }
  .enter.pvs-intro-lite .masklogo{
    width:min(90vw,760px)!important;
  }
}

/* ====================== PATCH 1.4.0 - FORMULARIO CONTACTO ====================== */
.contact__formwrap{
  margin-top:clamp(54px,8vw,110px)!important;
  display:grid!important;
  grid-template-columns:minmax(220px,.72fr) minmax(0,1.28fr)!important;
  gap:clamp(28px,5vw,80px)!important;
  align-items:start!important;
  border-top:1px solid var(--line)!important;
  padding-top:clamp(34px,5vw,64px)!important;
}
.contact__formintro h2{
  font-family:var(--font-d)!important;
  font-size:clamp(2rem,5vw,5.6rem)!important;
  line-height:.95!important;
  text-transform:uppercase!important;
  letter-spacing:-.02em!important;
  margin:.9rem 0 1.1rem!important;
}
.contact__formintro p{
  color:var(--grey)!important;
  max-width:34ch!important;
  font-size:clamp(1rem,1.25vw,1.12rem)!important;
  line-height:1.55!important;
}
.pvs-contact-form{
  display:grid!important;
  gap:1.15rem!important;
  width:100%!important;
}
.pvs-form__row{
  display:grid!important;
  grid-template-columns:1fr 1fr!important;
  gap:1.15rem!important;
}
.pvs-contact-form label{
  display:grid!important;
  gap:.55rem!important;
  min-width:0!important;
}
.pvs-contact-form label > span{
  font-family:var(--font-d)!important;
  font-size:.72rem!important;
  letter-spacing:.18em!important;
  text-transform:uppercase!important;
  color:var(--grey)!important;
}
.pvs-contact-form .pvs-form__accept span{
  font-family:var(--font-b)!important;
  font-size:.92rem!important;
  letter-spacing:0!important;
  text-transform:none!important;
  color:var(--grey)!important;
}
.pvs-contact-form input,
.pvs-contact-form textarea{
  width:100%!important;
  border:1px solid rgba(255,255,255,.16)!important;
  border-radius:0!important;
  background:rgba(255,255,255,.035)!important;
  color:#fff!important;
  font:400 1rem/1.35 var(--font-b)!important;
  padding:1rem 1.05rem!important;
  outline:none!important;
  transition:border-color .25s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease)!important;
}
.pvs-contact-form textarea{
  resize:vertical!important;
  min-height:150px!important;
}
.pvs-contact-form input:focus,
.pvs-contact-form textarea:focus{
  border-color:rgba(255,255,255,.72)!important;
  background:rgba(255,255,255,.055)!important;
  box-shadow:0 0 0 1px rgba(255,255,255,.08)!important;
}
.pvs-form__accept{
  display:flex!important;
  grid-template-columns:none!important;
  flex-direction:row!important;
  align-items:flex-start!important;
  gap:.75rem!important;
  color:var(--grey)!important;
  font-size:.92rem!important;
  line-height:1.45!important;
}
.pvs-form__accept input{
  width:18px!important;
  height:18px!important;
  min-width:18px!important;
  margin-top:.15rem!important;
  padding:0!important;
  accent-color:#fff!important;
}
.pvs-form__submit{
  justify-self:start!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  border:1px solid #fff!important;
  border-radius:999px!important;
  background:transparent!important;
  color:#fff!important;
  padding:1rem 2.2rem!important;
  font-family:var(--font-d)!important;
  font-size:.82rem!important;
  font-weight:700!important;
  letter-spacing:.16em!important;
  text-transform:uppercase!important;
  position:relative!important;
  overflow:hidden!important;
  transition:color .35s var(--ease),transform .25s var(--ease)!important;
}
.pvs-form__submit::before{
  content:""!important;
  position:absolute!important;
  inset:0!important;
  z-index:0!important;
  background:#fff!important;
  transform:translateY(102%)!important;
  transition:transform .35s var(--ease)!important;
}
.pvs-form__submit span{
  position:relative!important;
  z-index:1!important;
}
.pvs-form__submit:hover{
  color:#000!important;
  transform:translateY(-1px)!important;
}
.pvs-form__submit:hover::before{
  transform:translateY(0)!important;
}
.pvs-form__notice{
  grid-column:2!important;
  border:1px solid rgba(255,255,255,.18)!important;
  padding:1rem 1.1rem!important;
  font-size:.95rem!important;
  line-height:1.4!important;
  background:rgba(255,255,255,.045)!important;
}
.pvs-form__notice.is-success{
  border-color:rgba(255,255,255,.44)!important;
}
.pvs-form__notice.is-error{
  border-color:rgba(255,255,255,.34)!important;
}
.pvs-form__hp{
  position:absolute!important;
  left:-9999px!important;
  width:1px!important;
  height:1px!important;
  overflow:hidden!important;
}
@media (max-width:900px){
  .contact__formwrap{
    grid-template-columns:1fr!important;
  }
  .pvs-form__notice{
    grid-column:auto!important;
  }
}
@media (max-width:640px){
  .pvs-form__row{
    grid-template-columns:1fr!important;
  }
  .pvs-form__submit{
    width:100%!important;
  }
}
.pvs-contact-form{grid-column:2!important;}
@media (max-width:900px){.pvs-contact-form{grid-column:auto!important;}}
