/* VMC Solutions — "El asiento"
   Concepto: la diagonal que parte el isotipo en dos gotas es la partida doble.
   Eje de diseño: 19.1 grados desde la vertical, medido del vector del logo.
   Paleta: muestreada del .ai y corroborada contra los computed styles de su web.
   NO EDITAR AQUI. Fuente: _i18n-src/vmc.css  ·  build.mjs copia a assets/. */

:root{
  /* --- paleta verificada --- */
  --navy:#00003A;          /* canvas; wordmark sobre claro */
  --navy-2:#0B1560;        /* superficie elevada — 1.22:1 sobre el canvas, no se funde */
  --navy-3:#121D75;        /* superficie elevada 2 */
  --azul:#0000CC;          /* arranque del degradado */
  --violeta:#6C329D;       /* punto medio del degradado (no es color propio) */
  --naranja:#FF6905;       /* final del degradado, acento unico */
  --naranja-cl:#FF8F3C;    /* acento legible a tamaño pequeño sobre navy */
  --tinta:#F2F3FB;         /* texto principal */
  --tinta-2:#A9AEDA;       /* texto secundario */
  --tinta-3:#868CBB;       /* texto terciario / mono — 5.4:1 en el punto MAS CLARO del degradado */
  --linea:rgba(255,255,255,.17);
  --linea-fuerte:rgba(255,255,255,.30);

  /* --- el eje de la marca --- */
  --diag:-19.1deg;
  --grad:linear-gradient(199deg,var(--azul) 0%,var(--violeta) 52%,var(--naranja) 100%);
  --grad-h:linear-gradient(90deg,var(--azul) 0%,var(--violeta) 52%,var(--naranja) 100%);

  --f-display:'Jost',system-ui,sans-serif;
  --f-body:'IBM Plex Sans',system-ui,sans-serif;
  --f-mono:'IBM Plex Mono',ui-monospace,monospace;

  --max:1240px;
  --pad:clamp(1.25rem,5vw,3.5rem);
  --sec:clamp(4.5rem,10vw,8rem);
}

*,*::before,*::after{box-sizing:border-box}
/* El color base vive en <html> para que la capa de degradado del body pueda
   pintarse por ENCIMA de el (un z-index:-1 sobre un body con color de fondo
   quedaria escondido detras). */
html{-webkit-text-size-adjust:100%;background:var(--navy)}
body{
  margin:0;background:transparent;color:var(--tinta);
  font-family:var(--f-body);font-size:clamp(1rem,.96rem + .2vw,1.0625rem);
  line-height:1.62;-webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
/* Ambiente de marca en toda la pagina: el mismo arco azul -> violeta -> naranja
   del isotipo, a opacidad muy baja. Va FIJO al viewport, asi que no se repite
   ni se estira en paginas largas y no cuesta repintado al hacer scroll. */
body::before{
  content:'';position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:
    radial-gradient(120vw 90vh at 8% -6%,   rgba(0,0,204,.30),   transparent 60%),
    radial-gradient(95vw  80vh at 96% 22%,  rgba(108,50,157,.22), transparent 58%),
    radial-gradient(105vw 85vh at 78% 104%, rgba(255,105,5,.13),  transparent 56%),
    radial-gradient(85vw  70vh at 4% 78%,   rgba(0,0,204,.16),   transparent 58%)
}
img{max-width:100%;height:auto;display:block}
a{color:inherit}
h1,h2,h3,h4{font-family:var(--f-display);font-weight:500;line-height:1.04;letter-spacing:-.015em;margin:0}
p{margin:0}
ul{margin:0;padding:0;list-style:none}

.wrap{max-width:var(--max);margin-inline:auto;padding-inline:var(--pad)}
.sec{padding-block:var(--sec)}

/* accesibilidad ------------------------------------------------------------ */
.skip{position:absolute;left:-9999px;top:0;z-index:200;background:var(--naranja);
  color:#1A0A00;padding:.9rem 1.4rem;font-weight:600;border-radius:0 0 4px 0}
.skip:focus{left:0}
:focus-visible{outline:2px solid var(--naranja-cl);outline-offset:3px;border-radius:2px}
.vh{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

/* tipografia de servicio --------------------------------------------------- */
.mono{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--tinta-3);font-weight:500}
.kicker{font-family:var(--f-mono);font-size:.74rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--naranja-cl);font-weight:500}
.lede{color:var(--tinta-2);font-size:clamp(1.05rem,1rem + .38vw,1.28rem);line-height:1.58;max-width:62ch}
.h2{font-size:clamp(2rem,1.5rem + 2.4vw,3.4rem)}
.h3{font-size:clamp(1.35rem,1.2rem + .8vw,1.85rem)}

/* la diagonal: el device de la marca --------------------------------------- */
.diag-rule{
  position:relative;width:1px;align-self:stretch;
  background:var(--linea);transform:rotate(var(--diag));transform-origin:center;
}
.diag-rule::after{
  content:'';position:absolute;inset:0;background:var(--grad);
  opacity:.9;
  /* se dibuja al entrar en pantalla: la unica animacion fuerte de la pagina */
  transform:scaleY(var(--draw,0));transform-origin:top;
  transition:transform 1.15s cubic-bezier(.16,.84,.28,1);
}
.diag-rule::before{
  content:'';position:absolute;top:0;bottom:0;left:-7px;right:-7px;
  background:var(--grad);filter:blur(11px);opacity:calc(var(--draw,0) * .5);
  transition:opacity 1.15s ease;
}

/* nav ---------------------------------------------------------------------- */
.nav{
  position:sticky;top:0;z-index:90;background:rgba(0,0,58,.86);
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--linea);
}
.nav-in{display:flex;align-items:center;gap:1.5rem;min-height:74px}
.brand{display:flex;align-items:center;gap:.7rem;margin-right:auto;text-decoration:none;padding:.4rem 0}
.brand img{height:44px;width:auto}
.nav-links{display:flex;align-items:center;gap:.3rem}
.nav-links a{
  text-decoration:none;color:var(--tinta-2);font-size:.925rem;font-weight:500;
  padding:.85rem .9rem;border-radius:4px;position:relative;
  display:inline-flex;align-items:center;min-height:44px;
  transition:color .18s ease
}
.nav-links a:hover{color:var(--tinta)}
.nav-links a[aria-current="page"]{color:var(--tinta)}
.nav-links a[aria-current="page"]::after{
  content:'';position:absolute;left:.9rem;right:.9rem;bottom:.55rem;height:2px;background:var(--grad-h)
}
/* Servicios: desplegable con <details>, sin una linea de JS. Oracle EPM cuelga
   de el. Abre con click o Enter, cierra igual, y con el JS caido sigue siendo
   un menu que funciona. En movil no flota: se despliega en el flujo. */
.nav-desp{position:relative}
.nav-desp > summary{
  list-style:none;cursor:pointer;color:var(--tinta-2);font-size:.925rem;font-weight:500;
  padding:.85rem .9rem;border-radius:4px;display:inline-flex;align-items:center;gap:.4rem;
  min-height:44px;transition:color .18s ease
}
.nav-desp > summary::-webkit-details-marker{display:none}
.nav-desp > summary:hover,.nav-desp[open] > summary{color:var(--tinta)}
.nav-desp > summary:focus-visible{outline:2px solid var(--naranja-cl);outline-offset:2px}
.nav-desp > summary svg{transition:transform .22s ease;opacity:.75}
.nav-desp[open] > summary svg{transform:rotate(180deg)}
.nav-desp > summary[aria-current]{color:var(--tinta);position:relative}
.nav-desp > summary[aria-current]::after{
  content:'';position:absolute;left:.9rem;right:1.9rem;bottom:.55rem;height:2px;background:var(--grad-h)
}
.nav-links .nav-desp-m{
  position:absolute;top:calc(100% + .35rem);left:0;min-width:13rem;z-index:60;
  background:var(--navy-2);border:1px solid var(--linea);border-radius:4px;
  padding:.35rem;display:grid;
  box-shadow:0 1.5rem 3rem -1rem rgba(0,0,0,.6)
}
.nav-links .nav-desp-m a{white-space:nowrap;width:100%}

