/* ================================================================
   GEO — páginas de ciudad (v5)
   ----------------------------------------------------------------
   Se carga solo en paginas/geo.php ($extra_css = ['geo']). Todo cuelga
   de body.p-geo. Textos, encabezados y enlaces son los de siempre; aquí
   solo cambia la composición (rejilla de 12 columnas, áreas, sticky,
   tira horizontal, cifras gigantes). El orden del DOM no se toca.
   ================================================================ */

body.p-geo { overflow-x: clip; }
body.p-geo .container { max-width: none; }

/* ---------- Cabecera de sección: titular enorme + párrafo al lado ---------- */
body.p-geo .geo-price .text-center.mb-lg,
body.p-geo .geo-cities .text-center.mb-lg {
  max-width:none; text-align:left;
  display:grid; grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);
  column-gap:clamp(2rem,6vw,9rem); row-gap:1rem; align-items:end;
  margin-bottom:clamp(2rem,4.5vw,5rem);
}
body.p-geo .geo-price .text-center.mb-lg h2,
body.p-geo .geo-cities .text-center.mb-lg h2 { grid-column:1; font-size:clamp(2.3rem, 1rem + 4.6vw, 6rem); line-height:1.02; letter-spacing:-.018em; }
body.p-geo .geo-price .text-center.mb-lg .separator,
body.p-geo .geo-cities .text-center.mb-lg .separator { grid-column:1; margin:0; width:96px; background:linear-gradient(90deg, var(--c-terra), rgba(203,160,99,0)); }
body.p-geo .geo-price .text-center.mb-lg .separator::before,
body.p-geo .geo-cities .text-center.mb-lg .separator::before { left:0; margin-left:0; }
body.p-geo .geo-price .text-center.mb-lg p:not(.eyebrow) { grid-column:2; grid-row:1 / span 2; justify-self:start; margin:0; max-width:46ch; font-size:1.08rem; color:var(--c-text-2); }
@media (max-width:900px) {
  body.p-geo .geo-price .text-center.mb-lg,
  body.p-geo .geo-cities .text-center.mb-lg { grid-template-columns:1fr; }
  body.p-geo .geo-price .text-center.mb-lg p:not(.eyebrow) { grid-column:1; grid-row:auto; }
}

/* ================================================================
   HERO — ~80svh, foto a sangre, ciudad en tipografía gigante
   ================================================================ */
