/* VÉRTICE STUDIO — V4 / refinamiento editorial */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
:root{
  --bg:#fff;--text:#171717;--secondary:#777;--muted:#a6a6a6;
  --dot:#bfc2c1;
  --sans:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',Arial,sans-serif;
  --mono:'JetBrains Mono','SF Mono',Consolas,monospace;
}
html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
body{font-family:var(--sans);background:var(--bg);color:var(--text);line-height:1.5;overflow-x:hidden}
a{color:inherit;text-decoration:none}
.container{width:100%;max-width:1360px;margin:0 auto;padding:0 34px}

/* HEADER */
.site-header{position:relative;z-index:20;background:#fff}
.header-inner{height:88px;display:flex;align-items:center;justify-content:space-between}
.logo{display:flex;align-items:center;flex-shrink:0}
.logo img{height:78px;width:170px;display:block}
.main-nav{display:flex;align-items:center;gap:42px}
.nav-link{font-size:11px;font-weight:400;letter-spacing:.19em;text-transform:uppercase;color:#858585;position:relative;padding:8px 0 7px}
.nav-link:not(.disabled){cursor:pointer;transition:color .28s ease}
.nav-link:not(.disabled)::after{content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;background:#555;transition:right .32s cubic-bezier(.2,.65,.2,1)}
.nav-link:not(.disabled):hover{color:var(--text)}
.nav-link:not(.disabled):hover::after{right:0}
.nav-link.active{color:var(--text)}
.nav-link.active::after{right:0}
.nav-link.disabled{cursor:default;pointer-events:none;color:#969696}
.menu-toggle{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:8px;background:none;border:0}
.menu-toggle span{width:20px;height:1px;background:#171717}

/* HOME */
.hero-section{position:relative}
.hero-image-wrapper{position:relative;width:100%;aspect-ratio:2.28/1;overflow:hidden}
.hero-image{width:100%;height:100%;display:block;object-fit:cover;object-position:center 51%}
.hero-editorial-code{position:absolute;right:24px;bottom:19px;text-align:right;color:rgba(255,255,255,.97);font-family:var(--mono);font-size:9px;line-height:1.85;letter-spacing:.13em;text-shadow:0 1px 5px rgba(0,0,0,.55)}
.tagline-section{position:relative;padding:25px 0 34px;text-align:center}
.tagline-inner{position:relative;min-height:155px;display:flex;flex-direction:column;align-items:center}
.tagline-services{font-size:14px;font-weight:300;letter-spacing:.25em;text-transform:uppercase;color:#858585;margin-bottom:25px}
.tagline-main{font-size:13px;font-weight:300;letter-spacing:.30em;text-transform:uppercase;color:#171717;line-height:1.85}
.dot-pattern{position:absolute;width:94px;height:94px;opacity:1;pointer-events:none}
.dot-pattern::before{content:"";position:absolute;inset:0;background-image:radial-gradient(circle,var(--dot) 1.55px,transparent 1.75px);background-size:9.5px 9.5px}
.dot-pattern-bl{left:34px;bottom:0}
.dot-pattern-br{right:34px;bottom:0}

/* CONTACT */
.contact-section{position:relative;min-height:calc(100vh - 88px);padding:45px 0 65px}
.contact-layout{min-height:calc(100vh - 198px);display:grid;grid-template-columns:minmax(360px,.72fr) minmax(520px,1.28fr);gap:60px;align-items:start}
.contact-copy{padding-top:2px}
.contact-label{font-size:11px;font-weight:400;letter-spacing:.20em;text-transform:uppercase;color:#777;margin-bottom:25px}
.contact-title{font-size:34px;font-weight:300;letter-spacing:.17em;text-transform:uppercase;color:#171717;margin-bottom:48px}
.contact-info{max-width:330px}
.contact-info-block{margin-bottom:32px}
.contact-info-block .studio-name,.contact-info-block .studio-location{font-size:12px;font-weight:400;letter-spacing:.16em;text-transform:uppercase}
.contact-info-block .studio-name{margin-bottom:3px;color:#333}
.contact-info-block .studio-location{color:#777}
.contact-detail{display:flex;flex-direction:column;gap:6px;font-size:13px;font-weight:300;letter-spacing:.06em;color:#666;line-height:1.7}
.contact-detail a{width:max-content;transition:color .25s ease}
.contact-detail a:hover{color:#171717}
.contact-links{margin-top:58px;display:flex;flex-direction:column;align-items:flex-start;gap:20px}
.contact-link{font-size:11px;font-weight:400;letter-spacing:.20em;text-transform:uppercase;color:#252525;display:inline-flex;align-items:center;gap:8px;padding-bottom:6px;border-bottom:1px solid #555;transition:opacity .25s ease,border-color .25s ease,transform .25s ease}
.contact-link:hover{opacity:.62;border-color:#999;transform:translateX(3px)}
.contact-link span{font-size:12px}
.contact-graphic{position:relative;min-height:510px;height:calc(100vh - 220px);max-height:620px;display:flex;justify-content:flex-end;overflow:hidden}
.contact-dot-pattern{width:100%;height:100%;min-height:510px;background-image:radial-gradient(circle,var(--dot) 1.55px,transparent 1.8px);background-size:17px 17px;opacity:.85}
.contact-graphic::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,#fff 0%,rgba(255,255,255,0) 20%);pointer-events:none}
.contact-section::before{content:"";position:absolute;left:max(34px,calc((100vw - 1360px)/2 + 34px));bottom:28px;width:62px;height:62px;opacity:.72;background-image:radial-gradient(circle,var(--dot) 1.45px,transparent 1.65px);background-size:8.5px 8.5px}
.contact-section::after{content:"";position:absolute;right:max(34px,calc((100vw - 1360px)/2 + 34px));bottom:28px;width:88px;height:42px;opacity:.72;background-image:radial-gradient(circle,var(--dot) 1.45px,transparent 1.65px);background-size:8.5px 8.5px}

/* TRANSICIONES */
.page-transition{animation:pageIn .55s cubic-bezier(.2,.65,.2,1) both}
@keyframes pageIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}
body.is-leaving .page-transition{animation:pageOut .38s cubic-bezier(.4,0,1,1) both}
@keyframes pageOut{from{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-7px)}}
@media(prefers-reduced-motion:reduce){.page-transition,body.is-leaving .page-transition{animation:none}.nav-link::after,.contact-link{transition:none}}

/* RESPONSIVE */
@media(max-width:1050px){
  .container{padding:0 28px}
  .logo img{height:72px}
  .main-nav{gap:30px}
  .hero-image-wrapper{aspect-ratio:2.08/1}
  .contact-layout{grid-template-columns:minmax(300px,.72fr) minmax(430px,1.28fr);gap:35px}
  .contact-dot-pattern{min-height:460px}
  .contact-graphic{min-height:460px}
}
@media(max-width:768px){
  .container{padding:0 22px}
  .header-inner{height:72px}
  .logo img{height:59px}
  .main-nav{display:none;position:absolute;top:72px;left:0;right:0;background:#fff;flex-direction:column;align-items:flex-start;padding:22px;gap:20px;border-bottom:1px solid #eee}
  .main-nav.open{display:flex}
  .menu-toggle{display:flex}
  .hero-image-wrapper{aspect-ratio:1.55/1}
  .hero-editorial-code{right:14px;bottom:12px;font-size:7px}
  .tagline-section{padding:25px 0 48px}
  .tagline-inner{min-height:145px}
  .tagline-services{font-size:10px;letter-spacing:.18em;margin-bottom:23px}
  .tagline-main{font-size:10px;letter-spacing:.22em}
  .dot-pattern{width:58px;height:58px}
  .dot-pattern::before{background-size:8px 8px}
  .dot-pattern-bl{left:22px}.dot-pattern-br{right:22px}
  .contact-section{padding:38px 0 85px;min-height:calc(100vh - 72px)}
  .contact-layout{min-height:0;display:block}
  .contact-title{font-size:27px;margin-bottom:40px}
  .contact-info{max-width:none}
  .contact-info-block .studio-name,.contact-info-block .studio-location{font-size:11px}
  .contact-detail{font-size:12px}
  .contact-links{margin-top:45px}
  .contact-graphic{margin-top:58px;height:300px;min-height:300px}
  .contact-dot-pattern{min-height:300px}
  .contact-section::before{left:22px;bottom:18px}
  .contact-section::after{right:22px;bottom:18px}
}


/* V4 FINAL — logo scale refinement
   Keep the approved high-resolution original logo; only reduce its visual scale
   slightly so it does not compete with the hero image. */
header img[src*="logo_vertice"],
.site-header img[src*="logo_vertice"],
.header img[src*="logo_vertice"] {
  width: min(170px, 18vw);
  height: auto;
  object-fit: contain;
}


/* V8.1 — movimiento visible pero elegante */
.hero-image-wrapper{cursor:default}
.hero-image-motion{position:absolute;inset:-3%;overflow:hidden;transform:translate3d(0,0,0);animation:v8HeroDrift 12s ease-in-out infinite alternate;will-change:transform}
.hero-image-motion .hero-image{width:100%;height:100%;display:block;object-fit:cover;object-position:center 51%;transform:translate3d(var(--hero-x,0px),var(--hero-y,0px),0) scale(1.045);transition:transform .18s ease-out;will-change:transform}
@keyframes v8HeroDrift{0%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-.35%,.15%,0) scale(1.018)}100%{transform:translate3d(.35%,-.12%,0) scale(1.035)}}

.dot-pattern{overflow:visible}
.dot-pattern::before{transform:translate3d(var(--dot-x,0px),var(--dot-y,0px),0) scale(var(--dot-scale,1));transform-origin:center;transition:transform .12s ease-out,background-position .12s ease-out;will-change:transform,background-position}
.dot-pattern::after{content:"";position:absolute;inset:-8px;background:radial-gradient(circle at var(--glow-x,50%) var(--glow-y,50%),rgba(120,120,120,.12),transparent 34%);opacity:var(--dot-glow,0);transition:opacity .25s ease}
.contact-dot-pattern,.study-dots{transform:translate3d(var(--grid-x,0px),var(--grid-y,0px),0) scale(var(--grid-scale,1));transform-origin:center;transition:transform .16s ease-out;background-position:var(--bg-x,0px) var(--bg-y,0px)!important;will-change:transform,background-position}

/* Entrada editorial */
.study-label,.study-title,.study-intro,.study-item,.study-closing,.contact-label,.contact-title,.contact-info-block,.contact-detail,.contact-links,.contact-graphic{opacity:0;transform:translateY(14px);transition:opacity .65s cubic-bezier(.2,.65,.2,1),transform .65s cubic-bezier(.2,.65,.2,1);transition-delay:var(--reveal-delay,0ms)}
.v8-revealed{opacity:1!important;transform:none!important}

@media(max-width:768px){.hero-image-motion{inset:-4%}.hero-image-motion .hero-image{transform:translate3d(var(--hero-x,0px),var(--hero-y,0px),0) scale(1.03)} }


/* =========================================================
   V8.3 — RETÍCULAS GEOMÉTRICAS INDEPENDIENTES
   Izquierda = cuadrado | Derecha = rectángulo
   Ambas con gradiente de densidad/opacidad.
   ========================================================= */

.home-grids-v83 {
  pointer-events: none;
}

.v83-grid {
  position: absolute;
  pointer-events: auto;
  overflow: hidden;
  --gx: 0px;
  --gy: 0px;
  --gs: 1;
  transition: transform 700ms cubic-bezier(.22,.61,.36,1);
  will-change: transform;
  background-repeat: repeat;
}

/* Square grid */
.v83-grid-left {
  width: 112px;
  height: 112px;
  background-size: 9px 9px;
  background-image:
    radial-gradient(circle at 50% 50%,
      rgba(70,70,70,.72) 0 1.35px,
      transparent 1.5px);
  -webkit-mask-image:
    radial-gradient(circle at 52% 48%,
      #000 0 22%,
      rgba(0,0,0,.78) 42%,
      rgba(0,0,0,.42) 68%,
      transparent 100%);
  mask-image:
    radial-gradient(circle at 52% 48%,
      #000 0 22%,
      rgba(0,0,0,.78) 42%,
      rgba(0,0,0,.42) 68%,
      transparent 100%);
}

/* Horizontal rectangular grid */
.v83-grid-right {
  width: 190px;
  height: 88px;
  background-size: 9px 9px;
  background-image:
    radial-gradient(circle at 50% 50%,
      rgba(70,70,70,.72) 0 1.35px,
      transparent 1.5px);
  -webkit-mask-image:
    radial-gradient(ellipse at 48% 50%,
      #000 0 20%,
      rgba(0,0,0,.78) 42%,
      rgba(0,0,0,.42) 70%,
      transparent 100%);
  mask-image:
    radial-gradient(ellipse at 48% 50%,
      #000 0 20%,
      rgba(0,0,0,.78) 42%,
      rgba(0,0,0,.42) 70%,
      transparent 100%);
}

.v83-grid.is-active {
  transform: translate3d(var(--gx),var(--gy),0) scale(var(--gs));
}

.v83-grid::after {
  content: "";
  position: absolute;
  inset: 0;
  background: inherit;
  opacity: .22;
  transform: translate3d(calc(var(--gx) * -.35),calc(var(--gy) * -.35),0);
  transition: transform 500ms cubic-bezier(.22,.61,.36,1), opacity 500ms ease;
  pointer-events: none;
}

.v83-grid.is-active::after {
  opacity: .42;
}

@media (max-width: 768px) {
  .v83-grid-left { width: 86px; height: 86px; background-size: 8px 8px; }
  .v83-grid-right { width: 142px; height: 70px; background-size: 8px 8px; }
}

@media (prefers-reduced-motion: reduce) {
  .v83-grid,
  .v83-grid::after {
    transition: none !important;
  }
}

/* =========================================================
   V8.5 — RETÍCULA DE PUNTOS INDEPENDIENTES
   ========================================================= */

.home-grids-v83 {
  display: none !important;
}

.v84-grid-wrap {
  position: relative;
  width: 100%;
  height: 187px;
  margin: 32px 0 0;
  overflow: hidden;
  pointer-events: none;
}

.v84-grid {
  position: absolute;
  inset: 14px 0;
  pointer-events: auto;
  display: grid;
  grid-template-columns: repeat(96, 10.35px);
  grid-auto-rows: 10.35px;
  justify-content: space-between;
  align-content: space-between;
  padding: 0 18px;
  overflow: hidden;
}

.v85-dot {
  width: 1.92px;
  height: 1.92px;
  border-radius: 50%;
  background: rgba(95, 95, 95, var(--base-opacity));
  transform: translate3d(var(--dx, 0px), var(--dy, 0px), 0)
             scale(var(--scale, 1));
  transition:
    transform 360ms cubic-bezier(.2,.75,.25,1),
    background-color 360ms ease;
  will-change: transform;
}

@media (hover: hover) and (pointer: fine) {
  .v85-dot {
    cursor: default;
  }
}

@media (max-width: 1200px) {
  .v84-grid {
    grid-template-columns: repeat(76, 10.35px);
  }
}

@media (max-width: 768px) {
  .v84-grid-wrap {
    height: 139px;
    margin-top: 24px;
  }
  .v84-grid {
    inset: 10px 0;
    grid-template-columns: repeat(48, 10.35px);
    padding: 0 10px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .v85-dot {
    transition: none;
  }
}