.nav-cta{
  text-decoration:none;font-weight:600;font-size:.9rem;color:#1A0A00;background:var(--naranja);
  padding:.8rem 1.15rem;border-radius:4px;display:inline-flex;align-items:center;min-height:44px;
  transition:filter .18s ease
}
.nav-cta:hover{filter:brightness(1.09)}
.lang{
  text-decoration:none;font-family:var(--f-mono);font-size:.78rem;font-weight:500;letter-spacing:.1em;
  color:var(--tinta-2);border:1px solid var(--linea-fuerte);border-radius:4px;
  padding:0 .8rem;display:inline-flex;align-items:center;min-height:44px;min-width:52px;
  justify-content:center;transition:border-color .18s ease,color .18s ease
}
.lang:hover{color:var(--tinta);border-color:var(--tinta-2)}
.burger{
  display:none;background:none;border:1px solid var(--linea-fuerte);border-radius:4px;
  width:46px;height:46px;cursor:pointer;padding:0;align-items:center;justify-content:center
}
.burger span{display:block;width:19px;height:1.5px;background:var(--tinta);position:relative}
.burger span::before,.burger span::after{
  content:'';position:absolute;left:0;width:19px;height:1.5px;background:var(--tinta);
  transition:transform .25s ease,top .25s ease
}
.burger span::before{top:-6px}
.burger span::after{top:6px}
.nav.open .burger span{background:transparent}
.nav.open .burger span::before{top:0;transform:rotate(45deg)}
.nav.open .burger span::after{top:0;transform:rotate(-45deg)}

.drawer{
  position:fixed;inset:0;height:100dvh;background:var(--navy);z-index:80;
  display:none;flex-direction:column;padding:96px var(--pad) 2rem;gap:.25rem;overflow-y:auto
}
.nav.open + .drawer,.drawer.open{display:flex}
.drawer a{
  text-decoration:none;color:var(--tinta);font-family:var(--f-display);
  font-size:1.6rem;font-weight:500;padding:.85rem 0;border-bottom:1px solid var(--linea);
  display:flex;align-items:center;min-height:56px
}
/* en el cajon movil el desplegable NO flota: se abre en el flujo, con sangria */
.drawer .nav-desp > summary{
  color:var(--tinta);font-family:var(--f-display);font-size:1.6rem;font-weight:500;
  padding:.85rem 0;border-bottom:1px solid var(--linea);min-height:56px;
  display:flex;align-items:center;justify-content:space-between;border-radius:0
}
.drawer .nav-desp > summary svg{width:15px;height:15px}
.drawer .nav-desp > summary[aria-current]::after{display:none}
.drawer .nav-desp-m{display:grid;padding-left:1.15rem}
.drawer .nav-desp-m a{font-size:1.25rem;color:var(--tinta-2);min-height:52px}

.drawer .drawer-cta{
  margin-top:1.5rem;background:var(--naranja);color:#1A0A00;border:0;border-radius:4px;
  justify-content:center;font-family:var(--f-body);font-size:1rem;font-weight:600
}

/* hero -----------------------------------------------------------------------
   Vuelve el fondo navy: sobre la foto las particulas no se leian (7% de
   cobertura a alfa 20/255 desaparece contra una imagen oscura y cargada).
   Capas, de atras a delante: 0 isotipo · 1 diagonal · 2 particulas · 3 texto. */
/* Sin `border-bottom`: era una raya de 1px de lado a lado y, sumada a las
   particulas y la diagonal terminando a filo contra el `overflow:hidden`,
   dibujaba un corte duro entre el hero y la seccion siguiente. Ahora las
   capas decorativas se desvanecen (mascaras de abajo) y el limite lo marca
   el ritmo del espaciado, no un filete. */
