/* Coherencia Biológica Aplicada — hoja de estilo común
   Paleta: eosina + hematoxilina, los dos colorantes de la tinción histológica H&E */

:root{
  --paper:#EFF2F3; --surface:#FFFFFF; --deep:#161B2E;
  --ink:#0F1417; --mid:#53626A; --faint:#8B99A1;
  --rule:#D3DBDF; --rule-soft:#E4E9EC;
  --eosin:#A32463; --eosin-bright:#E4629C;
  --hema:#2E3475; --hema-bright:#9AA0EA;
  --on-deep:#EAECF4; --on-deep-mid:#9AA2BE; --line-deep:#39406B;
  --serif:"Iowan Old Style","Charter",Palatino,Georgia,"Times New Roman",serif;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --mono:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
  --pad:clamp(20px,5vw,64px);
  --maxw:1180px;
  --gap-sec:clamp(44px,5.5vw,84px);   /* aire entre secciones */
  --gap-tight:clamp(22px,2.6vw,38px); /* secciones agrupadas */
  /* un solo tema, el de dia (decision de Toni, 9-ago). Las secciones
     oscuras se consiguen con .dark / .capture, no con el tema del sistema */
  color-scheme:light;
}

*{box-sizing:border-box}
/* el html va del color del pie: si la ventana es mas alta que la pagina,
   lo que asoma por debajo del footer es de su mismo color, no una franja gris */
html{scroll-behavior:smooth; background:var(--surface)}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--sans); font-size:17px; line-height:1.6;
  -webkit-font-smoothing:antialiased;
}
.wrap{max-width:var(--maxw); margin:0 auto; padding-inline:var(--pad)}
section{padding-block:var(--gap-sec); border-top:1px solid var(--rule-soft)}
section:first-of-type{border-top:0}
/* secciones agrupadas: van pegadas, sin línea y con menos aire */
section.grouped{border-top:0; padding-top:var(--gap-tight)}
section.grouped-end{padding-bottom:var(--gap-sec)}

/* ---------- navegación ---------- */
.site-head{
  position:sticky; top:0; z-index:30; background:color-mix(in srgb,var(--paper) 88%,transparent);
  backdrop-filter:blur(12px); border-bottom:1px solid var(--rule-soft);
}
.site-nav{display:flex; align-items:center; justify-content:space-between; gap:24px; padding-block:14px}
.brand{
  display:flex; align-items:center; gap:11px;
  font-family:var(--serif); font-size:17px; font-weight:600; color:var(--ink);
  text-decoration:none; letter-spacing:-.01em; line-height:1.2;
}
/* monograma: las siglas hacen de ancla cuando el nombre completo no cabe */
.brand-mark{
  flex:none; font-family:var(--mono); font-size:11.5px; font-weight:600;
  letter-spacing:.06em; color:#fff; background:var(--eosin);
  padding:9px 9px 8px; line-height:1; align-self:stretch;
  display:flex; align-items:center;
}
.brand-name span{display:block; font-family:var(--mono); font-size:9.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--faint); margin-top:2px}
@media(max-width:520px){
  .brand-name{font-size:15px}
  .brand-name span{letter-spacing:.12em}
}
.nav-links{display:flex; gap:clamp(10px,2vw,24px); align-items:center; flex-wrap:wrap; justify-content:flex-end}
.nav-links a{
  font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--mid); text-decoration:none; padding-block:6px; border-bottom:1px solid transparent;
}
.nav-links a:hover{color:var(--ink)}
.nav-links a[aria-current="page"]{color:var(--eosin); border-bottom-color:var(--eosin)}

/* ---------- tipografía ---------- */
.eyebrow{
  font-family:var(--mono); font-size:11.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--eosin); margin:0 0 18px;
}
.eyebrow .n{color:var(--faint); margin-right:14px}
h1,h2,h3{font-family:var(--serif); font-weight:600; letter-spacing:-.012em; margin:0}
h1{font-size:clamp(33px,5.1vw,58px); line-height:1.05}
h2{font-size:clamp(27px,3.9vw,44px); line-height:1.1; margin-bottom:16px}
h3{font-size:clamp(19px,2vw,23px); line-height:1.25}
p{margin:0 0 16px}
.lead{font-size:clamp(16px,1.55vw,18.5px); color:var(--mid); max-width:62ch}
.tight{max-width:56ch}

/* ---------- hero ---------- */
.hero{padding-block:clamp(30px,4vw,54px) clamp(28px,3.4vw,46px)}
.hero-grid{display:grid; grid-template-columns:1.12fr .88fr; gap:clamp(24px,3.6vw,52px); align-items:center}
@media(max-width:900px){.hero-grid{grid-template-columns:1fr; gap:34px}}
h1 .dim{color:var(--faint); display:block}
h1 .mid{color:var(--mid); display:block}
h1 .hit{color:var(--eosin); display:block}

/* ---------- figura: ondas en fase ----------
   Tres procesos, un resultado. Cada onda va rotulada con su nombre y el
   resultado de abajo dice en que estado esta: coherencia o interferencia. */
