/* ============================================================
   CLICK DIGITAL AGENCY — Sistema de diseño web
   Línea gráfica heredada del funnel. Paleta oficial de marca.
   ============================================================ */

:root{
  /* Marca */
  --am:#ffc200;
  --am-2:#ffdb66;
  --ci:#02adf5;
  --ci-2:#4dc9ff;
  --verde:#51be54;
  --morado:#a16afe;

  /* Superficies */
  --bg:#05070c;
  --bg-2:#080b12;
  --sur:#0e1420;
  --sur-2:#131b29;

  /* Bordes y texto */
  --brd:rgba(255,255,255,.09);
  --brd-2:rgba(255,255,255,.16);
  --tx:#f2f5f9;
  --tx-2:#9aa7b8;
  --tx-3:#6b7a8f;

  --rojo:#e0554a;

  /* Medidas */
  --max:1180px;
  --nav-h:74px;
  --r-sm:12px;
  --r-md:18px;
  --r-lg:24px;
}

*{box-sizing:border-box;margin:0;padding:0}
/* overflow-x va en <html>, NUNCA en <body>.
   Si se pone en body, el navegador calcula overflow-y:auto sobre body
   y este pasa a ser un contenedor con scroll propio. ScrollTrigger lo
   toma entonces como el elemento observado y lee siempre posicion 0,
   mientras el scroll real ocurre en <html>: todas las animaciones por
   scroll se quedan congeladas. Verificado el 2026-08-01. */
html{scroll-behavior:smooth;background:var(--bg);-webkit-text-size-adjust:100%;overflow-x:hidden}
body{
  font-family:'Manrope',system-ui,-apple-system,'Segoe UI',sans-serif;
  background:var(--bg);color:var(--tx);line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit}

.wrap{max-width:var(--max);margin:0 auto;padding:0 24px}
.narrow{max-width:860px;margin:0 auto;padding:0 24px}
section{padding:clamp(58px,8vw,116px) 0;position:relative}

/* ---------- TIPOGRAFÍA ---------- */
h1{font-size:clamp(2.1rem,6vw,4.5rem);line-height:1.02;letter-spacing:-.045em;font-weight:800}
h2{font-size:clamp(1.7rem,4.2vw,3rem);line-height:1.08;letter-spacing:-.035em;font-weight:800}
h3{font-size:1.16rem;font-weight:700;line-height:1.3;letter-spacing:-.015em}
h4{font-size:1rem;font-weight:700;letter-spacing:-.01em}
p{color:var(--tx-2);font-size:clamp(1rem,1.35vw,1.09rem)}
.lead{font-size:clamp(1.05rem,1.75vw,1.3rem);color:#c2cddc;font-weight:300;line-height:1.6}

/* El titular de cada página pasó a decir lo que la gente busca, y el
   titular creativo que había antes baja aquí.

   Un titular descriptivo es mucho más largo que uno creativo: al tamaño
   original ocupaba cinco líneas y se comía el encabezado. Donde hay
   subtítulo, el titular baja un escalón y el creativo sube, de modo que
   los dos juntos ocupan lo que antes ocupaba el creativo solo. Uno
   informa, el otro es el que se recuerda. */
h1:has(+ .sub-h1){font-size:clamp(1.85rem,4vw,3.05rem);line-height:1.06}
.sub-h1{font-size:clamp(1.4rem,3vw,2.35rem);line-height:1.16;font-weight:200;
  letter-spacing:-.03em;color:var(--tx-1);margin-top:16px;max-width:20ch}
.ctr .sub-h1{margin-left:auto;margin-right:auto;max-width:24ch}
/* El hero interior ya centra el texto, pero .sub-h1 lleva max-width y sin
   margenes automaticos quedaba pegado a la izquierda dentro de un bloque
   centrado. Misma correccion que ya tenia .hero-int .lead. */
.hero-int .sub-h1{margin-left:auto;margin-right:auto;max-width:24ch}
.hero-int.izq .sub-h1{margin-left:0;margin-right:0}
.thin{font-weight:200}
.small{font-size:.9rem;color:var(--tx-3)}
.ctr{text-align:center}
.am{color:var(--am)} .ci{color:var(--ci)}

.eb{
  display:inline-flex;align-items:center;font-size:.72rem;font-weight:700;
  letter-spacing:.2em;color:var(--ci);text-transform:uppercase;margin-bottom:20px;
  position:relative;
}
/* La línea se dibuja fuera del elemento, hacia su izquierda. Dentro del
   flujo empujaba el texto 38px y el rótulo quedaba descuadrado respecto
   al titular que va justo debajo. */
.eb::before{
  content:"";position:absolute;right:100%;margin-right:10px;top:50%;
  width:28px;height:1px;background:linear-gradient(90deg,transparent,var(--ci));
}
/* Cuando va centrado o suelto, la línea estorba más de lo que aporta */
.ctr .eb::before,.cta-final .eb::before,.eb.solo::before{display:none}
.eb.solo::before{display:none}

/* gradient-text-sweep — gradiente a través de las letras */
.hl{
  background:linear-gradient(105deg,var(--am) 0%,var(--am-2) 55%,var(--am) 100%);
  background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
  /* background-clip:text recorta el degradado a la caja del span. Con
     line-height ajustado, la parte baja de g/y/p/j queda fuera de esa caja
     y la letra se ve cortada. El padding devuelve el area que falta; al ser
     inline no empuja el layout, solo amplia la zona pintada. */
  padding-bottom:.16em;
  -webkit-box-decoration-break:clone;
  box-decoration-break:clone;
}
.hl-ci{
  background:linear-gradient(105deg,var(--ci) 0%,var(--ci-2) 55%,var(--ci) 100%);
  background-size:220% 100%;
  -webkit-background-clip:text;background-clip:text;color:transparent;
}

/* ---------- FONDO AMBIENTAL ---------- */
.aura{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}
.orb{position:absolute;border-radius:50%;filter:blur(96px);opacity:.15;will-change:transform}
.orb.a{width:560px;height:560px;background:var(--ci);top:-170px;left:-150px}
.orb.b{width:470px;height:470px;background:var(--am);top:48%;right:-170px}
.orb.c{width:410px;height:410px;background:var(--ci);bottom:-150px;left:30%}
.grid-bg{
  position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(255,255,255,.028) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.028) 1px,transparent 1px);
  background-size:64px 64px;
  mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 22%,transparent 80%);
  -webkit-mask-image:radial-gradient(ellipse 90% 60% at 50% 0%,#000 22%,transparent 80%);
}
main,header,footer{position:relative;z-index:1}

/* ---------- GLASS ---------- */
.glass{
  background:linear-gradient(160deg,rgba(255,255,255,.055),rgba(255,255,255,.018));
  border:1px solid var(--brd);border-radius:var(--r-lg);
  backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1),background .45s ease;
}
.glass:hover{border-color:var(--brd-2);transform:translateY(-4px)}