.hero{
  position:relative;min-height:clamp(600px,92dvh,900px);display:flex;align-items:center;
  overflow:hidden;isolation:isolate
}
.hero-mark{
  position:absolute;right:-8%;top:50%;translate:0 -50%;z-index:0;
  width:min(52vw,640px);opacity:.11;pointer-events:none;user-select:none
}
.hero-diag{
  position:absolute;top:-18%;bottom:-18%;left:58%;width:2px;z-index:1;
  transform:rotate(var(--diag));transform-origin:center;pointer-events:none;
  /* la mascara gira con el elemento, asi que 180deg va a lo LARGO de la
     diagonal: apaga su extremo inferior en vez de cortarlo en seco */
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 66%,transparent 92%);
  mask-image:linear-gradient(180deg,#000 0,#000 66%,transparent 92%)
}
.hero-diag::after{
  content:'';position:absolute;inset:0;background:var(--grad);
  transform:scaleY(var(--draw,0));transform-origin:top;
  transition:transform 1.4s cubic-bezier(.16,.84,.28,1) .15s
}
.hero-diag::before{
  content:'';position:absolute;top:0;bottom:0;left:-14px;right:-14px;background:var(--grad);
  filter:blur(26px);opacity:calc(var(--draw,0) * .5);transition:opacity 1.4s ease .15s
}
/* particulas: sobre el fondo, por debajo del texto. Nunca capturan el puntero. */
.hero-nebula{
  position:absolute;inset:0;z-index:2;width:100%;height:100%;
  pointer-events:none;display:block;
  -webkit-mask-image:linear-gradient(180deg,#000 0,#000 58%,transparent 97%);
  mask-image:linear-gradient(180deg,#000 0,#000 58%,transparent 97%)
}
.hero-in{position:relative;z-index:3;max-width:50rem;padding-block:clamp(3rem,9vh,6rem)}
.hero h1{
  font-size:clamp(2.5rem,1.5rem + 4.6vw,5rem);margin:1.1rem 0 0;letter-spacing:-.03em;
  text-wrap:balance
}
.hero h1 .g{
  background:var(--grad-h);-webkit-background-clip:text;background-clip:text;
  color:transparent;padding-right:.06em
}
.hero .lede{margin-top:1.6rem}
.hero-cta{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2.4rem}
.btn{
  text-decoration:none;font-weight:600;font-size:.975rem;border-radius:4px;
  padding:1rem 1.5rem;display:inline-flex;align-items:center;gap:.5rem;min-height:52px;
  transition:filter .18s ease,border-color .18s ease,color .18s ease
}
.btn-1{background:var(--naranja);color:#1A0A00}
.btn-1:hover{filter:brightness(1.09)}
.btn-2{border:1px solid var(--linea-fuerte);color:var(--tinta-2)}
.btn-2:hover{color:var(--tinta);border-color:var(--tinta-2)}

/* el asiento: debe / haber -------------------------------------------------- */
.asiento{display:grid;grid-template-columns:1fr auto 1fr;gap:clamp(1.5rem,4vw,3.5rem);
  align-items:stretch;margin-top:3rem}
.col{padding-block:.5rem}
.col-h{display:flex;align-items:baseline;gap:.7rem;padding-bottom:1rem;
  border-bottom:1px solid var(--linea);margin-bottom:1.5rem}
.col-h b{font-family:var(--f-display);font-size:1.4rem;font-weight:500;letter-spacing:.01em}
.col-debe b{color:var(--tinta-2)}
.col-haber b{
  background:var(--grad-h);-webkit-background-clip:text;background-clip:text;color:transparent
}
.col p{font-size:1.06rem;line-height:1.62}
.col-debe p{color:var(--tinta-2)}

/* recorrido EPM: las 7 etapas del ciclo financiero, en orden ----------------
   Sustituye al grafo radial del 6-ago. Un grafo pide "explorame"; un cierre
   contable tiene orden, y el orden ES la informacion. Estado base sin JS
   100% funcional: los pasos son <a> reales y el panel del modulo 01 lo
   escribe el build. epm-network.js solo intercambia; nunca es requisito. */
.sec-epm{position:relative;overflow:hidden;isolation:isolate}
.sec-epm .h2,.sec-epm .lede{position:relative;z-index:1}

/* --- el cielo: una sola escena, no una pila de efectos ---
   Un arco planetario cortado por el borde superior, el eje de la marca como
   rayo, y grano. El degradado del arco es EL de la marca: azul, violeta,
   naranja, en ese orden. Nada de esto es interactivo ni informa: aria-hidden. */
/* La mascara es lo que impide que se vea el corte. Sin ella, grano + estrellas
   + bruma terminan a filo en el borde de la seccion y dibujan una linea
   horizontal de lado a lado contra el fondo de la siguiente. Se difumina
   arriba y abajo, y el tramo opaco cubre entero el arco. */
.epm-cielo{
  position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  -webkit-mask-image:linear-gradient(180deg,transparent 0,#000 6%,#000 55%,transparent 96%);
  mask-image:linear-gradient(180deg,transparent 0,#000 6%,#000 55%,transparent 96%)
}
.epm-cielo > *{position:absolute;display:block}
.ec-astro,.ec-luz{right:-26vw;top:-53vw;width:72vw;aspect-ratio:1;border-radius:50%}
.ec-astro{
  background:conic-gradient(from 0deg,
    transparent 0 46%,
    rgba(0,0,204,.20) 48%,
    #0000CC 50.5%, #2B22B8 53%, #6C329D 58.5%,
    #A03E72 63.5%, #FF6905 69%, #FF8F3C 72.5%,
    rgba(255,105,5,.14) 77%, transparent 82%)
}
.ec-astro::after{
  content:'';position:absolute;inset:2px;border-radius:50%;
  background:
    radial-gradient(circle at 22% 78%,rgba(108,50,157,.34) 0%,transparent 42%),
    radial-gradient(circle at 48% 52%,#040428 0%,#01012E 58%,var(--navy) 100%)
}
.ec-luz{
  background:conic-gradient(from 0deg,
    transparent 0 45%,
    rgba(0,0,204,.42) 48%,
    rgba(60,50,220,.72) 52%, rgba(140,70,190,.85) 57%,
    rgba(200,80,120,.6) 62%, rgba(255,105,5,.85) 68%,
    rgba(255,143,60,.7) 73%, rgba(255,105,5,.2) 78%, transparent 83%);
  filter:blur(46px);opacity:.85
}
.ec-rayo{width:1px;transform-origin:center;
  background:linear-gradient(180deg,transparent,rgba(169,174,218,.42),transparent)}
.ec-r1{right:14%;top:-4%;height:34%;transform:rotate(28deg)}
.ec-r2{right:31%;top:0;height:30%;transform:rotate(var(--diag));opacity:.6}
.ec-r3{right:3%;top:2%;height:26%;transform:rotate(44deg);opacity:.45}
.ec-bruma{
  left:-10%;bottom:-24%;width:62%;aspect-ratio:1.6;
  background:radial-gradient(ellipse,rgba(0,0,204,.26) 0%,transparent 68%);filter:blur(80px)
}
.ec-estrellas{inset:0;width:100%;height:100%}
.ec-grano{
  inset:0;opacity:.05;mix-blend-mode:overlay;background-size:160px 160px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")
}

/* --- los 7 pasos ---
   .epm-ruta NO lleva position:relative a proposito: asi el cielo se posiciona
   contra .sec-epm y sangra a ancho de viewport, y el arco lo corta el borde de
   la pantalla, no el ancho del contenedor. Lo de dentro sube con z-index. */
.epm-ruta{margin-top:clamp(2.5rem,5vw,4rem)}
.epm-pasos{
  position:relative;z-index:1;display:grid;
  /* el numero de columnas lo pone el build (`--pasos`): al entrar el octavo
     modulo el 14-ago, un 7 escrito a mano habria dejado uno fuera. */
  grid-template-columns:repeat(var(--pasos,7),minmax(0,1fr));gap:0 clamp(.5rem,1.2vw,1.25rem);
  margin-bottom:clamp(2.25rem,4vw,3.25rem)
}
.ep-paso{
  display:grid;grid-template-rows:auto auto auto auto;align-content:start;
  text-decoration:none;color:inherit;padding:.25rem .25rem 0;--tono:var(--tinta-3)
}
.ep-paso.on{--tono:var(--naranja)}
.ep-tit{
  font-family:var(--f-display);font-weight:600;
  font-size:clamp(.86rem,.68rem + .46vw,1.02rem);line-height:1.26;letter-spacing:-.01em;
  color:var(--tinta-2);margin-bottom:.4rem;min-height:3.78em;
  /* `break-word`, no `anywhere`: con 8 columnas (~130 px) `anywhere` partia
     «presupuestació|n» y dejaba una letra sola en su propia linea. Asi solo
     parte cuando la palabra de verdad no cabe, y entonces con guion. */
  overflow-wrap:break-word;hyphens:auto;transition:color .35s ease
}
/* Los circulos tienen que quedar en la MISMA linea aunque un titulo ocupe tres
   lineas y otro una. Con subgrid lo resuelve el grid; sin el, min-height.
   El subgrid solo se aplica en el layout de 7 columnas, donde los 7 pasos
   caben en una sola banda de filas: por debajo, grid-row:1/-1 los apilaria
   unos encima de otros (lo hizo, en movil, el 10-ago). */
@media (min-width:1181px){
  @supports (grid-template-rows:subgrid){
    .epm-pasos{grid-template-rows:auto auto auto auto}
    .ep-paso{grid-row:1/-1;grid-template-rows:subgrid}
    .ep-tit,.ep-prod{min-height:0}
  }
}
.ep-paso.on .ep-tit,.ep-paso:hover .ep-tit,.ep-paso:focus-visible .ep-tit{color:var(--tinta)}
.ep-prod{font-size:.85rem;line-height:1.3;color:var(--tinta-3);margin-bottom:1.4rem;
  min-height:2.6em;transition:color .35s ease}
.ep-paso.on .ep-prod{color:var(--tinta-2)}

.ep-fila{display:flex;align-items:center;gap:.75rem;margin-bottom:1.4rem}
.ep-circ{
  flex:none;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;
  border:1px solid color-mix(in srgb,var(--tono) 45%,transparent);
  background:radial-gradient(circle,color-mix(in srgb,var(--tono) 14%,transparent) 0%,transparent 72%);
  color:var(--tono);
  transition:border-color .4s ease,box-shadow .4s ease,transform .4s cubic-bezier(.16,1,.3,1),background .4s ease
}
.ep-paso:hover .ep-circ,.ep-paso:focus-visible .ep-circ{
  border-color:color-mix(in srgb,var(--tono) 75%,transparent);transform:translateY(-2px)
}
.ep-paso.on .ep-circ{
  border-color:var(--naranja);
  background:radial-gradient(circle,rgba(255,105,5,.2) 0%,transparent 72%);
  box-shadow:0 0 0 1px rgba(255,105,5,.3),0 0 24px 3px rgba(255,105,5,.34),
             inset 0 0 18px rgba(255,143,60,.16)
}
.ep-linea{
  flex:1;height:1px;min-width:0;color:color-mix(in srgb,var(--tono) 55%,transparent);
  background:repeating-linear-gradient(90deg,currentColor 0 3px,transparent 3px 9px);
  transition:color .4s ease
}
.ep-paso:last-child .ep-linea{display:none}
.ep-desc{font-size:.855rem;line-height:1.58;color:var(--tinta-3);max-width:23ch;
  transition:color .35s ease}
.ep-paso.on .ep-desc{color:var(--tinta-2)}
.ep-paso:focus-visible{outline:2px solid var(--naranja-cl);outline-offset:8px;border-radius:4px}

/* --- el panel: debajo del recorrido, nunca a un lado --- */
.epm-panel{
  position:relative;z-index:1;
  background:color-mix(in srgb,var(--navy-2) 78%,transparent);
  border:1px solid var(--linea);border-radius:4px;
  padding:clamp(1.6rem,2.8vw,2.5rem);
  display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,.95fr) minmax(0,1.2fr);
  gap:clamp(1.75rem,3vw,3rem);align-items:start
}
.ep-nom{margin:0 0 .45rem;text-wrap:balance}
.ep-sub{color:var(--naranja-cl);font-weight:600;font-size:.97rem;margin:0 0 1.3rem}
.ep-largo{color:var(--tinta-2);line-height:1.72;margin:0 0 1.9rem;max-width:42ch}
.ep-cta{display:inline-flex}
/* sin numeracion: los filetes ya dan el ritmo. La `.caps` general del sitio
   lleva un `01/02/03` en la primera columna; aqui no, por peticion del 10-ago. */
.ep-caps{margin-top:0}
.ep-caps li{grid-template-columns:1fr;gap:0;padding:.85rem 0}
.ep-caps li:first-child{border-top:0;padding-top:0}

/* la maqueta: formas, nunca cifras. Y cada modulo con la SUYA — lo que ese
   modulo produce de verdad. El marco es el mismo que usara la captura real de
   VMC cuando exista, para que sustituir una por otra no mueva ni un pixel. */
.maqueta{
  border:1px solid var(--linea);border-radius:4px;overflow:hidden;
  background:linear-gradient(160deg,rgba(18,29,117,.5),rgba(0,0,58,.6))
}
.mq-barra{display:flex;align-items:center;gap:.4rem;padding:.7rem .85rem;
  border-bottom:1px solid var(--linea)}
.mq-barra i{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.15)}
.mq-barra .mq-der{margin-left:auto;display:flex;gap:.35rem}
.mq-barra .mq-der b{display:block;width:11px;height:3px;border-radius:2px;background:rgba(255,255,255,.14)}
.mq-lienzo,.mq-shot{display:block;width:100%;aspect-ratio:16/10}
.mq-shot{object-fit:cover;object-position:top left}

/* La maqueta con captura real es un <button>: a 371 px no se lee nada de la
   pantalla de Oracle y el original mide 1200x750. Se agranda al pasar el raton
   y al pulsar se abre a tamano nativo. 12-ago-2026, a peticion de VMC. */
.mq-zoom{
  display:block;width:100%;padding:0;font:inherit;color:inherit;text-align:left;
  cursor:zoom-in;position:relative;
  transition:transform .35s cubic-bezier(.16,1,.3,1),box-shadow .35s ease,border-color .35s ease
}
.mq-zoom:hover,.mq-zoom:focus-visible{
  transform:scale(1.035);border-color:color-mix(in srgb,var(--naranja) 55%,transparent);
  box-shadow:0 1.4rem 3rem -1rem rgba(0,0,0,.7)
}
.mq-zoom:focus-visible{outline:2px solid var(--naranja-cl);outline-offset:5px}
/* la lupa aparece al pasar por encima: sin ella nada dice que se puede pulsar */
.mq-lupa{
  position:absolute;right:.7rem;bottom:.7rem;width:34px;height:34px;border-radius:50%;
  display:grid;place-items:center;color:var(--tinta);
  background:color-mix(in srgb,var(--navy) 72%,transparent);
  border:1px solid color-mix(in srgb,var(--naranja) 60%,transparent);
  backdrop-filter:blur(3px);
  opacity:0;translate:0 5px;transition:opacity .3s ease,translate .3s ease
}
.mq-lupa svg{width:17px;height:17px}
.mq-zoom:hover .mq-lupa,.mq-zoom:focus-visible .mq-lupa{opacity:1;translate:0 0}

.mq-modal{
  width:min(1200px,94vw);max-width:none;max-height:92vh;padding:0;border:0;
  background:transparent;overflow:visible;color:var(--tinta)
}
.mq-modal::backdrop{background:rgba(0,0,26,.82);backdrop-filter:blur(4px)}
.mq-visor{
  border-radius:4px;border:1px solid var(--linea-fuerte);overflow:hidden;
  box-shadow:0 2rem 5rem -1.5rem rgba(0,0,0,.85)
}
.mq-modal img{display:block;width:100%;height:auto}
.mq-desliza{display:none}
.mq-titulo{
  margin:.9rem 0 0;text-align:center;font-family:var(--f-display);font-size:1.02rem;
  color:var(--tinta-2)
}
.mq-cerrar{
  position:absolute;top:-.6rem;right:-.6rem;z-index:2;
  width:38px;height:38px;border-radius:50%;display:grid;place-items:center;cursor:pointer;
  background:var(--navy-2);border:1px solid var(--linea-fuerte);color:var(--tinta);
  transition:border-color .25s ease,color .25s ease
}
.mq-cerrar svg{width:18px;height:18px}
.mq-cerrar:hover{border-color:var(--naranja);color:var(--naranja-cl)}
/* En pantalla estrecha ampliar no basta: a 390 px la imagen salia a 374, casi
   lo mismo que en la ficha, y seguia sin leerse. Aqui se muestra a 900 px de
   ancho dentro de un visor que se arrastra. */
@media (max-width:900px){
  .mq-modal{width:96vw;max-height:88vh}
  .mq-visor{overflow:auto;max-height:66vh;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
  .mq-modal img{width:auto;max-width:none;min-width:900px}
  .mq-desliza{display:block;margin:.4rem 0 0;text-align:center;font-size:.76rem;color:var(--tinta-3)}
}
@media (max-width:640px){
  .mq-cerrar{top:auto;bottom:-3.2rem;right:50%;translate:50% 0}
  .mq-desliza{margin-bottom:3rem}
}
@media (prefers-reduced-motion:reduce){
  .mq-zoom,.mq-lupa{transition:none}
  .mq-zoom:hover,.mq-zoom:focus-visible{transform:none}
}
.mq-lienzo .tenue{stroke:rgba(255,255,255,.18);fill:none;stroke-width:1.4}
.mq-lienzo .caja{fill:rgba(255,255,255,.05);stroke:rgba(255,255,255,.15);stroke-width:1.2}
.mq-lienzo .linea-txt{fill:rgba(255,255,255,.16)}
.mq-lienzo .v{fill:var(--tinta-2)}
.mq-lienzo .v-t{stroke:var(--tinta-2);fill:none;stroke-width:1.5}
.mq-lienzo .o{fill:var(--naranja)}
.mq-lienzo .o-t{stroke:var(--naranja);fill:none;stroke-width:1.6}
.mq-nota{margin:.7rem 0 0;text-align:right;letter-spacing:.1em}

.epm-panel.cambia{animation:ep-entra .45s cubic-bezier(.16,1,.3,1)}
@keyframes ep-entra{from{opacity:0;transform:translateY(9px)}to{opacity:1;transform:none}}

@media (max-width:1180px){
  .epm-pasos{grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem 1rem}
  .ep-paso:nth-child(4) .ep-linea{display:none}
  .epm-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
  .ep-visual{grid-column:1/-1}
}
@media (max-width:820px){
  .epm-pasos{grid-template-columns:repeat(2,minmax(0,1fr))}
  .ep-paso:nth-child(2n) .ep-linea{display:none}
  .ep-desc{max-width:100%}
}
/* movil: el recorrido se pone de pie y la linea de puntos pasa a ser vertical */
@media (max-width:560px){
  .ec-astro,.ec-luz,.ec-rayo{opacity:.5}
  .epm-pasos{grid-template-columns:1fr;gap:0}
  .ep-paso{grid-template-columns:56px 1fr;grid-template-rows:auto auto auto;
    column-gap:1.15rem;padding:0 0 .25rem}
  .ep-fila{grid-column:1;grid-row:1/-1;flex-direction:column;gap:.6rem;
    align-self:stretch;margin-bottom:0}
  .ep-linea{width:1px;height:auto;flex:1;min-height:26px;
    background:repeating-linear-gradient(180deg,currentColor 0 3px,transparent 3px 9px)}
  .ep-paso:last-child .ep-linea{display:none}
  .ep-tit,.ep-prod,.ep-desc{grid-column:2}
  .ep-tit{min-height:0}
  .ep-prod{margin-bottom:.55rem;min-height:0}
  .ep-desc{margin-bottom:1.6rem}
  .ep-paso:last-child .ep-desc{margin-bottom:0}
  .epm-panel{grid-template-columns:1fr;padding:1.4rem}
}
@media (prefers-reduced-motion:reduce){
  .epm-panel.cambia{animation:none}
  .ep-circ,.ep-linea,.ep-tit,.ep-num,.ep-prod,.ep-desc{transition:none}
}

/* lista de modulos: plan de cuentas, no cards ------------------------------- */
.cuentas{margin-top:3rem;border-top:1px solid var(--linea)}
.cuenta{border-bottom:1px solid var(--linea)}
.cuenta a{
  display:grid;grid-template-columns:auto 1fr auto;gap:clamp(1rem,3vw,2.5rem);
  align-items:center;text-decoration:none;padding:1.6rem .25rem;min-height:44px;
  position:relative;transition:padding-left .28s cubic-bezier(.2,.8,.3,1)
}
.cuenta a::before{
  content:'';position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--grad);
  transform:scaleY(0);transform-origin:center;transition:transform .32s cubic-bezier(.2,.8,.3,1)
}
.cuenta a:hover,.cuenta a:focus-visible{padding-left:1.15rem}
.cuenta a:hover::before,.cuenta a:focus-visible::before{transform:scaleY(1)}
.cuenta .cod{font-family:var(--f-mono);font-size:.95rem;color:var(--tinta-3);font-weight:500}
.cuenta .nom{font-family:var(--f-display);font-size:clamp(1.2rem,1.05rem + .6vw,1.6rem);font-weight:500}
.cuenta .des{color:var(--tinta-2);font-size:.95rem;margin-top:.2rem}
.cuenta .fl{color:var(--tinta-3);font-size:1.15rem;transition:color .2s ease,translate .28s ease}
.cuenta a:hover .fl{color:var(--naranja-cl);translate:5px 0}

/* EL LIBRO MAYOR (/oracle-epm/) --------------------------------------------
   No es un menu de enlaces: es un mayor. Cada modulo es un asiento con sus dos
   lados, y el documento cierra con su linea de cuadre. */
.mayor{margin-top:2.75rem;border-top:2px solid var(--linea-fuerte)}
.mayor-cab{
  display:grid;grid-template-columns:minmax(13rem,1.05fr) 6px minmax(0,1fr) 6px minmax(0,1fr);
  gap:0 clamp(.9rem,2.2vw,2rem);padding:.85rem .25rem;
  border-bottom:1px solid var(--linea-fuerte)
}
.mayor-cab span{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--tinta-3);font-weight:500}
.mayor-cab .h-haber{color:var(--naranja-cl)}
.mayor li{border-bottom:1px solid var(--linea)}
.mayor a{
  display:grid;grid-template-columns:minmax(13rem,1.05fr) 6px minmax(0,1fr) 6px minmax(0,1fr);
  gap:0 clamp(.9rem,2.2vw,2rem);align-items:start;text-decoration:none;
  padding:1.5rem .25rem;position:relative;
  transition:background-color .24s ease,padding-left .28s cubic-bezier(.2,.8,.3,1)
}
.mayor a:hover,.mayor a:focus-visible{background:rgba(255,255,255,.035);padding-left:1rem}
/* la divisoria entre debe y haber ES la diagonal de la marca */
.mayor .part{
  align-self:stretch;justify-self:center;width:1px;background:var(--linea);
  transform:rotate(var(--diag));transform-origin:center;position:relative
}
.mayor a:hover .part-2::after,.mayor a:focus-visible .part-2::after{opacity:1}
.mayor .part-2::after{
  content:'';position:absolute;inset:0;background:var(--grad);opacity:0;
  transition:opacity .28s ease
}
.mayor .cuenta-n{display:flex;gap:.85rem;align-items:baseline}
.mayor .cod{font-family:var(--f-mono);font-size:.92rem;color:var(--tinta-3);font-weight:500}
.mayor .nom{font-family:var(--f-display);font-size:clamp(1.15rem,1.02rem + .5vw,1.45rem);font-weight:500}
.mayor .sub{color:var(--tinta-3);font-size:.85rem;margin-top:.3rem;padding-left:1.77rem}
.mayor .lado{font-size:.97rem;line-height:1.55}
.mayor .lado-d{color:var(--tinta-2)}
.mayor .lado-h{color:var(--tinta)}
.mayor-pie{
  display:flex;flex-wrap:wrap;gap:.75rem 1.5rem;align-items:baseline;justify-content:space-between;
  border-top:2px solid var(--linea-fuerte);padding:1.35rem .25rem 0;margin-top:0
}
.mayor-pie .tot{font-family:var(--f-display);font-size:1.2rem;font-weight:500}
.mayor-pie .cuadre{
  font-family:var(--f-mono);font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  background:var(--grad-h);-webkit-background-clip:text;background-clip:text;color:transparent
}

/* LA HOJA DE TRABAJO (/servicios/) -----------------------------------------
   La misma gramatica de doble entrada aplicada al proyecto: cada fase tiene un
   lado del cliente y un lado nuestro. No es una lista de pasos numerados. */
.hoja{margin-top:2.25rem;border-top:2px solid var(--linea-fuerte)}
.hoja-cab{
  display:grid;grid-template-columns:minmax(9rem,.62fr) 6px minmax(0,1fr) 6px minmax(0,1fr);
  gap:0 clamp(.9rem,2.2vw,2rem);padding:.85rem .25rem;border-bottom:1px solid var(--linea-fuerte)
}
.hoja-cab span{font-family:var(--f-mono);font-size:.68rem;letter-spacing:.16em;
  text-transform:uppercase;color:var(--tinta-3);font-weight:500}
.hoja-cab .h-vmc{color:var(--naranja-cl)}
.hoja-fila{
  display:grid;grid-template-columns:minmax(9rem,.62fr) 6px minmax(0,1fr) 6px minmax(0,1fr);
  gap:0 clamp(.9rem,2.2vw,2rem);align-items:start;
  padding:1.5rem .25rem;border-bottom:1px solid var(--linea)
}
.hoja .part{
  align-self:stretch;justify-self:center;width:1px;background:var(--linea);
  transform:rotate(var(--diag));transform-origin:center
}
.hoja .fase{display:flex;gap:.8rem;align-items:baseline}
.hoja .fase .np{font-family:var(--f-mono);font-size:.85rem;color:var(--naranja-cl);font-weight:500}
.hoja .fase h3{font-size:1.16rem}
.hoja .lado{font-size:.97rem;line-height:1.55}
.hoja .lado-c{color:var(--tinta-2)}
.hoja .lado-v{color:var(--tinta)}

/* tabla de consolidacion (clientes) ---------------------------------------- */
.consol{margin-top:2.75rem;width:100%;border-collapse:collapse;font-size:.98rem}
.consol caption{text-align:left;padding-bottom:1rem}
.consol th{
  text-align:left;font-family:var(--f-mono);font-size:.7rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--tinta-3);font-weight:500;
  padding:.7rem .5rem;border-bottom:1px solid var(--linea-fuerte)
}
.consol th:last-child,.consol td:last-child{text-align:right}
.consol td{padding:1.05rem .5rem;border-bottom:1px solid var(--linea)}
/* los logos van DENTRO del mayor, no en una tira centrada: una tira choca con
   la fila de DistriCar del registro y es el patron generico de siempre */
.consol .ent{font-family:var(--f-display);font-size:1.12rem;font-weight:500}
.consol .ent img{
  height:38px;width:auto;max-width:min(200px,44vw);object-fit:contain;object-position:left center;
  opacity:.9;transition:opacity .2s ease
}
.consol tbody tr:hover .ent img{opacity:1}
.consol .sec-c{color:var(--tinta-2)}
.consol .pais{font-family:var(--f-mono);font-size:.85rem;color:var(--tinta-3)}
.consol tfoot td{
  border-bottom:0;border-top:2px solid var(--linea-fuerte);padding-top:1.15rem;
  font-family:var(--f-display);font-size:1.15rem;font-weight:500
}
.consol tfoot .tot{
  background:var(--grad-h);-webkit-background-clip:text;background-clip:text;color:transparent
}

/* husos horarios ------------------------------------------------------------ */
/* sedes: mapa PLANO con chincheta de bandera, como pidio el cliente el 11-ago.
   La tierra es un SVG inline con la costa de verdad — Natural Earth 110m,
   dominio publico — recortada a lon [-130,40] x lat [72,-40], la misma ventana
   que usan las chinchetas: por eso su viewBox mide 1700x1120 (una unidad = 0,1
   grado) y la formula de las chinchetas no cambia. Vectorial, nitido a
   cualquier ancho. El SVG y el porque de que vaya inline estan en
   `_i18n-src/mapa-mundi.js`. Antes era la mascara de cobe a 120x79 y se veia
   pixelada: esa fue la queja del cliente el 12-ago-2026. */
/* 3 tarjetas | mapa | 3 tarjetas. El mapa a ancho completo se comia la seccion
   (peticion del 14-ago). Al encogerlo, el tamano de las chinchetas ya no puede
   depender del viewport: pasa a `cqw`, o sea al ancho del PROPIO mapa. */
/* El bloque se sale de la columna de texto (1128) y llega a 1320: el mapa pasa
   de 552 a ~765 px sin robarle ancho a las tarjetas. Es una banda de mapa, y
   como tal puede ser mas ancha que la prosa. */
.sedes{
  margin-top:2.75rem;display:grid;gap:clamp(1.25rem,2.4vw,2.25rem);
  grid-template-columns:minmax(0,.66fr) minmax(0,2fr) minmax(0,.66fr);
  align-items:start
}
/* La salida de la columna SOLO cuando hay sitio de verdad. Atada a un calc con
   100vw se desbordaba por la derecha en cuanto el wrap dejaba de estar a su
   ancho maximo (medido: overflow horizontal de 1180 px para abajo). */
@media (min-width:1440px){
  .sedes{width:1320px;margin-inline:calc((var(--max) - 1320px) / 2)}
}
.sedes > .mapa{align-self:center}
/* Especificidad por encima de `.husos`: las media queries de mas abajo la
   reajustan a 2 y 3 columnas y, al empatar, ganaban por orden de aparicion.
   En los laterales SIEMPRE es una columna. */
.sedes > .husos-lado{grid-template-columns:1fr}
.sedes > .husos-lado .huso{padding:1.4rem 1.15rem}
.sedes > .husos-lado .reloj{font-size:1.5rem}
.mapa{position:relative;aspect-ratio:1700/1120;width:100%;container-type:inline-size}
.mapa-tierra{
  position:absolute;inset:0;width:100%;height:100%;display:block;opacity:.92
}
/* --dx/--dy van en % del propio mapa, no en rem: asi el desplazamiento
   escala con el mapa y una sola cifra vale para todas las anchuras.
   Con rem hubo que parchear breakpoint a breakpoint y no convergia. */
/* La chincheta se ancla por la BANDERA, no por el conjunto bandera+nombre: el
   nombre va posicionado al lado y ya no arrastra el punto. Sobre el mapa
   pixelado esto no se notaba; sobre la costa de verdad si — «Estados Unidos»
   caia 7,6 grados al oeste de Miami, en mitad del Golfo, porque el flex
   centraba bandera+texto sobre la coordenada. Medido el 12-ago-2026. */
.pin{position:absolute;left:calc(var(--x) + var(--dxa,0%));top:calc(var(--y) + var(--dya,0%));
  padding:0;border:0;background:none;color:inherit;font:inherit;cursor:pointer;
  translate:-50% calc(-100% - 2px);z-index:2;
  /* el diametro sigue al ancho del mapa en vez de saltar por breakpoints: asi
     Panama y Colombia, que son las dos sedes mas juntas, nunca se tocan. Con
     tamano fijo se pisaban entre 980 y 1024 px de viewport. */
  width:clamp(15px,3cqw,30px);height:clamp(15px,3cqw,30px)}
.pin-b{
  width:100%;height:100%;border-radius:50%;display:grid;place-items:center;
  background:var(--navy-2);border:1.5px solid var(--naranja);position:relative;
  box-shadow:0 .5rem 1.1rem -.3rem rgba(0,0,0,.65)
}
/* la punta de la chincheta: su vertice cae justo sobre la coordenada */
.pin-b::after{content:'';position:absolute;top:100%;left:50%;translate:-50% -3px;
  border:clamp(3.5px,.5cqw,5px) solid transparent;border-top-color:var(--naranja)}
.pin-b svg{width:57%;height:auto;border-radius:1px}
.pin-n{position:absolute;left:calc(100% + .45rem);top:50%;translate:0 -50%;white-space:nowrap;
  font-size:.82rem;font-weight:600;color:var(--tinta);
  text-shadow:0 1px 6px rgba(0,0,58,.95),0 0 14px rgba(0,0,58,.8)}
.pin-izq .pin-n{left:auto;right:calc(100% + .45rem)}
/* ---- mapa interactivo: chincheta <-> tarjeta ----------------------------
   Al pasar el raton o tabular a una chincheta se ilumina su tarjeta, y al
   reves. El nombre aparece aunque las etiquetas esten ocultas por tamano, asi
   que el mapa se puede leer entero sin depender de que quepan las seis. */
.pin-b,.pin-n{transition:transform .28s cubic-bezier(.16,1,.3,1),
  border-color .28s ease,box-shadow .28s ease,opacity .28s ease}
.pin:hover .pin-b,.pin:focus-visible .pin-b,.pin.eco .pin-b{
  transform:scale(1.18);border-color:var(--naranja-cl);
  box-shadow:0 0 0 3px color-mix(in srgb,var(--naranja) 28%,transparent),
             0 .6rem 1.4rem -.3rem rgba(0,0,0,.8)
}
.pin:hover,.pin:focus-visible,.pin.eco{z-index:4}
.pin:focus-visible{outline:2px solid var(--naranja-cl);outline-offset:6px;border-radius:50%}
.huso{transition:background .3s ease,box-shadow .3s ease}
.huso.eco{
  background:color-mix(in srgb,var(--navy-3) 62%,var(--navy-2));
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--naranja) 45%,transparent)
}
.pin-sede{width:clamp(19px,3.6cqw,36px);height:clamp(19px,3.6cqw,36px)}
.pin-sede .pin-b{border-width:2px}
.pin-sede .pin-b svg{width:58%}
.pin-sede .pin-n{font-size:.92rem}
/* en movil el mapa mide un tercio y los nombres se pisan sin remedio: se
   quedan solo las banderas. El nombre de cada sede esta en la lista de abajo,
   asi que no se pierde informacion. */