.phase{width:100%; height:auto; display:block; overflow:hidden}
.phase .w{fill:none; stroke-width:2.3; stroke-linecap:round}
.phase .w1{stroke:var(--eosin)}      /* inflamacion */
.phase .w2{stroke:var(--hema)}       /* mitocondria */
.phase .w3{stroke:#3E9E88}           /* inmunidad */
.phase .sum{stroke:var(--eosin); stroke-width:2.8; opacity:0; fill:none}
.phase .sum-flat{stroke:var(--faint); stroke-width:2; fill:none; opacity:1}
.phase .divider{stroke:var(--rule); stroke-width:1; stroke-dasharray:3 5}

/* rotulos de la figura */
.phase-lbl{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.14em;
  text-transform:uppercase; fill:var(--faint);
}
.phase-lbl.l1{fill:var(--eosin)}
.phase-lbl.l2{fill:var(--hema)}
.phase-lbl.l3{fill:#3E9E88}
.phase-out{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.14em;
  text-transform:uppercase; fill:var(--faint);
}
.phase-state{font-family:var(--mono); font-size:11.5px; letter-spacing:.14em; text-transform:uppercase}
/* Los dos rotulos comparten sitio. Con cualquier interpolacion se leen los dos
   encima a mitad del cruce, y ademas el navegador puede congelar la animacion
   justo ahi. Con step-end la opacidad solo vale 0 o 1: el solape es imposible. */
@keyframes stCoh{0%{opacity:0} 44%{opacity:1} 64%{opacity:0}}
@keyframes stInt{0%{opacity:1} 44%{opacity:0} 64%{opacity:1}}
.phase .st-coh{fill:var(--eosin); opacity:0; animation:stCoh 11s step-end infinite}
.phase .st-int{fill:var(--faint); opacity:1; animation:stInt 11s step-end infinite}
@keyframes ph1{0%,100%{transform:translateX(-20px)}45%,62%{transform:translateX(0)}}
@keyframes ph2{0%,100%{transform:translateX(20px)}45%,62%{transform:translateX(0)}}
@keyframes ph3{0%,100%{transform:translateX(-40px)}45%,62%{transform:translateX(0)}}
@keyframes fadeSum{0%,26%,80%,100%{opacity:0}46%,62%{opacity:1}}
@keyframes fadeFlat{0%,26%,80%,100%{opacity:1}46%,62%{opacity:0}}
.phase .w1{animation:ph1 11s cubic-bezier(.5,0,.5,1) infinite}
.phase .w2{animation:ph2 11s cubic-bezier(.5,0,.5,1) infinite}
.phase .w3{animation:ph3 11s cubic-bezier(.5,0,.5,1) infinite}
.phase .sum{animation:fadeSum 11s ease-in-out infinite}
.phase .sum-flat{animation:fadeFlat 11s ease-in-out infinite}
.figcap{
  font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
  color:var(--faint); margin-top:12px; line-height:1.6;
}
@media(prefers-reduced-motion:reduce){
  .phase .w,.phase .sum,.phase .sum-flat,.phase .st-coh,.phase .st-int{animation:none}
  .phase .sum,.phase .st-coh{opacity:1}
  .phase .sum-flat,.phase .st-int{opacity:0}
}

/* ---------- botones ---------- */
.cta-row{display:flex; flex-wrap:wrap; gap:10px; margin-top:20px}
.btn{
  font-family:var(--mono); font-size:12px; letter-spacing:.11em; text-transform:uppercase;
  padding:14px 25px; text-decoration:none; display:inline-block; border:1px solid var(--eosin);
  transition:background .18s ease,color .18s ease;
}
.btn-solid{background:var(--eosin); color:#fff}
.btn-solid:hover{background:transparent; color:var(--eosin)}
.btn-ghost{color:var(--eosin); background:transparent}
.btn-ghost:hover{background:var(--eosin); color:#fff}

/* ---------- EL DESCENSO: las tres profundidades ---------- */
.descent{position:relative; margin-top:36px; padding-left:clamp(38px,6vw,74px)}
/* la sonda: una línea vertical que se oscurece al bajar */
.descent::before{
  content:""; position:absolute; left:clamp(13px,2.2vw,26px); top:6px; bottom:6px; width:2px;
  background:linear-gradient(180deg,
    color-mix(in srgb,var(--faint) 45%,transparent) 0%,
    color-mix(in srgb,var(--hema) 65%,transparent) 48%,
    var(--eosin) 100%);
}
.level{position:relative; padding:22px 0}
.level + .level{border-top:1px solid var(--rule-soft)}
/* el punto de cada estrato, sobre la línea */
.level::before{
  content:""; position:absolute; left:calc(clamp(13px,2.2vw,26px) - clamp(38px,6vw,74px) - 4px);
  top:30px; width:10px; height:10px; border-radius:50%;
  background:var(--paper); border:2px solid var(--faint);
}
.level.l2::before{border-color:var(--hema)}
.level.l3::before{border-color:var(--eosin); background:var(--eosin); box-shadow:0 0 0 4px color-mix(in srgb,var(--eosin) 16%,transparent)}
.level-k{
  font-family:var(--mono); font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--faint); margin-bottom:6px; display:flex; gap:12px; align-items:baseline;
}
.level-k .depth-n{color:var(--rule); font-size:10px}
.level.l3 .level-k{color:var(--eosin)}
.level h3{font-size:clamp(20px,2.4vw,26px); margin-bottom:8px}
.level p{margin:0; color:var(--mid); max-width:60ch}
.level.l3 p strong{color:var(--ink)}
.level.l1 h3,.level.l2 h3{color:var(--mid); font-weight:400}

/* ---------- bloques apilados ---------- */
.block{
  display:grid; grid-template-columns:250px 1fr; gap:clamp(18px,3.5vw,52px);
  padding-block:clamp(26px,3.2vw,40px); border-top:1px solid var(--rule); align-items:start;
}
@media(max-width:860px){.block{grid-template-columns:1fr; gap:12px}}
.block-k{font-family:var(--mono); font-size:11.5px; letter-spacing:.14em; text-transform:uppercase; color:var(--eosin); padding-top:9px}
.block h3{font-size:clamp(23px,3vw,32px); line-height:1.14; margin-bottom:12px}
.block .lead{max-width:60ch}
.claims{list-style:none; padding:0; margin:18px 0 0; display:grid; grid-template-columns:1fr 1fr; gap:0 clamp(22px,3.5vw,44px)}
@media(max-width:760px){.claims{grid-template-columns:1fr}}
.claims li{padding:13px 0 13px 27px; border-top:1px solid var(--rule-soft); color:var(--mid); position:relative; font-size:15.5px; line-height:1.55}
.claims li::before{content:"→"; position:absolute; left:0; top:13px; color:var(--eosin); font-family:var(--mono); font-size:13px}
.claims li strong{color:var(--ink); font-weight:600}

/* ---------- sección oscura ---------- */
.dark{background:var(--deep); color:var(--on-deep); border-top:0}
.dark h1,.dark h2,.dark h3{color:#fff}
.dark .lead,.dark p{color:var(--on-deep-mid)}
.dark .eyebrow{color:var(--eosin-bright)}
.dark .eyebrow .n{color:var(--on-deep-mid)}
.dark h1 .mid{color:var(--on-deep-mid)}
.dark h1 .hit{color:var(--eosin-bright)}

/* ---------- CRONOGRAMA DE 180 DÍAS ---------- */
.chart{margin-top:26px; padding:0; max-width:880px}
.chart-svg{width:100%; height:auto; display:block; overflow:visible}
.chart-svg .axis{stroke:var(--line-deep); stroke-width:1}
.chart-svg .tick{stroke:var(--line-deep); stroke-width:1}
.chart-svg .tick-l{fill:var(--on-deep-mid); font-family:var(--mono); font-size:9px; letter-spacing:.08em}
.chart-svg .bar{height:9px; rx:1}
.chart-svg .b1{fill:var(--eosin-bright)}
.chart-svg .b2{fill:var(--hema-bright)}
.chart-svg .b3{fill:#7FD4C1}
.chart-svg .bar-ghost{opacity:.26}
.chart-svg .bar-l{fill:#fff; font-family:var(--mono); font-size:10px; letter-spacing:.1em; text-transform:uppercase}
.chart-note{
  font-family:var(--mono); font-size:10px; letter-spacing:.07em; text-transform:uppercase;
  color:var(--on-deep-mid); margin:14px 0 0; line-height:1.65; max-width:none;
}

/* ---------- destacado: lo práctico ---------- */
.practico{
  margin-top:clamp(30px,3.6vw,44px); border-left:3px solid var(--eosin);
  padding:clamp(20px,2.4vw,28px) clamp(20px,2.6vw,32px);
  background:color-mix(in srgb,var(--eosin) 5%,transparent);
}
.practico .practico-k{
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--eosin); margin-bottom:10px;
}
.practico h3{font-size:clamp(21px,2.5vw,27px); margin-bottom:10px}
.practico p{margin:0; color:var(--mid); max-width:64ch}
.practico p + p{margin-top:12px}
.practico strong{color:var(--ink); font-weight:600}

/* ---------- fases desarrolladas ---------- */
.stage{
  display:grid; grid-template-columns:210px 1fr; gap:clamp(18px,3.5vw,48px);
  padding-block:clamp(28px,3.4vw,44px); border-top:1px solid var(--rule); align-items:start;
}
@media(max-width:860px){.stage{grid-template-columns:1fr; gap:14px}}
.stage-k .stage-verb{
  font-family:var(--mono); font-size:11px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--eosin); display:block; margin-bottom:8px;
}
.stage-k .stage-days{font-family:var(--mono); font-size:11px; color:var(--faint); letter-spacing:.06em}
.stage h3{font-size:clamp(24px,3vw,32px); margin-bottom:12px}
/* la triada: que ocurre · que se hace · que se mide, en paralelo */
.stage-body{display:grid; grid-template-columns:repeat(3,1fr); gap:0 clamp(22px,3vw,38px); margin-top:22px}
@media(max-width:900px){.stage-body{grid-template-columns:1fr 1fr}}
@media(max-width:620px){.stage-body{grid-template-columns:1fr}}
.facet-lead{border-top-color:var(--eosin); border-top-width:2px}
.facet-lead .facet-k{color:var(--eosin)}
@media(max-width:760px){.stage-body{grid-template-columns:1fr}}
.facet{border-top:1px solid var(--rule-soft); padding:14px 0}
.facet-k{font-family:var(--mono); font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--faint); margin-bottom:6px}
.facet p{margin:0; color:var(--mid); font-size:15.5px; line-height:1.55}

/* ---------- niveles de formación ---------- */
.levels{margin-top:34px; border-top:1px solid var(--rule)}
.lvl{
  display:grid; grid-template-columns:230px 1fr 140px; gap:clamp(18px,3vw,44px);
  padding:26px 0; border-bottom:1px solid var(--rule-soft); align-items:start;
}
@media(max-width:900px){.lvl{grid-template-columns:1fr; gap:12px; padding:22px 0}}
.lvl-head{display:flex; gap:16px; align-items:baseline}
.lvl-n{font-family:var(--mono); font-size:15px; color:var(--eosin); line-height:1.25; flex:none; width:26px}
.lvl h3{font-size:20px; line-height:1.25; margin-bottom:6px}
.lvl-who{font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--faint); line-height:1.5}
.lvl p{margin:0; color:var(--mid); font-size:16px; line-height:1.6}
.tag{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase;
  border:1px solid var(--rule); padding:7px 12px; color:var(--mid); white-space:nowrap;
  justify-self:start; line-height:1.3;
}
@media(min-width:901px){.tag{justify-self:end}}
.tag.open{border-color:var(--eosin); color:var(--eosin)}

/* ---------- sedes ---------- */
.sede-first{
  display:grid; grid-template-columns:230px 1fr; gap:clamp(18px,3vw,44px);
  padding:24px 0; border-top:2px solid var(--eosin); border-bottom:1px solid var(--rule-soft);
  align-items:start; margin-top:32px;
}
@media(max-width:900px){.sede-first{grid-template-columns:1fr; gap:12px}}
.sede-when{font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase; color:var(--eosin); line-height:1.5}
.sede-first h3{font-size:20px; margin-bottom:6px}
.sede-first p{margin:0; color:var(--mid); font-size:16px}
.sede-next{padding-top:20px; color:var(--mid); max-width:62ch}

/* ---------- claustro ---------- */
.people{display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(16px,2.4vw,28px); margin-top:34px}
@media(max-width:980px){.people{grid-template-columns:repeat(2,1fr)}}
@media(max-width:520px){.people{grid-template-columns:1fr}}
.person .ph-slot{
  aspect-ratio:4/5; background:
    linear-gradient(150deg,color-mix(in srgb,var(--hema) 16%,transparent),color-mix(in srgb,var(--eosin) 13%,transparent));
  border:1px solid var(--rule); display:flex; align-items:flex-end; padding:14px; margin-bottom:12px;
}
.person .ph-img{
  width:100%; height:auto; aspect-ratio:4/5; object-fit:cover; object-position:center 18%;
  display:block; margin-bottom:12px; border:1px solid var(--rule);
  filter:grayscale(1) contrast(1.04); transition:filter .35s ease;
}
.person:hover .ph-img{filter:grayscale(0) contrast(1)}
.ph-slot span{font-family:var(--mono); font-size:10px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint)}
.person-role{font-family:var(--mono); font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--eosin); margin-bottom:5px}
.person h3{font-size:18px; margin-bottom:5px}
.person p{font-size:14.5px; color:var(--mid); margin:0; line-height:1.5}

