/* ================= TOKENS =================
   Paleta de marca (anclas exactas, no aproximar):
     amarillo #FFE043 · crema #FAF3D1 · teal #82DDD8 · negro #000
   Derivados (mezcla de las anclas con blanco): --teal-tint, --yellow-soft.
   Reglas de uso: negro para texto, bordes y botones sólidos. Amarillo y teal
   SOLO como relleno (nunca como texto ni como borde: sobre blanco dan 1.31 y
   1.58 de contraste). Sitio solo en claro: no hay variante oscura.
   Los tokens antiguos (--paper, --band, --on-dark, --accent…) se conservan y
   se remapean, de modo que todo el CSS que ya los usa se actualiza solo. */
:root{
  --yellow:#FFE043; --cream:#FAF3D1; --teal:#82DDD8; --black:#000;
  --teal-tint:#E0F7F5; --yellow-soft:#FFF3B4;

  --paper:#FFF; --paper-2:var(--cream); --band:var(--yellow);
  --ink:#000; --ink-2:#333;
  --on-dark:#000; --on-dark-2:#333;
  --line:rgba(0,0,0,.2); --line-dark:rgba(0,0,0,.35);
  --accent:#000; --accent-bright:var(--teal); --accent-ink:#FFF;

  --stroke:#000;
  --r-card:28px; --r-box:16px; --r-pill:999px;
  color-scheme:light;
}