@container (max-width:700px){
  /* `visibility` y no `display`: asi el nombre puede volver en hover con
     transicion, y sigue fuera del flujo para que no empuje nada. */
  .pin-n{visibility:hidden;opacity:0}
  .pin:hover .pin-n,.pin:focus-visible .pin-n,.pin.eco .pin-n{
    visibility:visible;opacity:1;
    background:color-mix(in srgb,var(--navy) 82%,transparent);
    padding:.16rem .45rem;border-radius:3px
  }
  /* chincheta mas pequena: en estos anchos las sedes de Centroamerica caen a
     17 px unas de otras y con 23 px de diametro se tocaban. Con 17 no.
     Y solo AQUI se aplican los empujones --dx/--dy que trae cada sede: a este
     tamano Panama y Colombia se pisan, y desviar un grado no lo ve nadie. En
     escritorio la chincheta va en su coordenada exacta, sin empujon. */
  .pin{--dxa:var(--dx,0%);--dya:var(--dy,0%)}
  .pin-b{border-width:1.5px}
}
/* apilado: por debajo de 1080 px el mapa manda arriba y las seis tarjetas
   debajo, que es como estaba antes de partirlas en dos lados. */
@media (max-width:1080px){
  .sedes{grid-template-columns:1fr}
  .mapa{order:-1}
  .sedes > .husos-lado{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:560px){.sedes > .husos-lado{grid-template-columns:1fr}}

.husos{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--linea);
  border:1px solid var(--linea)}