/* ---------- evento ---------- */
.days{display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--rule); border:1px solid var(--rule); margin-top:32px}
@media(max-width:820px){.days{grid-template-columns:1fr}}
.day{background:var(--surface); padding:28px 26px}
.day-date{font-family:var(--mono); font-size:11.5px; letter-spacing:.11em; text-transform:uppercase; color:var(--eosin); margin-bottom:14px}
.day h3{margin-bottom:18px}
.dl{display:grid; grid-template-columns:104px 1fr; gap:9px 18px; font-size:15.5px; margin:0}
.dl dt{font-family:var(--mono); font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint); padding-top:4px}
.dl dd{margin:0; color:var(--mid)}
.dl dd strong{color:var(--ink); font-weight:600}

/* ---------- puente ----------
   Era una cajita con borde. Ahora lee como cierre de seccion:
   regla de acento arriba, aire, titular grande y un enlace con flecha. */
.bridge{
  display:grid; grid-template-columns:1fr auto; gap:clamp(16px,3.5vw,52px);
  align-items:end; margin-top:clamp(40px,5vw,68px);
  padding-top:clamp(26px,3.2vw,38px); border-top:2px solid var(--eosin);
}
@media(max-width:760px){.bridge{grid-template-columns:1fr; gap:20px; align-items:start}}
.bridge h3{
  font-size:clamp(24px,3.1vw,35px); line-height:1.12; margin-bottom:10px; max-width:26ch;
}
.bridge p{margin:0; color:var(--mid); max-width:54ch; font-size:16px}
.dark .bridge{border-top-color:var(--eosin-bright)}
.dark .bridge p{color:var(--on-deep-mid)}