/* ---------- BOTONES (press-release-spring) ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:11px;
  background:linear-gradient(135deg,var(--ci),#0086d1);color:#fff;text-decoration:none;
  /* Los <button> no heredan la tipografía: el navegador les mete la
     del sistema. Sin esto, un botón real y un enlace con la misma
     clase se ven con letras distintas. */
  font-family:inherit;
  font-weight:800;font-size:1rem;padding:17px 34px;border-radius:100px;border:0;cursor:pointer;
  min-height:54px;letter-spacing:-.01em;position:relative;overflow:hidden;
  box-shadow:0 8px 32px rgba(2,173,245,.32),inset 0 1px 0 rgba(255,255,255,.22);
  transition:transform .3s cubic-bezier(.16,1,.3,1),box-shadow .3s ease;
}
.btn::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.28),transparent);
  transform:translateX(-100%);transition:transform .7s ease;
}
.btn:hover{transform:translateY(-3px);box-shadow:0 14px 42px rgba(2,173,245,.45)}
.btn:hover::after{transform:translateX(100%)}
.btn:active{transform:translateY(-1px) scale(.98)}
.btn:focus-visible{outline:3px solid var(--am);outline-offset:3px}
.btn.am{background:linear-gradient(135deg,var(--am),#f5a800);color:#0a0a0a;box-shadow:0 8px 32px rgba(255,194,0,.32),inset 0 1px 0 rgba(255,255,255,.35)}
.btn.am:hover{box-shadow:0 14px 42px rgba(255,194,0,.45)}
.btn.ghost{background:transparent;border:1px solid var(--brd-2);box-shadow:none;color:var(--tx)}
.btn.ghost:hover{border-color:var(--ci);background:rgba(2,173,245,.08);box-shadow:none}
.btn.lg{width:100%;max-width:430px;padding:19px 34px;font-size:1.05rem;min-height:60px;margin-left:auto;margin-right:auto;display:flex}
.bajo{font-size:.85rem;color:var(--tx-3);margin-top:14px}

/* ---------- NAVEGACIÓN ---------- */
header{
  position:sticky;top:0;z-index:80;
  backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  background:rgba(5,7,12,.76);border-bottom:1px solid var(--brd);
}
header .wrap{display:flex;align-items:center;justify-content:space-between;height:var(--nav-h);gap:20px}
.logo{display:flex;align-items:center;flex:none}
.logo img{height:30px;width:auto}
.nav{display:flex;align-items:center;gap:6px}
.nav a{
  text-decoration:none;color:var(--tx-2);font-weight:600;font-size:.94rem;
  padding:10px 15px;border-radius:100px;transition:color .3s ease,background .3s ease;
}
.nav a:hover{color:var(--tx);background:rgba(255,255,255,.055)}
.nav a.activo{color:var(--tx);background:rgba(2,173,245,.14)}
.nav .btn{padding:11px 24px;font-size:.88rem;min-height:44px;box-shadow:none;margin-left:8px}
/* El botón dentro del nav: `.nav a` (0,1,1) pesa más que `.btn` (0,1,0)
   y le estaba imponiendo el gris del menú. Y `.nav a:hover` le quitaba
   ademas el degradado al pasar el cursor. Estas tres reglas se lo
   devuelven. No borrarlas pensando que son redundantes. */
.nav a.btn{color:#fff}
.nav a.btn.am{color:#0a0a0a}
.nav a.btn:hover{color:#fff;background:linear-gradient(135deg,var(--ci),#0086d1)}
.nav a.btn.am:hover{color:#0a0a0a;background:linear-gradient(135deg,var(--am),#f5a800)}

/* ---------- MENÚ GRANDE DE SERVICIOS (dos columnas) ---------- */
.drop{position:relative}
.drop > a::after{content:"";width:6px;height:6px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translateY(-2px);display:inline-block;margin-left:8px;transition:transform .3s ease}
.drop:hover > a::after{transform:rotate(-135deg) translateY(1px)}
.drop-menu{
  position:absolute;top:calc(100% + 12px);left:50%;transform:translateX(-50%) translateY(-8px);
  width:min(760px,calc(100vw - 32px));
  display:grid;grid-template-columns:1fr 1fr;gap:3px;
  padding:14px;border-radius:var(--r-lg);
  background:rgba(12,17,26,.98);border:1px solid var(--brd-2);
  /* Sin backdrop-filter A PROPOSITO. El fondo esta al 98% de opacidad, asi
     que del desenfoque solo se veria un 2%: no se distingue de no tenerlo.
     Lo que si hacia era forzar una capa de composicion, y dentro de esa capa
     las descripciones -texto de 12,4 px y gris flojo- se quedaban sin pintar
     de forma intermitente al pasar el raton de una fila a otra. El menu
     aparecia con dos o tres servicios sin su linea de descripcion, y al
     volver a abrirlo salia bien. 2026-08-25. */
  box-shadow:0 34px 80px rgba(0,0,0,.68);
  opacity:0;visibility:hidden;transition:opacity .3s ease,transform .3s cubic-bezier(.16,1,.3,1),visibility .3s;
}
.drop:hover .drop-menu,.drop:focus-within .drop-menu{opacity:1;visibility:visible;transform:translateX(-50%) translateY(0)}
.drop-menu a{
  display:block;padding:14px 16px;border-radius:12px;background:transparent;
  transition:background .28s ease;
}
.drop-menu a b{display:block;font-size:.94rem;font-weight:700;color:var(--tx);margin-bottom:3px;letter-spacing:-.01em}
.drop-menu a span{display:block;font-size:.775rem;font-weight:400;color:var(--tx-3);line-height:1.38}
.drop-menu a:hover{background:rgba(2,173,245,.13)}
.drop-menu a:hover b{color:#fff}
.drop-menu a:hover span{color:var(--tx-2)}

/* botón hamburguesa */
.burger{display:none;width:46px;height:46px;border-radius:12px;border:1px solid var(--brd);background:rgba(255,255,255,.045);cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:5px}
.burger span{display:block;width:19px;height:2px;background:var(--tx);border-radius:2px;transition:transform .3s ease,opacity .3s ease}
.burger.abierto span:nth-child(1){transform:translateY(7px) rotate(45deg)}
.burger.abierto span:nth-child(2){opacity:0}
.burger.abierto span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

/* ---------- REVEAL POR SCROLL ---------- */
.rv{opacity:0;transform:translateY(28px)}
.rv.on{opacity:1;transform:none;transition:opacity .8s cubic-bezier(.16,1,.3,1),transform .8s cubic-bezier(.16,1,.3,1)}
.rv.d1.on{transition-delay:.08s}.rv.d2.on{transition-delay:.16s}
.rv.d3.on{transition-delay:.24s}.rv.d4.on{transition-delay:.32s}.rv.d5.on{transition-delay:.4s}

/* waterfall-entry — palabras en cascada */
.wf-w{display:inline-block;opacity:0;transform:translateY(38px);will-change:transform,opacity}
/* si no carga GSAP, el texto igual se ve */
.no-js .wf-w{opacity:1;transform:none}

/* ---------- MÉTRICAS (counting-dynamic-scale) ---------- */
.mt{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:16px;margin-top:clamp(38px,6vw,64px)}
.mt .c{padding:32px 24px;text-align:center}
.mt .n{font-size:clamp(2.2rem,4.8vw,3.3rem);font-weight:800;letter-spacing:-.05em;line-height:1;
  font-variant-numeric:tabular-nums;
  background:linear-gradient(140deg,#fff,#8fa3bd);-webkit-background-clip:text;background-clip:text;color:transparent}
.mt .l{font-size:.75rem;color:var(--tx-3);font-weight:700;letter-spacing:.16em;text-transform:uppercase;margin-top:11px}

/* ---------- REJILLAS ---------- */
.g2{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}
.g4{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
@media(max-width:1000px){.g3,.g4{grid-template-columns:repeat(2,1fr)}}
@media(max-width:700px){.g2,.g3,.g4{grid-template-columns:1fr}}

/* ---------- TARJETA DE SERVICIO ---------- */
.svc{padding:30px 27px;position:relative;overflow:hidden;text-decoration:none;display:block;color:inherit}
.svc::before{content:"";position:absolute;top:0;left:0;right:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(2,173,245,.6),transparent);opacity:0;transition:opacity .45s ease}
.svc:hover::before{opacity:1}
.svc .ic{width:52px;height:52px;border-radius:14px;display:flex;align-items:center;justify-content:center;margin-bottom:20px;
  background:linear-gradient(140deg,rgba(2,173,245,.2),rgba(2,173,245,.05));border:1px solid rgba(2,173,245,.3);
  transition:transform .45s cubic-bezier(.16,1,.3,1)}
.svc:hover .ic{transform:scale(1.08) rotate(-4deg)}
.svc .ic svg{width:24px;height:24px;stroke:var(--ci);fill:none;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round}
.svc h3{margin-bottom:9px}
.svc p{font-size:.95rem}
.svc .mas{display:inline-flex;align-items:center;gap:7px;margin-top:16px;font-size:.86rem;font-weight:700;color:var(--ci);letter-spacing:.02em}
.svc .mas::after{content:"→";transition:transform .35s ease}
.svc:hover .mas::after{transform:translateX(5px)}

/* ---------- PROCESO NUMERADO ---------- */
.pasos{display:grid;gap:16px;margin-top:44px}
.paso{display:grid;grid-template-columns:76px 1fr;gap:24px;align-items:start;padding:28px;border-radius:var(--r-lg);
  border:1px solid var(--brd);background:rgba(255,255,255,.026);transition:border-color .45s ease,background .45s ease}
.paso:hover{border-color:rgba(2,173,245,.3);background:rgba(255,255,255,.045)}
.paso .num{font-size:2.1rem;font-weight:800;letter-spacing:-.05em;line-height:1;
  background:linear-gradient(140deg,var(--am),#f0b400);-webkit-background-clip:text;background-clip:text;color:transparent}
.paso h3{margin-bottom:8px}
.paso p{font-size:.97rem}
@media(max-width:640px){.paso{grid-template-columns:1fr;gap:12px;padding:24px}}

/* ---------- GALERÍA DE TRABAJO ---------- */
/* Mosaico de piezas reales en la portada (sustituye a las tarjetas
   vacias de .gal el 2026-08-25). Fotos 4:5 con rotulo del tipo de
   trabajo; sin nombre de cliente, igual que en el carrusel de feeds. */
.mosaico{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:42px}
@media(max-width:900px){.mosaico{grid-template-columns:repeat(2,1fr)}}
.mosaico .pieza{position:relative;border-radius:16px;overflow:hidden;border:1px solid var(--brd);background:#0b111c}
.mosaico .pieza img{width:100%;height:100%;aspect-ratio:4/5;object-fit:cover;display:block;transition:transform .5s ease}
.mosaico .pieza:hover img{transform:scale(1.04)}
.mosaico .pieza .rot{
  position:absolute;left:0;right:0;bottom:0;padding:30px 14px 12px;
  font-size:.76rem;font-weight:600;color:#f2f5f9;text-align:left;
  background:linear-gradient(transparent,rgba(5,7,12,.88));
}

/* Variante de feeds completos (2026-08-25): cinco rejillas de feed
   una al lado de otra, sin rotulos. En movil se convierte en tira
   deslizable para que las rejillas no queden ilegibles de pequenas. */
.mosaico.feeds{grid-template-columns:repeat(5,1fr)}
.mosaico.feeds .pieza img{aspect-ratio:auto;height:auto}
@media(max-width:900px){
  .mosaico.feeds{display:flex;overflow-x:auto;gap:12px;padding-bottom:10px;
    scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}
  .mosaico.feeds .pieza{flex:0 0 62%;scroll-snap-align:center}
}

.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:42px}
@media(max-width:900px){.gal{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.gal{grid-template-columns:1fr}}
.gal .sl{
  aspect-ratio:4/5;border-radius:var(--r-md);border:1px dashed rgba(255,255,255,.15);
  background:linear-gradient(160deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center;
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1)}
.gal .sl:hover{border-color:rgba(2,173,245,.42);transform:translateY(-6px)}
.gal .sl .ix{width:38px;height:38px;border-radius:11px;background:rgba(255,255,255,.06);display:flex;align-items:center;justify-content:center}
.gal .sl .ix svg{width:18px;height:18px;stroke:var(--tx-3);fill:none;stroke-width:1.7}
.gal .sl .t{font-size:.92rem;font-weight:700;color:var(--tx-2)}
.gal .sl .s{font-size:.78rem;color:var(--tx-3);line-height:1.45}

/* ============================================================
   BENTO — para PROYECTOS. Piezas de distinto tamaño: el
   portafolio se mira, no se lee, así que manda la imagen.
   ============================================================ */
.bento{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin-top:42px}
.bento .p{
  position:relative;border-radius:var(--r-lg);overflow:hidden;text-decoration:none;color:inherit;
  border:1px solid var(--brd);background:rgba(255,255,255,.03);display:block;
  transition:border-color .5s ease,transform .5s cubic-bezier(.16,1,.3,1);
}
.bento .p:hover{border-color:rgba(2,173,245,.42);transform:translateY(-6px)}
.bento .p .img{
  width:100%;height:100%;position:absolute;inset:0;
  background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  border-bottom:0;display:flex;align-items:center;justify-content:center;
}
.bento .p .img span{font-size:.82rem;color:var(--tx-3)}
.bento .p .info{
  position:absolute;left:0;right:0;bottom:0;padding:24px;z-index:2;
  background:linear-gradient(transparent,rgba(5,7,12,.94) 55%);
}
.bento .p .cat{font-size:.66rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ci);margin-bottom:7px;display:block}
.bento .p h3{margin-bottom:5px;font-size:1.1rem}
.bento .p p{font-size:.88rem;opacity:0;max-height:0;transition:opacity .45s ease,max-height .45s ease;overflow:hidden}
.bento .p:hover p{opacity:1;max-height:60px}
/* Rejilla regular: todas las piezas con la misma proporción.
   Solo el primer proyecto se destaca ocupando el doble de ancho. */
.bento{grid-template-columns:repeat(3,1fr)}
.bento .p{aspect-ratio:4/3}
.bento .xl{grid-column:span 2;aspect-ratio:8/3}
@media(max-width:900px){
  .bento{grid-template-columns:repeat(2,1fr)}
  .bento .xl{grid-column:span 2;aspect-ratio:16/9}
}
@media(max-width:560px){
  .bento{grid-template-columns:1fr;gap:14px}
  .bento .p,.bento .xl{grid-column:span 1;aspect-ratio:4/3}
  .bento .p p{opacity:1;max-height:60px}
}

/* ============================================================
   EDITORIAL — para BLOG. Un destacado y luego lista de lectura.
   ============================================================ */
.destacado{
  display:grid;grid-template-columns:1.15fr 1fr;gap:0;margin-top:42px;
  border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--brd);
  background:rgba(255,255,255,.03);text-decoration:none;color:inherit;
  transition:border-color .5s ease;
}
.destacado:hover{border-color:rgba(2,173,245,.42)}
.destacado .img{aspect-ratio:16/10;background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  border-right:1px dashed rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center}
.destacado .img span{font-size:.84rem;color:var(--tx-3)}
.destacado .txt{padding:clamp(26px,3.4vw,44px);display:flex;flex-direction:column;justify-content:center}
.destacado .tag{display:inline-flex;align-items:center;gap:9px;font-size:.66rem;font-weight:800;letter-spacing:.16em;
  text-transform:uppercase;color:var(--am);margin-bottom:14px}
.destacado h2{font-size:clamp(1.4rem,2.6vw,2rem);margin-bottom:14px;line-height:1.18}
.destacado p{font-size:.98rem;margin-bottom:20px}
@media(max-width:820px){
  .destacado{grid-template-columns:1fr}
  .destacado .img{border-right:0;border-bottom:1px dashed rgba(255,255,255,.12)}
}

.lista-post{display:grid;gap:0;margin-top:34px;border-top:1px solid var(--brd)}
.lista-post .item{
  display:grid;grid-template-columns:170px 1fr auto;gap:26px;align-items:center;
  padding:26px 8px;border-bottom:1px solid var(--brd);text-decoration:none;color:inherit;
  transition:background .4s ease,padding-left .4s cubic-bezier(.16,1,.3,1);
}
.lista-post .item:hover{background:rgba(255,255,255,.028);padding-left:18px}
.lista-post .mini{aspect-ratio:16/10;border-radius:12px;background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  border:1px dashed rgba(255,255,255,.12);display:flex;align-items:center;justify-content:center;flex:none}
.lista-post .mini span{font-size:.7rem;color:var(--tx-3)}
.lista-post .cat{font-size:.64rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ci);margin-bottom:7px;display:block}
.lista-post h3{font-size:1.14rem;line-height:1.35;margin-bottom:7px}
.lista-post .meta{font-size:.82rem;color:var(--tx-3)}
.lista-post .flecha{width:44px;height:44px;border-radius:50%;border:1px solid var(--brd);display:flex;align-items:center;
  justify-content:center;flex:none;color:var(--ci);font-size:1.1rem;transition:background .4s ease,transform .4s ease}
.lista-post .item:hover .flecha{background:rgba(2,173,245,.16);transform:translateX(4px)}
@media(max-width:760px){
  .lista-post .item{grid-template-columns:110px 1fr;gap:18px;padding:20px 4px}
  .lista-post .flecha{display:none}
  .lista-post h3{font-size:1.02rem}
}
@media(max-width:460px){
  .lista-post .item{grid-template-columns:1fr;gap:14px}
  .lista-post .mini{aspect-ratio:16/9}
}

/* ---------- MARQUEE ---------- */
.mq{overflow:hidden;position:relative;
  mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent);
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 10%,#000 90%,transparent)}
.mq-t{display:flex;gap:16px;width:max-content;animation:mq 38s linear infinite}
.mq:hover .mq-t{animation-play-state:paused}
@keyframes mq{to{transform:translateX(-50%)}}
.mq .lg{flex:none;padding:17px 32px;border-radius:12px;background:rgba(255,255,255,.035);
  border:1px solid var(--brd);font-size:.88rem;font-weight:700;color:var(--tx-3);white-space:nowrap}

/* Con logo dentro, fuera la caja: el recuadro tenia sentido cuando la cinta
   llevaba nombres escritos. Sobre catorce logotipos convierte la fila en una
   rejilla de botones y cada marca queda encerrada en su casilla. */
.mq .lg:has(img){padding:0 20px;background:none;border:0;border-radius:0;display:flex;align-items:center}
.mq .lg img{
  /* 44 px. Se paso de 46 a 32 para que cupieran siete logos en vez de cinco y
     la cinta no se leyera como una fila de carteles; el argumento es bueno,
     pero a 32 los logotipos de linea fina -Translux, The Fit Store, Wellmed-
     dejaban de entenderse: no se sabia que marca era. 44 es el punto donde se
     leen todos y siguen entrando seis en un portatil.
     El grosor del trazo lo compensa ademas el generador, que lo engorda antes
     de reducir; el tamano solo era la mitad del problema. */
  height:44px;width:auto;display:block;
  /* Los archivos ya vienen en un solo color. La opacidad los empareja con el
     resto de la pagina y el hover los sube, que es la unica interaccion que
     necesita una cinta que solo esta para dar respaldo. */
  opacity:.74;transition:opacity .35s ease;
}
.mq .lg:hover img{opacity:1}
@media(max-width:600px){
  .mq .lg:has(img){padding:0 13px}
  .mq .lg img{height:34px}
}
/* Una cinta que se mueve sola es de las cosas que mas molestan a quien tiene
   sensibilidad al movimiento. Se detiene y se deja legible. */
@media(prefers-reduced-motion:reduce){
  .mq-t{animation:none;flex-wrap:wrap;justify-content:center;width:auto}
}

/* ---------- FAQ ---------- */
.faq{display:grid;gap:11px;margin-top:42px;max-width:880px;margin-left:auto;margin-right:auto}
details{border:1px solid var(--brd);border-radius:var(--r-sm);background:rgba(255,255,255,.026);overflow:hidden;transition:border-color .4s ease}
details[open]{border-color:rgba(2,173,245,.3);background:rgba(255,255,255,.04)}
summary{padding:21px 25px;font-weight:700;cursor:pointer;list-style:none;display:flex;justify-content:space-between;
  gap:18px;align-items:center;font-size:1.02rem;color:#fff;min-height:56px}
summary::-webkit-details-marker{display:none}
summary::after{content:"";width:11px;height:11px;border-right:2px solid var(--ci);border-bottom:2px solid var(--ci);
  transform:rotate(45deg);flex:none;transition:transform .35s ease;margin-top:-4px}
details[open] summary::after{transform:rotate(-135deg);margin-top:4px}
details .an{padding:0 25px 22px;font-size:.97rem;color:var(--tx-2)}

/* ---------- FORMULARIO ---------- */
.form-card{max-width:640px;margin:0 auto;padding:clamp(26px,4vw,44px);border-radius:var(--r-lg);
  background:linear-gradient(160deg,rgba(255,255,255,.075),rgba(255,255,255,.022));
  border:1px solid var(--brd-2);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  box-shadow:0 34px 90px rgba(0,0,0,.5)}
.fg{margin-bottom:18px}
.fg label{display:block;font-weight:700;font-size:.78rem;letter-spacing:.11em;text-transform:uppercase;color:var(--tx-2);margin-bottom:9px}
.fg input,.fg select,.fg textarea{
  width:100%;padding:15px 17px;border:1px solid var(--brd);border-radius:12px;font-family:inherit;font-size:16px;
  color:#fff;background:rgba(255,255,255,.045);transition:border-color .3s ease,background .3s ease;min-height:52px}
.fg textarea{min-height:120px;resize:vertical}
.fg input::placeholder,.fg textarea::placeholder{color:var(--tx-3)}
.fg input:focus,.fg select:focus,.fg textarea:focus{outline:0;border-color:var(--ci);background:rgba(2,173,245,.07)}
.fg select option{background:#0e1420;color:#fff}
.g2f{display:grid;grid-template-columns:1fr 1fr;gap:16px}
@media(max-width:600px){.g2f{grid-template-columns:1fr;gap:0}}

/* ---------- CTA FINAL ---------- */
.cta-final{text-align:center}
.cta-final h2{max-width:820px;margin:0 auto 20px}
.cta-final p{max-width:600px;margin:0 auto 30px}

/* ---------- FOOTER ---------- */
footer{border-top:1px solid var(--brd);padding:60px 0 34px;background:rgba(0,0,0,.3);margin-top:40px}
.f-grid{display:grid;grid-template-columns:1.6fr 1fr 1fr 1.2fr;gap:36px;margin-bottom:44px}
@media(max-width:860px){.f-grid{grid-template-columns:1fr 1fr;gap:32px}}
@media(max-width:520px){.f-grid{grid-template-columns:1fr;gap:28px}}
.f-grid h4{font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-3);margin-bottom:17px;font-weight:800}
.f-grid ul{list-style:none;display:grid;gap:10px}
.f-grid a{text-decoration:none;color:var(--tx-2);font-size:.93rem;transition:color .3s ease}
.f-grid a:hover{color:var(--ci)}
.f-logo img{height:34px;margin-bottom:16px}
.f-bottom{border-top:1px solid var(--brd);padding-top:26px;display:flex;justify-content:space-between;gap:18px;flex-wrap:wrap;align-items:center}
.f-bottom p{font-size:.82rem;color:var(--tx-3)}
.f-bottom .legales{display:flex;gap:20px;flex-wrap:wrap}
.f-bottom a{font-size:.82rem;color:var(--tx-3);text-decoration:none}
.f-bottom a:hover{color:var(--ci)}

/* ---------- HERO A DOS COLUMNAS (principal) ---------- */
.hero2{display:grid;grid-template-columns:1.02fr .98fr;gap:clamp(32px,4.5vw,60px);align-items:center}
@media(max-width:960px){.hero2{grid-template-columns:1fr;gap:38px;text-align:center}}
.hero2 .txt .lead{max-width:520px}
@media(max-width:960px){.hero2 .txt .lead{max-width:620px;margin-left:auto;margin-right:auto}}
.hero2 .acciones{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}
@media(max-width:960px){.hero2 .acciones{justify-content:center}}

.vbox{position:relative;width:100%}
.vframe{
  position:relative;aspect-ratio:16/9;border-radius:var(--r-lg);overflow:hidden;
  background:linear-gradient(150deg,#0d1420,#080c14);border:1px solid var(--brd-2);
  box-shadow:0 30px 90px rgba(0,0,0,.6),0 0 0 1px rgba(2,173,245,.13),0 0 70px rgba(2,173,245,.07);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:26px;text-align:center;
}
/* Con el video real dentro, el marco deja de ser un marcador: fuera el
   relleno y el hueco entre elementos, que ahi solo servian para separar
   el icono de play del texto de "espacio reservado". */
.vframe.con-video{padding:0;gap:0}
.vframe video{width:100%;height:100%;object-fit:contain;display:block;background:#070b12;border-radius:var(--r-lg)}
.vframe .play{
  width:74px;height:74px;border-radius:50%;background:linear-gradient(135deg,var(--ci),#0086d1);
  display:flex;align-items:center;justify-content:center;box-shadow:0 0 0 0 rgba(2,173,245,.42);
  animation:rip 2.8s ease-out infinite;
}
.vframe .play::after{content:"";border-left:22px solid #fff;border-top:13px solid transparent;border-bottom:13px solid transparent;margin-left:6px}
@keyframes rip{0%{box-shadow:0 0 0 0 rgba(2,173,245,.42)}70%{box-shadow:0 0 0 26px rgba(2,173,245,0)}100%{box-shadow:0 0 0 0 rgba(2,173,245,0)}}
.vframe b{color:#fff;font-size:1rem;font-weight:700}
.vframe small{color:var(--tx-3);font-size:.83rem;max-width:360px;line-height:1.5}
.vbox .pie{font-size:.83rem;color:var(--tx-3);text-align:center;margin-top:14px}

/* Aviso de sonido. El video arranca mudo -es lo unico que dejan los
   navegadores- y hay que decirlo, porque el gancho esta en los primeros
   segundos y sin voz se pierde entero.

   Antes era una banda amarilla de lado a lado. Ganaba en contraste y perdia
   en lo que importa: tapaba el video justo donde se quiere que miren, y una
   franja maciza a todo el ancho pesa mas que el propio reproductor.

   Ahora es una pastilla en la esquina, sobre vidrio oscuro. Va arriba a la
   derecha por dos razones: abajo estan los controles del reproductor, y es
   donde el ojo ya busca el sonido en cualquier aplicacion de video. El
   contraste lo sostiene el fondo propio -casi opaco y desenfocado-, no el
   video que haya detras, que cambia en cada fotograma. */
.sonido{
  position:absolute;top:14px;right:14px;z-index:3;
  display:inline-flex;align-items:center;gap:9px;
  height:40px;padding:0 16px 0 14px;border-radius:999px;cursor:pointer;
  border:1px solid rgba(255,255,255,.16);
  background:rgba(8,11,18,.78);
  backdrop-filter:blur(12px) saturate(1.3);
  -webkit-backdrop-filter:blur(12px) saturate(1.3);
  color:#f2f5f9;
  font-family:inherit;font-size:.84rem;font-weight:700;letter-spacing:-.01em;
  box-shadow:0 8px 26px rgba(0,0,0,.4);
  transition:background .3s ease,border-color .3s ease,transform .3s cubic-bezier(.16,1,.3,1);
}
.sonido:hover{background:rgba(8,11,18,.92);border-color:rgba(255,194,0,.5)}
.sonido:active{transform:scale(.97)}
.sonido:focus-visible{outline:2px solid var(--ci);outline-offset:3px}
.sonido[hidden]{display:none}
.sonido svg{width:17px;height:17px;stroke:var(--am);fill:none;stroke-width:2.1;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* El punto que late hace el trabajo que hacia el amarillo a todo lo ancho:
   llamar la atencion. Un movimiento pequeno en la esquina se ve igual y no
   se come el video. */
.sonido::after{
  content:"";width:6px;height:6px;border-radius:50%;background:var(--am);
  flex:none;animation:latido 2.6s ease-out infinite;
}
@keyframes latido{
  0%{box-shadow:0 0 0 0 rgba(255,194,0,.55)}
  70%{box-shadow:0 0 0 9px rgba(255,194,0,0)}
  100%{box-shadow:0 0 0 0 rgba(255,194,0,0)}
}
@media(prefers-reduced-motion:reduce){.sonido::after{animation:none}}

/* 44 px de alto y sin texto en pantallas pequenas: por debajo de esa medida
   el dedo falla (Apple HIG / Material), y la pastilla completa se comeria un
   tercio del ancho del video. */
@media(max-width:560px){
  .sonido{height:44px;width:44px;padding:0;justify-content:center;gap:0}
  .sonido span{display:none}
  .sonido::after{display:none}
  .sonido svg{width:19px;height:19px}
}


/* ---------- HERO INTERIOR ---------- */
.hero-int{padding-top:clamp(48px,7vw,84px);padding-bottom:clamp(36px,5vw,58px);text-align:center}
.hero-int .lead{max-width:660px;margin:20px auto 0}
/* .sub-h1 trae un max-width para controlar el largo de linea, pero sin
   margenes auto esa caja se queda pegada a la izquierda: el texto sale
   centrado dentro de una caja descentrada. El hero interior centra por
   text-align, no por .ctr, asi que necesita su propia regla. Los heros
   .izq quedan fuera a proposito. */
.hero-int:not(.izq) .sub-h1,
.dossier .sub-h1{margin-left:auto;margin-right:auto;max-width:24ch}
.miga{display:flex;gap:9px;justify-content:center;align-items:center;font-size:.82rem;color:var(--tx-3);margin-bottom:20px;flex-wrap:wrap}
.miga a{text-decoration:none;color:var(--tx-3);transition:color .3s ease}
.miga a:hover{color:var(--ci)}
.miga span{opacity:.5}

/* ---------- HERO INTERNO ALINEADO A LA IZQUIERDA ---------- */
.hero-int.izq{text-align:left}
.hero-int.izq .lead{margin:20px 0 0}
.hero-int.izq .miga{justify-content:flex-start}
.hero-dos{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,5vw,64px);align-items:end}
/* Sin esto, cualquier hijo con desplazamiento propio ensancha la
   rejilla en lugar de encogerse dentro de ella. */
.hero-dos>*{min-width:0}
@media(max-width:900px){.hero-dos{grid-template-columns:1fr;align-items:start}}
.cifras{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--brd);
  border:1px solid var(--brd);border-radius:var(--r-md);overflow:hidden;margin-top:34px}
.cifras .c{background:#080b12;padding:22px 18px}
.cifras .n{font-size:1.7rem;font-weight:800;letter-spacing:-.04em;color:var(--ci);line-height:1;margin-bottom:7px}
.cifras .t{font-size:.79rem;color:var(--tx-3);line-height:1.4}

/* ============================================================
   SUBNAVEGACIÓN INTERNA — páginas de servicio
   ============================================================ */
.subnav{
  position:sticky;top:var(--nav-h);z-index:60;
  background:rgba(5,7,12,.9);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);
  border-top:1px solid var(--brd);border-bottom:1px solid var(--brd);
}
.subnav .wrap{display:flex;gap:6px;overflow-x:auto;scrollbar-width:none;padding-top:0;padding-bottom:0}
.subnav .wrap::-webkit-scrollbar{display:none}
.subnav a{
  text-decoration:none;color:var(--tx-3);font-weight:700;font-size:.86rem;letter-spacing:.02em;
  padding:17px 18px;white-space:nowrap;border-bottom:2px solid transparent;transition:color .3s ease,border-color .3s ease;
}
.subnav a:hover{color:var(--tx)}
.subnav a.on{color:var(--ci);border-bottom-color:var(--ci)}
/* deja aire para el header + subnav al saltar por ancla */
section[id]{scroll-margin-top:calc(var(--nav-h) + 58px)}

/* ---------- PROCESO EXTENSO (numerado, vertical) ---------- */
.proc-largo{display:grid;gap:0;margin-top:44px;border-top:1px solid var(--brd)}
.proc-largo .it{
  display:grid;grid-template-columns:90px 1fr;gap:30px;padding:34px 6px;
  border-bottom:1px solid var(--brd);transition:background .4s ease,padding-left .4s cubic-bezier(.16,1,.3,1);
}
.proc-largo .it:hover{background:rgba(255,255,255,.024);padding-left:18px}
.proc-largo .nu{
  font-size:2.5rem;font-weight:800;letter-spacing:-.06em;line-height:.9;
  background:linear-gradient(150deg,rgba(255,255,255,.5),rgba(255,255,255,.08));
  -webkit-background-clip:text;background-clip:text;color:transparent;
}
.proc-largo .it:hover .nu{background:linear-gradient(150deg,var(--am),#f0b400);-webkit-background-clip:text;background-clip:text}
.proc-largo h3{font-size:1.24rem;margin-bottom:10px}
.proc-largo p{font-size:.99rem;max-width:760px}
@media(max-width:680px){
  .proc-largo .it{grid-template-columns:1fr;gap:10px;padding:26px 4px}
  .proc-largo .nu{font-size:1.9rem}
}

/* ---------- STACK DE HERRAMIENTAS (marcas) ----------
   Cada tarjeta define su color de marca en --c. El logo vive en gris
   y solo toma su color oficial al pasar el cursor, para que la rejilla
   no compita con la linea grafica de Click. */
.marcas{display:grid;grid-template-columns:repeat(6,1fr);gap:13px;margin-top:44px}
@media(max-width:1020px){.marcas{grid-template-columns:repeat(4,1fr)}}
@media(max-width:620px){.marcas{grid-template-columns:repeat(2,1fr)}}
.marcas .m{
  padding:26px 14px 22px;border-radius:var(--r-md);border:1px solid var(--brd);
  background:rgba(255,255,255,.026);text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:11px;
  transition:border-color .4s ease,transform .45s cubic-bezier(.16,1,.3,1),background .4s ease;
}
.marcas .m:hover{
  border-color:rgba(255,255,255,.26);
  border-color:color-mix(in srgb, var(--c) 52%, transparent);
  transform:translateY(-5px);background:rgba(255,255,255,.05);
}
/* Cada SVG lleva su viewBox recortado al dibujo real y su ancho/alto propios,
   calculados para que todos los logos tengan la misma altura optica.
   Esta franja de 30px los alinea entre si sin deformarlos. */
.marcas .lg{height:30px;display:flex;align-items:center;justify-content:center}
.marcas .m svg{
  display:block;flex:none;max-width:100%;fill:var(--tx-3);
  transition:fill .4s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.marcas .m:hover svg{fill:var(--c);transform:scale(1.12)}
.marcas .n{font-weight:800;font-size:.89rem;line-height:1.2}
.marcas .d{font-size:.735rem;color:var(--tx-3);line-height:1.38}
@media(prefers-reduced-motion:reduce){
  .marcas .m,.marcas .m svg{transition:fill .2s ease,border-color .2s ease}
  .marcas .m:hover{transform:none}
  .marcas .m:hover svg{transform:none}
}

/* ---------- COMPARATIVA ANTES / DESPUÉS ---------- */
.comp{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:42px}
@media(max-width:760px){.comp{grid-template-columns:1fr}}
.comp .lado{padding:32px 28px;border-radius:var(--r-lg);border:1px solid var(--brd)}
.comp .mal{background:rgba(224,85,74,.05);border-color:rgba(224,85,74,.22)}
.comp .bien{background:rgba(81,190,84,.05);border-color:rgba(81,190,84,.24)}
.comp .tt{font-size:.7rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;margin-bottom:18px}
.comp .mal .tt{color:var(--rojo)}
.comp .bien .tt{color:var(--verde)}
.comp ul{list-style:none;display:grid;gap:14px}
.comp li{font-size:.97rem;color:var(--tx-2);padding-left:28px;position:relative;line-height:1.5}
.comp .mal li::before{content:"✕";position:absolute;left:0;color:var(--rojo);font-weight:800}
.comp .bien li::before{content:"✓";position:absolute;left:0;color:var(--verde);font-weight:800}

/* ---------- MARCADOR DE PENDIENTE ---------- */
.todo{background:rgba(255,194,0,.07);border:1px dashed rgba(255,194,0,.36);border-radius:14px;
  padding:19px 22px;margin:26px auto 0;font-size:.87rem;color:#e8d5a0;max-width:880px;text-align:left;line-height:1.6}
.todo b.h{display:block;margin-bottom:7px;color:var(--am);font-size:.74rem;letter-spacing:.13em;text-transform:uppercase}

/* ============================================================
   MÓVIL
   ============================================================ */
a,button,summary,input,select,textarea{touch-action:manipulation}
a,button,summary{-webkit-tap-highlight-color:rgba(2,173,245,.16)}

@media(max-width:940px){
  .burger{display:flex}
  .nav{
    position:fixed;top:var(--nav-h);left:0;right:0;bottom:0;
    background:rgba(5,7,12,.98);  /* sin backdrop-filter: al 98% no se ve, ver .drop-menu */
    flex-direction:column;align-items:stretch;gap:4px;padding:24px;
    transform:translateX(100%);transition:transform .4s cubic-bezier(.16,1,.3,1);
    overflow-y:auto;
  }
  .nav.abierto{transform:translateX(0)}
  .nav a{padding:15px 18px;font-size:1.02rem;border-radius:12px}
  .nav .btn{margin:14px 0 0;width:100%}
  /* En móvil el menú grande vuelve a una sola columna y se pliega */
  .drop-menu{
    position:static;transform:none;opacity:1;visibility:visible;background:transparent;
    border:0;box-shadow:none;padding:0 0 0 14px;width:auto;backdrop-filter:none;
    display:block;max-height:0;overflow:hidden;transition:max-height .45s ease;
  }
  .drop.abierto .drop-menu{max-height:760px}
  .drop-menu a{padding:12px 14px}
  .drop-menu a b{font-size:.98rem}
  .drop-menu a span{font-size:.8rem}
  .drop > a::after{margin-left:auto}
  .drop > a{display:flex;align-items:center}
}

@media(max-width:768px){
  .wrap,.narrow{padding-left:18px;padding-right:18px}
  section{padding:46px 0}
  .orb{filter:blur(58px);animation:none!important}
  .orb.a{width:340px;height:340px}
  .orb.b{width:300px;height:300px}
  .orb.c{width:270px;height:270px}
  .grid-bg{background-size:48px 48px;opacity:.35}
  .glass{backdrop-filter:none;-webkit-backdrop-filter:none;background:rgba(255,255,255,.045)}
  .glass:hover{transform:none}
  .mt .c{padding:24px 18px}
  .svc{padding:26px 22px}
  .gal .sl{aspect-ratio:4/3}
  summary{padding:18px 19px;font-size:.96rem}
  details .an{padding:0 19px 19px}
  .form-card{padding:26px 20px}
  .btn{padding:16px 28px}
  .btn.lg{padding:18px 26px;min-height:58px}
}

@media(max-width:400px){
  .wrap,.narrow{padding-left:15px;padding-right:15px}
  .btn.lg{font-size:.97rem;padding:17px 20px}
}

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .rv{opacity:1;transform:none}
  .wf span{opacity:1;transform:none}
  html{scroll-behavior:auto}
}

/* ============================================================
   BUSINESS STRATEGY — componentes exclusivos de esa pagina.
   Deliberadamente distintos de los de paginas-web.html: el
   servicio es una consultoria de alto ticket y la pagina debe
   leerse como un dossier, no como una ficha de servicio.
   ============================================================ */

/* ---------- Portada tipo documento ---------- */
.dossier{text-align:center;padding-top:clamp(44px,6vw,76px);padding-bottom:clamp(30px,4vw,48px)}
.dossier .sello{
  display:inline-flex;align-items:center;gap:10px;margin-bottom:26px;
  padding:9px 18px;border-radius:999px;border:1px solid rgba(255,194,0,.3);
  background:rgba(255,194,0,.07);
  font-size:.68rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--am);
}
.dossier h1{max-width:900px;margin:0 auto}
.dossier .bajada{max-width:660px;margin:22px auto 0;font-size:clamp(1rem,1.6vw,1.12rem);color:var(--tx-2)}
.regla{
  height:1px;max-width:520px;margin:38px auto;
  background:linear-gradient(90deg,transparent,var(--ci),var(--am),transparent);
}
.ficha{
  display:flex;flex-wrap:wrap;justify-content:center;gap:0;
  max-width:780px;margin:0 auto;border:1px solid var(--brd);border-radius:var(--r-md);overflow:hidden;
}
.ficha .d{flex:1 1 190px;padding:22px 20px;border-right:1px solid var(--brd)}
.ficha .d:last-child{border-right:0}
/* Con tres datos en vez de cuatro, 780 px los deja demasiado separados y la
   fila se lee como tres cosas sueltas en vez de como una ficha. */
.ficha.tres{max-width:620px}
.ficha .v{font-size:1.5rem;font-weight:800;letter-spacing:-.03em;color:#fff;line-height:1.1}
.ficha .k{font-size:.7rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-3);margin-top:8px}
@media(max-width:680px){.ficha .d{flex:1 1 50%;border-bottom:1px solid var(--brd)}}

/* ---------- Declaracion grande ---------- */
.declaracion{
  max-width:920px;margin:0 auto;text-align:center;
  font-size:clamp(1.35rem,3.2vw,2.15rem);font-weight:200;line-height:1.35;letter-spacing:-.02em;color:var(--tx-2);
}
.declaracion b{font-weight:800;color:#fff}

/* ---------- Cuadrante 4C ---------- */
.cuadrante{
  display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--brd);
  border:1px solid var(--brd);border-radius:var(--r-lg);overflow:hidden;margin-top:46px;
}
@media(max-width:700px){.cuadrante{grid-template-columns:1fr}}
.cuadrante .c{
  background:var(--bg-2);padding:clamp(26px,3.4vw,40px);
  transition:background .4s ease;position:relative;
}
.cuadrante .c:hover{background:rgba(255,255,255,.045)}
.cuadrante .ltr{
  font-size:2.6rem;font-weight:800;letter-spacing:-.06em;line-height:1;
  color:transparent;-webkit-text-stroke:1.5px rgba(2,173,245,.55);margin-bottom:16px;
}
.cuadrante .c:hover .ltr{-webkit-text-stroke-color:var(--am)}
.cuadrante h3{font-size:1.16rem;margin-bottom:9px}
.cuadrante p{font-size:.95rem}

/* ---------- Riel de fases ---------- */
.riel{position:relative;margin-top:52px;padding-top:34px}
.riel::before{
  content:"";position:absolute;top:9px;left:4%;right:4%;height:2px;
  background:linear-gradient(90deg,var(--ci),var(--am));opacity:.45;
}
.riel .tira{display:grid;grid-template-columns:repeat(6,1fr);gap:16px}
@media(max-width:960px){.riel .tira{grid-template-columns:repeat(3,1fr)}}
@media(max-width:600px){.riel .tira{grid-template-columns:repeat(2,1fr)}.riel::before{display:none}}
.riel .f{position:relative}
.riel .f::before{
  content:"";position:absolute;top:-33px;left:50%;transform:translateX(-50%);
  width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--ci);
  transition:background .35s ease,border-color .35s ease;
}
.riel .f:hover::before{background:var(--am);border-color:var(--am)}
.riel .n{font-size:.68rem;font-weight:800;letter-spacing:.18em;color:var(--am);margin-bottom:9px}
.riel h4{font-size:.99rem;margin-bottom:10px;line-height:1.3}
.riel ul{list-style:none;display:grid;gap:6px}
.riel li{font-size:.82rem;color:var(--tx-3);line-height:1.4;padding-left:12px;position:relative}
.riel li::before{content:"";position:absolute;left:0;top:.6em;width:4px;height:4px;border-radius:50%;background:var(--tx-3)}

/* ---------- El entregable ---------- */
.entrega{display:grid;grid-template-columns:.92fr 1.08fr;gap:clamp(26px,4vw,54px);align-items:center;margin-top:46px}
@media(max-width:820px){.entrega{grid-template-columns:1fr}}
.doc{
  aspect-ratio:3/4;border-radius:var(--r-md);position:relative;overflow:hidden;
  background:linear-gradient(160deg,rgba(255,255,255,.09),rgba(255,255,255,.02));
  border:1px solid var(--brd-2);box-shadow:0 40px 90px rgba(0,0,0,.55);
  display:flex;flex-direction:column;justify-content:space-between;padding:clamp(22px,3vw,34px);
}
.doc .arriba{font-size:.62rem;font-weight:800;letter-spacing:.24em;text-transform:uppercase;color:var(--tx-3)}
.doc .titulo{font-size:clamp(1.3rem,2.6vw,1.85rem);font-weight:800;letter-spacing:-.04em;line-height:1.12;color:#fff}
.doc .lineas{display:grid;gap:8px;margin-top:18px}

/* ---------- Laminas del entregable ----------
   Una grande y siete debajo. La grande deja leer el titulo y entender que
   tipo de lamina es; la tira dice, sin decirlo, que hay muchas mas. */
.laminas{margin:0}
.laminas .rejilla{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.laminas .rejilla img{
  width:100%;height:auto;display:block;border-radius:7px;
  border:1px solid var(--brd);background:#0a0e16;
  transition:transform .35s cubic-bezier(.16,1,.3,1),border-color .35s ease;
}
.laminas .rejilla img:hover{transform:translateY(-3px);border-color:rgba(2,173,245,.4)}
.laminas figcaption{
  margin-top:16px;text-align:center;font-size:.84rem;color:var(--tx-3);
}
.laminas figcaption b{color:#fff;font-weight:800}

/* ---------- Enlace al proyecto hermano ----------
   Cuando de un mismo cliente hay dos proyectos -Santo Pecado tiene el manual
   de marca y la linea grafica que se construyo encima-, van separados a
   proposito, pero quien llega a uno tiene que poder llegar al otro. Sin esto
   se leen como dos clientes distintos con el mismo nombre. */
.hermano{
  display:grid;gap:6px;padding:24px 26px;border-radius:var(--r-md);
  border:1px solid var(--brd);background:linear-gradient(135deg,rgba(2,173,245,.07),rgba(255,255,255,.014));
  text-decoration:none;transition:border-color .3s ease,transform .3s cubic-bezier(.16,1,.3,1);
}
.hermano:hover{border-color:rgba(2,173,245,.42);transform:translateY(-2px)}
.hermano .k{
  font-size:.7rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ci);
}
.hermano .v{font-size:1.16rem;font-weight:700;color:#fff}
.hermano .q{font-size:.88rem;color:var(--tx-2)}

/* Llamada intermedia: la pagina no tenia ninguna entre el encabezado y el
   cierre, que en una de venta es mucho recorrido sin una salida. */
.llamada-bs{
  padding-top:clamp(40px,5vw,64px);padding-bottom:clamp(40px,5vw,64px);
}
.llamada-bs h2{font-size:clamp(1.6rem,3.4vw,2.4rem)}
.doc .lineas i{display:block;height:6px;border-radius:3px;background:rgba(255,255,255,.09)}
.doc .lineas i:nth-child(2){width:82%}
.doc .lineas i:nth-child(3){width:64%}
.doc .abajo{display:flex;align-items:center;gap:10px;font-size:.72rem;color:var(--tx-3)}
.doc .abajo img{width:74px;opacity:.85}
.incluye{list-style:none;display:grid;gap:0;border-top:1px solid var(--brd)}
.incluye li{
  display:flex;gap:14px;align-items:flex-start;padding:14px 4px;border-bottom:1px solid var(--brd);
  font-size:.96rem;color:var(--tx-2);transition:padding-left .35s ease,color .35s ease;
}
.incluye li:hover{padding-left:10px;color:#fff}
.incluye li::before{content:"\2713";color:var(--verde);font-weight:800;flex:none;line-height:1.5}

/* ---------- Cronograma operativo ---------- */
.crono{display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-top:46px}
@media(max-width:900px){.crono{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.crono{grid-template-columns:1fr}}
.crono .m{
  padding:26px 22px;border-radius:var(--r-md);border:1px solid var(--brd);
  background:rgba(255,255,255,.026);display:flex;flex-direction:column;gap:10px;
  transition:border-color .4s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.crono .m:hover{border-color:rgba(2,173,245,.4);transform:translateY(-5px)}
.crono .p{font-size:.66rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--ci)}
.crono h4{font-size:1rem;line-height:1.3}
.crono p{font-size:.85rem;color:var(--tx-3)}
.crono .plazo{
  margin-top:auto;padding-top:12px;border-top:1px solid var(--brd);
  font-size:.76rem;font-weight:700;color:var(--am);
}

/* ---------- Quien lo dirige ---------- */
.consultoras{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:46px}
@media(max-width:820px){.consultoras{grid-template-columns:1fr}}
.consultora{
  padding:clamp(26px,3.2vw,36px);border-radius:var(--r-lg);border:1px solid var(--brd);
  background:linear-gradient(160deg,rgba(255,255,255,.055),rgba(255,255,255,.015));
}
.consultora .foto{
  width:88px;height:88px;border-radius:50%;margin-bottom:20px;
  background:linear-gradient(150deg,rgba(2,173,245,.22),rgba(255,194,0,.12));
  border:1px solid var(--brd-2);display:flex;align-items:center;justify-content:center;
  font-size:.6rem;color:var(--tx-3);text-align:center;padding:8px;line-height:1.3;
}
.consultora h3{font-size:1.24rem;margin-bottom:5px}
.consultora .rol{font-size:.74rem;font-weight:800;letter-spacing:.15em;text-transform:uppercase;color:var(--ci);margin-bottom:16px}
.consultora .bio{font-size:.94rem;margin-bottom:18px}
.consultora .titulos{list-style:none;display:grid;gap:7px}
.consultora .titulos li{font-size:.83rem;color:var(--tx-3);padding-left:15px;position:relative;line-height:1.4}
.consultora .titulos li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;border-radius:1px;background:var(--am)}

/* ---------- Inversion ---------- */
.inversion{
  max-width:660px;margin:46px auto 0;text-align:center;padding:clamp(34px,4.5vw,52px);
  border-radius:var(--r-lg);border:1px solid rgba(255,194,0,.26);
  background:radial-gradient(circle at 50% 0%,rgba(255,194,0,.09),transparent 68%),rgba(255,255,255,.026);
}
.inversion .et{font-size:.7rem;font-weight:800;letter-spacing:.22em;text-transform:uppercase;color:var(--tx-3);margin-bottom:16px}
.inversion .cifra{font-size:clamp(2.8rem,7vw,4.2rem);font-weight:800;letter-spacing:-.05em;line-height:1;
  background:linear-gradient(140deg,#fff,var(--am));-webkit-background-clip:text;background-clip:text;color:transparent}
.inversion .nota{font-size:.9rem;color:var(--tx-3);margin-top:16px}

/* ---------- Como se arranca ---------- */
.arranque{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:44px;counter-reset:paso}
@media(max-width:780px){.arranque{grid-template-columns:1fr}}
.arranque .a{
  padding:30px 26px;border-radius:var(--r-md);border:1px solid var(--brd);
  background:rgba(255,255,255,.026);position:relative;
}
.arranque .a::before{
  counter-increment:paso;content:counter(paso);
  position:absolute;top:22px;right:24px;font-size:2.4rem;font-weight:800;letter-spacing:-.05em;
  color:rgba(255,255,255,.07);line-height:1;
}
.arranque h4{font-size:1.05rem;margin-bottom:11px;max-width:80%}
.arranque p,.arranque li{font-size:.88rem;color:var(--tx-3);line-height:1.5}
.arranque ul{list-style:none;display:grid;gap:5px;margin-top:10px}
.arranque li{padding-left:13px;position:relative}
.arranque li::before{content:"";position:absolute;left:0;top:.6em;width:4px;height:4px;border-radius:50%;background:var(--ci)}

/* ============================================================
   GESTIÓN DE REDES SOCIALES — componentes exclusivos.
   Distintos a propósito de los de paginas-web.html (subnav +
   comparativa + procesos verticales) y de los de
   business-strategy.html (dossier + cuadrante + riel).
   Aquí el eje visual es EL MES: lo que se produce, cuándo sale
   y quién lo hace.
   ============================================================ */

/* ---------- Hero partido (la maqueta estatica .movil se retiro
     el 2026-08-01; la sustituyo el carrusel de telefonos) ---------- */
.hero-feed{display:grid;grid-template-columns:1.06fr .94fr;gap:clamp(30px,5vw,70px);align-items:center}
@media(max-width:900px){.hero-feed{grid-template-columns:1fr}}

/* ---------- Los cuatro intentos fallidos ---------- */
.fallos{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;margin-top:44px}
@media(max-width:760px){.fallos{grid-template-columns:1fr}}
.fallos .fa{
  padding:30px 28px;border-radius:var(--r-lg);border:1px solid var(--brd);
  background:rgba(255,255,255,.026);position:relative;overflow:hidden;
  transition:border-color .4s ease,background .4s ease;
}
.fallos .fa::before{
  content:"";position:absolute;left:0;top:0;bottom:0;width:3px;
  background:linear-gradient(180deg,rgba(224,85,74,.9),rgba(224,85,74,.15));
}
.fallos .fa:hover{border-color:rgba(224,85,74,.3);background:rgba(224,85,74,.04)}
.fallos .fa .q{
  font-size:.66rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--rojo);margin-bottom:12px;display:block;
}
.fallos .fa p{font-size:1.02rem;color:#c9d4e2;line-height:1.5}

/* ---------- Franja de conteo del mes ----------
   auto-fit y no un número fijo de columnas: la franja pasó de 4 a 5
   piezas al sumarse las campañas de Meta Ads, y va a volver a cambiar. */
.conteo{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(186px,1fr));gap:1px;background:var(--brd);
  border:1px solid var(--brd);border-radius:var(--r-lg);overflow:hidden;margin-top:44px;
}
@media(max-width:560px){.conteo{grid-template-columns:1fr}}
.conteo .u{background:var(--bg-2);padding:34px 22px;text-align:center}
.conteo .u .c{
  font-size:clamp(2.6rem,5.5vw,3.9rem);font-weight:800;letter-spacing:-.06em;line-height:1;
  color:var(--ci);font-variant-numeric:tabular-nums;
}
.conteo .u .q{font-size:.95rem;font-weight:700;color:var(--tx);margin-top:12px}
.conteo .u .n{font-size:.78rem;color:var(--tx-3);margin-top:6px;line-height:1.4}

/* ---------- Barra de "esto se ajusta" ----------
   Va pegada bajo la franja de conteo. Su función es que los números
   no se lean como un paquete cerrado: son el punto de partida. */
.ajuste{
  display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:start;
  margin-top:16px;padding:26px 28px;border-radius:var(--r-md);
  border:1px solid var(--brd);border-left:2px solid var(--ci);
  background:linear-gradient(100deg,rgba(2,173,245,.07),rgba(255,255,255,.02) 55%);
}
@media(max-width:620px){.ajuste{grid-template-columns:1fr;gap:14px}}
.ajuste .ic{
  width:46px;height:46px;border-radius:13px;flex:none;
  display:flex;align-items:center;justify-content:center;
  background:rgba(2,173,245,.12);border:1px solid rgba(2,173,245,.28);
}
.ajuste .ic svg{width:22px;height:22px;stroke:var(--ci);fill:none;stroke-width:1.7;stroke-linecap:round}
.ajuste p{color:var(--tx-2)}

/* ---------- Calendario del mes ---------- */
.mes{margin-top:46px}
.mes .dias{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;margin-bottom:10px}
.mes .dias span{
  text-align:center;font-size:.68rem;font-weight:800;letter-spacing:.14em;
  text-transform:uppercase;color:var(--tx-3);
}
.mes .rejilla{display:grid;grid-template-columns:repeat(7,1fr);gap:8px}
/* Proporción 4/5: la misma de una publicación de feed. Cada día con
   contenido lleva dentro la pieza real que salió ese día; las etiquetas
   flotan encima. Sin imagen la celda igual se ve completa, nunca vacía. */
.mes .d{
  aspect-ratio:4/5;border-radius:12px;border:1px solid var(--brd);
  background:rgba(255,255,255,.02);position:relative;overflow:hidden;
  display:flex;flex-direction:column;justify-content:flex-end;gap:4px;padding:8px;
  transition:border-color .35s ease,transform .4s cubic-bezier(.16,1,.3,1);
}
.mes .d:hover{border-color:rgba(2,173,245,.4);transform:translateY(-3px);z-index:2}
.mes .d.vacio{opacity:.3;justify-content:center}
/* hueco de imagen — se sustituye por <img> o <video> */
.mes .d .pieza{
  position:absolute;inset:0;
  background:linear-gradient(165deg,rgba(255,255,255,.075),rgba(255,255,255,.02));
  display:flex;align-items:center;justify-content:center;text-align:center;padding:8px;
  font-size:.56rem;font-weight:700;letter-spacing:.05em;color:var(--tx-3);line-height:1.25;
}
/* Con la pieza real dentro, el relleno de 8 px -que estaba para separar
   el texto del marcador- dejaba la foto flotando con un borde. */
.mes .d .pieza:has(img),.mes .d .pieza:has(video),.mes .d .pieza:has(svg){padding:0}
.mes .d .pieza img,.mes .d .pieza video{width:100%;height:100%;object-fit:cover;display:block}
/* Las historias son 9/16 y la casilla es 4/5. Recortarlas a cover se
   comeria casi la mitad del alto, y en estas piezas el titular vive
   justo ahi. Se muestran completas dentro de la casilla: las bandas a
   los lados no son un fallo, son la forma de decir que ese dia lo que
   salio fue una historia y no una publicacion. */
.mes .d.historia .pieza{background:#05070c}
.mes .d.historia .pieza img{object-fit:contain}
/* La casilla del informe no lleva foto: no hay una que represente un
   reporte sin inventarse un dato. Se dibuja, asi se lee igual a 74 px
   que a 155 y no suma un archivo mas. */
.mes .d .pieza .informe{width:100%;height:100%;display:block}
/* velo inferior para que las etiquetas se lean sobre cualquier foto */
.mes .d:has(.pieza)::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:58%;
  background:linear-gradient(180deg,transparent,rgba(4,7,12,.86));pointer-events:none;
}
.mes .d .chip{
  position:relative;z-index:1;
  font-size:.6rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;
  padding:3px 6px;border-radius:5px;line-height:1.2;text-align:center;
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
}
.mes .chip.post{background:rgba(2,173,245,.18);color:#7fd6ff}
.mes .chip.story{background:rgba(255,255,255,.09);color:var(--tx-2)}
.mes .chip.reel{background:rgba(255,194,0,.18);color:#ffd75e}
.mes .chip.prod{background:rgba(81,190,84,.18);color:#8ddb8f}
.mes .leyenda{display:flex;flex-wrap:wrap;gap:18px;margin-top:22px;justify-content:center}
.mes .leyenda b{display:flex;align-items:center;gap:8px;font-size:.82rem;font-weight:600;color:var(--tx-3)}
.mes .leyenda b i{width:11px;height:11px;border-radius:3px;display:block}
/* En un movil la rejilla de siete columnas deja casillas de unos 45 px.
   Con marcadores de texto daba igual, pero con fotos reales dentro el
   aspect-ratio:auto las estiraba a una franja vertical y recortaba la
   pieza. Se recupera el 4/5 y las etiquetas pasan de texto a barras de
   color: en 45 px "Publicacion" no cabe, y la leyenda de abajo sigue
   diciendo que es cada color. */
@media(max-width:700px){
  .mes .d{aspect-ratio:4/5;min-height:0;padding:5px;gap:3px}
  .mes .d .chip{
    font-size:0;line-height:0;padding:0;height:5px;border-radius:99px;
    backdrop-filter:none;-webkit-backdrop-filter:none;
  }
  .mes .d:has(.pieza)::after{height:42%}
}

/* ---------- Lo que salió de ese mes ----------
   Va pegado al calendario, no en otra sección: el diagrama explica
   cómo se organiza el mes y esta tira enseña qué produjo. Son piezas
   YA PUBLICADAS en la cuenta del cliente — material público, no el
   calendario interno, que es privado. */
.salida{margin-top:30px;padding-top:30px;border-top:1px solid var(--brd)}
.salida .cab{display:flex;align-items:baseline;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-bottom:22px}
.salida .cab h3{font-size:1.15rem}
.salida .cab span{font-size:.85rem;color:var(--tx-3)}
.salida .tira{display:grid;grid-template-columns:repeat(6,1fr);gap:12px}
@media(max-width:900px){.salida .tira{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.salida .tira{grid-template-columns:repeat(2,1fr)}}
.salida .pz{
  aspect-ratio:9/16;border-radius:14px;overflow:hidden;position:relative;
  border:1.5px dashed rgba(255,255,255,.15);
  background:linear-gradient(165deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:16px 12px;text-align:center;
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.salida .pz:hover{border-color:rgba(2,173,245,.45);transform:translateY(-5px)}
.salida .pz .et{
  font-size:.6rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  padding:4px 9px;border-radius:5px;background:rgba(255,255,255,.07);color:var(--tx-3);
}
.salida .pz .et.post{background:rgba(2,173,245,.16);color:#7fd6ff}
.salida .pz .et.reel{background:rgba(255,194,0,.16);color:#ffd75e}
.salida .pz .et.prod{background:rgba(81,190,84,.16);color:#8ddb8f}
.salida .pz .tx{font-size:.75rem;color:var(--tx-3);line-height:1.35}

/* ---------- Tabla comparativa de planes ---------- */
.planes{margin-top:46px;overflow-x:auto;-webkit-overflow-scrolling:touch}
.planes table{width:100%;min-width:660px;border-collapse:collapse}
.planes th,.planes td{padding:16px 18px;text-align:left;border-bottom:1px solid var(--brd);vertical-align:top}
.planes thead th{
  border-bottom:1px solid var(--brd-2);position:relative;
  font-size:1.06rem;font-weight:800;letter-spacing:-.02em;color:#fff;
}
.planes thead th .et{
  display:block;font-size:.62rem;font-weight:800;letter-spacing:.18em;
  text-transform:uppercase;margin-bottom:8px;color:var(--tx-3);
}
/* OJO con los nombres de clase: aquí se usaba .destacado y chocaba con
   el artículo destacado del blog (display:grid + radius + margin-top),
   que convertía las celdas de la tabla en cajas flotantes desplazadas
   43 px. Verificado en el navegador el 2026-08-02. Las columnas se
   llaman .eje (la que lleva pauta) y .mas (la de plan a medida). */
.planes thead th.eje{background:rgba(2,173,245,.08)}
.planes thead th.eje .et{color:var(--ci)}
.planes tbody td.eje{background:rgba(2,173,245,.045)}
.planes thead th.mas{background:rgba(255,194,0,.06)}
.planes thead th.mas .et{color:var(--am)}
.planes tbody td.mas{background:rgba(255,194,0,.03)}
/* la columna a medida no marca palomas: describe, no compara */
.planes tbody td.mas.val{color:var(--am);font-weight:700}
.planes tbody th{
  font-size:.94rem;font-weight:600;color:var(--tx-2);width:34%;
  border-right:1px solid var(--brd);
}
.planes tbody tr:hover td,.planes tbody tr:hover th{background:rgba(255,255,255,.028)}
.planes .si{color:var(--verde);font-weight:800;font-size:1.05rem}
.planes .no{color:var(--tx-3);opacity:.55}
.planes .val{font-size:.9rem;color:var(--tx);font-weight:600}
.planes .grupo th{
  font-size:.68rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--am);padding-top:28px;border-right:0;
}

/* ---------- La cápsula ---------- */
/* El satelite de arriba se coloca con top:0 y translate(-50%,-50%), asi que
   la mitad de sus 94 px sobresale por encima de la caja del circulo. Ese
   saliente se comia los 46 px de margen y el satelite terminaba pisando el
   parrafo de la seccion. El padding-top le devuelve el aire: se reserva el
   saliente aparte del margen, y asi el hueco que se ve es el que se pide. */
.capsula{display:grid;grid-template-columns:.86fr 1.14fr;gap:clamp(26px,4vw,54px);align-items:center;
  margin-top:46px;padding-top:52px}
@media(max-width:860px){.capsula{grid-template-columns:1fr}}
.capsula .circulo{
  aspect-ratio:1;border-radius:50%;position:relative;
  border:1px dashed rgba(2,173,245,.3);display:flex;align-items:center;justify-content:center;
}
.capsula .circulo .centro{
  width:44%;aspect-ratio:1;border-radius:50%;
  background:radial-gradient(circle,rgba(2,173,245,.2),rgba(2,173,245,.04));
  border:1px solid rgba(2,173,245,.4);display:flex;align-items:center;justify-content:center;
  text-align:center;font-size:.82rem;font-weight:800;color:#fff;padding:14px;line-height:1.3;
}
/* Cinco satélites repartidos en pentágono sobre el borde del círculo.
   Posiciones calculadas: x = 50 + 50·sen(a), y = 50 − 50·cos(a),
   con a = 0°, 72°, 144°, 216° y 288°. */
.capsula .circulo .sat{
  position:absolute;width:94px;height:94px;border-radius:50%;
  background:rgba(255,255,255,.05);border:1px solid var(--brd-2);
  display:flex;align-items:center;justify-content:center;text-align:center;
  font-size:.62rem;font-weight:700;color:var(--tx-2);padding:9px;line-height:1.25;
  transform:translate(-50%,-50%);
}
.capsula .circulo .sat.s1{left:50%;   top:0}
.capsula .circulo .sat.s2{left:97.5%; top:34.5%}
.capsula .circulo .sat.s3{left:79.4%; top:90.5%}
.capsula .circulo .sat.s4{left:20.6%; top:90.5%}
.capsula .circulo .sat.s5{left:2.5%;  top:34.5%}
/* Va aqui y no arriba a proposito: si se declara antes que .sat, la regla
   base lo pisa por ir despues con la misma especificidad.
   En una columna el circulo se estira a todo el ancho y los satelites de
   los lados, que sobresalen media anchura, se salian de la pantalla y
   aparecian cortados. Mas chicos entran enteros. */
@media(max-width:860px){
  .capsula .circulo .sat{width:78px;height:78px;font-size:.58rem;padding:7px}
  /* Y el circulo se mete hacia dentro lo que miden los satelites de los
     lados: si ocupa todo el ancho, ellos quedan fuera de la pantalla. */
  .capsula .circulo{margin:0 42px}
}
.capsula .lista{list-style:none;display:grid;gap:0;border-top:1px solid var(--brd)}
.capsula .lista li{
  padding:17px 4px;border-bottom:1px solid var(--brd);
  display:grid;grid-template-columns:196px 1fr;gap:20px;align-items:baseline;
}
@media(max-width:1040px){.capsula .lista li{grid-template-columns:1fr;gap:5px}}
.capsula .lista b{font-size:.96rem;color:#fff}
.capsula .lista span{font-size:.92rem;color:var(--tx-3);line-height:1.5}

/* ---------- Servicios adicionales ---------- */
.extras{
  margin-top:44px;padding:clamp(28px,4vw,44px);border-radius:var(--r-lg);
  border:1px solid rgba(255,194,0,.24);
  background:radial-gradient(circle at 0% 0%,rgba(255,194,0,.08),transparent 60%),rgba(255,255,255,.024);
  display:grid;grid-template-columns:auto 1fr;gap:clamp(24px,4vw,48px);align-items:center;
}
@media(max-width:760px){.extras{grid-template-columns:1fr}}
.extras .pct{
  font-size:clamp(3.2rem,8vw,5rem);font-weight:800;letter-spacing:-.06em;line-height:.9;
  color:var(--am);white-space:nowrap;
}
.extras .pct small{display:block;font-size:.74rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--tx-3);margin-top:12px}
.extras ul{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:10px 26px}
@media(max-width:560px){.extras ul{grid-template-columns:1fr}}
.extras li{font-size:.95rem;color:var(--tx-2);padding-left:18px;position:relative}
.extras li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--am)}

/* ============================================================
   CARRUSEL DE TELÉFONOS — reemplaza la maqueta estática de feed.
   Concepto tomado de un componente React de 21st.dev y portado a
   HTML/CSS/GSAP, que es lo que usa este sitio. Las imágenes del
   ejemplo original (Cloudinary de un tercero) NO se usan: cada
   pantalla es un hueco rotulado para material propio de Click.
   ============================================================ */

/* El titular del hero partido necesita su propia escala: en una
   columna estrecha, el h1 global (hasta 4.5rem) parte palabras. */
.hero-feed h1{
  font-size:clamp(1.95rem,4.3vw,3.4rem);
  line-height:1.06;
  overflow-wrap:break-word;
  hyphens:none;
}

.carrusel-movil{
  position:relative;height:clamp(370px,44vw,480px);
  perspective:1400px;perspective-origin:50% 50%;
  display:flex;align-items:center;justify-content:center;
}
.carrusel-movil .tel{
  position:absolute;top:50%;left:50%;
  width:clamp(200px,23vw,254px);
  margin-left:calc(clamp(200px,23vw,254px) / -2);
  transform-style:preserve-3d;
  will-change:transform,opacity,filter;
  /* sin transition: GSAP es el único dueño de estas propiedades */
}
.carrusel-movil .marco{
  border-radius:32px;padding:9px;
  background:linear-gradient(160deg,rgba(255,255,255,.17),rgba(255,255,255,.04));
  border:1px solid var(--brd-2);
  box-shadow:0 40px 90px rgba(0,0,0,.62);
}
.carrusel-movil .pant{
  /* 9/16 y no 9/19.5: las capturas van recortadas a la rejilla, sin
     barra de estado ni cabecera, y esa es la proporcion que da un
     recorte completo sin comerse columnas por los lados. */
  position:relative;aspect-ratio:9/16;border-radius:24px;overflow:hidden;
  background:linear-gradient(165deg,#0b111c,#070b12);
  border:1px solid rgba(255,255,255,.06);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:12px;padding:22px;text-align:center;
}
/* muesca superior */
.carrusel-movil .pant::before{
  content:"";position:absolute;top:9px;left:50%;transform:translateX(-50%);
  width:38%;height:16px;border-radius:0 0 12px 12px;background:rgba(0,0,0,.55);
}
.carrusel-movil .pant .ic{
  width:44px;height:44px;border-radius:13px;display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.06);border:1px solid var(--brd);
}
.carrusel-movil .pant .ic svg{width:21px;height:21px;stroke:var(--ci);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.carrusel-movil .pant .tt{font-size:.94rem;font-weight:800;color:#fff;letter-spacing:-.01em}
.carrusel-movil .pant .ss{font-size:.74rem;color:var(--tx-3);line-height:1.4}
/* Con captura real dentro, la pantalla deja de ser una tarjeta con
   iconos: la imagen la llena entera. Y se retira la muesca dibujada,
   porque la captura ya trae la suya de verdad. */
.carrusel-movil.con-feed .pant{padding:0;gap:0;background:#000}
.carrusel-movil.con-feed .pant::before{display:none}
.carrusel-movil .pant img{width:100%;height:100%;object-fit:cover;object-position:top center;display:block}

/* Flechas laterales del carrusel: el control principal de navegación.
   Los puntos de abajo siguen existiendo, pero el objetivo grande y
   obvio son estas (decisión del dueño 2026-08-25: los puntos eran
   demasiado pequeños como único control). */
.car-flecha{
  position:absolute;top:50%;transform:translateY(-50%);z-index:40;
  width:46px;height:46px;border-radius:50%;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.06);border:1px solid var(--brd-2);
  backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  transition:background .3s ease,border-color .3s ease,transform .3s ease;
}
.car-flecha.prev{left:clamp(-10px,-1vw,0px)}
.car-flecha.next{right:clamp(-10px,-1vw,0px)}
.car-flecha svg{
  width:20px;height:20px;stroke:var(--ci);fill:none;
  stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
}
.car-flecha:hover{
  background:rgba(2,173,245,.14);border-color:rgba(2,173,245,.45);
  transform:translateY(-50%) scale(1.08);
}
@media (max-width:760px){
  .car-flecha{width:42px;height:42px}
  .car-flecha.prev{left:0}
  .car-flecha.next{right:0}
}

/* etiqueta bajo el carrusel */
.carrusel-pie{
  display:flex;flex-direction:column;align-items:center;gap:12px;margin-top:18px;
}
/* Solo el rubro del feed en pantalla. El nombre del cliente se retiro
   del rotulo el 2026-08-25 a pedido del dueño (antes: marca + rubro). */
.carrusel-pie .marca-actual{
  font-size:.8rem;color:var(--tx-2);text-align:center;min-height:1.2em;
}
.carrusel-pie .marca-actual b{color:#fff;font-weight:700}
.carrusel-pie .marca-actual span{color:var(--tx-3)}
.carrusel-pie .puntos-feed{display:flex;align-items:center;justify-content:center;gap:14px}
.carrusel-pie .pt{
  width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.18);
  transition:background .4s ease,transform .4s ease;cursor:pointer;border:0;padding:0;
}
.carrusel-pie .pt.on{background:var(--ci);transform:scale(1.35)}

/* Sin JS o sin GSAP: se ve un solo teléfono centrado y legible */
.no-js .carrusel-movil .tel,
.carrusel-movil:not(.listo) .tel{opacity:0}
.no-js .carrusel-movil .tel:first-child,
.carrusel-movil:not(.listo) .tel:first-child{opacity:1;transform:translate(0,-50%)}

@media(max-width:900px){
  .carrusel-movil{height:clamp(340px,72vw,420px)}
  .carrusel-movil .tel{width:min(215px,54vw);margin-left:calc(min(215px,54vw) / -2)}
}
@media (prefers-reduced-motion: reduce){
  .carrusel-movil .tel{transition:none}
}

/* ============================================================
   META ADS — componentes exclusivos de esa página.
   El eje visual aquí es el ADMINISTRADOR DE ANUNCIOS: paneles,
   niveles de campaña y métricas. Distinto de paginas-web
   (procesos), business-strategy (dossier) y gestión de redes
   (el mes y el calendario).
   ============================================================ */

/* ---------- El techo del alcance orgánico ---------- */
.techo{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:46px}
@media(max-width:820px){.techo{grid-template-columns:1fr}}
.techo .lado{
  padding:clamp(26px,3.4vw,38px);border-radius:var(--r-lg);border:1px solid var(--brd);
  background:rgba(255,255,255,.024);
}
.techo .lado.con{border-color:rgba(2,173,245,.3);background:rgba(2,173,245,.05)}
.techo .rot{font-size:.68rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--tx-3);margin-bottom:6px}
.techo .lado.con .rot{color:var(--ci)}
.techo h3{font-size:1.2rem;margin-bottom:20px}
.techo .puntos{display:grid;grid-template-columns:repeat(20,1fr);gap:5px}
.techo .puntos i{display:block;aspect-ratio:1;border-radius:50%;background:rgba(255,255,255,.07)}
.techo .puntos i.on{background:var(--tx-3)}
.techo .lado.con .puntos i.on{background:var(--ci);box-shadow:0 0 8px rgba(2,173,245,.6)}
.techo .nota{margin-top:20px;font-size:.92rem;color:var(--tx-2);line-height:1.55}
@media(max-width:520px){.techo .puntos{grid-template-columns:repeat(14,1fr);gap:4px}}

/* ---------- Los tres niveles de una campaña ---------- */
.niveles{margin-top:46px;display:grid;gap:14px}
.niveles .nv{
  border-radius:var(--r-lg);border:1px solid var(--brd);
  background:rgba(255,255,255,.024);padding:clamp(24px,3.2vw,34px);
  position:relative;transition:border-color .4s ease,background .4s ease;
}
.niveles .nv:hover{border-color:rgba(2,173,245,.34);background:rgba(255,255,255,.045)}
/* sangría creciente: reproduce la jerarquía real del administrador */
.niveles .nv.n2{margin-left:clamp(0px,3vw,46px)}
.niveles .nv.n3{margin-left:clamp(0px,6vw,92px)}
.niveles .cab{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:18px}
.niveles .ix{
  width:38px;height:38px;border-radius:11px;flex:none;
  display:flex;align-items:center;justify-content:center;
  background:rgba(2,173,245,.13);border:1px solid rgba(2,173,245,.3);
  font-size:.82rem;font-weight:800;color:var(--ci);
}
.niveles h3{font-size:1.2rem}
.niveles .et{
  font-size:.62rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--tx-3);padding:4px 10px;border-radius:5px;background:rgba(255,255,255,.06);
}
.niveles ul{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:14px 24px}
@media(max-width:860px){.niveles ul{grid-template-columns:1fr}}
.niveles li{font-size:.95rem;color:var(--tx-2);line-height:1.5;padding-left:20px;position:relative}
.niveles li::before{
  content:"";position:absolute;left:0;top:.5em;width:9px;height:9px;border-radius:3px;
  border:1.5px solid rgba(2,173,245,.55);
}
.niveles li b{color:#fff;font-weight:700;display:block;margin-bottom:2px;font-size:.97rem}

/* ---------- Resultados de clientes ---------- */
.resultados{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:46px}
@media(max-width:920px){.resultados{grid-template-columns:1fr}}
.res{
  border-radius:var(--r-lg);border:1px solid var(--brd);overflow:hidden;
  background:rgba(255,255,255,.024);display:flex;flex-direction:column;
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.res:hover{border-color:rgba(2,173,245,.4);transform:translateY(-5px)}
.res .captura{
  aspect-ratio:4/3;border-bottom:1px solid var(--brd);
  background:linear-gradient(160deg,rgba(255,255,255,.055),rgba(255,255,255,.015));
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;
  padding:20px;text-align:center;
}
.res .captura .mk{
  font-size:.6rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  padding:5px 11px;border-radius:5px;background:rgba(2,173,245,.14);color:#7fd6ff;
}
.res .captura .tx{font-size:.8rem;color:var(--tx-3);line-height:1.4}
.res .cuerpo{padding:24px 22px;flex:1}
.res .sec{font-size:.66rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-3);margin-bottom:9px}
.res .cuerpo h3{font-size:1.06rem;margin-bottom:10px}
.res .cuerpo p{font-size:.9rem}

/* ---------- Capturas del administrador de anuncios ----------
   A ancho completo y apiladas, no en la rejilla de tres columnas que habia
   antes: son tablas de datos de 1918 px de ancho, y en una tarjeta de un
   tercio de pantalla no se lee ni una cifra. Aqui lo que vale es justamente
   poder leer los numeros.
   Comparten el marco de ventana de las capturas del portal, para que las dos
   paginas hablen el mismo idioma cuando ensenan una pantalla real. */
.capturas-admin{display:grid;gap:clamp(18px,2.5vw,30px);margin-top:46px}
.captura-admin{
  margin:0;border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--brd-2);background:#0a0e16;
  box-shadow:0 40px 100px rgba(0,0,0,.55),0 0 0 1px rgba(2,173,245,.08);
}
.captura-admin .barra{
  display:flex;align-items:center;gap:7px;padding:12px 16px;
  background:rgba(255,255,255,.045);border-bottom:1px solid var(--brd);
}
.captura-admin .barra span{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.16)}
.captura-admin img{width:100%;height:auto;display:block}

/* ---------- EQUIPO ----------
   Dos tarjetas, no una fila de cuatro: son dos personas y estirarlas a lo
   ancho las deja pequenas y perdidas. Con dos columnas el retrato tiene
   tamano de retrato y la cara se reconoce, que es todo el proposito. */
.equipo{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(18px,2.6vw,30px);max-width:900px;margin:44px auto 0;
}
@media(max-width:760px){.equipo{grid-template-columns:1fr;max-width:420px}}
.persona{
  border-radius:var(--r-lg);border:1px solid var(--brd);overflow:hidden;
  background:rgba(255,255,255,.024);
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.persona:hover{border-color:rgba(2,173,245,.4);transform:translateY(-5px)}
.persona .retrato{position:relative;aspect-ratio:4/5;overflow:hidden}
.persona .retrato img{width:100%;height:100%;object-fit:cover;display:block}
/* Las fotos vienen de estudio, con fondo claro, y el sitio es oscuro: sin
   nada, cada retrato es un rectangulo blanco pegado sobre el fondo. El
   degradado por abajo funde la foto con la tarjeta en vez de recortar a la
   persona, que contra un fondo oscuro le dejaria un halo en el pelo. */
.persona .retrato::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:38%;
  background:linear-gradient(to bottom,rgba(8,11,18,0),rgba(8,11,18,.86));
}
.persona .retrato.sin-foto{
  display:flex;align-items:center;justify-content:center;
  background:linear-gradient(150deg,rgba(2,173,245,.16),rgba(255,194,0,.08));
}
.persona .retrato.sin-foto span{
  font-size:clamp(2.6rem,6vw,3.6rem);font-weight:800;letter-spacing:-.03em;
  color:rgba(242,245,249,.5);
}
.persona .quien{padding:22px 24px 26px}
.persona .cargo{
  display:inline-block;font-size:.62rem;font-weight:800;letter-spacing:.18em;
  text-transform:uppercase;color:#05070c;background:var(--am);
  padding:4px 10px;border-radius:5px;margin-bottom:12px;
}
.persona h3{font-size:1.24rem;line-height:1.2;margin-bottom:6px}
.persona .quien p{font-size:.92rem;color:var(--tx-3)}

/* ---------- Glosario de métricas ---------- */
.glosario{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--brd);
  border:1px solid var(--brd);border-radius:var(--r-lg);overflow:hidden;margin-top:44px}
@media(max-width:860px){.glosario{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.glosario{grid-template-columns:1fr}}
.glosario .g{background:var(--bg-2);padding:28px 24px}
.glosario .sig{font-size:1.35rem;font-weight:800;letter-spacing:-.03em;color:var(--ci);margin-bottom:4px}
.glosario .nom{font-size:.72rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--tx-3);margin-bottom:12px}
.glosario .exp{font-size:.9rem;color:var(--tx-2);line-height:1.5}

/* ---------- Cómo funciona la inversión ---------- */
.dinero{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:44px}
@media(max-width:760px){.dinero{grid-template-columns:1fr}}
.dinero .caja{padding:clamp(26px,3.4vw,38px);border-radius:var(--r-lg);border:1px solid var(--brd)}
.dinero .caja.uno{background:rgba(2,173,245,.05);border-color:rgba(2,173,245,.26)}
.dinero .caja.dos{background:rgba(255,194,0,.05);border-color:rgba(255,194,0,.24)}
.dinero .rot{font-size:.68rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;margin-bottom:12px}
.dinero .caja.uno .rot{color:var(--ci)}
.dinero .caja.dos .rot{color:var(--am)}
.dinero h3{font-size:1.24rem;margin-bottom:12px}
.dinero p{font-size:.97rem}
.dinero .flecha{
  display:flex;align-items:center;justify-content:center;gap:10px;margin-top:18px;
  font-size:.82rem;font-weight:700;color:var(--tx-3);
}

/* ============================================================
   BRANDING — componentes exclusivos de esa página.
   Es la página que más tiene que enseñar trabajo: el eje visual
   es la MUESTRA. Distinta de páginas web (procesos), business
   strategy (dossier), redes (el mes) y meta ads (el panel).
   ============================================================ */

/* ---------- Muestrario del hero ---------- */
.muestrario{
  border-radius:var(--r-lg);border:1px solid var(--brd-2);overflow:hidden;
  background:linear-gradient(165deg,rgba(255,255,255,.075),rgba(255,255,255,.02));
  box-shadow:0 44px 100px rgba(0,0,0,.55);
}
.muestrario .marca{
  padding:clamp(30px,4vw,46px);display:flex;align-items:center;justify-content:center;
  border-bottom:1px solid var(--brd);
}
.muestrario .marca .sig{
  font-size:clamp(2.4rem,5vw,3.4rem);font-weight:800;letter-spacing:-.06em;color:#fff;line-height:1;
}
.muestrario .marca .sig i{color:var(--ci);font-style:normal}
.muestrario .paleta{display:grid;grid-template-columns:repeat(5,1fr);height:64px}
.muestrario .paleta i{display:block}
.muestrario .tipo{padding:clamp(22px,3vw,32px);border-top:1px solid var(--brd)}
.muestrario .tipo .aa{font-size:2.6rem;font-weight:800;letter-spacing:-.05em;color:#fff;line-height:1}
.muestrario .tipo .nn{font-size:.72rem;font-weight:700;letter-spacing:.18em;text-transform:uppercase;color:var(--tx-3);margin-top:10px}
.muestrario .pie{
  padding:13px 18px;border-top:1px solid var(--brd);background:rgba(255,255,255,.03);
  font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-3);text-align:center;
}

/* ---------- Muro de marcas ---------- */
.muro{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--brd);
  border:1px solid var(--brd);border-radius:var(--r-lg);overflow:hidden;margin-top:44px}
@media(max-width:900px){.muro{grid-template-columns:repeat(3,1fr)}}
@media(max-width:520px){.muro{grid-template-columns:repeat(2,1fr)}}
.muro .mk{
  background:var(--bg-2);aspect-ratio:4/3;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;
  padding:18px;text-align:center;transition:background .4s ease;
}
.muro .mk:hover{background:rgba(2,173,245,.07)}
.muro .mk .hh{
  width:100%;flex:1;border-radius:10px;border:1.5px dashed rgba(255,255,255,.13);
  display:flex;align-items:center;justify-content:center;
  font-size:.66rem;font-weight:700;color:var(--tx-3);
}
.muro .mk .nn{font-size:.7rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--tx-3)}

/* ---------- Anatomía de una identidad ---------- */
.anatomia{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:46px}
@media(max-width:900px){.anatomia{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.anatomia{grid-template-columns:1fr}}
.anatomia .pz{
  border-radius:var(--r-md);border:1px solid var(--brd);overflow:hidden;
  background:rgba(255,255,255,.024);
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.anatomia .pz:hover{border-color:rgba(2,173,245,.4);transform:translateY(-5px)}
.anatomia .vis{
  aspect-ratio:16/10;border-bottom:1px solid var(--brd);
  display:flex;align-items:center;justify-content:center;gap:10px;padding:20px;
  background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
}
.anatomia .tx{padding:20px 22px}
.anatomia .tx h3{font-size:1.02rem;margin-bottom:7px}
.anatomia .tx p{font-size:.87rem}
/* piezas dibujadas dentro de .vis */
.anatomia .disco{width:44px;height:44px;border-radius:50%;flex:none}
.anatomia .cuadro{width:44px;height:44px;border-radius:9px;flex:none}
.anatomia .letra{font-size:2.4rem;font-weight:800;letter-spacing:-.06em;color:#fff;line-height:1}
.anatomia .barrita{height:10px;border-radius:5px;flex:1}
.anatomia .trama{
  width:100%;height:100%;border-radius:8px;
  background-image:repeating-linear-gradient(45deg,rgba(2,173,245,.28) 0 6px,transparent 6px 14px);
}

/* ---------- Aplicaciones / montajes ---------- */
.montajes{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:44px}
@media(max-width:980px){.montajes{grid-template-columns:repeat(2,1fr)}}
.montajes .mt{
  border-radius:var(--r-md);border:1.5px dashed rgba(255,255,255,.15);
  background:linear-gradient(160deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:9px;
  padding:22px 16px;text-align:center;
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.montajes .mt:hover{border-color:rgba(2,173,245,.45);transform:translateY(-5px)}
.montajes .mt.h1{aspect-ratio:16/10}
.montajes .mt.h2{aspect-ratio:4/5}
.montajes .mt .ic{width:34px;height:34px;opacity:.5}
.montajes .mt .ic svg{width:100%;height:100%;stroke:var(--tx-2);fill:none;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}
.montajes .mt .nn{font-size:.84rem;font-weight:700;color:var(--tx-2)}
.montajes .mt .ss{font-size:.72rem;color:var(--tx-3);line-height:1.35}

/* ---------- Antes y después ---------- */
.antesdespues{display:grid;gap:18px;margin-top:44px}
.ad{
  display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--brd);
  border:1px solid var(--brd);border-radius:var(--r-lg);overflow:hidden;
}
@media(max-width:680px){.ad{grid-template-columns:1fr}}
.ad .cara{background:var(--bg-2);aspect-ratio:16/10;position:relative;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:24px;text-align:center}
.ad .cara .et{
  position:absolute;top:14px;left:16px;font-size:.62rem;font-weight:800;
  letter-spacing:.18em;text-transform:uppercase;padding:4px 10px;border-radius:5px;
}
.ad .cara.antes .et{background:rgba(255,255,255,.08);color:var(--tx-3)}
.ad .cara.despues{background:rgba(2,173,245,.05)}
.ad .cara.despues .et{background:rgba(2,173,245,.16);color:#7fd6ff}
.ad .cara .hh{font-size:.78rem;color:var(--tx-3);line-height:1.4;max-width:220px}

/* ---------- Los tres grados ---------- */
.grados{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:46px}
@media(max-width:960px){.grados{grid-template-columns:1fr}}
.gr{
  border-radius:var(--r-lg);border:1px solid var(--brd);overflow:hidden;
  background:rgba(255,255,255,.024);display:flex;flex-direction:column;
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.gr:hover{transform:translateY(-5px)}
.gr.dos{border-color:rgba(2,173,245,.3);background:rgba(2,173,245,.045)}
.gr.tres{border-color:rgba(255,194,0,.28);background:rgba(255,194,0,.035)}
.gr .cab{padding:30px 28px 24px;border-bottom:1px solid var(--brd)}
.gr .num{
  font-size:.64rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;
  color:var(--tx-3);margin-bottom:12px;display:block;
}
.gr.dos .num{color:var(--ci)}
.gr.tres .num{color:var(--am)}
.gr h3{font-size:1.6rem;letter-spacing:-.035em;margin-bottom:10px}
.gr .desc{font-size:.93rem;color:var(--tx-2);line-height:1.55}
.gr .plazo{
  margin-top:16px;display:inline-flex;align-items:center;gap:8px;
  font-size:.74rem;font-weight:700;color:var(--tx-3);
  padding:6px 12px;border-radius:100px;border:1px solid var(--brd);
}
.gr .lista{list-style:none;padding:24px 28px 30px;display:grid;gap:11px;flex:1}
.gr .lista li{font-size:.9rem;color:var(--tx-2);line-height:1.45;padding-left:22px;position:relative}
.gr .lista li::before{content:"✓";position:absolute;left:0;color:var(--verde);font-weight:800;font-size:.9rem}
.gr .lista li.hereda{color:var(--tx-3)}
.gr .lista li.hereda::before{color:var(--tx-3);opacity:.5}
.gr .lista .tt{
  font-size:.64rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--tx-3);padding-left:0;margin-top:6px;
}
.gr .lista .tt::before{display:none}

/* ---------- Bifurcación: dos bocetos, una ruta ---------- */
.bifurca{
  margin-top:44px;padding:clamp(28px,4vw,44px);border-radius:var(--r-lg);
  border:1px solid var(--brd);background:rgba(255,255,255,.024);
  display:grid;grid-template-columns:auto auto auto auto;gap:clamp(18px,3vw,38px);
  align-items:center;justify-content:center;
}
@media(max-width:860px){.bifurca{grid-template-columns:1fr;justify-items:center;text-align:center}}
.bifurca .par{display:grid;gap:12px}
.bifurca .bx{
  width:112px;height:88px;border-radius:12px;border:1px solid var(--brd-2);
  background:rgba(255,255,255,.05);display:flex;align-items:center;justify-content:center;
  font-size:.76rem;font-weight:700;color:var(--tx-2);
}
.bifurca .bx.elegido{border-color:var(--ci);background:rgba(2,173,245,.14);color:#fff}
.bifurca .flecha{font-size:1.6rem;color:var(--tx-3);line-height:1}
@media(max-width:860px){.bifurca .flecha{transform:rotate(90deg)}}
.bifurca .rondas{display:flex;gap:9px;align-items:center}
.bifurca .rondas i{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--brd-2);
  display:flex;align-items:center;justify-content:center;
  font-size:.76rem;font-weight:800;color:var(--tx-2);font-style:normal;
}
.bifurca .tit{font-size:.66rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--tx-3);margin-bottom:10px}

/* ============================================================
   PÁGINAS DE DETALLE — artículo de blog y caso de proyecto.
   Son plantillas: se duplican para cada artículo y cada caso.
   ============================================================ */

/* ---------- Volver ---------- */
.volver{
  display:inline-flex;align-items:center;gap:9px;text-decoration:none;
  font-size:.85rem;font-weight:700;color:var(--tx-3);
  transition:color .3s ease,gap .3s ease;
}
.volver:hover{color:var(--ci);gap:13px}

/* ---------- Cabecera de artículo ---------- */
.art-cab{padding-top:clamp(34px,5vw,60px);padding-bottom:clamp(24px,3vw,40px)}
.art-cab .meta{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin:22px 0 18px}
.art-cab .meta .cat{
  font-size:.64rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;
  color:var(--ci);background:rgba(2,173,245,.13);padding:5px 11px;border-radius:5px;
}
.art-cab .meta .sep{color:var(--tx-3);opacity:.5}
.art-cab .meta .dt{font-size:.84rem;color:var(--tx-3)}
.art-cab h1{max-width:960px;font-size:clamp(1.9rem,4.6vw,3.5rem)}
.art-cab .bajada{max-width:800px;margin-top:20px;font-size:clamp(1.02rem,1.7vw,1.24rem);color:#c2cddc;font-weight:300;line-height:1.6}
.art-firma{
  display:flex;align-items:center;gap:14px;flex-wrap:wrap;
  margin-top:28px;padding-top:24px;border-top:1px solid var(--brd);
}
.art-firma .av{
  width:44px;height:44px;border-radius:50%;flex:none;
  background:linear-gradient(140deg,rgba(2,173,245,.3),rgba(255,194,0,.16));
  border:1px solid var(--brd-2);display:flex;align-items:center;justify-content:center;
  font-size:.6rem;color:var(--tx-3);text-align:center;
}
.art-firma .qn b{display:block;font-size:.94rem;color:#fff}
.art-firma .qn span{font-size:.8rem;color:var(--tx-3)}
.art-firma .compartir{margin-left:auto;display:flex;align-items:center;gap:9px}
.art-firma .compartir span{font-size:.76rem;color:var(--tx-3)}
.art-firma .compartir a{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--brd);
  display:flex;align-items:center;justify-content:center;text-decoration:none;
  transition:border-color .3s ease,background .3s ease;
}
.art-firma .compartir a:hover{border-color:rgba(2,173,245,.5);background:rgba(2,173,245,.1)}
.art-firma .compartir svg{width:15px;height:15px;fill:var(--tx-2)}

/* portada */
.art-portada{
  aspect-ratio:16/8;border-radius:var(--r-lg);overflow:hidden;
  border:1.5px dashed rgba(255,255,255,.15);
  background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  display:flex;align-items:center;justify-content:center;
  font-size:.86rem;color:var(--tx-3);
}
.art-portada img{width:100%;height:100%;object-fit:cover}

/* ---------- Cuerpo con índice lateral ---------- */
.art-cuerpo{display:grid;grid-template-columns:240px 1fr;gap:clamp(30px,5vw,68px);align-items:start}
@media(max-width:940px){.art-cuerpo{grid-template-columns:1fr}}
.indice{position:sticky;top:calc(var(--nav-h) + 24px)}
@media(max-width:940px){
  .indice{position:static;border:1px solid var(--brd);border-radius:var(--r-md);padding:20px 22px;margin-bottom:30px}
}
.indice .tt{font-size:.66rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--tx-3);margin-bottom:16px}
.indice ol{list-style:none;counter-reset:ix;display:grid;gap:2px}
.indice a{
  counter-increment:ix;display:block;text-decoration:none;padding:9px 12px;border-radius:9px;
  font-size:.86rem;color:var(--tx-3);line-height:1.35;border-left:2px solid transparent;
  transition:color .3s ease,background .3s ease,border-color .3s ease;
}
.indice a::before{content:counter(ix,decimal-leading-zero) "  ";font-weight:800;opacity:.6}
.indice a:hover{color:var(--tx-2);background:rgba(255,255,255,.035)}
.indice a.on{color:#fff;border-left-color:var(--ci);background:rgba(2,173,245,.09)}

/* ---------- Prosa del artículo ---------- */
.prosa{max-width:760px}
.prosa h2{
  font-size:clamp(1.35rem,2.7vw,2rem);margin-top:52px;margin-bottom:18px;scroll-margin-top:calc(var(--nav-h) + 24px);
}
.prosa h2:first-child{margin-top:0}
.prosa h3{font-size:1.14rem;margin-top:34px;margin-bottom:12px}
.prosa p{margin-bottom:20px;line-height:1.75}
.prosa ul,.prosa ol{margin:0 0 22px 0;padding-left:0;list-style:none;display:grid;gap:11px}
.prosa li{font-size:1rem;color:var(--tx-2);line-height:1.65;padding-left:24px;position:relative}
.prosa ul li::before{content:"";position:absolute;left:2px;top:.62em;width:7px;height:7px;border-radius:2px;background:var(--ci)}
.prosa ol{counter-reset:pp}
.prosa ol li{counter-increment:pp}
.prosa ol li::before{content:counter(pp);position:absolute;left:0;top:0;font-weight:800;color:var(--ci);font-size:.9rem}
.prosa b,.prosa strong{color:#fff;font-weight:700}
.prosa a{color:var(--ci)}
.prosa .cita{
  margin:34px 0;padding:26px 30px;border-left:3px solid var(--am);
  background:rgba(255,194,0,.05);border-radius:0 var(--r-md) var(--r-md) 0;
  font-size:1.16rem;font-weight:300;line-height:1.55;color:#e6ecf5;
}
.prosa .dato{
  margin:32px 0;padding:26px 28px;border-radius:var(--r-md);
  border:1px solid var(--brd);background:rgba(255,255,255,.028);
}
.prosa .dato .tt{font-size:.64rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;color:var(--ci);margin-bottom:12px}
.prosa .dato p:last-child{margin-bottom:0}
.prosa .fig{margin:32px 0}
.prosa .fig .hh{
  aspect-ratio:16/9;border-radius:var(--r-md);border:1.5px dashed rgba(255,255,255,.15);
  background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  display:flex;align-items:center;justify-content:center;font-size:.84rem;color:var(--tx-3);
}
.prosa .fig figcaption{margin-top:12px;font-size:.83rem;color:var(--tx-3);text-align:center}
.prosa table{width:100%;border-collapse:collapse;margin:30px 0;font-size:.92rem}
.prosa th,.prosa td{padding:13px 14px;text-align:left;border-bottom:1px solid var(--brd)}
.prosa thead th{color:#fff;font-weight:800;border-bottom-color:var(--brd-2);font-size:.82rem;letter-spacing:.04em}
.prosa tbody td:first-child{color:var(--tx-2)}
.prosa tbody td:last-child{color:#fff;font-weight:700}

/* ---------- Relacionados ---------- */
.relacionados{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:40px}
@media(max-width:860px){.relacionados{grid-template-columns:1fr}}
.rl{
  display:block;text-decoration:none;color:inherit;border-radius:var(--r-lg);
  border:1px solid var(--brd);overflow:hidden;background:rgba(255,255,255,.024);
  transition:border-color .45s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.rl:hover{border-color:rgba(2,173,245,.4);transform:translateY(-5px)}
.rl .im{
  aspect-ratio:16/9;border-bottom:1px solid var(--brd);
  background:linear-gradient(160deg,rgba(255,255,255,.05),rgba(255,255,255,.015));
  display:flex;align-items:center;justify-content:center;font-size:.78rem;color:var(--tx-3);
}
.rl .cp{padding:22px 22px 24px}
.rl .cat{font-size:.62rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--ci);display:block;margin-bottom:8px}
.rl h3{font-size:1.02rem;line-height:1.35}
.rl .mt{font-size:.79rem;color:var(--tx-3);margin-top:10px}

/* ---------- Portadas reales del blog ----------
   Los tres contenedores de imagen del blog nacieron como recuadros de espera:
   fondo degradado, borde discontinuo y la palabra "Portada" centrada. Al
   colgarles un <img> hay que apagar ese aviso, o el borde punteado sigue
   dibujado por encima de la foto. Se apaga solo cuando hay imagen -:has(img)-
   para que el recuadro siga funcionando en un articulo que aun no la tenga. */
.destacado .img img,
.lista-post .mini img,
.rl .im img{width:100%;height:100%;object-fit:cover;display:block}
.art-portada:has(img){border-style:solid;border-color:var(--brd);background:none}
.destacado .img:has(img),
.lista-post .mini:has(img),
.rl .im:has(img){background:none}

/* El boton de copiar enlace comparte estilo con los dos de compartir. Es un
   <button> y no un <a href="#">: no lleva a ninguna parte, y un enlace vacio
   ensucia el rastreo y rompe la navegacion por teclado. */
.art-firma .compartir button{
  width:34px;height:34px;border-radius:50%;border:1px solid var(--brd);
  display:flex;align-items:center;justify-content:center;padding:0;
  background:none;cursor:pointer;
  transition:border-color .3s ease,background .3s ease;
}
.art-firma .compartir button:hover{border-color:rgba(2,173,245,.5);background:rgba(2,173,245,.1)}
.art-firma .compartir button svg{width:15px;height:15px;fill:var(--tx-2)}
.art-firma .av{font-size:.72rem;font-weight:800;color:var(--tx-2);letter-spacing:-.02em}

/* Cierre de articulo: el puente al servicio que resuelve lo que se acaba de
   explicar. Va separado del ultimo parrafo para que se lea como lo que es. */
.prosa .cierre-servicio{
  margin-top:36px;padding-top:24px;border-top:1px solid var(--brd);
  font-size:.95rem;color:var(--tx-3);
}

/* ============================================================
   CASO DE PROYECTO
   ============================================================ */
.caso-cab{padding-top:clamp(34px,5vw,60px);padding-bottom:clamp(20px,3vw,34px)}
.caso-cab h1{max-width:900px;margin-top:18px}
.caso-cab .intro{max-width:760px;margin-top:20px;font-size:clamp(1.02rem,1.7vw,1.2rem);color:#c2cddc;font-weight:300;line-height:1.6}

/* ficha del proyecto */
.ficha-caso{
  display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--brd);
  border-top:1px solid var(--brd);border-bottom:1px solid var(--brd);margin-top:40px;
}
@media(max-width:700px){.ficha-caso{grid-template-columns:repeat(2,1fr)}}
/* Padding simétrico y contenido centrado: con relleno asimétrico el
   texto se pegaba a la línea divisoria de la celda vecina. */
.ficha-caso .f{background:var(--bg);padding:30px 24px;text-align:center}
.ficha-caso .k{font-size:.62rem;font-weight:800;letter-spacing:.2em;text-transform:uppercase;color:var(--tx-3);margin-bottom:11px}
.ficha-caso .v{font-size:1rem;font-weight:700;color:#fff;line-height:1.4}
@media(max-width:700px){.ficha-caso .f{padding:24px 16px}}

/* pantallas del proyecto: marco con scroll interno */
.pantallas{display:grid;grid-template-columns:repeat(2,1fr);gap:22px;margin-top:44px}
@media(max-width:820px){.pantallas{grid-template-columns:1fr}}
.pn .marco{
  border-radius:var(--r-md);overflow:hidden;border:1px solid var(--brd-2);
  box-shadow:0 34px 80px rgba(0,0,0,.5);background:#0a0f18;
}
.pn .barra{
  display:flex;align-items:center;gap:7px;padding:11px 14px;border-bottom:1px solid var(--brd);
  background:rgba(255,255,255,.04);
}
.pn .barra i{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.18);flex:none}
.pn .barra .url{
  margin-left:8px;font-size:.68rem;color:var(--tx-3);
  background:rgba(0,0,0,.3);padding:4px 12px;border-radius:100px;
}
.pn .lienzo{
  height:360px;overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;
  background:linear-gradient(160deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
}
.pn .lienzo::-webkit-scrollbar{width:6px}
.pn .lienzo::-webkit-scrollbar-thumb{background:rgba(255,255,255,.16);border-radius:3px}
.pn .lienzo .hh{
  min-height:820px;display:flex;align-items:center;justify-content:center;
  font-size:.84rem;color:var(--tx-3);text-align:center;padding:24px;
}
.pn .lienzo img{width:100%;display:block}
.pn .pie{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-top:14px;flex-wrap:wrap}
.pn .pie b{font-size:.95rem;color:#fff}
.pn .pie span{font-size:.76rem;color:var(--tx-3)}
.pn .desliza{
  display:inline-flex;align-items:center;gap:7px;font-size:.7rem;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:var(--ci);
}

/* incluyó el proyecto */
.incluyo{list-style:none;display:grid;grid-template-columns:repeat(2,1fr);gap:0;margin-top:36px;border-top:1px solid var(--brd)}
@media(max-width:760px){.incluyo{grid-template-columns:1fr}}
.incluyo li{
  padding:18px 6px;border-bottom:1px solid var(--brd);font-size:.98rem;color:var(--tx-2);
  display:flex;gap:14px;align-items:flex-start;line-height:1.5;
}
.incluyo li::before{content:"✓";color:var(--verde);font-weight:800;flex:none}

/* navegación entre proyectos */
.nav-caso{
  display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:52px;padding-top:30px;border-top:1px solid var(--brd);
}
.nav-caso a{
  display:inline-flex;align-items:center;gap:10px;text-decoration:none;
  font-size:.92rem;font-weight:700;color:var(--tx-2);transition:color .3s ease,gap .3s ease;
}
.nav-caso a:hover{color:var(--ci);gap:14px}
.nav-caso a .sub{display:block;font-size:.68rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-3);margin-bottom:3px}

/* ============================================================
   AGENDAR — modal de dos pasos: calificación y luego Calendly.
   Se inyecta desde click.js, así que vive en todas las páginas
   sin repetir el bloque en cada HTML.
   ============================================================ */
/* La visibilidad la decide `display`, no una transición: si la
   animación no llega a correr, el modal igual se ve. Transicionar
   `visibility` dejaba la página bloqueada con el modal invisible. */
.ag-ov{position:fixed;inset:0;z-index:9000;display:none;align-items:flex-start;
  justify-content:center;padding:26px 18px;overflow-y:auto;
  background:rgba(3,5,9,.78);backdrop-filter:blur(9px);-webkit-backdrop-filter:blur(9px);
  opacity:0;transition:opacity .26s ease}
.ag-ov.montado{display:flex}
.ag-ov.abierto{opacity:1}
body.ag-bloq{overflow:hidden}

.ag-md{width:100%;max-width:680px;margin:auto;position:relative;
  background:linear-gradient(168deg,var(--sur) 0%,var(--bg-2) 100%);
  border:1px solid var(--brd-2);border-radius:var(--r-lg);
  box-shadow:0 30px 90px rgba(0,0,0,.6);
  transform:translateY(18px) scale(.985);transition:transform .3s cubic-bezier(.22,1,.36,1)}
.ag-ov.abierto .ag-md{transform:none}

.ag-cerrar{position:absolute;top:14px;right:14px;width:38px;height:38px;z-index:2;
  display:flex;align-items:center;justify-content:center;
  background:rgba(255,255,255,.05);border:1px solid var(--brd);border-radius:50%;
  color:var(--tx-2);font-size:1.15rem;line-height:1;cursor:pointer;
  transition:background .2s ease,color .2s ease,border-color .2s ease}
.ag-cerrar:hover{background:rgba(255,255,255,.1);color:#fff;border-color:var(--brd-2)}

.ag-cab{padding:32px clamp(22px,4vw,38px) 0}
.ag-cab h3{font-size:clamp(1.3rem,2.6vw,1.6rem);line-height:1.2;margin:0 0 8px}
.ag-cab p{font-size:.95rem;color:var(--tx-2);margin:0}

/* Indicador de paso: es un rótulo, no un control. Antes eran dos
   cajas que parecían pulsables e invitaban a saltarse el formulario. */
.ag-paso{margin:22px 0 0}
.ag-paso .n{display:block;font-size:.72rem;font-weight:800;
  letter-spacing:.17em;text-transform:uppercase;color:var(--ci);margin-bottom:5px}
.ag-paso .t{display:block;font-size:.93rem;color:var(--tx-2)}
.ag-barra{height:3px;margin-top:13px;border-radius:99px;
  background:rgba(255,255,255,.07);overflow:hidden}
.ag-barra i{display:block;height:100%;width:50%;border-radius:99px;
  background:linear-gradient(90deg,var(--ci),var(--ci-2));
  transition:width .45s cubic-bezier(.22,1,.36,1)}
.ag-barra.lleno i{width:100%}

.ag-cuerpo{--ag-pad:clamp(22px,4vw,38px);
  padding:24px var(--ag-pad) clamp(26px,4vw,34px)}
.ag-cuerpo .fg{margin-bottom:15px}
.ag-cuerpo .fg textarea{min-height:94px}
.ag-cuerpo .g2f{gap:14px}
.ag-nota{font-size:.79rem;color:var(--tx-3);text-align:center;margin:13px 0 0}
.ag-err{display:none;margin:0 0 15px;padding:11px 14px;border-radius:var(--r-sm);
  border:1px solid rgba(224,85,74,.4);background:rgba(224,85,74,.1);
  color:#ff9d94;font-size:.86rem;font-weight:600}
.ag-err.ver{display:block}
.fg input.mal,.fg select.mal,.fg textarea.mal{border-color:var(--rojo)}

/* Paso 2 */
.ag-p2{display:none}
.ag-p2.ver{display:block}
.ag-ok{display:flex;align-items:center;gap:13px;margin-bottom:20px;
  padding:15px 17px;border-radius:var(--r-sm);
  border:1px solid rgba(81,190,84,.35);background:rgba(81,190,84,.09)}
.ag-ok .ic{flex:none;width:34px;height:34px;border-radius:50%;
  background:linear-gradient(140deg,var(--verde),#3d9c40);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:1.05rem;font-weight:800}
.ag-ok b{display:block;font-size:.97rem;margin-bottom:2px}
.ag-ok span{font-size:.85rem;color:var(--tx-2)}

/* Contenedor del calendario incrustado. La altura es generosa a
   propósito: si el calendario no cabe, el visitante termina
   arrastrando dentro de un recuadro que a su vez está dentro de otro
   que también se desplaza, y no distingue cuál está moviendo. */
.ag-cal{border-radius:var(--r-md);overflow:hidden;
  border:1px solid var(--brd);background:#fff}
.ag-cal iframe{width:100%;height:700px;border:0;display:block}

/* Aviso mientras no haya cuenta de Calendly conectada */
.ag-pend{padding:34px 26px;text-align:center;border-radius:var(--r-md);
  border:1px dashed rgba(255,194,0,.4);background:rgba(255,194,0,.05)}
.ag-pend b{display:block;color:var(--am);font-size:.76rem;font-weight:800;
  letter-spacing:.15em;text-transform:uppercase;margin-bottom:11px}
.ag-pend p{font-size:.93rem;color:var(--tx-2);margin:0 auto;max-width:400px}
.ag-pend .alt{margin-top:20px;display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

@media(max-width:560px){
  .ag-ov{padding:0}
  .ag-md{max-width:none;min-height:100%;border-radius:0;border:0;margin:0}
  .ag-cab{padding-top:26px}
  .ag-cerrar{width:44px;height:44px}   /* mínimo táctil para el pulgar */
  .ag-cuerpo .g2f{grid-template-columns:1fr}
  /* El calendario recupera los márgenes del cuerpo: en un teléfono
     cada píxel de ancho cuenta para que quepan los días. */
  .ag-cal{margin:0 calc(-1 * var(--ag-pad));border-radius:0;border-left:0;border-right:0}
  .ag-cal iframe{height:760px}
}
@media(prefers-reduced-motion:reduce){
  .ag-ov,.ag-md{transition:none}
}

/* ============================================================
   PÁGINAS WEB — capacidades técnicas, sectores y obras.
   El desarrollo lo ejecuta Takum, socio técnico de Click; por eso
   la página puede sostener un nivel que antes no comunicaba.
   ============================================================ */

/* --- Capacidades técnicas --- */
.tec{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin-top:44px}
.tec .t{padding:28px 26px;border:1px solid var(--brd);border-radius:var(--r-md);
  background:linear-gradient(160deg,rgba(255,255,255,.045),rgba(255,255,255,.015));
  transition:border-color .35s ease,transform .35s cubic-bezier(.16,1,.3,1)}
.tec .t:hover{border-color:var(--brd-2);transform:translateY(-4px)}
.tec .t h3{font-size:1.06rem;margin-bottom:9px;color:var(--am)}
.tec .t p{font-size:.93rem;margin-bottom:15px}
.tec .chips{display:flex;flex-wrap:wrap;gap:7px}
.tec .chips span{font-size:.72rem;font-weight:700;letter-spacing:.04em;
  padding:5px 11px;border-radius:100px;color:var(--ci);
  background:rgba(2,173,245,.09);border:1px solid rgba(2,173,245,.22)}

/* --- Sectores con lo que se entrega en cada uno --- */
.sect{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:16px;margin-top:42px}
.sect .s{padding:24px 22px;border:1px solid var(--brd);border-radius:var(--r-md);
  background:rgba(255,255,255,.02);transition:border-color .3s ease,background .3s ease}
.sect .s:hover{border-color:rgba(2,173,245,.35);background:rgba(2,173,245,.04)}
.sect .s h3{font-size:1rem;margin-bottom:6px}
.sect .s .d{font-size:.87rem;color:var(--tx-2);margin-bottom:14px;line-height:1.5}
.sect .s ul{list-style:none;padding:0;margin:0;display:grid;gap:6px}
.sect .s li{font-size:.83rem;color:var(--tx-3);padding-left:15px;position:relative}
.sect .s li::before{content:'';position:absolute;left:0;top:8px;width:5px;height:5px;
  border-radius:50%;background:var(--ci);opacity:.65}

/* --- Obras: rejilla de trabajos entregados --- */
.obras{display:grid;grid-template-columns:repeat(auto-fill,minmax(292px,1fr));gap:20px;margin-top:42px}
.obra{display:block;text-decoration:none;border-radius:var(--r-md);overflow:hidden;
  border:1px solid var(--brd);background:var(--sur);
  transition:border-color .35s ease,transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s ease}
.obra:hover{border-color:var(--brd-2);transform:translateY(-5px);
  box-shadow:0 18px 46px rgba(0,0,0,.4)}
.obra .im{aspect-ratio:16/10;overflow:hidden;background:#0a0e16;display:block}
.obra .im img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .6s cubic-bezier(.16,1,.3,1)}
.obra:hover .im img{transform:scale(1.04)}
/* El texto necesita aire: pegado al borde la tarjeta se lee apretada
   y el conjunto pierde el aspecto de trabajo cuidado que debe vender. */
.obra .tx{display:block;padding:24px 26px 28px}
/* letter-spacing añade un hueco tras la última letra pero no antes, así
   que sin compensarlo el rótulo queda medio píxel corrido del título. */
.obra .cat{display:block;font-size:.66rem;font-weight:800;letter-spacing:.15em;
  text-indent:-.02em;text-transform:uppercase;color:var(--ci);margin-bottom:11px}
.obra h3{font-size:1.06rem;margin-bottom:9px;color:var(--tx);letter-spacing:-.01em}
.obra p{font-size:.86rem;color:var(--tx-3);line-height:1.55}


/* --- Filtros de la galería de proyectos --- */
.filtros{display:flex;gap:9px;justify-content:center;flex-wrap:wrap;margin-bottom:40px}
.fbtn{font-family:inherit;font-size:.86rem;font-weight:700;padding:11px 22px;min-height:44px;
  border-radius:100px;cursor:pointer;color:var(--tx-2);
  background:rgba(255,255,255,.03);border:1px solid var(--brd);
  transition:color .25s ease,border-color .25s ease,background .25s ease}
.fbtn:hover{color:var(--tx);border-color:var(--brd-2)}
.fbtn.on{color:#04121b;background:var(--ci);border-color:var(--ci)}
.obra.fuera{display:none}

/* ============================================================
   FICHA TÉCNICA — sustituye a las tarjetas con párrafo. Seis
   bloques de texto seguidos no se leen; una ficha se escanea en
   veinte segundos y comunica lo mismo.
   ============================================================ */
.ficha{margin-top:42px;border:1px solid var(--brd);border-radius:var(--r-md);overflow:hidden}
.ficha .fl{display:grid;grid-template-columns:minmax(210px,1fr) 2fr;gap:22px;
  padding:19px 24px;border-bottom:1px solid var(--brd);
  transition:background .25s ease}
.ficha .fl:last-child{border-bottom:0}
.ficha .fl:hover{background:rgba(2,173,245,.035)}
.ficha .fl .q{font-weight:700;font-size:.97rem;color:var(--tx);align-self:center}
.ficha .fl .con{display:flex;flex-wrap:wrap;gap:7px;align-items:center}
.ficha .fl .con span{font-size:.75rem;font-weight:600;letter-spacing:.02em;
  padding:5px 11px;border-radius:100px;color:var(--tx-2);
  background:rgba(255,255,255,.04);border:1px solid var(--brd)}
.ficha .fl:hover .con span{border-color:rgba(2,173,245,.28);color:var(--tx)}

@media(max-width:700px){
  .ficha .fl{grid-template-columns:1fr;gap:11px;padding:17px 18px}
  .ficha .fl .q{font-size:.94rem}
}

/* ============================================================
   VITRINA — carrusel de trabajos en el encabezado. Usa scroll
   nativo con anclaje: se arrastra con el dedo en teléfono y con
   la rueda en escritorio, sin depender de JavaScript para lo
   esencial. El JS solo añade el avance automático.
   ============================================================ */
/* min-width:0 es imprescindible: dentro de una rejilla los hijos no
   pueden encogerse por debajo de su contenido, así que la pista
   empujaba el ancho del documento y aparecía scroll horizontal en
   toda la página. */
.vitrina{position:relative;min-width:0;max-width:100%}
.vitrina .pista{
  display:flex;gap:18px;overflow-x:auto;overscroll-behavior-x:contain;
  scroll-snap-type:x mandatory;scroll-behavior:smooth;
  min-width:0;max-width:100%;
  scrollbar-width:none;-ms-overflow-style:none;
}
.vitrina .pista::-webkit-scrollbar{display:none}
.vitrina .sl{
  flex:0 0 100%;scroll-snap-align:center;position:relative;
  border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--brd-2);background:#0a0e16;
  box-shadow:0 26px 70px rgba(0,0,0,.5),0 0 0 1px rgba(2,173,245,.1);
}
/* height:auto es obligatorio: el atributo height del HTML reserva
   espacio para evitar saltos al cargar, pero si no se anula aquí gana
   sobre aspect-ratio y estira la imagen en vertical. */
.vitrina .sl img{width:100%;height:auto;aspect-ratio:16/10;object-fit:cover;display:block}

/* --- Flechas: más directas que los puntos para pasar de uno en uno --- */
.vitrina .fl{
  position:absolute;top:calc(50% - 34px);transform:translateY(-50%);z-index:3;
  width:44px;height:44px;border-radius:50%;border:1px solid var(--brd-2);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  background:rgba(8,11,18,.78);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  color:var(--tx);font-size:1.1rem;line-height:1;padding:0;
  transition:background .25s ease,border-color .25s ease,opacity .25s ease;
}
.vitrina .fl:hover{background:rgba(2,173,245,.9);border-color:var(--ci);color:#04121b}
.vitrina .fl:focus-visible{outline:3px solid var(--am);outline-offset:2px}
.vitrina .fl.izq{left:12px}
.vitrina .fl.der{right:12px}

/* Etiqueta con el proyecto que se está viendo. Muestra un dato real
   en lugar de una métrica decorativa. */
.vitrina .eti{
  position:absolute;left:16px;bottom:16px;right:16px;
  display:flex;align-items:center;gap:12px;
  padding:13px 16px;border-radius:var(--r-md);
  background:rgba(8,11,18,.82);backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);border:1px solid var(--brd-2);
}
.vitrina .eti .pt{width:8px;height:8px;border-radius:50%;flex:none;
  background:var(--verde);box-shadow:0 0 0 4px rgba(81,190,84,.16)}
.vitrina .eti .d{flex:1;min-width:0}
.vitrina .eti b{display:block;font-size:.92rem;color:var(--tx);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.vitrina .eti span{font-size:.76rem;color:var(--tx-3)}
.vitrina .eti .ver{flex:none;font-size:.74rem;font-weight:800;letter-spacing:.06em;
  text-transform:uppercase;color:var(--ci);text-decoration:none;white-space:nowrap}

.vitrina .puntos{display:flex;gap:7px;justify-content:center;margin-top:18px;flex-wrap:wrap}

/* La columna del texto es mas alta que la imagen, asi que con
   align-items:end quedaba un hueco muerto de unos 145 px encima de la
   vitrina y la seccion se veia descuadrada. En dos columnas la vitrina
   estira hasta llenar la fila y la imagen la llena con object-fit:cover.
   El recorte se topa en 4/3 y no mas: en estas portadas el equipo
   (pantalla, laptop, telefono) vive entre el 17 % y el 81 % del ancho,
   asi que 4/3 se lleva un 13 % por lado y no toca el mockup. Dejarla
   estirar libre llegaba al 18 % a 1024 px y cortaba el telefono.
   Debajo de 900 px la rejilla es de una sola columna, no hay fila que
   llenar, y manda el aspect-ratio de siempre. */
@media(min-width:901px){
  .hero-dos{align-items:stretch}
  .vitrina{display:flex;flex-direction:column;justify-content:center}
  .vitrina .pista{min-height:0}
  .vitrina .sl img{aspect-ratio:4/3}
}
.vitrina .puntos button{width:7px;height:7px;padding:0;border:0;border-radius:50%;
  background:rgba(255,255,255,.18);cursor:pointer;transition:background .3s ease,width .3s ease}
.vitrina .puntos button.on{width:22px;border-radius:100px;background:var(--ci)}

@media(max-width:900px){
  .vitrina{margin-top:34px}
}

/* ============================================================
   TIPOS DE SITIO — cada tarjeta lleva un esquema de su estructura.
   Lo que distingue una tienda de una landing no es el texto que las
   describe: es cómo están armadas. Dibujarlo lo explica antes de leer.
   ============================================================ */
.listado{list-style:none;margin-top:44px;border-top:1px solid var(--brd)}
/* Tres columnas -numero, nombre, que hace- para que el nombre quede en
   su propia banda vertical: asi los seis tipos se leen de un vistazo
   sin tener que entrar en cada parrafo. */
.listado .lt{
  display:grid;grid-template-columns:52px minmax(0,.42fr) minmax(0,1fr);
  gap:clamp(16px,3vw,38px);align-items:baseline;
  padding:24px 6px;border-bottom:1px solid var(--brd);
  transition:background .35s ease;
}
.listado .lt:hover{background:rgba(2,173,245,.035)}
.listado .nu{
  font-size:.74rem;font-weight:800;letter-spacing:.14em;color:var(--tx-3);
  transition:color .35s ease;
}
.listado .lt:hover .nu{color:var(--ci)}
.listado h3{font-size:1.06rem;color:var(--am);margin:0}
.listado p{font-size:.92rem;line-height:1.6;margin:0}
/* Debajo de 820 px las tres columnas no caben: el nombre y el texto se
   apilan sangrados bajo el numero, que se queda de guia a la izquierda. */
@media(max-width:820px){
  .listado .lt{grid-template-columns:38px minmax(0,1fr);row-gap:9px;padding:20px 4px}
  .listado p{grid-column:2}
}

/* ---------- ENCARGADO ----------
   Ocupa el ancho completo de la seccion. Antes era un bloque compacto de
   600 px y se veia perdido en medio de la pagina: quien construye los
   sitios que vende Click merece el mismo peso visual que un bloque de
   contenido, no una nota al margen.
   La foto trae su propio fondo celeste y se respeta tal cual; recortarla
   contra el fondo oscuro le dejaria un halo.

   El texto son tres lineas. Con el bloque pegado al borde izquierdo de una
   tarjeta de 1100 px quedaban 400 px muertos a la derecha, que es lo que
   hacia que el bloque se viera desequilibrado en vez de grande. Por eso el
   conjunto -retrato y texto- va centrado: la tarjeta ocupa todo el ancho y
   el aire sobrante se reparte a los dos lados en vez de acumularse en uno. */
.constructor{
  display:flex;justify-content:center;
  align-items:center;gap:clamp(24px,4vw,54px);
  padding:clamp(26px,3.6vw,44px) clamp(24px,4vw,56px);
  border:1px solid var(--brd-2);border-radius:var(--r-lg);
  background:linear-gradient(165deg,rgba(255,255,255,.045),rgba(255,255,255,.012));
}
.constructor .retrato{
  flex:none;width:clamp(150px,20vw,272px);
  border-radius:var(--r-md);overflow:hidden;
}
.constructor .retrato img{width:100%;height:auto;aspect-ratio:1;object-fit:cover;display:block}
.constructor .quien{min-width:0}
.constructor .quien h2{
  font-size:clamp(1.9rem,4.2vw,3.1rem);margin:14px 0 0;line-height:1.04;
  letter-spacing:-.02em;
}
.constructor .cargo{
  margin-top:12px;font-size:clamp(.92rem,1.5vw,1.12rem);
  font-weight:700;color:var(--ci);line-height:1.45;
}
/* Variante alineada a la izquierda (nosotros, 2026-08-25): con dos
   tarjetas apiladas, los retratos tienen que quedar en la misma vertical
   — centrados, cada foto arrancaba donde le tocara segun el ancho del
   texto y se veian desalineadas. */
.constructor.izq{justify-content:flex-start}
/* La ficha de Business Strategy usa el mismo card, con dos anadidos: la lista
   de titulaciones y el boton. El retrato sube un poco de tamano porque ahi la
   tarjeta va sola y tiene mas sitio. */
/* Separacion del parrafo de arriba. El card heredaba .constructor, que se usa
   dentro de contenedores que ya ponen el hueco (en /nosotros lo da el gap de
   la rejilla); aqui va suelto detras de un parrafo y arrancaba pegado a el.
   El valor es el mismo que usan los otros bloques de esta pagina. */
.constructor.bs{margin-top:clamp(32px,4vw,46px)}
.constructor.bs .retrato{width:clamp(160px,22vw,300px)}
.constructor.bs .titulos{
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px 20px;
  list-style:none;padding:0;margin:16px 0 22px;max-width:560px;
}
@media(max-width:560px){.constructor.bs .titulos{grid-template-columns:1fr}}
.constructor.bs .titulos li{
  font-size:.85rem;color:var(--tx-2);padding-left:17px;position:relative;line-height:1.45;
}
.constructor.bs .titulos li::before{
  content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;
  border-radius:2px;background:var(--ci);
}
.constructor .area{
  margin-top:8px;max-width:520px;
  font-size:.95rem;color:var(--tx-3);line-height:1.5;
}
.constructor .frase{
  margin-top:14px;max-width:520px;
  font-size:clamp(.95rem,1.4vw,1.05rem);font-style:italic;
  color:var(--tx-2);line-height:1.55;
}
/* En movil la fila de dos columnas deja el retrato diminuto y el nombre
   partido en tres lineas. Apilado, la foto manda y el nombre entra entero. */
@media(max-width:640px){
  .constructor{
    flex-direction:column;text-align:center;
    gap:20px;padding:26px 20px;
  }
  .constructor .retrato{width:min(200px,58vw)}
}

/* ---------- EL HUB DEL CLIENTE ----------
   Una captura de pantalla de una aplicacion clara ya explica sola lo
   que es; la lista de abajo dice para que sirve cada parte. La barra de
   tres puntos encima la encuadra como ventana de navegador sin tener
   que dibujar un navegador entero. */
.hub-vista{
  margin:44px 0 0;border-radius:var(--r-lg);overflow:hidden;
  border:1px solid var(--brd-2);background:#0a0e16;
  box-shadow:0 40px 100px rgba(0,0,0,.6),0 0 0 1px rgba(2,173,245,.1);
}
.hub-vista .barra{
  display:flex;align-items:center;gap:7px;padding:12px 16px;
  background:rgba(255,255,255,.045);border-bottom:1px solid var(--brd);
}
.hub-vista .barra span{width:9px;height:9px;border-radius:50%;background:rgba(255,255,255,.16)}
.hub-vista img{width:100%;height:auto;display:block}

/* ---------- Carrusel de vistas del portal ----------
   Scroll horizontal con scroll-snap y no un carrusel de JavaScript: el swipe
   del telefono, el trackpad y las teclas de flecha ya funcionan de fabrica, y
   si el script falla la seccion sigue siendo utilizable -se desplaza a mano-.
   El JS solo anade las flechas y los puntos, que es lo que falta en escritorio. */
.hv-carrusel{position:relative}
.hv-pista{
  display:flex;margin:0;padding:0;list-style:none;
  overflow-x:auto;scroll-snap-type:x mandatory;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
}
.hv-pista::-webkit-scrollbar{display:none}
.hv-pista:focus-visible{outline:2px solid var(--ci);outline-offset:-2px}
.hv-lamina{flex:0 0 100%;scroll-snap-align:center;min-width:0}
/* Alto fijo por proporcion: sin esto, la lamina que aun no ha cargado mide
   cero y el bloque de abajo salta cuando entra la imagen. */
.hv-lamina img{width:100%;aspect-ratio:1600/788;object-fit:cover;display:block}

.hv-flecha{
  position:absolute;top:50%;transform:translateY(-50%);
  width:44px;height:44px;border-radius:50%;
  border:1px solid rgba(255,255,255,.18);background:rgba(6,9,15,.72);
  backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  display:flex;align-items:center;justify-content:center;cursor:pointer;
  transition:background .3s ease,border-color .3s ease,opacity .3s ease;
}
.hv-flecha:hover{background:rgba(2,173,245,.28);border-color:rgba(2,173,245,.55)}
.hv-flecha:disabled{opacity:.25;cursor:default}
.hv-flecha.atras{left:14px}
.hv-flecha.adelante{right:14px}
.hv-flecha svg{width:20px;height:20px;fill:none;stroke:#f2f5f9;stroke-width:2.1;
  stroke-linecap:round;stroke-linejoin:round}

.hv-puntos{
  display:flex;justify-content:center;align-items:center;gap:9px;
  padding:13px 16px;border-top:1px solid var(--brd);
  background:rgba(255,255,255,.02);
}
/* Puntos y no botones con el nombre de cada vista: un indice con cuatro
   nombres se lee como el inventario del portal -"tiene estas cuatro cosas"-
   cuando esto es solo una muestra. El punto dice cuantas hay y por donde vas,
   y no promete que ahi se acabe. */
.hv-punto{
  width:8px;height:8px;padding:0;border-radius:50%;cursor:pointer;
  border:0;background:rgba(255,255,255,.22);
  transition:background .3s ease,transform .3s ease;
}
.hv-punto:hover{background:rgba(255,255,255,.45)}
.hv-punto.activo{background:var(--ci);transform:scale(1.35)}
@media(max-width:620px){
  /* El dedo hace el trabajo, pero la flecha se queda: es la senal de que hay
     mas a la derecha. Mas pequena y pegada al borde para tapar lo minimo. */
  .hv-flecha{width:36px;height:36px;background:rgba(6,9,15,.6)}
  .hv-flecha.atras{left:8px}
  .hv-flecha.adelante{right:8px}
  .hv-flecha svg{width:17px;height:17px}
}
/* El desplazamiento entre laminas lo anima el script, no scroll-behavior:
   con esa propiedad activa hay navegadores donde el scroll programatico deja
   de responder por completo y los botones no mueven nada. El swipe del dedo
   no depende de esto: lo hace el scroll nativo con scroll-snap.
   Quien pide menos movimiento salta de lamina sin animacion; eso lo comprueba
   el script leyendo la misma preferencia. */
.hub-vista figcaption{
  padding:13px 18px;border-top:1px solid var(--brd);
  background:rgba(255,255,255,.03);
  font-size:.78rem;color:var(--tx-3);line-height:1.5;text-align:center;
}
.hub-lista{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));
  gap:1px;background:var(--brd);border:1px solid var(--brd);
  border-radius:var(--r-md);overflow:hidden;margin-top:34px;
}
.hub-lista .hi{background:#080b12;padding:24px 22px}
.hub-lista .hi h3{font-size:1rem;color:var(--am);margin-bottom:8px}
.hub-lista .hi p{font-size:.88rem;line-height:1.6;margin:0}
.hub-cierre{
  margin-top:32px;text-align:center;font-size:1rem;color:var(--tx-2);line-height:1.65;
  max-width:660px;margin-left:auto;margin-right:auto;
}
.hub-cierre b{display:block;color:#fff;font-weight:700;margin-top:6px}
@media(max-width:560px){
  .hub-vista figcaption{font-size:.74rem;padding:11px 14px}
  .hub-lista .hi{padding:20px 18px}
}

/* ============================================================
   PRODUCCION AUDIOVISUAL
   La unica pagina de servicio que abre con video y que explica su
   proceso en horizontal. Las dos cosas son deliberadas: vende algo que
   se mueve y vende una jornada, asi que la pagina se mueve y se recorre
   como una jornada.
   ============================================================ */
.av-dos{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(28px,5vw,64px);align-items:center;margin-top:8px}
@media(max-width:900px){.av-dos{grid-template-columns:1fr}}
.av-video{max-width:330px;margin:0 auto}
.av-video .marco{
  border-radius:22px;overflow:hidden;border:1px solid var(--brd-2);
  background:#05070c;box-shadow:0 34px 80px rgba(0,0,0,.6),0 0 0 1px rgba(2,173,245,.12);
}
.av-video video{width:100%;height:auto;aspect-ratio:9/16;object-fit:cover;display:block}
.av-video .pie{margin-top:12px;text-align:center;font-size:.78rem;color:var(--tx-3)}

/* --- El dia de rodaje ---
   Rejilla y no tira con desplazamiento. La tira alineaba la etapa 01 con
   el titular, pero para eso el relleno lateral tenia que valer lo que
   mide el margen del contenedor -426 px en una pantalla de 2000- y con
   ese relleno ya no queda sitio para centrar nada.
   Con rejilla se centra de verdad y ademas nunca hay que desplazar. Los
   cortes son 6, 3, 2 y 1 columnas: seis etapas se dividen exacto entre
   todos, asi que no queda una fila coja en ningun ancho. */
.linea-dia{
  display:grid;grid-template-columns:1fr;gap:16px;
  max-width:1180px;margin:38px auto 0;padding:0 24px;
}
@media(min-width:640px){.linea-dia{grid-template-columns:repeat(2,1fr)}}
@media(min-width:1000px){.linea-dia{grid-template-columns:repeat(3,1fr)}}
@media(min-width:1760px){.linea-dia{max-width:1760px;grid-template-columns:repeat(6,1fr)}}
.linea-dia .ld{
  padding:26px 24px 28px;border-radius:var(--r-md);
  border:1px solid var(--brd);background:linear-gradient(165deg,rgba(255,255,255,.05),rgba(255,255,255,.014));
  position:relative;
}
/* La linea que une una etapa con la siguiente. Se retira en la ultima de
   cada fila, que cambia segun el numero de columnas: si no, apunta al
   vacio del borde derecho. */
.linea-dia .ld::after{
  content:"";position:absolute;top:44px;left:100%;width:16px;height:1px;
  background:rgba(2,173,245,.35);
}
.linea-dia .ld:last-child::after{display:none}
@media(max-width:639px){.linea-dia .ld::after{display:none}}
@media(min-width:640px) and (max-width:999px){.linea-dia .ld:nth-child(2n)::after{display:none}}
@media(min-width:1000px) and (max-width:1759px){.linea-dia .ld:nth-child(3n)::after{display:none}}
.linea-dia .nu{
  display:block;font-size:.72rem;font-weight:800;letter-spacing:.16em;color:var(--ci);margin-bottom:14px;
}
.linea-dia .ld h3{font-size:1.02rem;color:#fff;margin-bottom:9px}
.linea-dia .ld p{font-size:.88rem;line-height:1.6;margin:0}

/* --- La galeria de foto dentro del servicio --- */
/* Columnas fijas y no auto-fit: son ocho fotos, y auto-fit las repartia
   en seis columnas dejando dos huerfanas en la segunda fila. Cuatro y dos
   son los unicos repartos que cierran en filas completas. */
.av-galeria{
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:clamp(9px,1.2vw,14px);margin-top:36px;
}
@media(min-width:900px){.av-galeria{grid-template-columns:repeat(4,1fr)}}
.av-galeria figure{margin:0;border-radius:var(--r-md);overflow:hidden;background:#05070c}
.av-galeria img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;display:block}

/* --- Formatos: el fotograma manda, el texto acompana --- */
.formatos{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(158px,1fr));
  gap:clamp(10px,2vw,20px);margin-top:38px;
}
@media(min-width:760px){.formatos{grid-template-columns:repeat(auto-fit,minmax(228px,1fr))}}
@media(max-width:520px){
  .formatos .fm h3{font-size:.92rem;margin:14px 14px 6px}
  .formatos .fm p{font-size:.8rem;margin:0 14px 16px}
}
.formatos .fm{
  border:1px solid var(--brd);border-radius:var(--r-md);overflow:hidden;
  background:rgba(255,255,255,.02);
}
.formatos .fm .im{aspect-ratio:9/16;overflow:hidden;background:#05070c;display:block}
.formatos .fm .im img{width:100%;height:100%;object-fit:cover;display:block}
.formatos .fm h3{font-size:1rem;color:var(--am);margin:18px 20px 8px}
.formatos .fm p{font-size:.86rem;line-height:1.6;margin:0 20px 22px}

/* --- Lo que pone Click --- */
.av-recursos{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  gap:1px;background:var(--brd);border:1px solid var(--brd);
  border-radius:var(--r-md);overflow:hidden;margin-top:38px;
}
.av-recursos .rc{background:#080b12;padding:24px 22px}
.av-recursos .rc b{display:block;font-size:.98rem;color:#fff;margin-bottom:8px}
.av-recursos .rc span{font-size:.87rem;line-height:1.6;color:var(--tx-3)}

/* ---------- GALERIA DE UNA SESION DE FOTO ----------
   Tres columnas de 4/5, que es el formato en el que se publicaron. No se
   recorta ninguna: en fotografia el encuadre es el trabajo, y recortarlo
   para cuadrar una rejilla es deshacer lo que se contrato. */
.galeria-foto{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
  gap:clamp(10px,1.4vw,16px);margin-top:34px;
}
.galeria-foto .fo{margin:0;border-radius:var(--r-md);overflow:hidden;background:#05070c}
.galeria-foto .fo img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;display:block}

/* ---------- MURO DE MARCAS TRABAJADAS ----------
   Cada tarjeta ensena la portada del manual, que es la lamina que mejor
   resume cada identidad, y entra al caso. La imagen va recortada a 16/10
   para que las ocho midan lo mismo aunque los manuales vengan en formatos
   distintos -hay apaisados de 16/9 y verticales de catalogo-. */
.muro-marcas{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));
  gap:clamp(14px,2vw,20px);margin-top:40px;
}
.muro-marcas .mkk{
  display:block;text-decoration:none;border-radius:var(--r-md);overflow:hidden;
  border:1px solid var(--brd);background:rgba(255,255,255,.02);
  transition:border-color .35s ease,transform .4s cubic-bezier(.16,1,.3,1);
}
.muro-marcas .mkk:hover{border-color:rgba(2,173,245,.45);transform:translateY(-4px)}
.muro-marcas .im{display:block;aspect-ratio:16/10;overflow:hidden;background:#05070c}
.muro-marcas .im img{width:100%;height:100%;object-fit:cover;display:block}
.muro-marcas .tx{display:block;padding:16px 18px}
.muro-marcas .tx b{display:block;font-size:1rem;color:#fff;margin-bottom:3px}
.muro-marcas .tx span{font-size:.82rem;color:var(--tx-3)}

/* ---------- APLICACIONES REALES ----------
   Aqui no se recorta: la gracia de una aplicacion es verla completa, con
   su aire. Por eso cada figura respeta la proporcion que trae. */
.aplicaciones{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));
  gap:clamp(14px,2vw,20px);margin-top:40px;align-items:start;
}
/* Tres columnas explicitas (2026-08-25): con figuras de alturas muy
   distintas la rejilla automatica dejaba huecos y una pieza huerfana
   abajo. Cada columna apila sus piezas y las tres cierran parejas. */
.aplicaciones .apl-col{display:grid;gap:clamp(14px,2vw,20px);align-content:start}
.aplicaciones figure{
  margin:0;border-radius:var(--r-md);overflow:hidden;
  border:1px solid var(--brd-2);background:#0a0e16;
}
.aplicaciones img{width:100%;height:auto;display:block}
.aplicaciones figcaption{
  padding:11px 15px;border-top:1px solid var(--brd);background:rgba(255,255,255,.03);
  font-size:.78rem;font-weight:700;letter-spacing:.04em;color:var(--tx-3);
}

/* ---------- LAMINAS DE UN MANUAL DE MARCA ----------
   Una columna y no una rejilla: cada lamina es una pagina de un manual y
   se lee entera o no se lee. Puestas de dos en dos quedan a la mitad de
   ancho y el texto de dentro -paletas, codigos, normas de uso- deja de
   distinguirse, que es justo lo que hay que ensenar. */
.laminas{display:grid;gap:clamp(14px,2vw,22px);margin-top:34px}
.laminas .lam{
  margin:0;border-radius:var(--r-md);overflow:hidden;
  border:1px solid var(--brd-2);background:#0a0e16;
  box-shadow:0 24px 60px rgba(0,0,0,.45);
}
.laminas .lam img{width:100%;height:auto;display:block}

/* --- Pilares técnicos: cuatro decisiones, no nueve especificaciones --- */
.pilares{display:grid;gap:16px;margin-top:44px}
.pi{display:grid;grid-template-columns:auto 1fr;gap:24px;align-items:start;
  padding:28px 30px;border:1px solid var(--brd);border-radius:var(--r-md);
  background:linear-gradient(160deg,rgba(255,255,255,.04),rgba(255,255,255,.012));
  transition:border-color .35s ease}
.pi:hover{border-color:rgba(2,173,245,.32)}
.pi .nu{font-size:1.6rem;font-weight:800;line-height:1;color:var(--ci);opacity:.5;
  font-variant-numeric:tabular-nums;padding-top:2px}
.pi h3{font-size:1.1rem;margin-bottom:9px;color:var(--tx)}
.pi p{font-size:.95rem;line-height:1.6;margin-bottom:15px;max-width:70ch}
.pi .et{display:flex;flex-wrap:wrap;gap:7px}
.pi .et span{font-size:.73rem;font-weight:600;padding:5px 12px;border-radius:100px;
  color:var(--tx-3);background:rgba(255,255,255,.035);border:1px solid var(--brd)}
.pi:hover .et span{border-color:rgba(2,173,245,.24);color:var(--tx-2)}

@media(max-width:620px){
  .pi{grid-template-columns:1fr;gap:12px;padding:24px 22px}
  .pi .nu{font-size:1.3rem}
}

/* --- Icono del sector: da entrada visual a la tarjeta y deja
       reconocer la industria antes de leer el titular. --- */
.sect .s .ic{width:44px;height:44px;border-radius:12px;margin-bottom:15px;
  display:flex;align-items:center;justify-content:center;color:var(--ci);
  background:rgba(2,173,245,.1);border:1px solid rgba(2,173,245,.22);
  transition:background .3s ease,color .3s ease,border-color .3s ease}
.sect .s .ic svg{width:22px;height:22px;display:block}
.sect .s:hover .ic{background:var(--ci);color:#04121b;border-color:var(--ci)}

/* ── FILTRO DE PROYECTOS ────────────────────────────────────────────── */
.filtros{
  display:flex;flex-wrap:wrap;gap:10px;justify-content:center;
  margin:0 auto 34px;max-width:1000px;
}
.filtros .chip{
  font-family:inherit;font-size:.88rem;font-weight:700;
  color:var(--tx-2);background:rgba(255,255,255,.03);
  border:1px solid rgba(255,255,255,.1);border-radius:100px;
  padding:10px 18px;cursor:pointer;min-height:42px;
  display:inline-flex;align-items:center;gap:8px;
  transition:color .22s ease,border-color .22s ease,background .22s ease;
}
.filtros .chip span{
  font-size:.76rem;font-weight:800;color:var(--tx-3);
  background:rgba(255,255,255,.06);border-radius:100px;padding:2px 8px;
}
.filtros .chip:hover{color:var(--tx-1);border-color:rgba(255,255,255,.24)}
.filtros .chip.on{
  color:#0a0a0a;background:var(--am);border-color:var(--am);
}
.filtros .chip.on span{color:#0a0a0a;background:rgba(0,0,0,.14)}
.filtros .chip:focus-visible{outline:3px solid var(--ci);outline-offset:3px}
/* Servicio sin casos publicados: se muestra atenuado pero se puede pulsar.
   Ocultarlo daria a entender que la agencia no lo presta. */
.filtros .chip.vacio{opacity:.55}
.filtros .chip.vacio:hover{opacity:.85}
.filtros .chip.vacio.on{opacity:1}
.sin-obras{
  display:flex;flex-direction:column;align-items:center;gap:14px;
  text-align:center;color:var(--tx-2);line-height:1.65;
  max-width:560px;margin:0 auto;padding:52px 24px 60px;
}
.sin-obras b{display:block;color:var(--tx-1);font-size:1.12rem;font-weight:800}
/* El display:flex de arriba pisaba el [hidden] del navegador y el aviso se
   veia siempre, incluso con los 53 proyectos en pantalla. */
.sin-obras[hidden]{display:none}
.sin-obras .btn{margin-top:6px}
/* La tarjeta oculta sale del flujo: la rejilla se recompone sin huecos */
.obra[hidden]{display:none}
@media (max-width:640px){
  .filtros{gap:8px;margin-bottom:26px}
  .filtros .chip{font-size:.8rem;padding:9px 14px;min-height:40px}
}

/* ============================================================
   COBERTURA DE EVENTOS  ·  componentes propios (ev-*)
   Reestructurada el 2026-08-25. Era la última página que
   seguía con la plantilla de la primera entrega: ocho tarjetas
   iguales, una galería de marcadores y un aviso interno visible
   para el visitante.
   El eje de la página es EL RELOJ: un evento pasa una sola vez
   y lo que se vende no es "fotos y video", es que el contenido
   salga mientras la gente todavía está ahí.
   ============================================================ */

/* --- marca de "en vivo" del encabezado --- */
.ev-vivo{
  display:inline-flex;align-items:center;gap:9px;margin-bottom:22px;
  padding:8px 16px;border-radius:999px;
  border:1px solid rgba(2,173,245,.32);background:rgba(2,173,245,.09);
  font-size:.7rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase;
  color:var(--ci);
}
.ev-vivo i{
  width:7px;height:7px;border-radius:50%;background:var(--ci);
  box-shadow:0 0 0 0 rgba(2,173,245,.55);animation:ev-late 2s ease-out infinite;
}
@keyframes ev-late{
  0%{box-shadow:0 0 0 0 rgba(2,173,245,.5)}
  70%{box-shadow:0 0 0 9px rgba(2,173,245,0)}
  100%{box-shadow:0 0 0 0 rgba(2,173,245,0)}
}
@media (prefers-reduced-motion:reduce){.ev-vivo i{animation:none}}

/* --- el argumento: pasa una sola vez --- */
.ev-una{display:grid;grid-template-columns:1fr 1fr;gap:clamp(26px,4vw,54px);align-items:start;margin-top:42px}
@media (max-width:860px){.ev-una{grid-template-columns:1fr;gap:30px}}
.ev-fallos{display:grid;gap:11px}
.ev-fallos div{
  padding:19px 22px;border-radius:var(--r-md);
  border:1px solid var(--brd);border-left:2px solid rgba(2,173,245,.42);
  background:rgba(255,255,255,.026);font-size:.93rem;color:var(--tx-2);
}

/* --- EL RELOJ: el eje de la página --- */
.ev-reloj{position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:52px}
/* El riel que une las paradas. Va detrás y solo en escritorio: en columna
   una línea horizontal no une nada. */
.ev-reloj::before{
  content:"";position:absolute;top:19px;left:8%;right:8%;height:1px;
  background:linear-gradient(90deg,transparent,var(--brd-2) 12%,var(--brd-2) 88%,transparent);
}
@media (max-width:900px){
  .ev-reloj{grid-template-columns:repeat(2,1fr)}
  .ev-reloj::before{display:none}
}
@media (max-width:560px){.ev-reloj{grid-template-columns:1fr}}
.ev-parada{position:relative;display:flex;flex-direction:column;gap:12px}
.ev-punto{
  width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  border:1px solid rgba(2,173,245,.4);background:#0b1119;
  font-size:.72rem;font-weight:800;color:var(--ci);position:relative;z-index:1;
}
/* La parada del propio evento es la que manda: se marca en amarillo,
   que es el color de acción de la marca. */
.ev-parada.ahora .ev-punto{border-color:rgba(255,194,0,.55);color:var(--am)}
.ev-cuando{font-size:.68rem;font-weight:800;letter-spacing:.16em;text-transform:uppercase;color:var(--tx-3)}
.ev-parada.ahora .ev-cuando{color:var(--am)}
.ev-parada h3{font-size:1.02rem;line-height:1.28}
.ev-parada p{font-size:.87rem;color:var(--tx-3);line-height:1.5}

/* --- qué se cubre: tres frentes, no ocho tarjetas iguales --- */
.ev-frentes{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:44px;text-align:left}
@media (max-width:900px){.ev-frentes{grid-template-columns:1fr}}
.ev-frente{
  padding:30px 26px;border-radius:var(--r-lg);border:1px solid var(--brd);
  background:rgba(255,255,255,.026);
  transition:border-color .4s ease,transform .45s cubic-bezier(.16,1,.3,1);
}
.ev-frente:hover{border-color:rgba(2,173,245,.38);transform:translateY(-5px)}
.ev-frente > svg{width:26px;height:26px;stroke:var(--ci);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;margin-bottom:16px}
.ev-frente h3{font-size:1.08rem;margin-bottom:8px}
.ev-frente > p{font-size:.9rem;color:var(--tx-3);margin-bottom:18px}
.ev-frente ul{list-style:none;display:grid;gap:9px;border-top:1px solid var(--brd);padding-top:16px}
.ev-frente li{font-size:.86rem;color:var(--tx-2);padding-left:18px;position:relative}
.ev-frente li::before{content:"";position:absolute;left:0;top:8px;width:6px;height:6px;border-radius:50%;background:rgba(2,173,245,.55)}

/* --- quién va al evento --- */
.ev-roles{display:grid;grid-template-columns:repeat(2,1fr);gap:14px;margin-top:42px;text-align:left}
@media (max-width:760px){.ev-roles{grid-template-columns:1fr}}
.ev-rol{
  display:flex;gap:16px;align-items:flex-start;
  padding:22px 24px;border-radius:var(--r-md);border:1px solid var(--brd);
  background:rgba(255,255,255,.026);
}
.ev-rol svg{width:22px;height:22px;flex:0 0 auto;margin-top:2px;stroke:var(--ci);fill:none;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.ev-rol h4{font-size:.98rem;margin-bottom:5px}
.ev-rol p{font-size:.86rem;color:var(--tx-3);line-height:1.5}

/* ============================================================
   AJUSTES SOLO DE MÓVIL  ·  2026-08-25
   Todo lo de aquí abajo vive dentro de un @media de móvil, así
   que el escritorio no cambia: una regla dentro de un
   max-width no puede alcanzarlo.
   ============================================================ */

/* --- 1. El menú no se abría, y la página se arrastraba de lado ---
   Las dos cosas eran el mismo fallo. El <header> lleva backdrop-filter, y eso
   convierte al header en el BLOQUE CONTENEDOR de cualquier position:fixed que
   cuelgue de él -igual que haría un transform-. El panel del menú es fixed con
   top:var(--nav-h) y bottom:0, así que su "abajo" dejaba de ser el borde de la
   pantalla y pasaba a ser el borde inferior del header: el panel salía con
   altura CERO y por eso no se desplegaba nada al tocar las rayitas.
   Y escondido a la derecha con translateX(100%) ya no salía de la pantalla,
   sino que empujaba el ancho del documento de 440 a 850 px: ese era el
   arrastre lateral que tenía el sitio entero en móvil.
   El desenfoque baja a un pseudo-elemento. Se ve exactamente igual, y el
   header deja de contener al panel. */
@media (max-width:940px){
  header{background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
  header::before{
    content:"";position:absolute;inset:0;z-index:-1;
    background:rgba(5,7,12,.76);
    backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);
  }
  /* Alto explícito además del bottom:0. Si algún día vuelve a aparecer un
     ancestro que contenga al panel, el menú seguirá abriéndose. */
  .nav{height:calc(100dvh - var(--nav-h))}
}

/* --- 2. La etiqueta azul repetía el titular ---
   "Agencia de marketing digital · República Dominicana" y, justo debajo,
   "Agencia de publicidad y marketing digital en República Dominicana". En
   escritorio van en una línea cada una y se leen como etiqueta y titular; en
   móvil la etiqueta ocupa dos líneas y queda pegada al H1, así que lo que se
   lee es lo mismo dos veces seguidas.
   Solo en la portada: en las 66 páginas de caso esta misma etiqueta lleva el
   sector del cliente, que no repite nada. */
@media (max-width:960px){
  .hero2 .txt .eb.solo{display:none}
}

/* --- 3. El subtítulo del encabezado no estaba centrado ---
   .sub-h1 lleva un max-width para que la línea no se haga larga, pero sin
   márgenes automáticos: en móvil el bloque queda a la izquierda dentro de un
   contenedor centrado. Es el mismo fallo que ya se corrigió en los
   encabezados interiores y en el dossier; aquí faltaba el de la portada. */
@media (max-width:960px){
  .hero2 .txt .sub-h1{margin-left:auto;margin-right:auto}
}