.huso{background:var(--navy-2);padding:1.75rem 1.4rem;position:relative;overflow:hidden}
/* el filete de abajo se aclara de oeste a este, en el orden en que abrieron */
.huso::after{content:'';position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--grad-h)}
/* El filete se aclara de oeste a este, en el orden en que abrieron. Va por
   `--fil` (indice global, lo escribe el build) y no por :nth-child: al partir
   las sedes en dos columnas, nth-child reiniciaba la cuenta en cada lado. */
.huso::after{opacity:var(--fil,1)}
.huso .pais-n{font-family:var(--f-display);font-size:1.32rem;font-weight:500}
.huso .ciudad{color:var(--tinta-2);font-size:.9rem;margin-top:.2rem;min-height:1.4em}
.huso .reloj{font-family:var(--f-mono);font-size:1.55rem;font-weight:500;margin-top:1.1rem;
  color:var(--tinta);font-variant-numeric:tabular-nums}
.huso .estado{margin-top:.3rem}
.huso .abierto{color:var(--naranja-cl)}
/* sin huso confirmado: el reloj se queda apagado y se dice por que */
.huso-pend .reloj{color:var(--tinta-3);opacity:.45}
.huso-pend .pend{margin-top:.3rem;color:var(--tinta-3);text-transform:none;letter-spacing:.06em}
@media (max-width:980px){
  .sedes{grid-template-columns:1fr;gap:2.5rem}
  .globo{max-width:26rem}
  .husos{grid-template-columns:repeat(3,1fr)}
}
@media (max-width:640px){.husos{grid-template-columns:repeat(2,1fr)}}
@media (max-width:420px){.husos{grid-template-columns:1fr}}
.badge-sede{
  display:inline-block;font-family:var(--f-mono);font-size:.62rem;letter-spacing:.12em;
  text-transform:uppercase;border:1px solid var(--linea-fuerte);border-radius:3px;
  padding:.18rem .45rem;margin-left:.5rem;color:var(--tinta-3);vertical-align:middle
}