/* el CTA del puente deja de ser boton-caja */
.bridge .btn{
  border:0; padding:0 0 4px; white-space:nowrap; background:none;
  color:var(--eosin); font-size:12.5px; border-bottom:1px solid currentColor;
}
.bridge .btn::after{content:"→"; margin-left:10px; display:inline-block; transition:transform .25s ease}
.bridge .btn:hover{background:none; color:var(--eosin)}
.bridge .btn:hover::after{transform:translateX(5px)}
.dark .bridge .btn{color:var(--eosin-bright)}
.dark .bridge .btn:hover{background:none; color:var(--eosin-bright)}

/* ---------- directorio ---------- */
.country{margin-top:clamp(28px,3.4vw,42px)}
.country-head{
  display:flex; align-items:baseline; justify-content:space-between; gap:16px;
  border-bottom:2px solid var(--eosin); padding-bottom:12px; flex-wrap:wrap;
}
.country.empty .country-head{border-bottom-color:var(--rule)}
.country-head h3{font-size:clamp(21px,2.5vw,27px); display:flex; align-items:center; gap:12px}
.flag{font-size:1.15em; line-height:1; filter:saturate(1.05)}
.country-count{
  font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase;
  color:var(--eosin);
}
.country.empty .country-count{color:var(--faint)}
.country-note{margin:16px 0 0; color:var(--mid); max-width:60ch; font-size:15.5px}

/* fichas en tarjeta */
.cards{display:grid; grid-template-columns:repeat(4,1fr); gap:clamp(12px,1.6vw,20px); margin-top:22px}
@media(max-width:1000px){.cards{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){.cards{grid-template-columns:repeat(2,1fr)}}
/* en movil se queda en dos: una sola columna daba fotos a pantalla completa */
.leads{display:grid; grid-template-columns:repeat(2,1fr); gap:clamp(16px,2.4vw,28px); margin-top:30px; max-width:820px}
@media(max-width:760px){.leads{grid-template-columns:1fr}}

.card{
  border:1px solid var(--rule); background:var(--surface);
  display:flex; flex-direction:column; overflow:hidden;
}
.card-img{
  width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; object-position:center 18%;
  display:block; filter:grayscale(1) contrast(1.04); transition:filter .35s ease;
}
.card:hover .card-img{filter:grayscale(0) contrast(1)}
.card-slot{
  width:100%; aspect-ratio:1/1;
  background:linear-gradient(150deg,color-mix(in srgb,var(--hema) 14%,transparent),color-mix(in srgb,var(--eosin) 11%,transparent));
  display:flex; align-items:center; justify-content:center; border-bottom:1px solid var(--rule);
}
.card-slot span{font-family:var(--mono); font-size:9.5px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint)}
.card-body{padding:15px 15px 17px; display:flex; flex-direction:column; flex:1}
.card-role{
  font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--eosin); margin-bottom:8px;
}
.card h3{font-size:16px; line-height:1.25; margin-bottom:5px}
.card-spec{color:var(--ink); font-size:13.5px; font-weight:500; margin-bottom:6px; line-height:1.35}
.card-place{
  font-family:var(--mono); font-size:10px; letter-spacing:.09em; text-transform:uppercase;
  color:var(--faint); display:flex; align-items:center; gap:8px; margin-bottom:12px;
}
.card p{margin:0 0 10px; color:var(--mid); font-size:13.5px; line-height:1.5}
.card .pro-link,.card .pro-soon{margin-top:auto}

/* la ficha de dirección: más peso */
.card-lead{border-color:color-mix(in srgb,var(--eosin) 42%,var(--rule)); border-top:3px solid var(--eosin)}
.card-lead .card-img,.card-lead .card-slot{aspect-ratio:4/3}
.card-lead h3{font-size:21px}
.pro-link,.pro-soon{
  display:inline-block; margin-top:10px; font-family:var(--mono); font-size:11px;
  letter-spacing:.08em; text-decoration:none;
}
.pro-link{color:var(--eosin); border-bottom:1px solid color-mix(in srgb,var(--eosin) 40%,transparent); padding-bottom:2px}
.pro-link::after{content:" ↗"; font-size:10px}
.pro-link:hover{border-bottom-color:var(--eosin)}
.pro-soon{color:var(--faint); text-transform:uppercase; letter-spacing:.1em; font-size:10px}
.pro-slot{
  width:100%; aspect-ratio:1/1; border-radius:50%; border:1px dashed var(--rule);
  background:linear-gradient(150deg,color-mix(in srgb,var(--hema) 12%,transparent),color-mix(in srgb,var(--eosin) 10%,transparent));
  display:flex; align-items:center; justify-content:center; text-align:center;
}
.pro-slot span{font-family:var(--mono); font-size:9px; letter-spacing:.09em; text-transform:uppercase; color:var(--faint)}
.pro-draft{font-style:italic; color:var(--faint) !important}

/* ---------- contacto ---------- */
.contact-grid{display:grid; grid-template-columns:1fr 1fr; gap:clamp(18px,2.6vw,28px)}
@media(max-width:820px){.contact-grid{grid-template-columns:1fr}}
.contact-card{
  border:1px solid var(--rule); background:var(--surface);
  padding:clamp(24px,3vw,34px); display:flex; flex-direction:column;
}
.contact-k{
  font-family:var(--mono); font-size:11px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--eosin); margin-bottom:12px;
}
.contact-card h3{margin-bottom:12px}
.contact-card p{color:var(--mid); font-size:16px; margin-bottom:24px}
.contact-card .btn{margin-top:auto; align-self:flex-start}
.btn.wa::before{content:"↗"; margin-right:9px; font-size:11px}