/* ================= BASE ================= */
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;background:var(--paper);color:var(--ink);
  font-family:"Archivo",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  font-size:1.02rem;line-height:1.58;-webkit-font-smoothing:antialiased;
}
h1,h2,h3{font-family:"Archivo Black","Arial Black",system-ui,sans-serif;font-weight:400;text-transform:uppercase;line-height:.98;letter-spacing:-.015em;margin:0;text-wrap:balance}
p{margin:0}
a{color:inherit;text-underline-offset:3px}
img,svg{display:block;max-width:100%}
::selection{background:var(--teal);color:#000}
:focus-visible{outline:3px solid var(--stroke);outline-offset:3px}

.wrap{max-width:1140px;margin-inline:auto;padding-inline:clamp(1.1rem,4vw,2.6rem)}
.s{padding-block:clamp(2.5rem,5.4vw,4.4rem)}
.s + .s{border-top:2px solid var(--stroke)}
/* Fondos de sección: blanco y crema alternan por posición (la 1.ª tras el hero
   es crema); teal claro en las secciones con tarjetas destacadas. Solo hijos
   directos de <main> (los .s internos, p. ej. dentro de .contact, no se tocan).
   :has() es una mejora: si el navegador no lo soporta, esas secciones quedan en
   el blanco/crema alterno. */
main > .s{background:var(--paper)}
main > .s:nth-of-type(even){background:var(--cream)}
main > .s:has(.gains,.mwork,.guarantees),
main > .s:has(> .wrap:not(.article) > .hang){background:var(--teal-tint)}
.h2{font-size:clamp(1.8rem,4.4vw,3rem)}
.kicker{font-family:"IBM Plex Mono",ui-monospace,Menlo,monospace;font-size:.72rem;font-weight:500;letter-spacing:.19em;text-transform:uppercase;color:var(--accent);display:block;margin-bottom:.9rem}
.kicker::before{content:"";display:inline-block;width:.6em;height:.6em;margin-right:.65em;border-radius:50%;background:var(--teal);border:1.5px solid var(--stroke);vertical-align:.02em}
.lead{font-size:clamp(1.05rem,1.5vw,1.2rem);color:var(--ink-2);max-width:60ch}

/* ================= STAGGER (retraso en cascada, usado por scroll-animate) =================
   d1..d5: retraso manual para grupos pequeños y de tamaño fijo.
   .reveal-group: retraso automático por posición para cualquier grupo (hasta 7
   hijos) — no hace falta numerar cada elemento a mano. */
@media (prefers-reduced-motion:no-preference){
  .d1{transition-delay:.09s}.d2{transition-delay:.18s}.d3{transition-delay:.27s}.d4{transition-delay:.36s}.d5{transition-delay:.45s}
  .reveal-group > .scroll-animate:nth-child(1){transition-delay:.05s}
  .reveal-group > .scroll-animate:nth-child(2){transition-delay:.1s}
  .reveal-group > .scroll-animate:nth-child(3){transition-delay:.15s}
  .reveal-group > .scroll-animate:nth-child(4){transition-delay:.2s}
  .reveal-group > .scroll-animate:nth-child(5){transition-delay:.25s}
  .reveal-group > .scroll-animate:nth-child(6){transition-delay:.3s}
  .reveal-group > .scroll-animate:nth-child(7){transition-delay:.35s}
  .spine::before{transform:scaleY(0);transform-origin:top;transition:transform 1.1s cubic-bezier(.2,.7,.2,1)}
  .spine.in::before{transform:scaleY(1)}
}

/* ================= SCROLL-ANIMATE — sistema estándar, bidireccional =================
   Clase reutilizable para toda la web excepto el blog. Uso: añade "scroll-animate" a
   cualquier elemento (sección, título, tarjeta, bloque, imagen).

   Variantes (atributo data-reveal, opcional — por defecto "up"):
     (sin atributo)        sube desde abajo / baja desde arriba, según se
                           esté bajando o subiendo (ideal para títulos y texto)
     data-reveal="left"    entra deslizando desde la izquierda
     data-reveal="right"   entra deslizando desde la derecha (bloques en pareja
                           con el anterior: uno a la izq., otro a la dcha.)
     data-reveal="scale"   aparece con un ligero zoom (tarjetas/iconos)
   Cascada: añade "reveal-group" al contenedor directo de varios .scroll-animate
   (no hace falta numerar d1..d5 a mano, se retrasan solos por posición).

   Cómo funciona "up": el JS decide, en cada salida del viewport, hacia qué
   lado se retira el elemento (--sa-offset, en px) según la dirección real del
   scroll en ese instante: si bajas, sale por arriba (valor negativo); si
   subes, sale por abajo (valor positivo). Al volver a entrar, la transición
   arranca desde esa misma posición — por eso se ve "entrar desde abajo" al
   bajar y "entrar desde arriba" al subir, siempre. Las variantes left/right/
   scale no dependen de la dirección: siempre entran y salen por el mismo lado. */
:root{--reveal-dist:26px}
@media (prefers-reduced-motion:no-preference){
  .scroll-animate{
    opacity:0;
    transform:var(--sa-t, translateY(var(--sa-offset, var(--reveal-dist))));
    transition:opacity .5s ease,transform .5s cubic-bezier(.22,.7,.25,1);
  }
  .scroll-animate.in{opacity:1;transform:none}
  .scroll-animate[data-reveal="left"]{--sa-t:translateX(-34px)}
  .scroll-animate[data-reveal="right"]{--sa-t:translateX(34px)}
  .scroll-animate[data-reveal="scale"]{--sa-t:scale(.92)}
}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
@keyframes ping{from{transform:scale(.4);opacity:.5}to{transform:scale(1.75);opacity:0}}
@keyframes spin{to{transform:rotate(360deg)}}
.ping{transform-box:fill-box;transform-origin:center;animation:ping 2.8s ease-out infinite}
.floaty{animation:float 6s ease-in-out infinite}
@media (prefers-reduced-motion:reduce){.ping{animation:none;opacity:0}.floaty{animation:none}.wafab::after{animation:none;opacity:0}.badge__spin{animation:none}}

/* ================= GHOST WATERMARK ================= */
.ghost{position:absolute;z-index:0;font-family:"Archivo Black",sans-serif;text-transform:uppercase;line-height:1;letter-spacing:-.02em;color:var(--ink);opacity:.045;pointer-events:none;white-space:nowrap;font-size:clamp(4.5rem,17vw,11rem)}
.ghost--dark{color:var(--on-dark);opacity:.06}

/* ================= MAP ROUTE RAIL ================= */
.route{position:fixed;left:16px;top:0;height:100dvh;width:18px;z-index:5;pointer-events:none;display:none}
@media(min-width:1260px){.route{display:block}}
.route__track,.route__prog{position:absolute;left:8px;top:0;border-left:2px dashed var(--accent)}
.route__track{bottom:0;opacity:.22}
.route__prog{height:var(--rail,0%);opacity:1;transition:height .12s linear}
.route__dot{position:absolute;left:4px;width:10px;height:10px;border-radius:50%;background:var(--paper);border:2px solid var(--accent);opacity:.35;transition:transform .25s ease,opacity .25s ease,background .25s ease}
.route__dot.lit{background:var(--accent);opacity:1;transform:scale(1.25)}
.route__pin{position:absolute;left:-2px;top:var(--rail,0%);width:22px;height:22px;transform:translateY(-60%);color:var(--accent);transition:top .12s linear;filter:drop-shadow(0 2px 4px rgba(0,0,0,.3))}
@media(prefers-reduced-motion:reduce){.route__prog{height:100%;transition:none}.route__pin{display:none}}

/* ================= BUTTONS ================= */
.btn{display:inline-flex;align-items:center;gap:.55em;font-weight:700;font-size:.95rem;letter-spacing:.01em;text-decoration:none;padding:.95em 1.4em;border:1.5px solid var(--stroke);border-radius:var(--r-pill);background:var(--accent);color:var(--accent-ink);transition:background .14s,border-color .14s,color .14s,transform .12s}
.btn svg{width:1.15em;height:1.15em;flex:none}
.btn:not(:has(svg))::after{content:"\2192";display:inline-block;transition:transform .14s}
.btn:hover{background:var(--teal);border-color:var(--stroke);color:#000;transform:translateY(-2px)}
.btn:hover::after{transform:translateX(3px)}
.btn--out{background:var(--yellow);color:#000;border-color:var(--stroke)}
.btn--out:hover{background:var(--teal);color:#000;transform:translateY(-2px)}
.btn--sm{padding:.6em .9em;font-size:.82rem}
.phone{font-family:"IBM Plex Mono",monospace;font-weight:500;font-size:1rem;text-decoration:none;white-space:nowrap;color:inherit}
.phone b{color:var(--accent)}
.backlink{font-family:"IBM Plex Mono",monospace;font-size:.8rem;letter-spacing:.08em;text-transform:uppercase;text-decoration:none;color:var(--ink-2);display:inline-block;margin-top:2rem}
.backlink:hover{color:var(--accent)}

/* ================= HEADER / NAV ================= */
.top{position:sticky;top:0;z-index:60;background:var(--yellow);border-bottom:2px solid var(--stroke)}
.top__in{display:flex;align-items:center;gap:1rem;padding-block:.7rem}
.brand{font-family:"Archivo Black",sans-serif;font-size:1.3rem;letter-spacing:-.02em;text-transform:uppercase;text-decoration:none;flex:none}
.brand img{display:block;height:1.75rem;width:auto;aspect-ratio:436/75;max-width:100%}
.foot .brand img{height:1.55rem}
.nav{display:flex;align-items:center;gap:.15rem;margin-left:auto}
.nav > a,.nav__trigger{font-family:inherit;font-size:.86rem;font-weight:600;text-decoration:none;padding:.5rem .7rem;color:var(--ink);border:0;border-bottom:2px solid transparent;background:none;cursor:pointer}
.nav > a:hover,.nav__trigger:hover{color:var(--ink);border-bottom-color:rgba(0,0,0,.4)}
.nav > a.active,.nav__trigger.active{color:var(--ink);border-bottom-color:var(--stroke)}
.nav__group{position:relative}
.nav__trigger{display:inline-flex;align-items:center;gap:.32rem}
.nav__caret{width:.6em;height:.6em;transition:transform .16s ease}
.nav__group[data-open] .nav__caret{transform:rotate(180deg)}
.nav__menu{display:none;position:absolute;top:100%;left:0;min-width:15rem;flex-direction:column;padding:.35rem;margin-top:.3rem;background:var(--cream);border:1.5px solid var(--stroke);border-radius:var(--r-box);z-index:70}
.nav__menu::before{content:"";position:absolute;left:0;right:0;top:-.7rem;height:.7rem}
.nav__group:hover .nav__menu,.nav__group:focus-within .nav__menu,.nav__group[data-open] .nav__menu{display:flex}
.nav__menu a{font-size:.88rem;font-weight:600;text-decoration:none;color:var(--ink);padding:.6rem .7rem;border-radius:10px}
.nav__menu a:hover{color:#000;background:var(--yellow)}
.nav__menu-sep{height:1.5px;background:var(--line);margin:.3rem .1rem;flex:none}
.nav__menu a.nav__menu-alt{color:#000;background:var(--teal);font-size:.82rem;font-weight:600}
.nav__menu a.nav__menu-alt:hover{background:var(--yellow)}
@media (prefers-reduced-motion:no-preference){
  @keyframes menuItemIn{from{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:none}}
  .nav__group:hover .nav__menu a,.nav__group[data-open] .nav__menu a{animation:menuItemIn .22s ease backwards}
  .nav__group .nav__menu a:nth-child(1){animation-delay:.02s}
  .nav__group .nav__menu a:nth-child(2){animation-delay:.06s}
  .nav__group .nav__menu a:nth-child(3){animation-delay:.1s}
  .nav__group .nav__menu a:nth-child(4){animation-delay:.14s}
  .nav__group .nav__menu a:nth-child(6){animation-delay:.18s}
}
.top__cta{display:flex;align-items:center;gap:.6rem;flex:none}
.nav-toggle{display:none;margin-left:auto;background:none;border:1.5px solid var(--stroke);border-radius:var(--r-pill);color:inherit;font:inherit;font-weight:700;font-size:.8rem;padding:.5rem .8rem;cursor:pointer}
@media(max-width:1080px){
  .nav{position:absolute;left:0;right:0;top:100%;align-items:stretch;flex-direction:column;gap:0;background:var(--paper);border-bottom:2px solid var(--stroke);padding:.5rem 0;margin:0}
  .nav:not(.open){display:none}
  .nav > a,.nav__trigger{padding:.85rem clamp(1.1rem,4vw,2.6rem);border-bottom:1.5px solid var(--line)}
  .nav > a:hover,.nav__trigger:hover{border-bottom-color:var(--line)}
  .nav > a.active,.nav__trigger.active{border-bottom-color:var(--line);color:#000;background:var(--yellow)}
  .nav-toggle{display:block}
  .top__cta .phone{display:none}
  .nav__group{flex-direction:column}
  .nav__trigger{width:100%;justify-content:space-between;text-align:left}
  .nav__menu{position:static;min-width:0;padding:0;margin-top:0;border:0;box-shadow:none;background:transparent}
  .nav__menu::before{display:none}
  .nav__group:hover .nav__menu,.nav__group:focus-within .nav__menu{display:none}
  .nav__group[data-open] .nav__menu{display:flex}
  .nav__menu{border-radius:0}
  .nav__menu a{padding:.8rem clamp(1.1rem,4vw,2.6rem) .8rem calc(clamp(1.1rem,4vw,2.6rem) + 1rem);border-bottom:1.5px solid var(--line);background:var(--paper-2);border-radius:0}
}
@media(max-width:520px){.top__cta .btn span{display:none}}

/* ================= HERO ================= */
.hero{position:relative;overflow:hidden;background:var(--band);color:var(--on-dark);border-bottom:2px solid var(--stroke)}
.hero__in{position:relative;z-index:2;padding-block:clamp(3rem,7vw,5.5rem)}
.hero__grid{display:grid;gap:2rem;grid-template-columns:1fr}
@media(min-width:900px){.hero__grid{grid-template-columns:1fr 17rem;align-items:end}}
.hero h1{font-size:clamp(2.5rem,6.2vw,4.7rem);max-width:16ch;margin:.2rem 0 0}
.hero h1 u{text-decoration:none;color:inherit;background:linear-gradient(transparent 58%,var(--teal) 58%)}
.hero .lead{color:var(--on-dark-2);margin-top:1.15rem;max-width:44ch}
.hero__cta{display:flex;flex-wrap:wrap;gap:.75rem 1.2rem;align-items:center;margin-top:1.6rem}
.hero__side{border-top:1.5px solid var(--stroke);padding-top:1rem;display:grid;gap:.9rem}
.hero__side span{display:block;margin-bottom:.15rem;font-family:"IBM Plex Mono",monospace;font-size:.7rem;letter-spacing:.14em;text-transform:uppercase;color:var(--on-dark-2)}
.hero__side b{font-size:1rem;font-family:"Archivo",sans-serif;font-weight:700}
.hero__map{position:absolute;top:50%;right:-6%;transform:translateY(-50%);width:min(56vw,640px);opacity:.15;z-index:1;pointer-events:none}
.hero__badge{position:absolute;top:1.4rem;right:clamp(1rem,3.4vw,2.2rem);width:min(22vw,116px);z-index:2;pointer-events:none}
.hero__badge .badge__spin{transform-box:view-box;transform-origin:70px 70px;animation:spin 26s linear infinite}
@media(max-width:960px){.hero__badge{display:none}}

/* ================= CTA BAND ================= */
.cta{background:var(--yellow);color:#000;border-block:2px solid var(--stroke)}
.cta__in{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 1.5rem;padding-block:1.5rem}
.cta h3{font-size:clamp(1.15rem,2.4vw,1.6rem);max-width:26ch;text-transform:none;font-family:"Archivo",sans-serif;font-weight:700;line-height:1.2;letter-spacing:0}
.cta__act{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem 1.3rem}
.cta .phone{color:#000;font-size:1.15rem}
.cta .phone b{color:#000}
.cta .btn{background:#000;border-color:#000;color:#fff}
.cta .btn:hover{background:var(--teal);border-color:#000;color:#000}

/* ================= WHY (intro) ================= */
.why{overflow:hidden;text-align:center}
.why__big{font-family:"Archivo Black",sans-serif;text-transform:none;font-size:clamp(1.7rem,4.4vw,3.1rem);line-height:1.12;letter-spacing:-.02em;max-width:20ch;margin:.4rem auto 0}
.why__cols{margin:1.6rem auto 0;max-width:64ch;display:grid;gap:1rem;color:var(--ink-2)}
.why__cols b{color:var(--ink)}

/* ================= DECO ROUTES ================= */
.clip{overflow:hidden}
.s{position:relative}
.s > .wrap{position:relative;z-index:1}
.subhero .wrap{position:relative;z-index:1}
.deco{position:absolute;z-index:0;pointer-events:none;color:var(--accent)}
.deco--why{left:-34px;bottom:-26px;width:min(42vw,270px);opacity:.1}
.deco--gains{right:-28px;top:6px;width:min(34vw,238px);opacity:.09;transform:rotate(-7deg)}
.deco--geo{right:-12px;top:50%;width:min(44vw,320px);opacity:.12;transform:translateY(-50%)}
@media(max-width:640px){.deco{display:none}}

/* ================= OFFSET BLOCKS ================= */
.block{position:relative;display:grid;gap:.9rem 3rem;grid-template-columns:1fr;padding-block:1.9rem}
.block + .block{border-top:1.5px solid var(--line)}
@media(min-width:840px){
  .block{grid-template-columns:minmax(0,17rem) minmax(0,1fr)}
  .block--flip{grid-template-columns:minmax(0,1fr) minmax(0,17rem)}
  .block--flip .block__h{order:2}
  .block--flip .hang{order:1}
}
.block__n{font-family:"IBM Plex Mono",monospace;color:var(--accent);font-size:.8rem;letter-spacing:.15em}
.block h3{font-size:clamp(1.35rem,2.8vw,2rem);margin-top:.5rem}
.block__lede{color:var(--ink-2);margin-top:.7rem;font-size:.95rem}
.hang{list-style:none;margin:0;padding:0;display:grid;gap:0}
.hang li{display:grid;grid-template-columns:1.6rem 1fr;gap:.6rem;padding-block:.7rem;border-top:1.5px solid var(--line)}
.hang li:first-child{border-top:none}
.hang i{font-family:"IBM Plex Mono",monospace;color:#000;font-style:normal;font-size:.82rem;width:1.5rem;height:1.5rem;margin-top:.1rem;display:grid;place-items:center;line-height:1;border-radius:50%;background:var(--yellow);border:1.5px solid var(--stroke)}
.hang b{font-weight:700}
.hang span{color:var(--ink-2)}

/* ================= GAINS ================= */
.gains{display:grid;gap:1rem;margin-top:1.5rem;grid-template-columns:1fr}
@media(min-width:600px){.gains{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.gains{grid-template-columns:repeat(4,1fr)}}
.gain{background:var(--paper);border:1.5px solid var(--stroke);border-radius:var(--r-card);padding:1.5rem 1.3rem;display:flex;flex-direction:column;gap:.65rem}
.gain__i{width:2.4rem;height:2.4rem;display:grid;place-items:center;border-radius:50%;background:var(--yellow);border:1.5px solid var(--stroke);color:#000;flex:none}
.gain:nth-child(even) .gain__i{background:var(--teal)}
.gain__i svg{width:1.35rem;height:1.35rem}
.gain b{font-family:"Archivo Black",sans-serif;text-transform:uppercase;font-size:1rem;letter-spacing:-.01em;line-height:1.06}
.gain span{color:var(--ink-2);font-size:.92rem}

/* ================= PROC / MEDIMOS / CREDS ================= */
.proc{display:grid;gap:0}
.proc__row{display:grid;grid-template-columns:1fr;gap:.25rem .5rem;padding-block:1.15rem;border-top:1.5px solid var(--line)}
.proc__row:first-child{border-top:none}
@media(min-width:760px){.proc__row{grid-template-columns:3rem 14rem 1fr;align-items:baseline}}
.proc__n{font-family:"Archivo Black",sans-serif;color:#000;font-size:1.25rem;width:2.4rem;height:2.4rem;display:grid;place-items:center;line-height:1;border-radius:50%;background:var(--yellow);border:1.5px solid var(--stroke)}
.proc h3{font-size:1.1rem}
.proc p{color:var(--ink-2);font-size:.93rem}
.medimos{font-family:"Archivo Black",sans-serif;text-transform:uppercase;font-size:clamp(1.2rem,2.9vw,1.95rem);line-height:1.3;letter-spacing:-.01em;max-width:34ch}
.medimos em{font-style:normal;color:var(--ink-2)}
.medimos .dot{color:var(--accent)}
.creds{list-style:none;margin:0;padding:0;display:grid;gap:0;align-self:start}
.creds li{padding-block:.7rem;border-top:1.5px solid var(--line);font-weight:700}
.creds li:first-child{border-top:none}
.creds li span{display:block;font-weight:400;color:var(--ink-2);font-size:.9rem;margin-top:.15rem}

/* ================= GEO ================= */
.geo{color:var(--ink-2);font-size:1.05rem;line-height:1.7;margin-top:.9rem}
.geo b{color:var(--ink);font-weight:700}
.geo mark{background:linear-gradient(transparent 58%,var(--teal) 58%);color:inherit;font-weight:700}

/* ================= ABOUT ================= */
.about{display:grid;gap:1.2rem 3rem;grid-template-columns:1fr}
@media(min-width:840px){.about{grid-template-columns:minmax(0,1fr) minmax(0,20rem)}}
.about p{color:var(--ink-2)}
.about p b{color:var(--ink)}

/* ================= FAQ ================= */
.faq{display:grid;gap:.8rem}
.faq details{background:var(--paper);border:1.5px solid var(--stroke);border-radius:20px;padding-inline:1.2rem;transition:background .2s ease}
.faq details[open]{background:var(--yellow-soft)}
.faq summary{cursor:pointer;list-style:none;padding:1.05rem 2.6rem 1.05rem 0;position:relative;font-weight:700;font-size:1.02rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";position:absolute;right:0;top:.95rem;width:1.7rem;height:1.7rem;display:grid;place-items:center;line-height:1;font-family:"IBM Plex Mono",monospace;font-size:1.3rem;color:#000;background:var(--yellow);border:1.5px solid var(--stroke);border-radius:50%;transition:transform .25s ease}
.faq details[open] summary::after{content:"+";transform:rotate(45deg)}
.faq__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.2,.7,.2,1)}
.faq details[open] .faq__body{grid-template-rows:1fr}
.faq p{padding:0 0 1.2rem;color:var(--ink-2);max-width:64ch;overflow:hidden}

/* ================= SUBHERO (inner pages) ================= */
.subhero{position:relative;overflow:hidden;background:var(--band);color:var(--on-dark);padding-block:clamp(2.6rem,5.5vw,4rem);border-bottom:2px solid var(--stroke)}
.subhero h1{font-size:clamp(2rem,5.2vw,3.5rem);max-width:20ch}
.subhero p{color:var(--on-dark-2);max-width:54ch;margin-top:.9rem}
.subhero__glyph{position:absolute;right:-30px;top:50%;transform:translateY(-50%);width:min(40vw,320px);opacity:.16;pointer-events:none}
/* Colinas decorativas (transición hacia la sección siguiente): solo escritorio y solo
   subhero — en el hero de la Home la esquina inferior derecha la ocupa .hero__side. */
@media(min-width:900px){
  .subhero::after{content:"";position:absolute;z-index:0;right:clamp(2rem,9vw,9rem);bottom:0;width:min(30vw,320px);height:min(9vw,96px);pointer-events:none;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 300 90' preserveAspectRatio='none'%3E%3Cg stroke='%23000' stroke-width='2' stroke-linejoin='round'%3E%3Cpath d='M0 90 L118 24 Q130 18 140 28 L190 90 Z' fill='%23fff'/%3E%3Cpath d='M70 90 L150 30 Q172 10 198 28 L252 90 Z' fill='%23FAF3D1'/%3E%3Cpath d='M150 90 Q170 34 205 38 L300 90 Z' fill='%2382DDD8'/%3E%3C/g%3E%3C/svg%3E") no-repeat bottom/100% 100%}
}

/* ================= SECTORES ================= */
.sectors{display:grid;gap:.9rem;margin-top:1.4rem}
.sectors a{display:grid;grid-template-columns:1fr auto;gap:.3rem 1rem;align-items:center;padding:1.1rem 1.3rem;background:var(--paper);border:1.5px solid var(--stroke);border-radius:20px;text-decoration:none;transition:background .2s ease,transform .2s ease}
.sectors a:hover{background:var(--yellow);transform:translateY(-2px)}
.sectors b{font-family:"Archivo Black",sans-serif;text-transform:uppercase;font-size:clamp(1.1rem,2.4vw,1.55rem);letter-spacing:-.01em}
.sectors span{grid-column:1;color:var(--ink-2);font-size:.92rem}
.sectors .arw{grid-column:2;grid-row:1;align-self:center;font-family:"IBM Plex Mono",monospace;font-size:.8rem;letter-spacing:.06em;color:#000;background:var(--yellow);border:1.5px solid var(--stroke);border-radius:var(--r-pill);padding:.25rem .75rem;display:inline-block;transition:transform .2s ease,background .2s ease}
.sectors a:hover .arw{transform:translateX(4px);background:var(--paper)}
.queries{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.queries li{font-family:"IBM Plex Mono",monospace;font-size:.8rem;background:var(--paper);border:1.5px solid var(--stroke);border-radius:var(--r-pill);padding:.35rem .8rem;color:var(--ink-2)}
.queries li::before{content:"\1F50D  ";}

/* ================= PLANS ================= */
/* ================= METODOLOGÍA ================= */
.step-intro{color:var(--ink-2);max-width:56ch;margin:.6rem 0 0}
.proc--timeline{position:relative}
@media(min-width:760px){
  .proc--timeline::before{content:"";position:absolute;left:calc(1.5rem - 1px);top:2.1rem;bottom:2.1rem;border-left:2px dashed var(--accent);opacity:.4}
  .proc--timeline .proc__n{justify-self:center;position:relative;z-index:1}
}
.mwork{display:grid;gap:1rem;margin-top:1.4rem;grid-template-columns:1fr}
@media(min-width:820px){.mwork{grid-template-columns:repeat(3,1fr)}}
.mcol{background:var(--paper);border:1.5px solid var(--stroke);border-radius:var(--r-card);padding:1.4rem 1.3rem}
.mcol h3{font-family:"Archivo Black",sans-serif;text-transform:uppercase;font-size:1rem;letter-spacing:-.01em;margin-bottom:.75rem}
.mcol ul{list-style:none;margin:0;padding:0;display:grid;gap:.55rem}
.mcol li{display:grid;grid-template-columns:auto 1fr;gap:.55rem;color:var(--ink-2);font-size:.92rem}
.mcol li::before{content:"—";color:var(--accent)}
.callout{display:grid;gap:1rem 1.5rem;grid-template-columns:1fr;margin-top:1.4rem;padding:1.6rem;background:var(--yellow);border:1.5px solid var(--stroke);border-radius:var(--r-card)}
@media(min-width:680px){.callout{grid-template-columns:auto 1fr;align-items:start}}
.callout svg{width:2.8rem;height:2.8rem;color:var(--accent)}
.callout h3{font-size:clamp(1.2rem,2.6vw,1.55rem)}
.callout p{color:var(--ink-2);margin-top:.5rem;max-width:58ch}
.guarantees{display:grid;gap:1.5rem;margin-top:1.4rem}
@media(min-width:820px){.guarantees{grid-template-columns:repeat(3,1fr)}}
.guarantee{background:var(--paper);border:1.5px solid var(--stroke);border-radius:var(--r-card);padding:1.3rem 1.3rem}
.guarantee h3{font-family:"Archivo",sans-serif;font-weight:700;text-transform:none;letter-spacing:0;font-size:1.05rem;margin-bottom:.35rem}
.guarantee p{color:var(--ink-2);font-size:.94rem}

/* ================= BLOG ================= */
.posts{display:grid;gap:.9rem;margin-top:1.4rem}
.posts a{display:grid;gap:.4rem;padding:1.3rem 1.4rem;background:var(--paper);border:1.5px solid var(--stroke);border-radius:20px;text-decoration:none;transition:background .2s ease,transform .2s ease}
.posts a:hover{background:var(--yellow);transform:translateY(-2px)}
.posts a:hover .pt{color:var(--accent)}
.pt::after{content:" \2192";display:inline-block;transition:transform .2s ease}
.posts a:hover .pt::after{transform:translateX(4px)}
.pmeta{font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:var(--ink-2)}
.pmeta b{color:var(--accent)}
.pt{font-family:"Archivo Black",sans-serif;text-transform:uppercase;font-size:clamp(1.15rem,2.6vw,1.7rem);letter-spacing:-.01em;max-width:26ch}
.posts p{color:var(--ink-2);font-size:.95rem;max-width:64ch}
.article{max-width:1000px;margin-inline:auto}
.article h1{font-size:clamp(1.9rem,4.6vw,3rem);margin-bottom:1rem}
.article h3{font-size:1.35rem;margin-top:2rem}
.article p{color:var(--ink-2);margin-top:1.25rem;font-size:1.125rem;line-height:1.7}
.article .stub{border-left:3px solid var(--accent);padding-left:.9rem;color:var(--ink);font-weight:600}
.article .hang{font-size:1.125rem;line-height:1.7}

/* ================= ARTICLE COVER (banner de portada a ancho completo) =================
   Se coloca fuera de .wrap para ocupar todo el viewport (full-bleed).
   Reutilizable en los 4 artículos del blog; los artículos futuros deben
   seguir el mismo patrón. */
.article-cover{display:block;width:100%;height:340px;object-fit:cover;border-bottom:2px solid var(--stroke)}
@media(min-width:760px){.article-cover{height:400px}}

/* ================= COMPARISON TABLE (.cmp-table) =================
   Reutilizable para cualquier tabla comparativa del blog (SEO vs Ads,
   futuras comparativas). Envuelve la <table> en un contenedor con
   overflow-x:auto para que no rompa el layout en móvil. */
.cmp-table-wrap{overflow-x:auto;margin-top:1.4rem;border:1.5px solid var(--stroke);border-radius:var(--r-card)}
.cmp-table{width:100%;border-collapse:collapse;font-size:.92rem;min-width:560px}
.cmp-table thead th{font-family:"IBM Plex Mono",monospace;font-size:.72rem;font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);text-align:left;padding:.7rem 1rem;background:var(--paper-2);border-bottom:2px solid var(--stroke)}
.cmp-table thead th:nth-child(2){background:var(--yellow)}
.cmp-table thead th:nth-child(3){background:var(--teal)}
.cmp-table td{padding:.85rem 1rem;border-bottom:1px solid var(--line);vertical-align:top;color:var(--ink-2)}
.cmp-table tbody tr:last-child td{border-bottom:0}
.cmp-table td:first-child{font-weight:700;color:var(--ink)}
.cmp-table tbody tr:nth-child(even){background:var(--paper-2)}

/* ================= BLOG INDEX (destacado + filtros + grid) =================
   .post es el componente base (imagen + categoría + título + extracto + meta),
   reutilizado tanto por el destacado (.post--featured) como por las tarjetas
   del grid (.postgrid > .post). No confundir con .posts (lista de enlaces de
   texto sin imagen, usada en "Sigue leyendo" de las páginas de sector). */
.post{display:block;text-decoration:none;color:inherit}
.post[hidden]{display:none}
.post__media{background:var(--paper-2);border:1.5px solid var(--stroke);border-radius:24px;overflow:hidden}
.post__media img{display:block;width:100%;height:100%;aspect-ratio:8/5;object-fit:cover;transition:transform .3s ease}
.post:hover .post__media img{transform:scale(1.04)}
.post__cat{font-family:"IBM Plex Mono",monospace;font-size:.72rem;font-weight:500;letter-spacing:.14em;text-transform:uppercase;color:#000;display:inline-block;background:var(--paper);border:1.5px solid var(--stroke);border-radius:var(--r-pill);padding:.15rem .7rem;margin-bottom:.6rem}
.post__title{font-family:"Archivo Black",sans-serif;text-transform:uppercase;letter-spacing:-.01em;margin:0}
.post:hover .post__title{text-decoration:underline;text-decoration-color:var(--teal);text-decoration-thickness:4px;text-underline-offset:5px}
.post__excerpt{color:var(--ink-2);margin-top:.6rem;font-size:.95rem}
.post__meta{display:block;margin-top:.9rem;font-family:"IBM Plex Mono",monospace;font-size:.74rem;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-2)}

.post--featured{display:grid;gap:1.4rem;grid-template-columns:1fr;padding-bottom:2rem;margin-bottom:2rem;border-bottom:1.5px solid var(--line)}
.post--featured .post__title{font-size:clamp(1.5rem,3.4vw,2.4rem);margin-top:.2rem}
@media(min-width:840px){
  .post--featured{grid-template-columns:1.15fr 1fr;align-items:center;gap:2.6rem}
  .post--featured .post__media img{aspect-ratio:4/5}
}

.filters{display:flex;flex-wrap:wrap;gap:.5rem;margin-bottom:2rem}
.filter{font-family:"IBM Plex Mono",monospace;font-size:.78rem;font-weight:500;letter-spacing:.06em;text-transform:uppercase;padding:.5rem .95rem;border:1.5px solid var(--stroke);border-radius:var(--r-pill);background:var(--paper);color:var(--ink);cursor:pointer;transition:border-color .14s ease,color .14s ease,background .14s ease}
.filter:hover{color:#000;background:var(--teal)}
.filter.active{color:#000;background:var(--yellow);border-color:var(--stroke)}

.postgrid{display:grid;gap:1.8rem 1.6rem;grid-template-columns:1fr}
@media(min-width:700px){.postgrid{grid-template-columns:1fr 1fr}}
@media(min-width:1000px){.postgrid{grid-template-columns:repeat(3,1fr)}}
.postgrid .post__media{margin-bottom:1rem}
.postgrid .post__title{font-size:1.1rem}

/* ================= CONTACT ================= */
.contact{background:var(--band);color:var(--on-dark);border-top:2px solid var(--stroke);scroll-margin-top:4.5rem}
.contact__grid{display:grid;gap:2.2rem 3.5rem;grid-template-columns:1fr}
@media(min-width:900px){.contact__grid{grid-template-columns:1fr 1fr}}
.contact h2{font-size:clamp(1.9rem,4.6vw,3.1rem)}
.contact .lead{color:var(--on-dark-2);margin-top:.8rem}
.chan{display:grid;gap:0;margin-top:1.4rem}
.chan a{display:flex;align-items:center;gap:.85rem;text-decoration:none;padding:.85rem 0;border-top:1.5px solid var(--line-dark);transition:padding-left .2s ease}
.chan a:last-child{border-bottom:1.5px solid var(--line-dark)}
.chan a:hover{padding-left:.4rem}
.chan a:hover svg{transform:scale(1.12)}
.chan svg{width:1.2rem;height:1.2rem;color:var(--accent);flex:none;transition:transform .2s ease}
.chan b{font-weight:700;color:var(--on-dark)}
.chan em{display:block;color:var(--on-dark-2);font-size:.85rem;font-style:normal}
form{display:grid;gap:.8rem}
.frow{display:grid;gap:.8rem}
@media(min-width:520px){.frow{grid-template-columns:1fr 1fr}}
label{display:grid;gap:.3rem;font-size:.78rem;font-weight:700;letter-spacing:.03em;text-transform:uppercase}
label span{font-weight:400;text-transform:none;color:var(--on-dark-2)}
input,textarea{font-family:inherit;font-size:1rem;color:#000;background:#fff;border:1.5px solid var(--stroke);border-radius:var(--r-box);padding:.72rem .8rem;width:100%}
input::placeholder,textarea::placeholder{color:#595959;opacity:1}
input:focus,textarea:focus{border-color:var(--stroke);outline:3px solid var(--stroke);outline-offset:2px}
textarea{resize:vertical;min-height:100px}
.fnote{font-size:.78rem;color:var(--on-dark-2)}
.fnote a{color:var(--accent)}

/* ================= FOOTER ================= */
.foot{padding:2.4rem 0 5.5rem;background:var(--cream);border-top:2px solid var(--stroke)}
.foot__grid{display:grid;gap:1.6rem 2.5rem;grid-template-columns:1fr;font-size:.88rem}
@media(min-width:700px){.foot__grid{grid-template-columns:1.7fr 1fr 1fr 1fr}}
.foot h4{font-family:"IBM Plex Mono",monospace;font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);margin:0 0 .6rem;font-weight:500}
.foot nav{display:grid;gap:.4rem}
.foot a{color:var(--ink-2);text-decoration:none}
.foot a:hover{color:var(--ink);text-decoration:underline}
.foot__legal{margin-top:1.8rem;color:var(--ink-2);font-size:.82rem;display:flex;flex-wrap:wrap;gap:.4rem 1.1rem}

/* ================= FLOATING WA ================= */
.wafab{position:fixed;right:1rem;bottom:1rem;z-index:70;display:inline-flex;align-items:center;gap:.5rem;background:var(--accent);color:var(--accent-ink);text-decoration:none;font-weight:700;padding:.8rem .95rem;border:1.5px solid var(--stroke);border-radius:999px;transition:background .14s ease,color .14s ease}
.wafab:hover{background:var(--teal);color:#000}
.wafab svg{width:1.4rem;height:1.4rem;position:relative;z-index:1}
.wafab span{display:none;position:relative;z-index:1}
.wafab::after{content:"";position:absolute;inset:0;border-radius:999px;border:2px solid var(--accent);animation:ping 2.6s ease-out infinite}
@media(min-width:560px){.wafab span{display:inline;font-size:.9rem}}

.ph{border-bottom:1.5px dashed var(--accent);cursor:help}
/* ---- 404 ---- */
.nf{position:relative;overflow:hidden;display:grid;place-items:center;align-content:center;text-align:center;min-height:calc(100vh - 4rem);min-height:calc(100svh - 4rem);padding:clamp(2rem,6vw,4rem) 0;background:var(--yellow)}
.nf__body{display:flex;flex-direction:column;align-items:center;gap:1.1rem}
.nf__body .kicker{justify-content:center}
.nf h1{font-size:clamp(2rem,6vw,3.6rem);max-width:16ch}
.nf p{max-width:44ch;color:var(--ink-2)}
.nf .btn{margin-top:.6rem}
.nf__lens{--sweep:min(24vw,130px);width:clamp(96px,24vw,150px);margin:0 auto clamp(1.2rem,3vw,2rem);position:relative;z-index:1}
.nf__lens svg{width:100%;height:auto;transform:rotate(-8deg)}
@media (prefers-reduced-motion:no-preference){
  .nf__sweep{animation:nf-sweep 5.6s ease-in-out infinite alternate}
  .nf__bob{animation:nf-bob 1.4s ease-in-out infinite alternate}
  .nf__lens svg{animation:nf-tilt 5.6s ease-in-out infinite alternate}
}
@keyframes nf-sweep{from{transform:translateX(calc(var(--sweep) * -1))}to{transform:translateX(var(--sweep))}}
@keyframes nf-bob{from{transform:translateY(-6px)}to{transform:translateY(6px)}}
@keyframes nf-tilt{from{transform:rotate(-14deg)}to{transform:rotate(14deg)}}
@media (prefers-reduced-motion:reduce){.nf__sweep,.nf__bob,.nf__lens svg{animation:none}}