/* capacidades / diferenciadores / metodo ----------------------------------- */
.caps{margin-top:2rem;display:grid;gap:0}
.caps li{
  display:grid;grid-template-columns:auto 1fr;gap:1.1rem;align-items:start;
  padding:1.15rem 0;border-bottom:1px solid var(--linea)
}
.caps li:first-child{border-top:1px solid var(--linea)}
.caps .i{font-family:var(--f-mono);font-size:.8rem;color:var(--tinta-3);padding-top:.22rem}
/* Sin numerar: el cliente pidio vinetas el 14-ago. El punto naranja hace de
   marca de lista y mantiene la rejilla de dos columnas que ya tenia. */
.caps-punto li{gap:.95rem}
.caps-punto .i{
  width:6px;height:6px;border-radius:50%;background:var(--naranja);
  margin-top:.62rem;padding:0;flex:none
}
/* diferenciadores: lista con filete, NO un grid de cards.
   El grid de N cards con titulo+parrafo es el tell mas repetido que existe. */
.motivos{margin-top:2.5rem;border-top:1px solid var(--linea)}
.motivos > div{
  display:grid;grid-template-columns:minmax(11rem,.5fr) minmax(0,1fr);
  gap:.4rem clamp(1.25rem,4vw,3.5rem);align-items:baseline;
  padding:1.6rem .25rem;border-bottom:1px solid var(--linea)
}
.motivos h3{font-size:clamp(1.1rem,1rem + .4vw,1.35rem)}
.motivos p{color:var(--tinta-2);font-size:.99rem;line-height:1.58}
.pasos{margin-top:2.75rem;counter-reset:p}
.paso{display:grid;grid-template-columns:auto 1fr;gap:clamp(1rem,3vw,2.25rem);
  padding:1.75rem 0;border-bottom:1px solid var(--linea);align-items:start}
.paso:first-child{border-top:1px solid var(--linea)}
.paso .np{font-family:var(--f-mono);font-size:.85rem;color:var(--naranja-cl);padding-top:.35rem}
.paso h3{font-size:1.28rem;margin-bottom:.45rem}
.paso p{color:var(--tinta-2);font-size:.99rem}
.chips{display:flex;flex-wrap:wrap;gap:.55rem;margin-top:2.5rem}
.chip{border:1px solid var(--linea-fuerte);border-radius:999px;padding:.62rem 1.1rem;
  font-size:.93rem;color:var(--tinta-2)}

/* contacto + dueño ---------------------------------------------------------- */
.contacto{border-top:1px solid var(--linea);background:var(--navy-2)}
.contacto .h2{max-width:20ch}
.dato{display:flex;flex-wrap:wrap;gap:.6rem 2.5rem;margin-top:2rem;align-items:center}
.dato a{color:var(--tinta);text-decoration:none;border-bottom:1px solid var(--naranja);
  padding-bottom:2px;display:inline-flex;align-items:center;min-height:44px}