.steps{display:grid; grid-template-columns:repeat(3,1fr); gap:clamp(18px,3vw,34px); margin-top:clamp(32px,4vw,48px)}
@media(max-width:820px){.steps{grid-template-columns:1fr; gap:0}}
.step{border-top:1px solid var(--rule); padding-top:16px}
@media(max-width:820px){.step{padding-block:16px}}
.step-n{font-family:var(--mono); font-size:11px; letter-spacing:.13em; color:var(--eosin); margin-bottom:8px}
.step p{margin:0; color:var(--mid); font-size:15.5px; line-height:1.55}
.step strong{color:var(--ink); font-weight:600}

/* ---------- captura ---------- */
.capture{background:var(--deep); color:var(--on-deep); border-top:0}
.capture h2{color:#fff; max-width:20ch}
.capture .lead{color:var(--on-deep-mid)}
.form{display:flex; gap:10px; margin-top:26px; max-width:520px; flex-wrap:wrap}
.form input{
  flex:1 1 240px; background:transparent; border:1px solid var(--line-deep); color:var(--on-deep);
  padding:14px 16px; font-family:var(--sans); font-size:15px;
}
.form input::placeholder{color:var(--on-deep-mid); opacity:.72}
.form input:focus{outline:none; border-color:var(--eosin-bright)}
.form button{
  background:var(--eosin-bright); color:#12131f; border:0; padding:14px 25px; cursor:pointer;
  font-family:var(--mono); font-size:12px; letter-spacing:.11em; text-transform:uppercase;
}
.smallprint{font-family:var(--mono); font-size:10.5px; letter-spacing:.05em; color:var(--on-deep-mid); margin-top:14px}

/* ---------- pie ---------- */
/* ---------- pie ----------
   Era una tira de tres lineas en mono diminuto, y con enlaces distintos en
   cada pagina. Ahora es un cierre con estructura, igual en las ocho. */
footer{
  border-top:1px solid var(--rule); background:var(--surface);
  padding:clamp(40px,4.6vw,62px) 0 0;
}
.foot{
  display:grid; grid-template-columns:1.7fr 1fr 1fr; gap:clamp(26px,4vw,60px);
  align-items:start;
}
@media(max-width:780px){.foot{grid-template-columns:1fr 1fr; gap:32px}}
@media(max-width:520px){.foot{grid-template-columns:1fr; gap:28px}}
.foot-mark{font-family:var(--serif); font-size:20px; font-weight:600; color:var(--ink); line-height:1.2}
.foot-mark span{
  display:block; font-family:var(--mono); font-size:9.5px; letter-spacing:.16em;
  text-transform:uppercase; color:var(--faint); margin-top:4px;
}
.foot-claim{margin:15px 0 0; color:var(--mid); font-size:15px; max-width:36ch; line-height:1.55}
.foot-aval{
  margin-top:18px; padding-top:15px; border-top:1px solid var(--rule-soft);
  color:var(--faint); font-size:13px; max-width:40ch; line-height:1.5;
}
.foot-k{
  font-family:var(--mono); font-size:10px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--eosin); margin-bottom:15px;
}
.foot-col{display:flex; flex-direction:column; gap:10px}
.foot-col a{
  color:var(--mid); text-decoration:none; font-size:15px; width:fit-content;
  border-bottom:1px solid transparent; padding-bottom:1px;
}
.foot-col a:hover{color:var(--ink); border-bottom-color:var(--eosin)}
.foot-base{
  display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px;
  margin-top:clamp(34px,4vw,50px); padding:18px 0 28px;
  border-top:1px solid var(--rule-soft);
  font-family:var(--mono); font-size:10.5px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--faint);
}

/* ---------- CARRUSEL DEL CLAUSTRO ---------- */
.slider{margin-top:34px; position:relative}
.slider-track{
  display:flex; overflow-x:auto; scroll-snap-type:x mandatory; gap:clamp(16px,2.2vw,26px);
  scrollbar-width:none; -ms-overflow-style:none; padding-bottom:4px;
}
.slider-track::-webkit-scrollbar{display:none}
.slide{
  flex:0 0 clamp(180px,19vw,222px); scroll-snap-align:start;
  border:1px solid var(--rule); background:var(--surface); overflow:hidden;
  display:flex; flex-direction:column;
}
.slide img,.slide .card-slot{
  width:100%; aspect-ratio:4/5; object-fit:cover; object-position:center 16%; display:block;
  filter:grayscale(1) contrast(1.04); transition:filter .35s ease;
}
.slide:hover img{filter:grayscale(0) contrast(1)}
.slide-body{padding:14px 14px 16px}
.slide-role{
  font-family:var(--mono); font-size:9.5px; letter-spacing:.13em; text-transform:uppercase;
  color:var(--eosin); margin-bottom:7px;
}
.slide h3{font-size:15.5px; margin-bottom:4px}
.slide p{margin:0; color:var(--mid); font-size:13px; line-height:1.45}
.slider-nav{display:flex; gap:8px; margin-top:18px; align-items:center}
.slider-dot{
  width:26px; height:3px; background:var(--rule); border:0; padding:0; cursor:pointer;
  transition:background .25s ease;
}
.slider-dot[aria-selected="true"]{background:var(--eosin)}
.slider-hint{
  margin-left:auto; font-family:var(--mono); font-size:10px; letter-spacing:.09em;
  text-transform:uppercase; color:var(--faint);
}

/* ---------- AVAL Y COLABORADORES ---------- */
.aval{border-top:1px solid var(--rule); margin-top:clamp(34px,4vw,52px); padding-top:clamp(24px,3vw,34px)}
.aval-k{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.14em; text-transform:uppercase;
  color:var(--faint); margin-bottom:10px;
}
.aval-name{font-family:var(--serif); font-size:clamp(18px,2.1vw,23px); line-height:1.3; margin:0 0 6px; max-width:34ch}
.aval-note{margin:0; color:var(--mid); font-size:15px; max-width:60ch}
.partners{display:flex; flex-wrap:wrap; gap:10px; margin-top:20px}
.partner{
  font-family:var(--mono); font-size:11px; letter-spacing:.08em;
  border:1px solid var(--rule); padding:9px 16px; color:var(--mid);
}
.partner.pending{border-style:dashed; color:var(--faint)}