body.p-geo .geo-hero {
  position:relative; isolation:isolate; overflow:hidden; background:#0B0B08; padding:0; border-bottom:0;
  min-height:max(560px, 80svh); display:grid;
}
body.p-geo .geo-hero::after { z-index:1; }
body.p-geo .geo-hero-media {
  --geo-img:none;
  position:absolute; inset:-6% 0; z-index:0; will-change:translate, scale;
  translate:0 calc(var(--geo-p, 0) * 7%);
  background:
    linear-gradient(0deg, rgba(11,11,8,.97) 0%, rgba(11,11,8,.82) 30%, rgba(11,11,8,.30) 62%, rgba(11,11,8,.55) 100%),
    linear-gradient(90deg, rgba(11,11,8,.88) 0%, rgba(11,11,8,.55) 42%, rgba(11,11,8,.10) 100%),
    var(--geo-img-sm, var(--geo-img)) center 55% / cover no-repeat, #14110C;
  animation:geoZoom 2.6s var(--ease) both;
}
@media (min-width:900px) { body.p-geo .geo-hero-media { background:
    linear-gradient(0deg, rgba(11,11,8,.97) 0%, rgba(11,11,8,.82) 30%, rgba(11,11,8,.30) 62%, rgba(11,11,8,.55) 100%),
    linear-gradient(90deg, rgba(11,11,8,.88) 0%, rgba(11,11,8,.55) 42%, rgba(11,11,8,.10) 100%),
    var(--geo-img) center 55% / cover no-repeat, #14110C; } }
@keyframes geoZoom { from { scale:1.16; } to { scale:1.02; }}

body.p-geo .geo-hero-inner {
  position:relative; z-index:2; width:100%; max-width:none; margin:0;
  padding:clamp(3rem,7vw,7rem) var(--gutter) clamp(.8rem,1.6vw,1.6rem);
  display:grid; grid-template-columns:repeat(12, minmax(0,1fr)); column-gap:clamp(1rem,2vw,2.5rem);
  grid-template-rows:1fr auto auto auto; min-height:max(560px, 80svh);
}
body.p-geo .geo-hero h1 {
  grid-column:1 / -1; grid-row:2; margin:0 0 clamp(1.2rem,2.4vw,2.6rem);
  font-size:clamp(2.5rem, 1rem + 7.9vw, 12rem); line-height:.93; letter-spacing:-.03em; max-width:none; color:#F7F1E6; text-wrap:balance;
  overflow-wrap:break-word;
}
body.p-geo .geo-hero h1 em { display:block; color:var(--c-terra-dd); }
body.p-geo .geo-hero .lead {
  grid-column:1 / 8; grid-row:3; margin:0; max-width:52ch; color:#F4EEE3; text-shadow:0 1px 18px rgba(0,0,0,.7);
  font-size:clamp(1.02rem,.9rem + .4vw,1.3rem);
}
body.p-geo .geo-hero-actions { grid-column:8 / -1; grid-row:3; align-self:end; justify-self:end; margin-right:clamp(0px,5vw,84px); display:flex; gap:12px; flex-wrap:wrap; justify-content:flex-end; }
body.p-geo .geo-hero-actions .btn { padding:1.1rem 2.2rem; font-size:.82rem; }
body.p-geo .geo-hero .eyebrow {
  grid-column:1 / -1; grid-row:4; margin:clamp(1.6rem,3.4vw,3.4rem) 0 0; padding-top:1.1rem; border-top:1px solid rgba(203,160,99,.4);
  font-size:.74rem; white-space:normal; align-self:end;
}
body.p-geo .geo-hero-ticks {
  grid-column:9 / -1; grid-row:4; justify-self:end; align-self:end; margin-right:clamp(0px,5vw,84px); display:flex; align-items:flex-end; gap:clamp(8px,1vw,14px); height:22px; margin-bottom:.15rem;
}
body.p-geo .geo-hero-ticks i { display:block; width:1px; height:100%; background:rgba(203,160,99,.55); transform-origin:bottom; animation:geoTick 2.4s var(--ease) infinite alternate; }
body.p-geo .geo-hero-ticks i:nth-child(2) { height:60%; animation-delay:.2s; }
body.p-geo .geo-hero-ticks i:nth-child(3) { height:82%; animation-delay:.4s; }
body.p-geo .geo-hero-ticks i:nth-child(4) { height:48%; animation-delay:.6s; }
body.p-geo .geo-hero-ticks i:nth-child(5) { height:70%; animation-delay:.8s; }
body.p-geo .geo-hero-ticks i:nth-child(6) { height:100%; animation-delay:1s; }
@keyframes geoTick { from { transform:scaleY(.35); opacity:.45; } to { transform:scaleY(1); opacity:1; } }

/* entrada escalonada (no depende de JS) */
body.p-geo .geo-hero-inner > * { animation:geoRise 1.1s var(--ease) both; }
body.p-geo .geo-hero h1 { animation-delay:.12s; }
body.p-geo .geo-hero .lead { animation-delay:.28s; }
body.p-geo .geo-hero-actions { animation-delay:.4s; }
body.p-geo .geo-hero .eyebrow { animation-delay:.5s; }
@keyframes geoRise { from { opacity:0; translate:0 28px; } to { opacity:1; translate:0 0; } }

@media (max-width:900px) {
  body.p-geo .geo-hero h1 { font-size:clamp(2.5rem, 1rem + 10.4vw, 7.4rem); }
  body.p-geo .geo-hero .lead { grid-column:1 / -1; }
  body.p-geo .geo-hero-actions { grid-column:1 / -1; grid-row:4; justify-self:stretch; justify-content:flex-start; margin:1.4rem 0 0; }
  body.p-geo .geo-hero .eyebrow { grid-row:5; }
  body.p-geo .geo-hero-ticks { grid-row:5; }
  body.p-geo .geo-hero-inner { grid-template-rows:1fr auto auto auto auto; }
}
@media (max-width:640px) {
  body.p-geo .geo-hero h1 { font-size:clamp(2.5rem, 11.6vw, 4.4rem); }
  body.p-geo .geo-hero-actions .btn { width:100%; }
  body.p-geo .geo-hero-ticks { display:none; }
  body.p-geo .geo-hero .eyebrow { font-size:.64rem; letter-spacing:.16em; }
  body.p-geo .geo-hero-media { background:
    linear-gradient(0deg, rgba(11,11,8,.98) 0%, rgba(11,11,8,.9) 46%, rgba(11,11,8,.55) 74%, rgba(11,11,8,.45) 100%),
    var(--geo-img-sm, var(--geo-img)) center 40% / cover no-repeat, #14110C; }
}

/* ================================================================
   SERVICIO — composición de 12 columnas: texto largo + placa sticky
   ================================================================ */
body.p-geo .geo-service-grid {
  display:grid; grid-template-columns:repeat(12, minmax(0,1fr)); column-gap:clamp(1rem,2vw,2.5rem); align-items:start;
}
body.p-geo .geo-prose { display:contents; }
body.p-geo .geo-prose > * { grid-column:1 / 8; min-width:0; }
body.p-geo .geo-prose > .eyebrow { grid-row:1; margin:0 0 1.2rem; }
body.p-geo .geo-prose > h2 {
  grid-row:2; margin:0; font-size:clamp(2.3rem, 1rem + 3.5vw, 4.9rem); line-height:1.04; letter-spacing:-.016em; max-width:18ch;
}
body.p-geo .geo-prose > .separator { grid-row:3; margin:clamp(1.4rem,2.4vw,2.6rem) 0; width:96px; }
body.p-geo .geo-prose > p:not(.eyebrow) { margin:0 0 1.25rem; max-width:62ch; font-size:clamp(1.04rem,.98rem + .25vw,1.18rem); line-height:1.8; }
body.p-geo .geo-prose > .separator + p { font-size:clamp(1.25rem,1rem + .75vw,1.75rem); line-height:1.55; color:var(--c-text-1); font-family:var(--font-body); font-weight:300; }

body.p-geo .geo-prose > .geo-figures { grid-column:1 / -1; grid-row:7; }
body.p-geo .geo-figures {
  display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); margin-top:clamp(2.5rem,5vw,5.5rem);
  border-top:1px solid var(--c-border-m); border-bottom:1px solid var(--c-border-m);
}
body.p-geo .geo-fig { min-width:0; padding:clamp(1.4rem,2.4vw,2.8rem) clamp(.8rem,2vw,2.5rem); border-left:1px solid var(--c-border-m); transition:background-color .5s var(--ease); }
body.p-geo .geo-fig:first-child { border-left:0; padding-left:0; }
body.p-geo .geo-fig:hover { background:linear-gradient(0deg, rgba(203,160,99,.12), transparent); }
body.p-geo .geo-fig-n {
  font-family:var(--font-display); font-weight:400; font-variation-settings:'opsz' 26; font-optical-sizing:none;
  font-size:clamp(2.2rem, .6rem + 4.3vw, 7rem); line-height:.95; letter-spacing:-.025em; color:var(--c-text-1); white-space:nowrap;
}
body.p-geo .geo-fig-gold .geo-fig-n { color:var(--c-terra-dd); }
body.p-geo .geo-fig-l { margin-top:1.1rem; font-size:.74rem; font-weight:500; letter-spacing:.18em; text-transform:uppercase; color:var(--c-text-3); line-height:1.6; }

body.p-geo .geo-aside { grid-column:9 / 13; grid-row:1 / 7; position:sticky; top:calc(var(--header-h) + 1.6rem); align-self:start; min-width:0; }
body.p-geo .geo-panel {
  position:relative; border-radius:var(--r-xl); padding:clamp(1.6rem,2.4vw,2.8rem); border:1px solid rgba(203,160,99,.38);
  box-shadow:var(--shadow-lg); overflow:hidden;
}
body.p-geo .geo-panel-title { font-size:.74rem; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--c-terra-dd); margin:0 0 1.2rem; line-height:1.5; }
body.p-geo .geo-chips { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:1.8rem; }
body.p-geo .geo-chip {
  display:inline-block; padding:.5rem 1rem; border-radius:100px; font-size:.88rem; line-height:1.3; color:var(--c-text-1);
  border:1px solid rgba(203,160,99,.42); background:rgba(203,160,99,.07);
  transition:background-color .4s var(--ease), color .4s var(--ease), border-color .4s var(--ease), transform .4s var(--ease);
}
body.p-geo .geo-chip:hover { background:var(--gold-grad); color:#14110C; border-color:transparent; transform:translateY(-2px); }
body.p-geo .geo-panel-foot { border-top:1px solid rgba(203,160,99,.3); padding-top:1.4rem; }
body.p-geo .geo-panel-note { font-size:.95rem; line-height:1.65; color:var(--c-text-2); margin-bottom:1.2rem; }
body.p-geo .geo-panel-foot .btn { width:100%; justify-content:center; }

body.p-geo .geo-rating {
  margin-top:clamp(.7rem,1vw,1rem); border-radius:var(--r-xl); padding:clamp(1.3rem,1.8vw,1.9rem) clamp(1.3rem,2vw,2.2rem);
  background:var(--gold-grad); --c-text-1:#14110C; --c-text-2:#2A2218;
  box-shadow:0 1px 0 rgba(255,255,255,.45) inset, 0 18px 40px -22px rgba(60,40,10,.55);
}
body.p-geo .geo-rating-row { display:flex; align-items:center; flex-wrap:wrap; gap:4px 10px; margin-bottom:.7rem; }
body.p-geo .geo-rating .star-rating { color:#14110C; }
body.p-geo .geo-rating-n { font-size:.95rem; font-weight:600; color:#14110C; }
body.p-geo .geo-rating-c { font-size:.82rem; color:#2A2218; }
body.p-geo .geo-rating p { font-size:.95rem; line-height:1.6; color:#2A2218; margin:0; }

@media (max-width:1100px) {
  body.p-geo .geo-prose > * { grid-column:1 / 9; }
  body.p-geo .geo-aside { grid-column:9 / -1; }
}
@media (max-width:900px) {
  body.p-geo .geo-service-grid { display:block; }
  body.p-geo .geo-prose { display:block; }
  body.p-geo .geo-prose > h2 { max-width:none; font-size:clamp(2.2rem, 1rem + 6vw, 4rem); }
  body.p-geo .geo-aside { position:static; margin-top:clamp(2rem,5vw,3rem); }
  body.p-geo .geo-chip { font-size:.84rem; }
}
@media (max-width:700px) {
  body.p-geo .geo-figures { grid-template-columns:1fr; }
  body.p-geo .geo-fig, body.p-geo .geo-fig:first-child { border-left:0; padding:1.2rem 0; border-top:1px solid var(--c-border-m); display:flex; align-items:baseline; justify-content:space-between; gap:1rem; }
  body.p-geo .geo-fig:first-child { border-top:0; }
  body.p-geo .geo-fig-n { font-size:clamp(2rem, 1rem + 6vw, 3rem); }
  body.p-geo .geo-fig-l { margin:0; text-align:right; font-size:.68rem; }
}

/* ================================================================
   BANDA DE FOTOS — tres marcos colgados (decorativos)
   ================================================================ */
body.p-geo .geo-band {
  display:grid; grid-template-columns:repeat(3, minmax(0,1fr)); gap:clamp(10px,2vw,36px);
  padding:0 var(--gutter) clamp(2.5rem,6vw,6rem); background:var(--c-bg); align-items:start;
}
body.p-geo .geo-frame {
  --geo-img:none;
  display:block; aspect-ratio:4/5; border-radius:3px; border:1px solid rgba(203,160,99,.65);
  background:#14110C; padding:0; position:relative; overflow:hidden; box-shadow:var(--shadow-md);
}
body.p-geo .geo-frame::before { content:''; position:absolute; inset:clamp(7px,.8vw,12px); background:var(--geo-img) center/cover no-repeat, #1B1712; transition:transform 1.4s var(--ease); }
body.p-geo .geo-frame::after { content:''; position:absolute; inset:clamp(15px,1.6vw,22px); border:1px solid rgba(255,238,205,.32); pointer-events:none; }
body.p-geo .geo-frame:hover::before { transform:scale(1.04); }
body.p-geo .geo-frame:nth-child(2) { margin-top:clamp(1.5rem,4vw,5rem); }
@media (max-width:640px) {
  body.p-geo .geo-band { grid-template-columns:repeat(2, minmax(0,1fr)); }
  body.p-geo .geo-frame:nth-child(3) { display:none; }
  body.p-geo .geo-frame:nth-child(2) { margin-top:1.5rem; }
}

/* ================================================================
   PRECIO — mosaico (bento): una pieza oscura, una dorada
   ================================================================ */
body.p-geo .geo-tiles {
  display:grid; grid-template-columns:repeat(12, minmax(0,1fr)); gap:clamp(10px,1.3vw,22px);
}
body.p-geo .geo-tile {
  position:relative; isolation:isolate; overflow:hidden; display:flex; flex-direction:column; min-width:0;
  min-height:clamp(230px, 22vw, 400px); padding:clamp(1.4rem,2.2vw,2.6rem);
  background:var(--c-white); border:1px solid var(--c-border-m); border-radius:var(--r-xl);
  transition:transform .6s var(--ease), border-color .5s var(--ease), box-shadow .6s var(--ease);
}
body.p-geo .geo-tile::before { content:''; position:absolute; inset:0; z-index:-1; opacity:0; transition:opacity .5s var(--ease); background:radial-gradient(420px circle at var(--mx,50%) var(--my,0%), rgba(203,160,99,.28), transparent 62%); }
body.p-geo .geo-tile:hover { transform:translateY(-6px); border-color:var(--c-terra); box-shadow:var(--shadow-lg); }
body.p-geo .geo-tile:hover::before { opacity:1; }
body.p-geo .geo-tile-1 { grid-column:1 / 7; grid-row:span 2; min-height:clamp(440px, 38vw, 680px); }
body.p-geo .geo-tile-2 { grid-column:7 / 13; }
body.p-geo .geo-tile-3 { grid-column:7 / 13; }
body.p-geo .geo-tile-k { font-size:.74rem; font-weight:500; letter-spacing:.2em; text-transform:uppercase; color:var(--c-terra-dd); margin:0; }
body.p-geo .geo-tile-n {
  margin-top:auto; padding-top:clamp(1.6rem,3vw,3rem); font-family:var(--font-display); font-weight:400; font-variation-settings:'opsz' 26; font-optical-sizing:none;
  font-size:clamp(4.5rem, 2rem + 8vw, 11rem); line-height:.9; letter-spacing:-.04em; color:var(--c-text-1);
}
body.p-geo .geo-tile-d { margin:1rem 0 0; font-size:clamp(1rem,.95rem + .25vw,1.18rem); line-height:1.55; color:var(--c-text-2); max-width:34ch; }
/* pieza oscura destacada */
body.p-geo .geo-tile-1 {
  --c-white:#14110C; --c-text-1:#F4EEE3; --c-text-2:rgba(244,238,227,.82); --c-terra-dd:#D9B77E; --c-border-m:rgba(203,160,99,.4);
  background:radial-gradient(90% 70% at 85% 0%, rgba(203,160,99,.28), transparent 60%), linear-gradient(160deg,#1B1712,#0B0B08);
}
body.p-geo .geo-tile-1 .geo-tile-n { font-size:clamp(8rem, 3rem + 15vw, 22rem); color:var(--c-terra-dd); }
/* pieza dorada */
body.p-geo .geo-tile-3 { --c-text-1:#14110C; --c-text-2:#2A2218; --c-terra-dd:#4F3A18; background:var(--gold-grad); border-color:transparent; }
body.p-geo .geo-tile-3:hover { filter:brightness(1.05); }
@media (max-width:900px) {
  body.p-geo .geo-tiles { grid-template-columns:repeat(2, minmax(0,1fr)); }
  body.p-geo .geo-tile-1 { grid-column:1 / -1; grid-row:auto; min-height:340px; }
  body.p-geo .geo-tile-2, body.p-geo .geo-tile-3 { grid-column:auto; }
  body.p-geo .geo-tile-1 .geo-tile-n { font-size:clamp(7rem, 3rem + 20vw, 13rem); }
}
@media (max-width:560px) {
  body.p-geo .geo-tiles { grid-template-columns:1fr; }
  body.p-geo .geo-tile { min-height:200px; }
}
body.p-geo .geo-price-note {
  margin:clamp(2.5rem,5vw,5rem) 0 0; padding:0 0 0 clamp(1.1rem,2vw,2rem); border-left:2px solid var(--c-terra);
  max-width:60ch; font-family:var(--font-display); font-style:italic; font-variation-settings:'opsz' 12; font-size:clamp(1.25rem,1rem + .9vw,1.9rem); line-height:1.45; color:var(--c-text-1); text-align:left;
}

/* ================================================================
   FAQ — titular fijo a la izquierda, preguntas numeradas a la derecha
   ================================================================ */
body.p-geo .geo-faq { overflow:hidden; }
body.p-geo .geo-faq > .section { background:transparent !important; }
body.p-geo .geo-faq .container { display:grid; grid-template-columns:minmax(0,5fr) minmax(0,7fr); gap:clamp(2rem,6vw,9rem); align-items:start; }
body.p-geo .geo-faq .text-center.mb-lg {
  display:block; position:sticky; top:calc(var(--header-h) + 2rem); max-width:none; text-align:left; margin:0;
}
body.p-geo .geo-faq .text-center.mb-lg h2 { font-size:clamp(2.2rem,1rem + 3.6vw,4.8rem); line-height:1.04; letter-spacing:-.015em; }
body.p-geo .geo-faq .text-center.mb-lg .separator-center { margin:1.6rem 0 0; width:96px; background:linear-gradient(90deg, var(--c-terra), rgba(203,160,99,0)); }
body.p-geo .geo-faq .text-center.mb-lg .separator::before { left:0; margin-left:0; }
body.p-geo .geo-faq .faq-list { max-width:none !important; margin:0 !important; counter-reset:geoq; }
body.p-geo .geo-faq .faq-item {
  counter-increment:geoq; display:grid; grid-template-columns:clamp(3.2rem,6.4vw,7rem) minmax(0,1fr); align-items:start;
}
body.p-geo .geo-faq .faq-item::before {
  content:counter(geoq, decimal-leading-zero) / ''; grid-row:1 / 3; padding-top:clamp(1.15rem,1.8vw,1.9rem);
  font-family:var(--font-display); font-variation-settings:'opsz' 26; font-size:clamp(1.7rem,1rem + 2vw,3.2rem); line-height:1;
  color:rgba(203,160,99,.38); transition:color .5s var(--ease);
}
body.p-geo .geo-faq .faq-item:hover::before { color:var(--c-terra); }
body.p-geo .geo-faq .faq-q { grid-column:2; font-size:clamp(1.08rem,.95rem + .4vw,1.45rem); padding:clamp(1.3rem,2vw,2.1rem) .15rem; }
body.p-geo .geo-faq .faq-a { grid-column:2; font-size:1.06rem; max-width:62ch; }
@media (max-width:900px) {
  body.p-geo .geo-faq .container { grid-template-columns:1fr; }
  body.p-geo .geo-faq .text-center.mb-lg { position:static; }
}
@media (max-width:480px) {
  body.p-geo .geo-faq .faq-item { grid-template-columns:2.6rem minmax(0,1fr); }
}

/* ================================================================
   OTRAS CIUDADES — tira horizontal arrastrable de tarjetas de imagen
   ================================================================ */
body.p-geo .geo-cities { padding-bottom:clamp(3rem,6vw,6rem); overflow:hidden; }
body.p-geo .geo-cities > .container { padding:0; }
body.p-geo .geo-cities .text-center.mb-lg { padding:0 var(--gutter); }
body.p-geo .geo-strip {
  counter-reset:geocity; display:flex; gap:clamp(12px,1.5vw,28px); overflow-x:auto; overflow-y:hidden; overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory; scroll-padding-inline:var(--gutter); padding:1rem var(--gutter) 3.2rem; margin:0;
  scrollbar-width:none; -webkit-overflow-scrolling:touch; cursor:grab;
}
body.p-geo .geo-strip::-webkit-scrollbar { display:none; }
body.p-geo .geo-strip.is-dragging { cursor:grabbing; scroll-snap-type:none; }
body.p-geo .geo-strip.is-dragging .geo-city { pointer-events:none; }
body.p-geo .geo-city {
  --geo-img:none; counter-increment:geocity;
  position:relative; isolation:isolate; overflow:hidden; flex:0 0 clamp(270px, 25vw, 560px); aspect-ratio:4/5; scroll-snap-align:start;
  display:flex; flex-direction:column; justify-content:flex-end; padding:clamp(1.3rem,1.9vw,2.2rem);
  border-radius:var(--r-xl); border:1px solid rgba(203,160,99,.45); background:#14110C; color:#F4EEE3; text-decoration:none;
  box-shadow:var(--shadow-md); transition:transform .7s var(--ease), box-shadow .7s var(--ease), border-color .5s var(--ease);
  -webkit-user-drag:none; user-select:none;
}
body.p-geo .geo-city:nth-child(even) { margin-top:clamp(0px,2.6vw,3rem); }
body.p-geo .geo-city::before { content:''; position:absolute; inset:0; z-index:-2; background:var(--geo-img) center/cover no-repeat, #1B1712; transition:transform 1.3s var(--ease), filter .9s var(--ease); filter:saturate(.92) brightness(.96); }
body.p-geo .geo-city::after {
  content:''; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background:linear-gradient(0deg, rgba(11,11,8,.94) 0%, rgba(11,11,8,.66) 32%, rgba(11,11,8,0) 62%, rgba(11,11,8,.28) 100%);
}
body.p-geo .geo-city:hover { transform:translateY(-8px); box-shadow:var(--shadow-lg); border-color:var(--c-terra); background:#14110C; }
body.p-geo .geo-city:hover::before { transform:scale(1.07); filter:none; }
body.p-geo .geo-city .related-card-label { color:#D9B77E; margin-bottom:.7rem; font-size:.7rem; }
body.p-geo .geo-city .related-card-title { color:#F7F1E6; font-size:clamp(1.45rem,1rem + 1.5vw,2.5rem); line-height:1.08; font-weight:400; font-variation-settings:'opsz' 26; }
body.p-geo .geo-no { position:absolute; left:clamp(1.3rem,1.9vw,2.2rem); top:clamp(1rem,1.5vw,1.8rem); }
body.p-geo .geo-no::before { content:counter(geocity, decimal-leading-zero) / ''; font-family:var(--font-display); font-variation-settings:'opsz' 26; font-size:clamp(3rem,2rem + 3vw,6rem); line-height:1; color:rgba(244,238,227,.28); transition:color .6s var(--ease); }
body.p-geo .geo-city:hover .geo-no::before { color:rgba(217,183,126,.7); }
body.p-geo .geo-go {
  position:absolute; right:clamp(1rem,1.5vw,1.6rem); top:clamp(1rem,1.5vw,1.6rem); width:46px; height:46px; border-radius:50%;
  display:flex; align-items:center; justify-content:center; color:#F4EEE3; border:1px solid rgba(203,160,99,.6);
  background:rgba(20,17,12,.45); -webkit-backdrop-filter:blur(10px); backdrop-filter:blur(10px);
  transition:background-color .4s var(--ease), color .4s var(--ease), transform .5s var(--ease);
}
body.p-geo .geo-city:hover .geo-go { background:var(--gold-grad); color:#14110C; transform:rotate(45deg); }
/* tarjeta destacada: Bucaramanga, dorada */
body.p-geo .geo-city-main { background:var(--gold-grad); border-color:transparent; }
body.p-geo .geo-city-main::before { display:none; }
body.p-geo .geo-city-main::after { background:radial-gradient(80% 60% at 100% 0%, rgba(255,255,255,.35), transparent 60%); }
body.p-geo .geo-city-main .related-card-label { color:#4F3A18; }
body.p-geo .geo-city-main .related-card-title { color:#14110C; }
body.p-geo .geo-city-main .geo-no::before { color:rgba(20,17,12,.22); }
body.p-geo .geo-city-main:hover { background:var(--gold-grad); border-color:transparent; filter:brightness(1.05); }
body.p-geo .geo-city-main:hover .geo-no::before { color:rgba(20,17,12,.4); }
body.p-geo .geo-city-main .geo-go { color:#14110C; border-color:rgba(20,17,12,.45); background:rgba(255,255,255,.3); }
body.p-geo .geo-city-main:hover .geo-go { background:#14110C; color:#F4EEE3; }

body.p-geo .geo-controls { display:flex; align-items:center; gap:1rem; padding:0 var(--gutter); margin-top:-1.4rem; }
body.p-geo .geo-progress { flex:1; height:2px; background:var(--c-border-m); position:relative; overflow:hidden; border-radius:2px; }
body.p-geo .geo-progress i { position:absolute; left:0; top:0; bottom:0; width:var(--gp-w,20%); background:var(--gold-grad); transform:translateX(var(--gp-x,0)); border-radius:2px; }
body.p-geo .geo-arrow { width:52px; height:52px; border-radius:50%; border:1px solid var(--c-border-m); background:var(--c-white); color:var(--c-text-1); display:flex; align-items:center; justify-content:center; cursor:pointer; transition:all var(--transition); }
body.p-geo .geo-arrow:hover { border-color:var(--c-terra); background:var(--c-terra); color:#14110C; }
body.p-geo .geo-arrow[disabled] { opacity:.35; pointer-events:none; }
@media (max-width:900px) {
  body.p-geo .geo-city { flex-basis:min(78vw, 360px); }
  body.p-geo .geo-city:nth-child(even) { margin-top:0; }
}

/* ================================================================
   CTA FINAL — titular gigante a la izquierda, acción a la derecha
   ================================================================ */
body.p-geo .cta-band { text-align:left; padding:clamp(5rem,12vw,13rem) 0; }
body.p-geo .cta-band > .container { display:grid; grid-template-columns:minmax(0,1fr) auto; column-gap:clamp(2rem,5vw,8rem); align-items:end; }
body.p-geo .cta-band .eyebrow { grid-column:1 / -1; justify-content:flex-start; margin:0 0 1.5rem; }
body.p-geo .cta-band .eyebrow::after { display:none; }
body.p-geo .cta-band h2 { grid-column:1 / -1; grid-row:2; font-size:clamp(2.4rem, .8rem + 5.9vw, 9rem); line-height:.97; letter-spacing:-.026em; margin:0 0 clamp(1.8rem,3.4vw,3.6rem); max-width:none; }
body.p-geo .cta-band p:not(.eyebrow) { grid-column:1; grid-row:3; align-self:center; margin:0; max-width:34ch; font-size:1.15rem; }
body.p-geo .geo-cta-actions { grid-column:2; grid-row:3; display:flex; gap:16px; flex-wrap:wrap; justify-content:flex-end; align-self:center; }
@media (max-width:900px) {
  body.p-geo .cta-band > .container { grid-template-columns:1fr; }
  body.p-geo .cta-band h2, body.p-geo .cta-band p:not(.eyebrow), body.p-geo .geo-cta-actions { grid-column:1; grid-row:auto; }
  body.p-geo .cta-band h2 { font-size:clamp(2.4rem, 1rem + 8.6vw, 6rem); }
  body.p-geo .geo-cta-actions { justify-content:flex-start; margin-top:1.6rem; }
  body.p-geo .cta-band p:not(.eyebrow) { margin-top:1.4rem; }
}

/* ================================================================
   MOVIMIENTO
   ================================================================ */
body.p-geo .reveal { transition-delay:calc(var(--i, 0) * 85ms); }
@media (prefers-reduced-motion: reduce) {
  body.p-geo .geo-hero-media, body.p-geo .geo-hero-inner > *, body.p-geo .geo-hero-ticks i { animation:none; }
  body.p-geo .geo-hero-media { translate:none; scale:1.02; }
  body.p-geo .reveal { transition-delay:0s; }
  body.p-geo .geo-tile, body.p-geo .geo-city, body.p-geo .geo-chip, body.p-geo .geo-frame::before, body.p-geo .geo-city::before { transition:none; }
}