.dato a:hover{color:var(--naranja-cl)}
.dir{color:var(--tinta-2);margin-top:1.5rem;font-size:.97rem;line-height:1.7}

.dueno{border-top:1px solid var(--linea)}   /* transparente: deja pasar el ambiente */
.dueno .in{
  border:1px solid var(--linea-fuerte);border-radius:6px;padding:clamp(1.75rem,4vw,2.75rem);
  display:grid;gap:1rem;max-width:52rem
}
.dueno h2{font-size:clamp(1.3rem,1.15rem + .7vw,1.7rem)}
.dueno p{color:var(--tinta-2);font-size:1rem}
.dueno .acc{display:flex;flex-wrap:wrap;gap:.7rem;margin-top:.6rem}

footer{border-top:1px solid var(--linea);padding-block:2.75rem;color:var(--tinta-3);font-size:.88rem}
footer .in{display:flex;flex-wrap:wrap;gap:1.25rem 2.5rem;align-items:center}
/* 44px lo fijo Vincenzo con el Builder en la reunion del 11-ago; era el ultimo
   cambio de aquella sesion que seguia sin portar a la fuente. El 141,6x44 del
   panel es el mismo ratio que el lockup (206x64), solo escalado. */
footer img{height:44px;width:auto;opacity:.85}
footer a{color:var(--tinta-2);text-decoration:none;display:inline-flex;align-items:center;min-height:44px}
footer a:hover{color:var(--tinta)}
footer .nota{width:100%;color:var(--tinta-3);font-size:.8rem;padding-top:.5rem}
/* mapa del pie: es la via de rastreo de las paginas de servicio y de Recursos,
   que no estan en el menu principal. Sin esto Google no las descubre. */
.pie-mapa{display:flex;flex-wrap:wrap;gap:.4rem 2.5rem;margin-top:1.5rem;
  padding-top:1.5rem;border-top:1px solid var(--linea)}
.pie-mapa nav{display:flex;flex-wrap:wrap;gap:.4rem 1.75rem}
.pie-mapa a{font-size:.84rem}

/* estado vacio de Recursos. Arranca sin piezas y se dice, en vez de fingir una
   rejilla o poner "proximamente" a secas: se ensena lo que viene. */
.vacio{border-top:2px solid transparent;border-image:var(--grad) 1;padding-top:1.6rem;max-width:62ch}
.vacio p{color:var(--tinta-2);margin-top:.7rem}
.vacio .et{margin-top:2rem;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--tinta-3)}
.prox{list-style:none;padding:0;margin:.7rem 0 0}
.prox li{padding:.85rem 0;border-bottom:1px solid var(--linea);color:var(--tinta-2)}
.prox li:first-child{border-top:1px solid var(--linea)}

/* migas + navegacion entre modulos ----------------------------------------- */
.migas{padding-top:1.75rem}
.migas ol{display:flex;flex-wrap:wrap;gap:.45rem;align-items:center;list-style:none;padding:0;margin:0}
.migas a{color:var(--tinta-3);text-decoration:none;font-family:var(--f-mono);font-size:.74rem;
  letter-spacing:.1em;text-transform:uppercase;display:inline-flex;align-items:center;min-height:44px}
.migas a:hover{color:var(--tinta-2)}
.migas .sep{color:var(--tinta-3);font-size:.7rem}
.migas [aria-current]{color:var(--tinta-2);font-family:var(--f-mono);font-size:.74rem;
  letter-spacing:.1em;text-transform:uppercase}
.paginacion{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;
  border-top:1px solid var(--linea);padding-top:2rem;margin-top:1rem}

/* chat de muestra ----------------------------------------------------------- */
.chat-btn{
  position:fixed;right:clamp(1rem,3vw,1.75rem);bottom:clamp(1rem,3vw,1.75rem);z-index:70;
  width:58px;height:58px;border-radius:50%;border:0;cursor:pointer;background:var(--grad);
  box-shadow:0 8px 30px rgba(0,0,40,.6);display:grid;place-items:center;padding:0
}
.chat-btn img{width:26px;height:auto}
.chat-panel{
  position:fixed;right:clamp(1rem,3vw,1.75rem);bottom:calc(clamp(1rem,3vw,1.75rem) + 70px);
  z-index:71;width:min(370px,calc(100vw - 2rem));max-height:min(560px,calc(100dvh - 130px));
  background:var(--navy-2);border:1px solid var(--linea-fuerte);border-radius:8px;
  display:none;flex-direction:column;overflow:hidden;box-shadow:0 20px 60px rgba(0,0,30,.65)
}
.chat-panel.open{display:flex}
.chat-h{padding:1rem 1.1rem;border-bottom:1px solid var(--linea);display:flex;
  align-items:center;gap:.6rem}
.chat-h img{height:22px;width:auto}
.chat-h .x{margin-left:auto;background:none;border:0;color:var(--tinta-2);cursor:pointer;
  font-size:1.4rem;line-height:1;width:44px;height:44px;border-radius:4px}