/* ---------- niveles con inscripción ---------- */
.lvl-cta{
  display:inline-block; margin-top:12px; font-family:var(--mono); font-size:10.5px;
  letter-spacing:.1em; text-transform:uppercase; color:var(--eosin); text-decoration:none;
  border-bottom:1px solid color-mix(in srgb,var(--eosin) 45%,transparent); padding-bottom:2px;
}
.lvl-cta:hover{border-bottom-color:var(--eosin)}
.lvl-cta.soon{color:var(--faint); border-bottom-color:transparent; cursor:default}

/* ---------- respaldo / tutoría ---------- */
.support{
  display:grid; grid-template-columns:260px 1fr; gap:clamp(20px,3.4vw,44px);
  margin-top:30px; align-items:start;
}
@media(max-width:760px){.support{grid-template-columns:1fr; gap:18px}}
.support-img{
  width:100%; height:auto; aspect-ratio:1/1; object-fit:cover; object-position:center 14%;
  display:block; border:1px solid var(--rule);
}
/* credencial docente bajo el retrato */
.support-cred{
  margin-top:14px; border-top:2px solid var(--eosin); padding-top:12px;
  display:grid; gap:10px;
}
.support-cred div{display:flex; gap:10px; align-items:baseline}
.support-cred b{
  font-family:var(--serif); font-size:clamp(21px,2.4vw,27px); line-height:1;
  color:var(--eosin); font-weight:600;
}
.support-cred span{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--mid); line-height:1.45;
}

/* ---------- formulario de inscripción ---------- */
.form-full{display:grid; grid-template-columns:1fr 1fr; gap:16px 18px; margin-top:26px; max-width:720px}
@media(max-width:700px){.form-full{grid-template-columns:1fr}}
.field{display:flex; flex-direction:column; gap:7px}
.field-wide{grid-column:1/-1}
.field label{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--on-deep-mid);
}
.field input,.field select{
  background:transparent; border:1px solid var(--line-deep); color:var(--on-deep);
  padding:13px 14px; font-family:var(--sans); font-size:15px; width:100%;
}
.field select{appearance:none; cursor:pointer}
.field select option{background:var(--deep); color:var(--on-deep)}
.field input:focus,.field select:focus{outline:none; border-color:var(--eosin-bright)}
.field input::placeholder{color:var(--on-deep-mid); opacity:.6}
.check{
  display:flex; gap:11px; align-items:flex-start; text-transform:none; letter-spacing:normal;
  font-family:var(--sans); font-size:14px; color:var(--on-deep-mid); line-height:1.5; cursor:pointer;
}
.check input{width:17px; height:17px; flex:none; margin-top:2px; accent-color:var(--eosin-bright)}
.form-full button{
  grid-column:1/-1; justify-self:start; background:var(--eosin-bright); color:#12131f; border:0;
  padding:15px 30px; cursor:pointer; font-family:var(--mono); font-size:12px;
  letter-spacing:.11em; text-transform:uppercase;
}
.capture .aval{border-top-color:var(--line-deep)}
.capture .aval-name{color:#fff}
.capture .partner{border-color:var(--line-deep); color:var(--on-deep-mid)}


/* ---------- logos de colaboradores ----------
   Los ficheros -tinta ya vienen aplanados a tinta con su alfa original.
   Filwaves y N-Pro llegaban blancos sobre transparente: sobre papel claro
   eran invisibles. Nada de grayscale ni de opacidad aqui: se veian menos. */
.logos{display:flex; flex-wrap:wrap; align-items:center; gap:clamp(22px,3.4vw,46px); margin-top:22px}
.logo-img{width:auto; display:block; object-fit:contain; opacity:.88; transition:opacity .3s ease}
.logo-img:hover{opacity:1}
/* La altura NO puede ser la misma para todos: con la misma altura, N-Pro
   (muy apaisado) ocupaba casi el doble de area que Vibefarma y se comia la
   fila. Cada altura sale de igualar el area optica, ~4.400 px².
   Nutergenoma va por encima de su area teorica a proposito: lleva el nombre
   de la empresa en letra pequena bajo la gota y por debajo de 70 px no se lee. */
.logo-vibe {height:clamp(44px,4.4vw,58px)}   /* ratio 1.62 */
.logo-nuter{height:clamp(66px,6.8vw,90px)}   /* ratio 1.09 */
.logo-fil  {height:clamp(50px,5.0vw,66px)}   /* ratio 1.26 */
.logo-npro {height:clamp(30px,2.9vw,38px)}   /* ratio 3.05 */

/* ---------- encuentro: dos puertas ---------- */
.gates{display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--rule);
  border:1px solid var(--rule); margin-top:30px}
@media(max-width:820px){.gates{grid-template-columns:1fr}}
.gate{background:var(--surface); padding:clamp(24px,3vw,34px); display:flex; flex-direction:column}
.gate-tag{
  align-self:flex-start; font-family:var(--mono); font-size:10px; letter-spacing:.13em;
  text-transform:uppercase; padding:6px 12px; margin-bottom:16px;
}
.gate-free .gate-tag{background:color-mix(in srgb,var(--hema) 14%,transparent); color:var(--hema)}
.gate-pro .gate-tag{background:var(--eosin); color:#fff}
.gate-price{font-family:var(--serif); font-size:clamp(30px,4vw,44px); line-height:1; margin:4px 0 6px}
.gate-free .gate-price{color:var(--hema)}
.gate-pro .gate-price{color:var(--eosin)}
.gate-price small{font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--faint);
  text-transform:uppercase; display:block; margin-top:8px}
.gate h3{margin-bottom:6px}
.gate .dl{margin-top:18px}
.gate .btn{margin-top:auto; align-self:flex-start}
.gate-when{font-family:var(--mono); font-size:11px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--faint); margin-bottom:14px}

.logo-sq{height:clamp(50px,4.8vw,66px)}

/* el aval manda: es el sello institucional de la formacion.
   Texto a la izquierda, sello a la derecha. */
.aval-split{
  display:grid; grid-template-columns:1fr minmax(240px,360px);
  gap:clamp(26px,4vw,60px); align-items:center;
}
@media(max-width:700px){.aval-split{grid-template-columns:1fr; gap:22px}}
/* el sello va centrado en su columna, no pegado al margen */
.aval-logo{
  height:clamp(54px,5vw,76px); width:auto; display:block;
  object-fit:contain; margin:0 auto; justify-self:center;
}
@media(max-width:700px){.aval-logo{margin:0; justify-self:start}}
.aval-split .aval-note{margin:0}

/* caja de precio y condiciones */
.price-box{
  display:grid; grid-template-columns:minmax(220px,300px) 1fr; gap:clamp(22px,3.4vw,48px);
  border:1px solid var(--rule); background:var(--surface);
  padding:clamp(24px,3vw,36px); align-items:start;
}
@media(max-width:760px){.price-box{grid-template-columns:1fr; gap:22px}}
.price-box .gate-tag{display:inline-block; margin-bottom:14px}
.price-box .dl{margin:0}
/* el descuento de asociado es el argumento fuerte: no puede ir en letra pequena */
.price-assoc{
  margin-top:18px; padding:14px 16px; border-left:3px solid var(--hema);
  background:color-mix(in srgb,var(--hema) 7%,transparent);
}
.price-assoc b{
  display:block; font-family:var(--serif); font-size:clamp(21px,2.4vw,26px);
  color:var(--hema); line-height:1; margin-bottom:6px; font-weight:600;
}
.price-assoc span{
  display:block; font-family:var(--mono); font-size:10.5px; letter-spacing:.09em;
  text-transform:uppercase; color:var(--mid); line-height:1.5;
}
.price-incluye{
  margin-top:16px; padding-top:14px; border-top:1px solid var(--rule);
  color:var(--mid); font-size:14.5px; line-height:1.55;
}
.price-incluye strong{color:var(--ink); font-weight:600}

/* el hilo de una charla: quien lleva cada tramo */
.hilo{margin-top:clamp(28px,3.4vw,40px); border-top:2px solid var(--eosin)}
.hilo-paso{
  display:grid; grid-template-columns:32px minmax(150px,200px) 1fr;
  gap:clamp(10px,2vw,26px); align-items:baseline;
  padding:15px 0; border-bottom:1px solid var(--rule-soft);
}
.hilo-n{font-family:var(--mono); font-size:11px; letter-spacing:.1em; color:var(--eosin)}
.hilo-quien{font-family:var(--serif); font-size:17.5px; color:var(--ink); line-height:1.3}
.hilo-que{color:var(--mid); font-size:15.5px; line-height:1.5}
@media(max-width:640px){
  .hilo-paso{grid-template-columns:32px 1fr; gap:4px 12px}
  .hilo-que{grid-column:2}
}

/* qué te llevas */
.perks{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--rule);
  border:1px solid var(--rule); margin-top:34px}
@media(max-width:900px){.perks{grid-template-columns:repeat(2,1fr)}}
@media(max-width:560px){.perks{grid-template-columns:1fr}}
.perk{
  background:var(--surface); padding:clamp(26px,2.8vw,36px) clamp(24px,2.4vw,32px);
  position:relative; transition:background .3s ease;
}
.perk::before{
  content:""; position:absolute; inset:0 auto auto 0; height:2px; width:0;
  background:var(--eosin); transition:width .35s ease;
}
.perk:hover{background:color-mix(in srgb,var(--eosin) 3%,var(--surface))}
.perk:hover::before{width:100%}
.perk-n{
  font-family:var(--serif); font-size:clamp(34px,3.8vw,46px); line-height:1;
  color:var(--eosin); opacity:.24; margin-bottom:14px; transition:opacity .3s ease;
}
.perk:hover .perk-n{opacity:1}
.perk h3{font-size:clamp(19px,2vw,21px); margin-bottom:9px; max-width:18ch}
.perk p{margin:0; color:var(--mid); font-size:15px; line-height:1.58}


/* ============================================================
   AJUSTES DE MOVIL — 9-ago
   El sitio se penso en escritorio y en el movil se rompian cuatro
   cosas: el menu de 7 pestanas, las fichas con foto a pantalla
   completa, el cronograma de 180 dias y el cuerpo de texto.
   ============================================================ */

/* --- boton de menu --- */
.nav-toggle{display:none}
@media(max-width:880px){
  .nav-toggle{
    display:flex; flex-direction:column; justify-content:center; gap:5px;
    background:none; border:0; padding:10px 2px; cursor:pointer; margin-left:auto;
  }
  .nav-toggle span{
    display:block; width:23px; height:2px; background:var(--ink);
    transition:transform .25s ease, opacity .18s ease;
  }
  .nav-toggle[aria-expanded="true"] span:nth-child(1){transform:translateY(7px) rotate(45deg)}
  .nav-toggle[aria-expanded="true"] span:nth-child(2){opacity:0}
  .nav-toggle[aria-expanded="true"] span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}

  .nav-links{
    display:none; position:absolute; left:0; right:0; top:100%;
    background:var(--surface); border-top:1px solid var(--rule-soft);
    border-bottom:1px solid var(--rule); flex-direction:column;
    align-items:stretch; justify-content:flex-start; gap:0;
    padding:4px var(--pad) 14px;
    box-shadow:0 22px 34px -24px rgba(15,20,23,.34);
  }
  .nav-links.abierto{display:flex}
  .nav-links a{
    padding:14px 0; font-size:12.5px; border-bottom:1px solid var(--rule-soft);
  }
  .nav-links a:last-child{border-bottom:0}
  .nav-links a[aria-current="page"]{border-bottom-color:var(--rule-soft)}
}

/* --- fichas con foto: rejilla, nunca carrusel (Toni, 9-ago) ---
   El directorio vuelve a tarjeta: 4 por fila en escritorio y 2 en movil.
   A una sola columna salian a pantalla completa; en carrusel se escondian. */
.cards-hint{display:none}
@media(max-width:720px){
  .cards{gap:12px}
  .card-body{padding:12px 12px 14px}
  .card h3{font-size:16.5px; line-height:1.2}
  .card .card-spec{font-size:12.5px; line-height:1.35; margin-bottom:6px}
  .card .card-place{font-size:10px; letter-spacing:.05em}
  .card .pro-link,.card .pro-soon{font-size:10px; margin-top:8px; overflow-wrap:anywhere}
}

/* --- cuerpo de texto en movil ---
   Segunda subida (Toni, 9-ago): en la mano se leia pequeno. Todo sube
   un par de puntos, incluidos los textos de ficha y los botones. */