.chat-log{padding:1.1rem;overflow-y:auto;display:flex;flex-direction:column;gap:.7rem;flex:1}
.msg{padding:.75rem .95rem;border-radius:8px;font-size:.93rem;line-height:1.55;max-width:88%}
.msg.bot{background:var(--navy-3);border:1px solid var(--linea);align-self:flex-start}
.msg.yo{background:var(--naranja);color:#1A0A00;align-self:flex-end;font-weight:500}
.chat-q{display:flex;flex-wrap:wrap;gap:.4rem;padding:0 1.1rem 1rem}
.chat-q button{
  background:none;border:1px solid var(--linea-fuerte);color:var(--tinta-2);border-radius:999px;
  padding:.6rem .95rem;font:inherit;font-size:.82rem;cursor:pointer;min-height:44px;
  text-align:left;transition:color .18s ease,border-color .18s ease
}
.chat-q button:hover{color:var(--tinta);border-color:var(--tinta-2)}
.chat-f{padding:.7rem 1.1rem 1rem;border-top:1px solid var(--linea);font-size:.7rem;
  color:var(--tinta-3);font-family:var(--f-mono);letter-spacing:.1em;text-transform:uppercase}

/* reveals ------------------------------------------------------------------ */
.rv{opacity:0;transform:translateY(16px);transition:opacity .7s ease,transform .7s cubic-bezier(.2,.8,.3,1)}
.rv.in{opacity:1;transform:none}
.col-debe.rv{transform:translateX(-20px)}
.col-haber.rv{transform:translateX(20px)}
.col-debe.rv.in,.col-haber.rv.in{transform:none}

/* responsive --------------------------------------------------------------- */
@media (max-width:1000px){
  .nav-links,.nav .nav-cta{display:none}
  .burger{display:inline-flex}
  .husos{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:760px){
  .asiento{grid-template-columns:1fr;gap:0}
  .asiento .diag-rule{
    width:auto;height:1px;align-self:auto;margin:2.25rem 0;
    transform:rotate(calc(var(--diag) * .42))
  }
  .asiento .diag-rule::after{transform:scaleX(var(--draw,0));transform-origin:left}
  .asiento .diag-rule::before{left:0;right:0;top:-7px;bottom:-7px}
  .hero-diag{left:auto;right:-10%;top:-20%;bottom:-20%}
  .hero-mark{right:-24%;width:82vw;opacity:.09}
  .motivos > div{grid-template-columns:1fr;row-gap:.5rem}
  .cuenta a{grid-template-columns:auto 1fr;row-gap:.35rem}
  .cuenta .fl{display:none}
  .consol .sec-c{display:none}
  .consol th:nth-child(2){display:none}

  /* el mayor y la hoja se apilan, pero NO pierden la doble entrada:
     cada lado conserva su etiqueta y la diagonal pasa a filete horizontal */
  .mayor-cab,.hoja-cab{display:none}
  .mayor a,.hoja-fila{grid-template-columns:1fr;row-gap:.9rem;padding-block:1.5rem}
  .mayor .part,.hoja .part{
    width:auto;height:1px;justify-self:stretch;align-self:auto;margin:.15rem 0;
    transform:rotate(calc(var(--diag) * .3))
  }
  .mayor .sub{padding-left:0}
  .mayor .lado::before,.hoja .lado::before{
    content:attr(data-et);display:block;font-family:var(--f-mono);font-size:.64rem;
    letter-spacing:.16em;text-transform:uppercase;color:var(--tinta-3);margin-bottom:.4rem
  }
  .mayor .lado-h::before,.hoja .lado-v::before{color:var(--naranja-cl)}
}
@media (max-width:520px){
  .husos{grid-template-columns:1fr}
  .col-debe.rv,.col-haber.rv{transform:translateY(16px)}
}

/* respeto al usuario -------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;animation-iteration-count:1!important;
    transition-duration:.001ms!important;scroll-behavior:auto!important
  }
  .rv{opacity:1;transform:none}
  .diag-rule::after,.hero-diag::after{transform:scaleY(1)}
  .diag-rule::before,.hero-diag::before{opacity:.5}
  .asiento .diag-rule::after{transform:scaleX(1)}
}
@media print{
  .nav,.drawer,.chat-btn,.chat-panel,.dueno{display:none}
  body{background:#fff;color:#000}
}

/* ══ cambios pedidos por VMC el 11-ago-2026 ══════════════════════════════ */

/* hero: el bloque de "quienes somos" que mando el cliente, bajo la entradilla */
/* «Quienes somos» dejo de ser un parrafo del hero y es seccion propia (14-ago),
   montada sobre `.asiento` para heredar la rejilla y la diagonal de la marca. */
/* Pegaba al hero, sobre todo en movil: solo 24 px entre el final del hero y el
   titulo (medido el 14-ago). No lleva la separacion entera de seccion porque
   viene justo despues del hero y son un bloque; lleva el 70 %. */
.sec-quien{padding-top:calc(var(--sec) * .7)}
.asiento.quien{align-items:center;margin-top:0}
.col-quien-t .h2{margin:0}
.col-quien-p p{color:var(--tinta-2);font-size:1.02rem;line-height:1.78;margin:0}

/* sedes: linea blanca entre paises. El cliente no distinguia una tarjeta de
   otra; el filete de 1px de --linea no se veia sobre el navy. */
.husos{gap:1px;background:rgba(255,255,255,.28);border-color:rgba(255,255,255,.28)}
.huso .pais-n{display:flex;align-items:center;gap:.55rem}
.huso .bandera{flex:none;border-radius:2px;display:block}
.huso .pais-n span:first-of-type{flex:none}
.huso .dosp{margin-left:-.35rem;color:var(--tinta-3)}
.huso .marca{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.1em;text-transform:uppercase;
  color:var(--naranja-cl);margin-top:.35rem}
.huso .dir{color:var(--tinta-2);font-size:.88rem;line-height:1.55;margin-top:.55rem}
.huso .dir-pend{color:var(--tinta-3);font-style:italic}
.huso .reloj{margin-top:.9rem}

/* sectores: cada uno se despliega al pulsar. <details>, sin JS. */
.sectores{margin-top:2.5rem;display:grid;gap:.6rem;max-width:52rem}
.sector{border:1px solid var(--linea);border-radius:4px;background:var(--navy-2);overflow:hidden}
.sector > summary{
  list-style:none;cursor:pointer;display:flex;align-items:center;gap:1rem;
  padding:1.05rem 1.25rem;min-height:56px;font-family:var(--f-display);
  font-size:1.12rem;font-weight:500;color:var(--tinta);transition:background .2s ease
}
.sector > summary::-webkit-details-marker{display:none}
.sector > summary:hover{background:var(--navy-3)}
.sector > summary:focus-visible{outline:2px solid var(--naranja-cl);outline-offset:-2px}
.sector .s-ic{flex:none;display:grid;place-items:center;width:38px;height:38px;border-radius:50%;
  border:1px solid color-mix(in srgb,var(--naranja) 40%,transparent);color:var(--naranja-cl);
  background:radial-gradient(circle,rgba(255,105,5,.12) 0%,transparent 72%)}
.sector .s-n{flex:1;min-width:0}
.sector .s-mas{flex:none;color:var(--tinta-3);transition:transform .25s ease}
.sector[open] .s-mas{transform:rotate(180deg)}
.sector[open] > summary{background:var(--navy-3)}
.sector > p{margin:0;padding:0 1.25rem 1.25rem calc(1.25rem + 38px + 1rem);
  color:var(--tinta-2);font-size:.95rem;line-height:1.66;max-width:62ch}

/* clientes: rejilla de logos justificada, sin tabla */
/* 3 columnas: con los 6 logos de hoy cuadran en dos filas exactas. Con
   auto-fit salian 5+1 y quedaba un hueco. Si algun dia son 8, poner 4. */
.logos{margin-top:2.5rem;display:grid;gap:1px;background:var(--linea);
  border:1px solid var(--linea);grid-template-columns:repeat(3,1fr)}
@media (max-width:820px){.logos{grid-template-columns:repeat(2,1fr)}}
@media (max-width:460px){.logos{grid-template-columns:1fr}}
.logo-c{background:var(--navy-2);display:grid;place-items:center;padding:2rem 1.5rem;min-height:130px}
/* Ni solo por alto ni solo por ancho: un logo cuadrado a 38 px de alto salia
   diminuto al lado de uno apaisado. Se limitan LOS DOS y cada uno llega al
   que le toque primero, que es como se equilibra un muro de logos. */
.logo-c img{max-height:46px;max-width:78%;width:auto;height:auto;
  opacity:.85;transition:opacity .2s ease}
.logo-c:hover img{opacity:1}
.logos-pie{margin-top:1.25rem;text-transform:none;letter-spacing:.02em;line-height:1.6}

/* el grafico del panel de modulo, centrado en su columna */
/* «Centrar todos los graficos al medio de ese espacio» (correccion del cliente,
   11-ago). El panel alinea sus tres columnas arriba (`align-items:start`), y la
   captura, mas baja que el texto, se quedaba pegada al techo con el hueco
   entero debajo. Solo se recentra la columna del grafico: el texto sigue
   arriba, que es donde tiene que empezar. */
.ep-visual{display:grid;justify-items:center;align-content:center;align-self:center}
.ep-visual .maqueta{width:100%}

/* pie: el credito de We Creative, una linea, ya no un cuadro */
/* Enlaces legales: fila propia sobre el credito, discreta y centrada. */
.pie-legal{
  display:flex;flex-wrap:wrap;justify-content:center;gap:.4rem 1.6rem;
  padding-top:1.4rem;font-size:.8rem
}
.pie-legal a{color:var(--tinta-3);text-decoration:none;transition:color .25s ease}
.pie-legal a:hover{color:var(--tinta-2)}

/* El pie se queda con una sola linea, centrada: «Powered By [W] We Creative».
   Fuera el aviso de demo y el credito largo (peticion del 12-ago). */
.pie-fin{display:flex;justify-content:center;padding-top:.9rem}
.pie-fin .powered{
  margin:0;text-align:center;color:var(--tinta-3);font-size:.8rem;letter-spacing:.01em
}
/* sin subrayado: cruzaba por debajo de la marca y quedaba sucio */
.pie-fin .powered a{
  color:var(--tinta-2);text-decoration:none;font-weight:500;
  display:inline-flex;align-items:center;gap:.38rem;transition:color .25s ease
}
.pie-fin .powered a:hover{color:var(--tinta)}
/* la W de We Creative: 20 px de alto, el mismo peso optico que el texto */
.wc-marca{height:20px;width:auto;display:block;translate:0 -1px}

/* paginas legales -----------------------------------------------------------
   Texto largo, ancho de lectura corto. Los datos que VMC aun no ha dado salen
   marcados con `.falta`: se ven a la primera y nadie los publica por error. */
.legal{max-width:70ch;margin-top:2.5rem}
.legal h2{
  font-family:var(--f-display);font-size:1.24rem;font-weight:500;letter-spacing:-.01em;
  color:var(--tinta);margin:2.6rem 0 .9rem
}
.legal h2:first-child{margin-top:0}
.legal p{color:var(--tinta-2);line-height:1.78;margin:0 0 1.05rem}
.legal-datos{
  display:grid;grid-template-columns:minmax(0,15rem) minmax(0,1fr);gap:0;
  margin:0 0 1rem;border-top:1px solid var(--linea)
}
.legal-datos dt{
  padding:.85rem 1rem .85rem 0;border-bottom:1px solid var(--linea);
  color:var(--tinta-3);font-size:.88rem
}
.legal-datos dd{
  margin:0;padding:.85rem 0;border-bottom:1px solid var(--linea);
  color:var(--tinta-2);font-size:.92rem;overflow-wrap:anywhere
}
.falta{
  color:var(--naranja-cl);font-style:italic;
  border-bottom:1px dashed color-mix(in srgb,var(--naranja) 55%,transparent)
}
.legal-fecha{margin-top:2.4rem;color:var(--tinta-3);font-size:.82rem}
.legal-otras{
  display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin-top:2.6rem;
  padding-top:1.4rem;border-top:1px solid var(--linea);font-size:.88rem
}
.legal-otras a{color:var(--tinta-2);text-decoration:none;
  border-bottom:1px solid var(--linea-fuerte)}
.legal-otras a:hover{color:var(--tinta)}
@media (max-width:640px){
  .legal-datos{grid-template-columns:1fr;gap:0}
  .legal-datos dt{padding-bottom:.15rem;border-bottom:0}
  .legal-datos dd{padding-top:0}
}