@media(max-width:700px){
  body{font-size:19px}
  .lead{font-size:18.5px}
  .facet p,.perk p,.hilo-que,.card-spec{font-size:17.5px}
  .foot-claim,.foot-col a{font-size:17.5px}
  .claims li{font-size:17.5px}
  .practico p{font-size:18px}
  .hilo-quien{font-size:18.5px}
  .perk h3,.facet-k{font-size:inherit}
  .facet-k,.perk-n{font-size:11.5px}
  /* fichas del carrusel y del directorio */
  .slide h3{font-size:17px}
  .slide p{font-size:14.5px}
  .slide-role{font-size:10.5px}
  .pro h3{font-size:18.5px}
  .pro-spec{font-size:11px}
  .pro-place{font-size:11.5px}
  /* botones y enlaces de accion */
  .btn{font-size:13px; padding:15px 26px}
  .bridge .btn{font-size:13.5px}
  .lvl-cta{font-size:11.5px}
  .smallprint{font-size:12px}
}

/* --- aval y colaboradores: mas anchos y con mas aire --- */
.aval{margin-top:clamp(40px,4.6vw,60px); padding-top:clamp(30px,3.4vw,40px)}
.logos{gap:clamp(30px,4.4vw,62px); margin-top:26px}
@media(max-width:700px){
  .aval-split{gap:26px}
  .logos{
    display:grid; grid-template-columns:1fr 1fr;
    gap:30px clamp(20px,6vw,40px); align-items:center; justify-items:center;
  }
  .logo-img{margin:0 auto}
  .aval-logo{height:clamp(66px,17vw,86px)}
}

/* --- cronograma de 180 dias --- */
.chart-mobile{display:none}
@media(max-width:700px){
  .chart-desktop{display:none}
  .chart-mobile{display:block}
}
.chart-mobile .bar-l{
  fill:#fff; font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase;
}
.chart-mobile .bar{height:10px; rx:1}
.chart-mobile .b1{fill:var(--eosin-bright)}
.chart-mobile .b2{fill:var(--hema-bright)}
.chart-mobile .b3{fill:#7FD4C1}
.chart-mobile .bar-ghost{opacity:.26}
.chart-mobile .axis,.chart-mobile .tick{stroke:var(--line-deep); stroke-width:1}
.chart-mobile .tick-l{fill:var(--on-deep-mid); font-family:var(--mono); font-size:10px; letter-spacing:.06em}

/* --- el descenso, ahora en embudo (9-ago) ---
   Idea de Toni: la cantidad importa. Muchos sintomas, unas pocas causas,
   tres procesos. Se estrecha al bajar, y cada estrato dice cuantos hay.
   La direccion sigue siendo hacia abajo: la raiz esta abajo, no arriba. */
.level{max-width:100%; transition:max-width .3s ease}
.level.l2{max-width:80%}
.level.l3{max-width:58%}
@media(max-width:820px){.level,.level.l2,.level.l3{max-width:100%}}
.level-head{display:flex; justify-content:space-between; align-items:baseline; gap:18px}
.level-count{
  font-family:var(--serif); font-size:clamp(19px,2.4vw,28px); line-height:1;
  color:var(--faint); white-space:nowrap; letter-spacing:-.01em;
}
.level.l2 .level-count{color:var(--hema)}
.level.l3 .level-count{color:var(--eosin)}
.level-head .level-k{margin-bottom:0}
.level-head + h3{margin-top:8px}

/* el slider ahora tambien lleva fichas de directorio: web propia y pais */
.slide .pro-link,.slide .pro-soon{font-size:10px; margin-top:8px; max-width:100%; overflow-wrap:anywhere}
.slide-body .flag{margin-right:5px}

/* --- directorio: rejilla de dos, ficha horizontal (9-ago) ---
   El carrusel escondia a tres de los siete, y esta es la pagina donde
   alguien busca a alguien de su pais: lo que no se ve, no existe. */
.pros{
  display:grid; grid-template-columns:1fr 1fr; gap:1px;
  background:var(--rule); border:1px solid var(--rule); margin-top:32px;
}
@media(max-width:820px){.pros{grid-template-columns:1fr}}
.pro{
  background:var(--surface); display:grid; grid-template-columns:132px 1fr;
  gap:clamp(14px,1.8vw,20px); padding:clamp(16px,1.8vw,20px); align-items:start;
}
@media(max-width:430px){.pro{grid-template-columns:96px 1fr; gap:14px}}
.pro-foto{
  width:100%; aspect-ratio:1/1; object-fit:cover; object-position:center 16%;
  display:block; border:1px solid var(--rule);
  filter:grayscale(1) contrast(1.04); transition:filter .35s ease;
}
.pro:hover .pro-foto{filter:grayscale(0) contrast(1)}
.pro-spec{
  font-family:var(--mono); font-size:10px; letter-spacing:.11em; text-transform:uppercase;
  color:var(--eosin); margin-bottom:7px; line-height:1.5;
}
.pro h3{font-size:clamp(17px,1.8vw,19px); margin-bottom:7px}
.pro-place{
  font-family:var(--mono); font-size:10.5px; letter-spacing:.08em; text-transform:uppercase;
  color:var(--mid); display:flex; flex-wrap:wrap; align-items:center; gap:4px;
}

/* --- CTA encadenados (9-ago) ---
   Dos .bridge seguidos dibujaban dos reglas gruesas + dos subrayados en un
   palmo, y en movil el bloque se veia rayado. El segundo y siguientes se
   cuelgan del primero: separacion fina, sin repetir el acento. */
.bridge + .bridge{
  border-top:1px solid var(--rule-soft);
  margin-top:clamp(20px,2.4vw,30px);
  padding-top:clamp(20px,2.4vw,30px);
}
@media(max-width:760px){
  .bridge{margin-top:clamp(28px,6vw,40px); padding-top:22px}
  .bridge + .bridge{margin-top:18px; padding-top:18px}
  .bridge h3{font-size:clamp(21px,5.6vw,26px)}
  /* el enlace se estiraba a todo el ancho y su subrayado parecia otra regla */
  .bridge .btn{justify-self:start}
}

/* resaltados dentro de la triada de fases */
.facet p strong{color:var(--ink); font-weight:600}

/* ---------- ENLACES LEGALES EN EL PIE ---------- */
.foot-legal{display:flex; gap:14px; flex-wrap:wrap}
.foot-legal a{color:var(--faint); text-decoration:none}
.foot-legal a:hover{color:var(--eosin)}
